diff options
| author | mirenn <me@mirenn.dev> | 2026-09-21 23:09:33 +0200 |
|---|---|---|
| committer | mirenn <me@mirenn.dev> | 2026-10-06 14:13:32 +0200 |
| commit | 8f9c77878f8742a47d34a50748023d1b552cfbf1 (patch) | |
| tree | f749dff061451ab8427100c452f8175de8e39c53 /mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua | |
| parent | 8501a38d7c3bbc2e99466e6658be134c72d4f47a (diff) | |
| download | dotfiles-8f9c77878f8742a47d34a50748023d1b552cfbf1.tar.gz dotfiles-8f9c77878f8742a47d34a50748023d1b552cfbf1.zip | |
guix primer
Diffstat (limited to 'mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua')
| -rw-r--r-- | mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua new file mode 100644 index 0000000..4c69816 --- /dev/null +++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua @@ -0,0 +1,138 @@ +local config = function() + local lsp = vim.lsp + local capabilities = require("cmp_nvim_lsp").default_capabilities() + + -- setting custom signs + vim.diagnostic.config({ + signs = { + text = { + [vim.diagnostic.severity.ERROR] = '', + [vim.diagnostic.severity.WARN] = '', + [vim.diagnostic.severity.HINT] = '', + [vim.diagnostic.severity.INFO] = '', + }, + linehl = { + [vim.diagnostic.severity.ERROR] = 'ErrorMsg', + }, + numhl = { + [vim.diagnostic.severity.WARN] = 'WarningMsg', + }, + }, + }) + + vim.api.nvim_create_autocmd('LspAttach', { + callback = function(ev) + local client = lsp.get_client_by_id(ev.data.client_id) + local keymap = vim.keymap + local opts = { noremap = true, silent = true, buffer = ev.buf, desc = "" } + + -- setting custom keymaps + opts.desc = "Finder" + keymap.set("n", "<Space>lf", ":Lspsaga finder<Enter>", opts) -- go to definition + opts.desc = "Peek Definition (Lspsaga)" + keymap.set("n", "<Space>lp", ":Lspsaga peek_definition<Enter>", opts) -- peak definition + opts.desc = "Goto Definition (Lspsaga)" + keymap.set("n", "<Space>lg", ":Lspsaga goto_definition<Enter>", opts) -- go to definition + opts.desc = "Code Action (Lspsaga)" + keymap.set("n", "<Space>la", ":Lspsaga code_action<Enter>", opts) -- see available code actions + opts.desc = "Rename (Lspsaga)" + keymap.set("n", "<Space>lr", ":Lspsaga rename<Enter>", opts) -- smart rename + opts.desc = "Hover Documentation (Lspsaga)" + keymap.set("n", "<Space>lk", lsp.buf.hover, opts) -- show documentation for what is under cursor + opts.desc = "Outline (Lspsaga)" + keymap.set("n", "<Space>lo", ":Lspsaga outline<Enter>", opts) -- show outline + opts.desc = "Diagnostic (Lspsaga)" + keymap.set("n", "<Space>ld", ":Lspsaga show_workspace_diagnostics<Enter>", opts) -- show diagnostics + + -- enable auto formatting on save + if client ~= nil and client:supports_method("textDocument/formatting") then + vim.api.nvim_create_autocmd("BufWritePre", { + buffer = ev.buf, + callback = function() + lsp.buf.format({ async = true }) + end, + }) + end + end + }) + + vim.api.nvim_create_autocmd('LspDetach', { + callback = function(ev) + local client = lsp.get_client_by_id(ev.data.client_id) + local keymap = vim.keymap + keymap.del("n", "<Space>lf") + keymap.del("n", "<Space>lp") + keymap.del("n", "<Space>lg") + keymap.del("n", "<Space>la") + keymap.del("n", "<Space>lr") + keymap.del("n", "<Space>lk") + keymap.del("n", "<Space>lo") + keymap.del("n", "<Space>ld") + if client ~= nil and client:supports_method('textDocument/formatting') then + vim.api.nvim_clear_autocmds({ + event = 'BufWritePre', + buffer = ev.buf, + }) + end + end, + }) + + -- C/C++ + lsp.enable("clangd") + lsp.config("clangd", { + capabilities = capabilities, + }) + -- Rust + lsp.enable("rust_analyzer") + lsp.config("rust_analyzer", { + capabilities = capabilities, + }) + -- Haskell + lsp.enable("hls") + lsp.config("hls", { + capabilities = capabilities, + settings = { + ['haskell'] = { + cabalFormattingProvider = "cabalfmt", + formattingProvider = "ormolu" + }, + }, + }) + -- Lua + lsp.enable("lua_ls") + lsp.config("lua_ls", { + capabilities = capabilities, + }) + -- JavaScript/Typescript + lsp.enable("ts_ls") + lsp.config("ts_ls", { + capabilities = capabilities, + }) + -- CSS + lsp.enable("cssls") + lsp.config("cssls", { + capabilities = capabilities, + }) + -- Meson + lsp.enable("mesonlsp") + lsp.config("mesonlsp", { + capabilities = capabilities, + }) + -- Zig + lsp.enable("zls") + lsp.config("zls", { + capabilities = capabilities, + }) + -- Python + lsp.enable("pyright") + lsp.config("pyright", { + capabilities = capabilities, + }) +end + +return { + "neovim/nvim-lspconfig", + config = config, + lazy = true, + event = { "FileType" }, +} |
