{ icons, pkgs, ... }: { opts = { enable = true; # Set keymaps when LSP is attached keymaps = { extra = [ { mode = "n"; key = "li"; action = "LspInfo"; options.desc = "Show LSP info"; } { mode = "n"; key = "ll"; action.__raw = "function() vim.lsp.codelens.refresh() end"; options.desc = "LSP CodeLens refresh"; } { mode = "n"; key = "lL"; action.__raw = "function() vim.lsp.codelens.run() end"; options.desc = "LSP CodeLens run"; } ]; lspBuf = { "la" = { action = "code_action"; desc = "LSP code action"; }; "lr" = { action = "rename"; desc = "Rename current symbol"; }; # "lR" = { # action = "references"; # desc = "Search references"; # }; "lh" = { action = "signature_help"; desc = "Signature help"; }; "lG" = { action = "workspace_symbol"; desc = "Search workspace symbols"; }; "gK" = { action = "signature_help"; desc = "Signature help"; }; gd = { action = "definition"; desc = "Go to definition"; }; gI = { action = "implementation"; desc = "Go to implementation"; }; gy = { action = "type_definition"; desc = "Go to type definition"; }; K = { action = "hover"; desc = "LSP hover"; }; }; }; postConfig = '' vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" }) vim.diagnostic.config({ virtual_text = true, signs = true, underline = true, update_in_insert = true, severity_sort = false, }) local signs = { Error = "${icons.DiagnosticError}", Warn = "${icons.DiagnosticWarn}", Info = "${icons.DiagnosticInfo}", Hint = "${icons.DiagnosticHint}", } for type, icon in pairs(signs) do local hl = "DiagnosticSign" .. type vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) end ''; # Load all servers definitions servers = { bashls.enable = true; cssls.enable = true; docker-compose-language-service.enable = true; dockerls.enable = true; helm-ls.enable = true; html.enable = true; jsonls.enable = true; lua-ls.enable = true; nginx-language-server.enable = true; nixd.enable = true; pyright.enable = true; yamlls.enable = true; clangd.enable = true; marksman.enable = true; texlab.enable = true; lemminx.enable = true; # XML java-language-server.enable = false; zls.enable = false; rust-analyzer.enable = false; typos-lsp = { enable = true; extraOptions.init_options.diagnosticSeverity = "Hint"; }; }; }; rootOpts = { colorschemes.catppuccin.settings.integrations.native_lsp.enabled = true; extraPackages = [ pkgs.go ]; }; }