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

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
{
-- 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' },
}
}

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
require('mini.tabline').setup()
end
require('mini.align').setup {
mappings = {
start = 'gl',
start_with_preview = 'gL',
},
}
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()
require('helpers/kmstack').push('n', '<Down>', dap.step_over, {})
require('helpers/kmstack').push('n', '<Up>', dap.restart_frame, {})
require('helpers/kmstack').push('n', '<Right>', dap.step_into, {})
require('helpers/kmstack').push('n', '<Left>', dap.step_out, {})
vim.keymap.push('n', '<Down>' , dap.step_over)
vim.keymap.push('n', '<Up>' , dap.restart_frame)
vim.keymap.push('n', '<Right>', dap.step_into)
vim.keymap.push('n', '<Left>' , 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', '<Down>')
require('helpers/kmstack').pop('n', '<Up>')
require('helpers/kmstack').pop('n', '<Right>')
require('helpers/kmstack').pop('n', '<Left>')
vim.keymap.pop('n', '<Down>')
vim.keymap.pop('n', '<Up>')
vim.keymap.pop('n', '<Right>')
vim.keymap.pop('n', '<Left>')
end
dap.listeners.after.event_exited.key_config = dap.listeners.after.event_terminated.key_config
@@ -40,6 +40,6 @@ return
keymaps = {
{ 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 = {
{ keys = '<leader>oo', cmd = require('oil').open, desc = 'Open' },
{ keys = '<leader>oc', cmd = require('oil').close, desc = 'Close' },
{ keys = '<leader>of', cmd = require('oil').toggle_float, desc = 'Toggle Floating' },
{ keys = '<leader>oo', cmd = require('oil').open , desc = 'Open' },
{ keys = '<leader>oc', cmd = require('oil').close , desc = 'Close' },
{ keys = '<leader>of', cmd = require('oil').toggle_float , desc = 'Toggle Floating' },
{ 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)
return "<cmd>Telescope "..cmd.." theme="..theme.."<CR>"
end
-- local builtin = require('telescope.builtin')
return
{

View File

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

View File

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