aboutsummaryrefslogtreecommitdiff
path: root/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua
diff options
context:
space:
mode:
authormirenn <me@mirenn.dev>2026-09-21 23:09:33 +0200
committermirenn <me@mirenn.dev>2026-10-06 14:13:32 +0200
commit8f9c77878f8742a47d34a50748023d1b552cfbf1 (patch)
treef749dff061451ab8427100c452f8175de8e39c53 /mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua
parent8501a38d7c3bbc2e99466e6658be134c72d4f47a (diff)
downloaddotfiles-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.lua138
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" },
+}