diff options
Diffstat (limited to 'modules/programs/nixvim/plugins/lsp.nix')
| -rw-r--r-- | modules/programs/nixvim/plugins/lsp.nix | 198 |
1 files changed, 187 insertions, 11 deletions
diff --git a/modules/programs/nixvim/plugins/lsp.nix b/modules/programs/nixvim/plugins/lsp.nix index c734ea2..7fc3ddd 100644 --- a/modules/programs/nixvim/plugins/lsp.nix +++ b/modules/programs/nixvim/plugins/lsp.nix @@ -6,6 +6,7 @@ enable = true; inlayHints = true; autoLoad = true; + keymaps.lspBuf = { K = "hover"; gD = "references"; @@ -13,46 +14,221 @@ gi = "implementation"; gt = "type_definition"; }; + servers = { - nil_ls = { + # -- System & Configuration -- + nixd = { enable = true; - }; - lua_ls = { + package = null; + }; # Nix + bashls = { + enable = true; + package = null; + }; # Bash/Shell + taplo = { + enable = true; + package = null; + }; # TOML + yamlls = { + enable = true; + package = null; + }; # YAML + jsonls = { + enable = true; + package = null; + }; # JSON + marksman = { + enable = true; + package = null; + }; # Markdown + + # -- Web Development (HTML/CSS/JS/TS) -- + html = { + enable = true; + package = null; + }; # HTML + cssls = { + enable = true; + package = null; + }; # CSS/SCSS/LESS + tailwindcss = { enable = true; package = null; + }; # Tailwind CSS + vtsls = { + # JS/TS (Modern fast wrapper for tsserver) + enable = true; + package = null; + settings = { + # Optional but recommended: stops huge generic types from taking over your screen + vtsls.experimental.maxInlayHintLength = 30; + + # TypeScript type inferences + typescript.inlayHints = { + parameterNames.enabled = "all"; + parameterTypes.enabled = true; + variableTypes.enabled = true; + propertyDeclarationTypes.enabled = true; + functionLikeReturnTypes.enabled = true; + enumMemberValues.enabled = true; + }; + + # JavaScript type inferences (via JSDoc) + javascript.inlayHints = { + parameterNames.enabled = "all"; + parameterTypes.enabled = true; + variableTypes.enabled = true; + propertyDeclarationTypes.enabled = true; + functionLikeReturnTypes.enabled = true; + enumMemberValues.enabled = true; + }; + }; }; - nixd = { + eslint = { enable = true; package = null; + }; # ESLint diagnostics/formatting + + # -- Web Frameworks -- + volar = { + # Vue + enable = true; + package = null; + tslsIntegration = false; }; - pyright = { + svelte = { + enable = true; + package = null; + }; # Svelte + astro = { enable = true; package = null; + }; # Astro + + # -- Scripting & High-Level Languages -- + basedpyright = { + # Python (Modern, faster fork of Pyright) + enable = true; + package = null; + settings.basedpyright.analysis.inlayHints = { + variableTypes = true; + callArgumentNames = true; + functionReturnTypes = true; + genericTypes = false; # can get noisy, opt-in + }; }; - ts_ls = { + ruff = { enable = true; package = null; + }; # Python (Ultra-fast linter/formatter) + ruby_lsp = { + enable = true; + package = null; + }; # Ruby (Shopify's modern standard) + lua_ls = { + # Lua + enable = true; + package = null; + settings.Lua.hint = { + enable = true; + arrayIndex = "Auto"; + setType = true; + paramName = "All"; + paramType = true; + }; }; + intelephense = { + enable = true; + package = null; + }; # PHP + elixirls = { + enable = true; + package = null; + }; # Elixir + + # -- Systems, Compiled, & Enterprise -- clangd = { enable = true; package = null; - }; - jsonls = { + }; # C/C++ (inlay hints on by default) + rust_analyzer = { + # Rust (inlay hints on by default) enable = true; package = null; + installCargo = false; + installRustc = false; }; - yamlls = { + gopls = { + # Go enable = true; package = null; + settings.gopls.hints = { + assignVariableTypes = true; + compositeLiteralFields = true; + compositeLiteralTypes = true; + constantValues = true; + functionTypeParameters = true; + parameterNames = true; + rangeVariableTypes = true; + }; }; - bashls = { + zls = { enable = true; package = null; + }; # Zig (inlay hints on by default) + jdtls = { + # Java + enable = true; + package = null; + settings.java.inlayHints.parameterNames.enabled = "all"; }; - gopls = { + kotlin_language_server = { + enable = true; + package = null; + }; # Kotlin + csharp_ls = { enable = true; package = null; + }; # C# (.NET) — no inlay hint support + hls = { + # Haskell + enable = true; + package = null; + installGhc = false; + settings.haskell.plugin."inlay-hints".globalOn = true; }; + ocamllsp = { + enable = true; + package = null; + }; # OCaml + + # -- Infrastructure & DevOps -- + dockerls = { + enable = true; + package = null; + }; # Dockerfile + docker_compose_language_service = { + enable = true; + package = null; + }; # Docker Compose + terraformls = { + enable = true; + package = null; + }; # Terraform/HCL + + # -- Data & APIs -- + sqlls = { + enable = true; + package = null; + }; # SQL + graphql = { + enable = true; + package = null; + }; # GraphQL + prismals = { + enable = true; + package = null; + }; # Prisma ORM }; }; } |
