------------------------------------ --- LIBRARIES ------------------------------------ require("vis") -- plugins require("build") require("backup") require("cursors") require("title") require("commentary") require("complete-line") local format = require("format") -- todo: -- c-scope -- c-tags ------------------------------------ --- 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, " 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 vis:command_register("pipe", function() vis:pipe(win.file, nil, "sed 's/.*/- &/'") end, "pipe test") end)