diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index 4ca5d22..8ea3eb5 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -1,7 +1,9 @@ +require('functions/api_extensions') -- Needs to be first thing in case any other part of the config needs the extensions + require('settings/keymaps') require('settings/options') -vim.pack.add(require('plugins'), { load = require('helpers/plugins').load_fn }) +require('functions/setup_plugins') require('lsps') diff --git a/nvim/.config/nvim/lua/functions/api_extensions.lua b/nvim/.config/nvim/lua/functions/api_extensions.lua new file mode 100644 index 0000000..9487128 --- /dev/null +++ b/nvim/.config/nvim/lua/functions/api_extensions.lua @@ -0,0 +1,42 @@ +-- This file is made to add helper functions to the neovim lua API + +vim.lsp.inlay_hint.toggle = function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) +end + +vim.keymap.get = function(mode, lhs) + for _, map in ipairs(vim.api.nvim_get_keymap(mode)) do + if map.lhs == lhs then + return map + end + end +end + +local keymap_stack = {} + +vim.keymap.push = function(mode, lhs, new_rhs, opts) + local key = mode..'::'..lhs + keymap_stack[key] = keymap_stack[key] or {} + table.insert(keymap_stack[key], vim.keymap.get(mode, lhs)) + vim.keymap.set(mode, lhs, new_rhs, opts or {}) +end + +vim.keymap.pop = function(mode, lhs) + local key = mode..'::'..lhs + local stack = keymap_stack[key] + if not stack or #stack == 0 then + return + end + vim.keymap.del(mode, lhs) + local old_map = table.remove(stack) + if old_map then + vim.keymap.set(old_map.mode, old_map.lhs, old_map.rhs, { + remap = old_map.remap == 1, + silent = old_map.silent == 1, + expr = old_map.expr == 1, + nowait = old_map.nowait == 1, + desc = old_map.desc, + }) + end +end + diff --git a/nvim/.config/nvim/lua/functions/setup_plugins.lua b/nvim/.config/nvim/lua/functions/setup_plugins.lua new file mode 100644 index 0000000..7e8dc89 --- /dev/null +++ b/nvim/.config/nvim/lua/functions/setup_plugins.lua @@ -0,0 +1,26 @@ +local load_fn = function(plug_data) + vim.cmd.packadd(plug_data.spec.name) + + if plug_data.spec.data and plug_data.spec.data.simple_init then + require(plug_data.spec.name).setup() + return + end + + local status, config = pcall(require,'plugins/configs/'..plug_data.spec.name) + if status then + -- Call the configuration function (if exists) + if config.on_load ~= nil then + config.on_load() + end + + if config.keymaps ~= nil then + for _,keymap in pairs(config.keymaps) do + vim.keymap.set(keymap.modes or 'n', keymap.keys, keymap.cmd, { desc = keymap.desc }) + end + end + end +end + +local plugins = require('plugins') + +vim.pack.add(plugins, { load = load_fn }) diff --git a/nvim/.config/nvim/lua/helpers/kmstack.lua b/nvim/.config/nvim/lua/helpers/kmstack.lua deleted file mode 100644 index c49ea08..0000000 --- a/nvim/.config/nvim/lua/helpers/kmstack.lua +++ /dev/null @@ -1,36 +0,0 @@ -local saved_maps = {} - -local function get_map(mode, lhs) - for _, map in ipairs(vim.api.nvim_get_keymap(mode)) do - if map.lhs == lhs then - return map - end - end -end - -local function push_map(mode, lhs, new_rhs, opts) - local old = get_map(mode, lhs) - saved_maps[mode .. lhs] = old - - vim.keymap.set(mode, lhs, new_rhs, opts) -end - -local function pop_map(mode, lhs) - local old = saved_maps[mode .. lhs] - - if old then - vim.keymap.set(old.mode, old.lhs, old.rhs or old.callback, { - noremap = old.noremap == 1, - silent = old.silent == 1, - expr = old.expr == 1, - nowait = old.nowait == 1, - }) - else - vim.keymap.del(mode, lhs) - end -end - -return { - push = push_map, - pop = pop_map, -} diff --git a/nvim/.config/nvim/lua/helpers/plugins.lua b/nvim/.config/nvim/lua/helpers/plugins.lua deleted file mode 100644 index ca77b79..0000000 --- a/nvim/.config/nvim/lua/helpers/plugins.lua +++ /dev/null @@ -1,18 +0,0 @@ -return { - load_fn = function(plug_data) - vim.cmd.packadd(plug_data.spec.name) - local status, config = pcall(require,'plugins/configs/'..plug_data.spec.name) - if status then - -- Call the configuration function (if exists) - if config.on_load ~= nil then - config.on_load() - end - - if config.keymaps ~= nil then - for _,keymap in pairs(config.keymaps) do - vim.keymap.set(keymap.modes or 'n', keymap.keys, keymap.cmd, { desc = keymap.desc }) - end - end - end - end -} diff --git a/nvim/.config/nvim/lua/lsps/init.lua b/nvim/.config/nvim/lua/lsps/init.lua index db6552f..3bfcfdf 100644 --- a/nvim/.config/nvim/lua/lsps/init.lua +++ b/nvim/.config/nvim/lua/lsps/init.lua @@ -48,7 +48,7 @@ for _, lsp_name in ipairs(enabled_lsps_custom) do require("lsps/"..lsp_name) end -vim.pack.add({ 'https://github.com/neovim/nvim-lspconfig' }) +vim.pack.add({ 'https://github.com/neovim/nvim-lspconfig' }, { confirm = false }) for _, lsp_name in ipairs(enabled_lsps_lspconf) do vim.lsp.config[lsp_name] = require('lspconfig.configs.'..lsp_name) end diff --git a/nvim/.config/nvim/lua/plugins/configs/lazydev.lua b/nvim/.config/nvim/lua/plugins/configs/lazydev.lua deleted file mode 100644 index 43d9580..0000000 --- a/nvim/.config/nvim/lua/plugins/configs/lazydev.lua +++ /dev/null @@ -1,12 +0,0 @@ -return -{ - -- Configuration function to be run after the plugin is loaded - on_load = function() - require('lazydev').setup() - end, - - -- Keymaps to be set after the plugin is loaded - keymaps = { - -- { [modes='n'], keys, cmd, desc } - } -} diff --git a/nvim/.config/nvim/lua/plugins/configs/leap.lua b/nvim/.config/nvim/lua/plugins/configs/leap.lua index 3d5a010..015db0d 100644 --- a/nvim/.config/nvim/lua/plugins/configs/leap.lua +++ b/nvim/.config/nvim/lua/plugins/configs/leap.lua @@ -3,12 +3,8 @@ local leap_backward = function() require('leap').leap { opts = require('leap.use return { - -- Configuration function to be run after the plugin is loaded - on_load = function() end, - - -- Keymaps to be set after the plugin is loaded keymaps = { - { modes = {'n','x','o'}, keys = 's', cmd = leap_forward, desc = 'Forward' }, - { modes = {'n','x','o'}, keys = 'S', cmd = leap_backward, desc = 'Backward' }, + { modes = {'n', 'x', 'o'}, keys = 's', cmd = leap_forward , desc = 'Forward' }, + { modes = {'n', 'x', 'o'}, keys = 'S', cmd = leap_backward, desc = 'Backward' }, } } diff --git a/nvim/.config/nvim/lua/plugins/configs/mason.lua b/nvim/.config/nvim/lua/plugins/configs/mason.lua deleted file mode 100644 index 4d10cf5..0000000 --- a/nvim/.config/nvim/lua/plugins/configs/mason.lua +++ /dev/null @@ -1,6 +0,0 @@ -return -{ - on_load = function() - require('mason').setup() - end, -} diff --git a/nvim/.config/nvim/lua/plugins/configs/mini.lua b/nvim/.config/nvim/lua/plugins/configs/mini.lua index 3cf8979..88e097c 100644 --- a/nvim/.config/nvim/lua/plugins/configs/mini.lua +++ b/nvim/.config/nvim/lua/plugins/configs/mini.lua @@ -1,11 +1,17 @@ return { -- Configuration function to be run after the plugin is loaded - on_load = function() + on_load = function() require('mini.icons').setup() require('mini.starter').setup() if(vim.o.showtabline ~= 0) then require('mini.tabline').setup() end + require('mini.align').setup { + mappings = { + start = 'gl', + start_with_preview = 'gL', + }, + } end, } diff --git a/nvim/.config/nvim/lua/plugins/configs/nvim-dap-virtual-text.lua b/nvim/.config/nvim/lua/plugins/configs/nvim-dap-virtual-text.lua deleted file mode 100644 index 6cb6b2d..0000000 --- a/nvim/.config/nvim/lua/plugins/configs/nvim-dap-virtual-text.lua +++ /dev/null @@ -1,6 +0,0 @@ -return -{ - on_load = function() - require('nvim-dap-virtual-text').setup() - end, -} diff --git a/nvim/.config/nvim/lua/plugins/configs/nvim-dap.lua b/nvim/.config/nvim/lua/plugins/configs/nvim-dap.lua index 84fa95f..89e3b1e 100644 --- a/nvim/.config/nvim/lua/plugins/configs/nvim-dap.lua +++ b/nvim/.config/nvim/lua/plugins/configs/nvim-dap.lua @@ -21,18 +21,18 @@ return } dap.listeners.before.attach.key_config = function() - require('helpers/kmstack').push('n', '', dap.step_over, {}) - require('helpers/kmstack').push('n', '', dap.restart_frame, {}) - require('helpers/kmstack').push('n', '', dap.step_into, {}) - require('helpers/kmstack').push('n', '', dap.step_out, {}) + vim.keymap.push('n', '' , dap.step_over) + vim.keymap.push('n', '' , dap.restart_frame) + vim.keymap.push('n', '', dap.step_into) + vim.keymap.push('n', '' , dap.step_out) end dap.listeners.before.launch.key_config = dap.listeners.before.attach.key_config dap.listeners.after.event_terminated.key_config = function() - require('helpers/kmstack').pop('n', '') - require('helpers/kmstack').pop('n', '') - require('helpers/kmstack').pop('n', '') - require('helpers/kmstack').pop('n', '') + vim.keymap.pop('n', '') + vim.keymap.pop('n', '') + vim.keymap.pop('n', '') + vim.keymap.pop('n', '') end dap.listeners.after.event_exited.key_config = dap.listeners.after.event_terminated.key_config @@ -40,6 +40,6 @@ return keymaps = { { keys = 'db', cmd = require('dap').toggle_breakpoint, desc = 'Toggle Breakpoint' }, - { keys = 'dn', cmd = require('dap').step_over, desc = 'Step Over' }, + { keys = 'dn', cmd = require('dap').step_over , desc = 'Step Over' }, }, } diff --git a/nvim/.config/nvim/lua/plugins/configs/oil.lua b/nvim/.config/nvim/lua/plugins/configs/oil.lua index e3b0c77..ee7f328 100644 --- a/nvim/.config/nvim/lua/plugins/configs/oil.lua +++ b/nvim/.config/nvim/lua/plugins/configs/oil.lua @@ -1,7 +1,7 @@ return { -- Configuration function to be run after the plugin is loaded - on_load = function() + on_load = function() require("oil").setup{ watch_for_changes = true, default_file_explorer = true, view_options = { @@ -15,9 +15,9 @@ return -- Keymaps to be set after the plugin is loaded keymaps = { - { keys = 'oo', cmd = require('oil').open, desc = 'Open' }, - { keys = 'oc', cmd = require('oil').close, desc = 'Close' }, - { keys = 'of', cmd = require('oil').toggle_float, desc = 'Toggle Floating' }, - { keys = 'op', cmd = require('oil.actions').preview.callback, desc = 'Toggle Preview' }, + { keys = 'oo', cmd = require('oil').open , desc = 'Open' }, + { keys = 'oc', cmd = require('oil').close , desc = 'Close' }, + { keys = 'of', cmd = require('oil').toggle_float , desc = 'Toggle Floating' }, + { keys = 'op', cmd = require('oil.actions').preview.callback, desc = 'Toggle Preview' }, } } diff --git a/nvim/.config/nvim/lua/plugins/configs/overseer.lua b/nvim/.config/nvim/lua/plugins/configs/overseer.lua deleted file mode 100644 index 1498277..0000000 --- a/nvim/.config/nvim/lua/plugins/configs/overseer.lua +++ /dev/null @@ -1,12 +0,0 @@ -return -{ - -- Configuration function to be run after the plugin is loaded - on_load = function() - require('overseer').setup() - end, - - -- Keymaps to be set after the plugin is loaded - keymaps = { - -- { [modes='n'], keys, cmd, desc } - } -} diff --git a/nvim/.config/nvim/lua/plugins/configs/telescope.lua b/nvim/.config/nvim/lua/plugins/configs/telescope.lua index e3f27ac..5dde2b8 100644 --- a/nvim/.config/nvim/lua/plugins/configs/telescope.lua +++ b/nvim/.config/nvim/lua/plugins/configs/telescope.lua @@ -1,6 +1,7 @@ local function tc(cmd,theme) return "Telescope "..cmd.." theme="..theme.."" end +-- local builtin = require('telescope.builtin') return { diff --git a/nvim/.config/nvim/lua/plugins/init.lua b/nvim/.config/nvim/lua/plugins/init.lua index cbc8759..fcf69f2 100644 --- a/nvim/.config/nvim/lua/plugins/init.lua +++ b/nvim/.config/nvim/lua/plugins/init.lua @@ -1,30 +1,32 @@ +-- If only a simple require(...).setup{} is needed, pass `simple_init = true` in spec.data return { + -- Dependencies + 'https://github.com/nvim-lua/plenary.nvim', -- For Telescope + 'https://github.com/nvim-neotest/nvim-nio', -- For nvim-dap-ui + -- Colorschemes 'https://github.com/shatur/neovim-ayu', 'https://github.com/OXY2DEV/helpview.nvim', - -- Dependencies - 'https://github.com/nvim-lua/plenary.nvim', -- For Telescope - 'https://github.com/nvim-neotest/nvim-nio', -- For nvim-dap-ui { src = 'https://github.com/nvim-mini/mini.nvim', name = 'mini' }, { src = 'https://github.com/stevearc/oil.nvim', name = 'oil' }, { src = 'https://github.com/nvim-telescope/telescope.nvim', name = 'telescope' }, - { src = 'https://github.com/stevearc/overseer.nvim', name = 'overseer' }, + { src = 'https://github.com/stevearc/overseer.nvim', name = 'overseer', data = { simple_init = true } }, { src = 'https://codeberg.org/andyg/leap.nvim', name = 'leap' }, -- Debugging Support 'https://github.com/mfussenegger/nvim-dap', 'https://github.com/rcarriga/nvim-dap-ui', - 'https://github.com/theHamsta/nvim-dap-virtual-text', + { src = 'https://github.com/theHamsta/nvim-dap-virtual-text', data = { simple_init = true } }, -- Easy Installers 'https://github.com/nvim-treesitter/nvim-treesitter', - { src = 'https://github.com/mason-org/mason.nvim', name = 'mason' }, + { src = 'https://github.com/mason-org/mason.nvim', name = 'mason', data = { simple_init = true } }, -- Misc. - { src = 'https://github.com/folke/lazydev.nvim', name = 'lazydev' }, + { src = 'https://github.com/folke/lazydev.nvim', name = 'lazydev', data = { simple_init = true } }, } diff --git a/nvim/.config/nvim/lua/settings/keymaps.lua b/nvim/.config/nvim/lua/settings/keymaps.lua index b41202b..cb0e53f 100644 --- a/nvim/.config/nvim/lua/settings/keymaps.lua +++ b/nvim/.config/nvim/lua/settings/keymaps.lua @@ -1,6 +1,6 @@ local keymap = vim.keymap.set -keymap("", "", "", opts) +keymap("", "", "") vim.g.mapleader = " " vim.g.maplocalleader = " " @@ -15,90 +15,79 @@ vim.g.maplocalleader = " " -- Normal -- -- Window Navigation -- -keymap("n", "", "h", {}) -keymap("n", "", "j", {}) -keymap("n", "", "k", {}) -keymap("n", "", "l", {}) +keymap("n", "", "h") +keymap("n", "", "j") +keymap("n", "", "k") +keymap("n", "", "l") -- Splits -- -keymap("n", "", ":vsplit", {}) -keymap("n", "", ":split", {}) +keymap("n", "", ":vsplit", {silent=true}) +keymap("n", "", ":split", {silent=true}) -- Resize splits -- -keymap("n", "", ":resize +2", {}) -keymap("n", "", ":resize -2", {}) -keymap("n", "", ":vertical resize -2", {}) -keymap("n", "", ":vertical resize +2", {}) +keymap("n", "", ":resize +2", {silent=true}) +keymap("n", "", ":resize -2", {silent=true}) +keymap("n", "", ":vertical resize -2", {silent=true}) +keymap("n", "", ":vertical resize +2", {silent=true}) -- Navigate buffers -- -keymap("n", "j", ":bnext", {}) -keymap("n", "k", ":bprevious", {}) -keymap("n", "d", ":bdelete", {}) +keymap("n", "j", ":bnext", {silent=true}) +keymap("n", "k", ":bprevious", {silent=true}) +keymap("n", "d", ":bdelete", {silent=true}) -- Faster command -- -keymap("n", ";", ":", {}) +keymap("n", ";", ":") -- LSP Commands -- -keymap("n", "l?", vim.lsp.buf.hover, {}) -keymap("n", "li", vim.lsp.buf.implementation, {}) -keymap("n", "ld", vim.lsp.buf.definition, {}) -keymap("n", "lD", vim.lsp.buf.declaration, {}) -keymap("n", "lR", vim.lsp.buf.rename, {}) -keymap("n", "lca", vim.lsp.buf.code_action, {}) -keymap("n", "lr", vim.lsp.buf.references, {}) -keymap("n", "lf", vim.diagnostic.open_float, {}) -keymap("n", "lF", vim.lsp.buf.format, {}) -keymap("i", "", vim.lsp.buf.signature_help, {}) -keymap("i", "", vim.lsp.completion.get, {}) +keymap("n", "l?", vim.lsp.buf.hover) +keymap("n", "li", vim.lsp.buf.implementation) +keymap("n", "ld", vim.lsp.buf.definition) +keymap("n", "lD", vim.lsp.buf.declaration) +keymap("n", "lR", vim.lsp.buf.rename) +keymap("n", "lca", vim.lsp.buf.code_action) +keymap("n", "lr", vim.lsp.buf.references) +keymap("n", "lf", vim.diagnostic.open_float) +keymap("n", "lF", vim.lsp.buf.format) +keymap("n", "li", vim.lsp.inlay_hint.toggle) +keymap("i", "", vim.lsp.buf.signature_help) +keymap("i", "", vim.lsp.completion.get) -- Insert -- -- Quicker escape -- -keymap("i", "jk", "", {}) +keymap("i", "jk", "") -- Move lines -- -keymap("n", "", "<<", {}) -keymap("n", "", ">>", {}) -keymap("n", "", "dd2kp", {}) -keymap("n", "", "ddp", {}) +keymap("n", "", "<<") +keymap("n", "", ">>") +keymap("n", "", "dd2kp") +keymap("n", "", "ddp") -- Visual -- -- Stay in indent mode -- -keymap("v", "", "", ">gv", {}) +keymap("v", "", "", ">gv") -- Move text up and down -keymap("v", "", ":move '<-2gv-gv", {}) -keymap("v", "", ":move '>+1gv-gv", {}) +keymap("v", "", ":move '<-2gv-gv", {silent=true}) +keymap("v", "", ":move '>+1gv-gv", {silent=true}) -- Paste overwrite selection keymap("v", "p", '"_dP', {}) -- Terminal -- -- Better terminal navigation -- -keymap("t", "", "h", {}) -keymap("t", "", "j", {}) -keymap("t", "", "k", {}) -keymap("t", "", "l", {}) +keymap("t", "", "h") +keymap("t", "", "j") +keymap("t", "", "k") +keymap("t", "", "l") -- ------------------------------------------------------------------------------------- -- ------------------------------------------------------------------------------------- -- Tab Overloads -keymap("i", "", - function() - if vim.fn.pumvisible() == 1 then - return '' - else - return '' - end - end, - { expr = true, noremap = true, silent = true } +keymap("i", "", function() + return vim.fn.pumvisible() == 0 and '' or '' + end, { expr = true } ) -keymap("i", "", - function() - if vim.fn.pumvisible() == 1 then - return '' - else - return '' - end - end, - { expr = true, noremap = true, silent = true } +keymap("i", "", function() + return vim.fn.pumvisible() == 0 and '' or '' + end, { expr = true } )