refactor(nvim): rework whole configuration

This commit is contained in:
Yorick Barbanneau 2025-09-11 00:53:20 +02:00
parent 64c6149fde
commit 710e8f6395
Signed by: ephase
GPG key ID: 246042E52B41FFCF
6 changed files with 90 additions and 45 deletions

View file

@ -52,7 +52,7 @@ vim.opt.wildmode = 'lastused:full,list' -- enhance menu
vim.opt.pumheight = 10
vim.opt.pumwidth = 50
vim.opt.pumblend = 10
vim.o.winborder = 'none'
-- manage line break smartly
vim.opt.wrap = true
vim.opt.breakindent = true
@ -103,24 +103,13 @@ vim.opt.wildignore = {
'*.sw?'
}
-- Key biding
-- " ----------
local opts = { noremap = true, silent = true}
vim.api.nvim_set_keymap('n', '<leader>/', ':nohlsearch<CR>', opts)
-- Move tabs with \[ and \]
vim.api.nvim_set_keymap('n', '<Leader>]', ':tabnext<CR>', opts)
vim.api.nvim_set_keymap('n', '<Leader>[', ':tabprev<CR>', opts)
vim.api.nvim_set_keymap('n', '<leader>l', ':set list!<CR>', {silent = true})
-- disable lsplog
-- This is not usefull on a daily basis and should positively impact performance
vim.lsp.set_log_level("off")
-- define a timeout for match parens
vim.g.matchparen_timeout = 2
vim.g.matchparen_insert_timeout = 2
vim.g.matchparen_timeout = 10
vim.g.matchparen_insert_timeout = 10
-- activate virtual lines for diagnistics
-- no more plugins needed
@ -134,3 +123,73 @@ vim.diagnostic.config({
-- },
signs = { text = { [x.ERROR] = "󰅙", [x.WARN] = "", [x.INFO] = "󰋼", [x.HINT] = "󰌵" } },
})
-- LSP
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
local opts = { buffer = ev.buf }
local client = vim.lsp.get_client_by_id(ev.data.client_id)
local bufnr = ev.buf
local function desc(description)
return { noremap = true, silent = true, buffer = bufnr, desc = description }
end
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = ev.buf, desc = "Go to [D]eclaration" })
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = ev.buf, desc = "Go to [d]efinition" })
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { buffer = ev.buf, desc = "Go to [i]mplementation" })
vim.keymap.set("n", "gr", vim.lsp.buf.references, { buffer = ev.buf, desc = "Go to [r]eferences" })
vim.keymap.set(
"n",
"K",
function()
vim.lsp.buf.hover
{ border = "rounded", max_width = 250 }
end,
opts)
vim.keymap.set(
"n",
"<C-k>",
function()
vim.lsp.buf.signature_help
{ border = "rounded", max_width = 250 }
end,
{buffer = ev.buf, desc = "Signature help"}
)
vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set(
"n",
"<leader>wl",
function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end,
opts
)
vim.keymap.set("n", "<leader>D", vim.lsp.buf.type_definition, { buffer = ev.buf, desc = "Type [D]efinition" })
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { buffer = ev.buf, desc = "LSP [r]e[n]ame" })
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { buffer = ev.buf, desc = "Show [c]ode [a]ction"})
vim.keymap.set(
"n",
"<leader>F",
function()
require("conform").format({ bufnr = bufnr })
end,
{ buffer = ev.buf, desc = "[F]ormat file" }
)
if client.server_capabilities.inlayHintProvider then
vim.keymap.set("n", "<space>h", function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
end, desc("LSP toggle inlay [h]ints"))
end
end,
})