Neovim Config Cleanup

This commit is contained in:
Robear Selwans
2026-03-23 11:14:52 +00:00
committed by Robear Selwans
parent abdf0f8462
commit a0c8f6b785
17 changed files with 151 additions and 177 deletions

View File

@@ -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/keymaps')
require('settings/options') require('settings/options')
vim.pack.add(require('plugins'), { load = require('helpers/plugins').load_fn }) require('functions/setup_plugins')
require('lsps') require('lsps')

View File

@@ -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

View File

@@ -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 })

View File

@@ -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,
}

View File

@@ -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
}

View File

@@ -48,7 +48,7 @@ for _, lsp_name in ipairs(enabled_lsps_custom) do
require("lsps/"..lsp_name) require("lsps/"..lsp_name)
end 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 for _, lsp_name in ipairs(enabled_lsps_lspconf) do
vim.lsp.config[lsp_name] = require('lspconfig.configs.'..lsp_name) vim.lsp.config[lsp_name] = require('lspconfig.configs.'..lsp_name)
end end

View File

@@ -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 }
}
}

View File

@@ -3,12 +3,8 @@ local leap_backward = function() require('leap').leap { opts = require('leap.use
return 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 = { keymaps = {
{ modes = {'n','x','o'}, keys = 's', cmd = leap_forward, desc = 'Forward' }, { 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_backward, desc = 'Backward' },
} }
} }

View File

@@ -1,6 +0,0 @@
return
{
on_load = function()
require('mason').setup()
end,
}

View File

@@ -7,5 +7,11 @@ return
if(vim.o.showtabline ~= 0) then if(vim.o.showtabline ~= 0) then
require('mini.tabline').setup() require('mini.tabline').setup()
end end
require('mini.align').setup {
mappings = {
start = 'gl',
start_with_preview = 'gL',
},
}
end, end,
} }

View File

@@ -1,6 +0,0 @@
return
{
on_load = function()
require('nvim-dap-virtual-text').setup()
end,
}

View File

@@ -21,18 +21,18 @@ return
} }
dap.listeners.before.attach.key_config = function() dap.listeners.before.attach.key_config = function()
require('helpers/kmstack').push('n', '<Down>', dap.step_over, {}) vim.keymap.push('n', '<Down>' , dap.step_over)
require('helpers/kmstack').push('n', '<Up>', dap.restart_frame, {}) vim.keymap.push('n', '<Up>' , dap.restart_frame)
require('helpers/kmstack').push('n', '<Right>', dap.step_into, {}) vim.keymap.push('n', '<Right>', dap.step_into)
require('helpers/kmstack').push('n', '<Left>', dap.step_out, {}) vim.keymap.push('n', '<Left>' , dap.step_out)
end end
dap.listeners.before.launch.key_config = dap.listeners.before.attach.key_config dap.listeners.before.launch.key_config = dap.listeners.before.attach.key_config
dap.listeners.after.event_terminated.key_config = function() dap.listeners.after.event_terminated.key_config = function()
require('helpers/kmstack').pop('n', '<Down>') vim.keymap.pop('n', '<Down>')
require('helpers/kmstack').pop('n', '<Up>') vim.keymap.pop('n', '<Up>')
require('helpers/kmstack').pop('n', '<Right>') vim.keymap.pop('n', '<Right>')
require('helpers/kmstack').pop('n', '<Left>') vim.keymap.pop('n', '<Left>')
end end
dap.listeners.after.event_exited.key_config = dap.listeners.after.event_terminated.key_config dap.listeners.after.event_exited.key_config = dap.listeners.after.event_terminated.key_config
@@ -40,6 +40,6 @@ return
keymaps = { keymaps = {
{ keys = '<leader>db', cmd = require('dap').toggle_breakpoint, desc = 'Toggle Breakpoint' }, { keys = '<leader>db', cmd = require('dap').toggle_breakpoint, desc = 'Toggle Breakpoint' },
{ keys = '<leader>dn', cmd = require('dap').step_over, desc = 'Step Over' }, { keys = '<leader>dn', cmd = require('dap').step_over , desc = 'Step Over' },
}, },
} }

View File

@@ -15,9 +15,9 @@ return
-- Keymaps to be set after the plugin is loaded -- Keymaps to be set after the plugin is loaded
keymaps = { keymaps = {
{ keys = '<leader>oo', cmd = require('oil').open, desc = 'Open' }, { keys = '<leader>oo', cmd = require('oil').open , desc = 'Open' },
{ keys = '<leader>oc', cmd = require('oil').close, desc = 'Close' }, { keys = '<leader>oc', cmd = require('oil').close , desc = 'Close' },
{ keys = '<leader>of', cmd = require('oil').toggle_float, desc = 'Toggle Floating' }, { keys = '<leader>of', cmd = require('oil').toggle_float , desc = 'Toggle Floating' },
{ keys = '<leader>op', cmd = require('oil.actions').preview.callback, desc = 'Toggle Preview' }, { keys = '<leader>op', cmd = require('oil.actions').preview.callback, desc = 'Toggle Preview' },
} }
} }

View File

@@ -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 }
}
}

View File

@@ -1,6 +1,7 @@
local function tc(cmd,theme) local function tc(cmd,theme)
return "<cmd>Telescope "..cmd.." theme="..theme.."<CR>" return "<cmd>Telescope "..cmd.." theme="..theme.."<CR>"
end end
-- local builtin = require('telescope.builtin')
return return
{ {

View File

@@ -1,30 +1,32 @@
-- If only a simple require(...).setup{} is needed, pass `simple_init = true` in spec.data
return return
{ {
-- Dependencies
'https://github.com/nvim-lua/plenary.nvim', -- For Telescope
'https://github.com/nvim-neotest/nvim-nio', -- For nvim-dap-ui
-- Colorschemes -- Colorschemes
'https://github.com/shatur/neovim-ayu', 'https://github.com/shatur/neovim-ayu',
'https://github.com/OXY2DEV/helpview.nvim', '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/nvim-mini/mini.nvim', name = 'mini' },
{ src = 'https://github.com/stevearc/oil.nvim', name = 'oil' }, { src = 'https://github.com/stevearc/oil.nvim', name = 'oil' },
{ src = 'https://github.com/nvim-telescope/telescope.nvim', name = 'telescope' }, { 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' }, { src = 'https://codeberg.org/andyg/leap.nvim', name = 'leap' },
-- Debugging Support -- Debugging Support
'https://github.com/mfussenegger/nvim-dap', 'https://github.com/mfussenegger/nvim-dap',
'https://github.com/rcarriga/nvim-dap-ui', '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 -- Easy Installers
'https://github.com/nvim-treesitter/nvim-treesitter', '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. -- Misc.
{ src = 'https://github.com/folke/lazydev.nvim', name = 'lazydev' }, { src = 'https://github.com/folke/lazydev.nvim', name = 'lazydev', data = { simple_init = true } },
} }

View File

@@ -1,6 +1,6 @@
local keymap = vim.keymap.set local keymap = vim.keymap.set
keymap("", "<Space>", "<Nop>", opts) keymap("", "<Space>", "<Nop>")
vim.g.mapleader = " " vim.g.mapleader = " "
vim.g.maplocalleader = " " vim.g.maplocalleader = " "
@@ -15,90 +15,79 @@ vim.g.maplocalleader = " "
-- Normal -- -- Normal --
-- Window Navigation -- -- Window Navigation --
keymap("n", "<C-h>", "<C-w>h", {}) keymap("n", "<C-h>", "<C-w>h")
keymap("n", "<C-j>", "<C-w>j", {}) keymap("n", "<C-j>", "<C-w>j")
keymap("n", "<C-k>", "<C-w>k", {}) keymap("n", "<C-k>", "<C-w>k")
keymap("n", "<C-l>", "<C-w>l", {}) keymap("n", "<C-l>", "<C-w>l")
-- Splits -- -- Splits --
keymap("n", "<M-v>", ":vsplit<cr>", {}) keymap("n", "<M-v>", ":vsplit<cr>", {silent=true})
keymap("n", "<M-s>", ":split<cr>", {}) keymap("n", "<M-s>", ":split<cr>", {silent=true})
-- Resize splits -- -- Resize splits --
keymap("n", "<M-k>", ":resize +2<cr>", {}) keymap("n", "<M-k>", ":resize +2<cr>", {silent=true})
keymap("n", "<M-j>", ":resize -2<cr>", {}) keymap("n", "<M-j>", ":resize -2<cr>", {silent=true})
keymap("n", "<M-h>", ":vertical resize -2<cr>", {}) keymap("n", "<M-h>", ":vertical resize -2<cr>", {silent=true})
keymap("n", "<M-l>", ":vertical resize +2<cr>", {}) keymap("n", "<M-l>", ":vertical resize +2<cr>", {silent=true})
-- Navigate buffers -- -- Navigate buffers --
keymap("n", "<leader>j", ":bnext<cr>", {}) keymap("n", "<leader>j", ":bnext<cr>", {silent=true})
keymap("n", "<leader>k", ":bprevious<cr>", {}) keymap("n", "<leader>k", ":bprevious<cr>", {silent=true})
keymap("n", "<leader>d", ":bdelete<cr>", {}) keymap("n", "<leader>d", ":bdelete<cr>", {silent=true})
-- Faster command -- -- Faster command --
keymap("n", ";", ":", {}) keymap("n", ";", ":")
-- LSP Commands -- -- LSP Commands --
keymap("n", "<leader>l?", vim.lsp.buf.hover, {}) keymap("n", "<leader>l?", vim.lsp.buf.hover)
keymap("n", "<leader>li", vim.lsp.buf.implementation, {}) keymap("n", "<leader>li", vim.lsp.buf.implementation)
keymap("n", "<leader>ld", vim.lsp.buf.definition, {}) keymap("n", "<leader>ld", vim.lsp.buf.definition)
keymap("n", "<leader>lD", vim.lsp.buf.declaration, {}) keymap("n", "<leader>lD", vim.lsp.buf.declaration)
keymap("n", "<leader>lR", vim.lsp.buf.rename, {}) keymap("n", "<leader>lR", vim.lsp.buf.rename)
keymap("n", "<leader>lca", vim.lsp.buf.code_action, {}) keymap("n", "<leader>lca", vim.lsp.buf.code_action)
keymap("n", "<leader>lr", vim.lsp.buf.references, {}) keymap("n", "<leader>lr", vim.lsp.buf.references)
keymap("n", "<leader>lf", vim.diagnostic.open_float, {}) keymap("n", "<leader>lf", vim.diagnostic.open_float)
keymap("n", "<leader>lF", vim.lsp.buf.format, {}) keymap("n", "<leader>lF", vim.lsp.buf.format)
keymap("i", "<C-k>", vim.lsp.buf.signature_help, {}) keymap("n", "<leader>li", vim.lsp.inlay_hint.toggle)
keymap("i", "<C-space>", vim.lsp.completion.get, {}) keymap("i", "<C-k>", vim.lsp.buf.signature_help)
keymap("i", "<C-space>", vim.lsp.completion.get)
-- Insert -- -- Insert --
-- Quicker escape -- -- Quicker escape --
keymap("i", "jk", "<ESC>", {}) keymap("i", "jk", "<ESC>")
-- Move lines -- -- Move lines --
keymap("n", "<Left>", "<<", {}) keymap("n", "<Left>", "<<")
keymap("n", "<Right>", ">>", {}) keymap("n", "<Right>", ">>")
keymap("n", "<Up>", "dd2kp", {}) keymap("n", "<Up>", "dd2kp")
keymap("n", "<Down>", "ddp", {}) keymap("n", "<Down>", "ddp")
-- Visual -- -- Visual --
-- Stay in indent mode -- -- Stay in indent mode --
keymap("v", "<Left>", "<gv", {}) keymap("v", "<Left>", "<gv")
keymap("v", "<Right>", ">gv", {}) keymap("v", "<Right>", ">gv")
-- Move text up and down -- Move text up and down
keymap("v", "<Up>", ":move '<-2<CR>gv-gv", {}) keymap("v", "<Up>", ":move '<-2<CR>gv-gv", {silent=true})
keymap("v", "<Down>", ":move '>+1<CR>gv-gv", {}) keymap("v", "<Down>", ":move '>+1<CR>gv-gv", {silent=true})
-- Paste overwrite selection -- Paste overwrite selection
keymap("v", "p", '"_dP', {}) keymap("v", "p", '"_dP', {})
-- Terminal -- -- Terminal --
-- Better terminal navigation -- -- Better terminal navigation --
keymap("t", "<C-h>", "<C-\\><C-N><C-w>h", {}) keymap("t", "<C-h>", "<C-\\><C-N><C-w>h")
keymap("t", "<C-j>", "<C-\\><C-N><C-w>j", {}) keymap("t", "<C-j>", "<C-\\><C-N><C-w>j")
keymap("t", "<C-k>", "<C-\\><C-N><C-w>k", {}) keymap("t", "<C-k>", "<C-\\><C-N><C-w>k")
keymap("t", "<C-l>", "<C-\\><C-N><C-w>l", {}) keymap("t", "<C-l>", "<C-\\><C-N><C-w>l")
-- ------------------------------------------------------------------------------------- -- -------------------------------------------------------------------------------------
-- ------------------------------------------------------------------------------------- -- -------------------------------------------------------------------------------------
-- Tab Overloads -- Tab Overloads
keymap("i", "<Tab>", keymap("i", "<Tab>", function()
function() return vim.fn.pumvisible() == 0 and '<Tab>' or '<C-n>'
if vim.fn.pumvisible() == 1 then end, { expr = true }
return '<C-n>'
else
return '<Tab>'
end
end,
{ expr = true, noremap = true, silent = true }
) )
keymap("i", "<S-Tab>", keymap("i", "<S-Tab>", function()
function() return vim.fn.pumvisible() == 0 and '<S-Tab>' or '<C-p>'
if vim.fn.pumvisible() == 1 then end, { expr = true }
return '<C-p>'
else
return '<S-Tab>'
end
end,
{ expr = true, noremap = true, silent = true }
) )