------------------------------------ --- REQUIRES ------------------------------------ require("vis") -- plugins require("build") -- use Trash directory instead, remove set_dir function require("backup") require("cursors") require("title") require("commentary") require("complete-line") -- removed formatting because already fulfilled by format.lua require("vis-go") -- set height to 40% require("fzf-open") require("vis-ultisnips") -- TODO: doesn't work when using with 'e|b' -- require("yank-highlight") -- save position before formatting, use vis:redraw local format = require("format") -- set height to 40% local fzfmru = require("fzf-mru") fzfmru.fzfmru_path = 'grep "^' .. os.getenv("PWD") .. '" | fzf' -- todo: -- c-scope -- c-tags -- ... -- vis-goto, favor open-file-under-cursor -- ... -- ultisnips -- ... -- vis-yank-highlight ------------------------------------ --- VARIABLES ------------------------------------ local m = vis.modes ------------------------------------ --- FUNCTIONS ------------------------------------ local function map_cmd(mode, map, command, help) vis:map(mode, map, function() vis:command(command) end, help) end -- TOOD: use window selection to restore position local function wrap_restore(f, ...) local pos = vis.win.selection.pos f(...) vis.win.selection.pos = pos end local function map_keys(mode, map, keys, help) vis:map(mode, map, function() vis:feedkeys(keys) end, help) end ------------------------------------ --- COMMANDS ----------------------------------- vis:command_register("make", function() vis:command("!make && head -n 1") end, "make") vis:command_register("Q", function() vis:command("qa!") end, "Quit all") vis:command_register("delws", function() vis:command(",x/[ \t]+$|^[ \t]+$/d") end, "Remove trailing whitespace") ------------------------------------- --- MAPPINGS ------------------------------------- vis:map(m.NORMAL, "", function() vis:command("fzf") end, "Open file with fzf") vis:map(m.NORMAL, " r", function() wrap_restore(vis.command, vis, "e $vis_filepath") end, "Reload active file") vis:map(m.NORMAL, "=", format.apply, "Format active file") map_cmd(m.NORMAL, " c", "e ~/.config/vis/visrc.lua", "Edit config file") map_cmd(m.NORMAL, " q", "q!", "Quit (force)") map_cmd(m.NORMAL, " s", "!doas vis $vis_filepath", "Edit as superuser") map_cmd(m.NORMAL, " w", "w", "Write") map_cmd(m.NORMAL, " x", "!chmod u+x $vis_filepath", "Make active file executable") vis:map(m.NORMAL, " eh", function() vis:command("!lowdown $vis_filepath > ${vis_filepath%.md}.html") vis:info("exported.") end, "Export markdown to html") map_keys(m.NORMAL, " nl", ":\\&2 printf '\\2: %s\\\\n' \"$\\2\"/", "Print variable" ) end end)