local nnoremap = require("liamm.keymap").nnoremap nnoremap("pv", "Ex") nnoremap("tt", "TSContextToggle") vim.keymap.set("v", "ss", ":CarbonNow", { silent = true }) vim.keymap.set("v", "K", ":m '<-2gv=gv") vim.keymap.set("v", "J", ":m '>+1gv=gv") vim.keymap.set("n", "J", "mzJ`z") vim.keymap.set("n", "", "zz") vim.keymap.set("n", "", "zz") vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "N", "Nzzzv") vim.keymap.set("n", "y", "\"+y") vim.keymap.set("v", "y", "\"+y") vim.keymap.set("n", "Y", "\"+Y") vim.keymap.set("n", "x", "!chmod +x %", {silent = true}) -- put to background vim.keymap.set("n", "bg", "") -- BUILD SCRIPT INVOKATIONS -- generic build function local function set(list) local _set = {} for _, l in ipairs(list) do _set[l] = true end return _set end -- TODO: add support for passing flags function Build() local out_buf = vim.api.nvim_create_buf(false, true) local build_scripts = set(vim.fs.find({ "build.sh", "build.zig", "build.bat" }, { upward = true, type = "file", path = "." })) local output = "[No Build Output]" if build_scripts['build.zig'] then vim.cmd('echo "Running build.zig"') output = vim.fn.system({ 'zig', 'build' }) else if jit.os == 'Windows' and build_scripts['build.bat'] then output = vim.fn.system({ 'build', '' }) elseif build_scripts['build.sh'] then output = vim.fn.system({ './build.sh', '' }) else end end vim.api.nvim_buf_set_lines(out_buf, -1, -1, true, {"[ Build Output ]"}) vim.api.nvim_buf_set_lines(out_buf, -1, -1, true, vim.split(output, '\n')) local window = vim.api.nvim_open_win(out_buf, false, { split = 'right', win = 0, width = math.floor(vim.o.columns * 0.35), style = 'minimal', }) vim.api.nvim_set_current_win(window) -- Keybind to close the window on pressing Enter vim.api.nvim_buf_set_keymap(out_buf, 'n', '', '', { noremap = true, silent = true, callback = function() vim.api.nvim_win_close(window, true) end }) end -- TODO: add support for passing flags vim.keymap.set("n", "bs", ":lua Build()") -- specific build scipt options -- `build.sh` script binds -- non-interactive binds vim.keymap.set("n", "bb" , ":!./build.sh ") vim.keymap.set("n", "br" , ":!./build.sh run ") vim.keymap.set("n", "bRb" , ":!./build.sh release ") vim.keymap.set("n", "bRr" , ":!./build.sh release run ") vim.keymap.set("n", "bRr" , ":!./build.sh release run ") -- interactive binds vim.keymap.set("n", "bo" , ":!./build.sh ") -- allow for adding extra flags/options vim.keymap.set("n", "bor" , ":!./build.sh run") -- allow for adding extra flags/options vim.keymap.set("n", "bRo" , ":!./build.sh release ") vim.keymap.set("n", "bRor", ":!./build.sh release run ") -- `build.zig` script binds -- non-interactive binds vim.keymap.set("n", "zbb" , ":!zig build ") vim.keymap.set("n", "zbr" , ":!zig build run ") vim.keymap.set("n", "zbt" , ":!zig build test ") vim.keymap.set("n", "zbR" , ":!zig build -Doptimize=ReleaseSafe ") vim.keymap.set("n", "zbRs" , ":!zig build -Doptimize=ReleaseSmall ") vim.keymap.set("n", "zbRf" , ":!zig build -Doptimize=ReleaseFast ") vim.keymap.set("n", "zbRr" , ":!zig build run -Doptimize=ReleaseSafe ") vim.keymap.set("n", "zbRsr", ":!zig build run -Doptimize=ReleaseSmall ") vim.keymap.set("n", "zbRfr", ":!zig build run -Doptimize=ReleaseFast ") -- interactive binds vim.keymap.set("n", "zbob" , ":!zig build ") vim.keymap.set("n", "zbor" , ":!zig build run ") vim.keymap.set("n", "zbot" , ":!zig build test ") vim.keymap.set("n", "zboR" , ":!zig build -Doptimize=ReleaseSafe ") vim.keymap.set("n", "zboRs" , ":!zig build -Doptimize=ReleaseSmall ") vim.keymap.set("n", "zboRf" , ":!zig build -Doptimize=ReleaseFast ") vim.keymap.set("n", "zboRr" , ":!zig build run -Doptimize=ReleaseSafe ") vim.keymap.set("n", "zboRsr", ":!zig build run -Doptimize=ReleaseSmall ") vim.keymap.set("n", "zboRfr", ":!zig build run -Doptimize=ReleaseFast ") -- emacs-inspired binds -- all can be done w spacebar-w vim.keymap.set("n", "w", "") vim.keymap.set("n", "qq", ":x") nnoremap(".", ":find ~/") nnoremap("fc", ":find ~/personal/nixos/modules/old_configs/nvim/lua/liamm/remap.lua")