From 69bd84f24016eaa43aabff49749f62c0cefc1586 Mon Sep 17 00:00:00 2001 From: Charlie Root Date: Sun, 6 Apr 2025 21:22:27 +0200 Subject: [PATCH] helix.nix: update langs and lsps --- packages/helix.nix | 89 +++++++++++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 36 deletions(-) diff --git a/packages/helix.nix b/packages/helix.nix index 52ab14b..d13623c 100644 --- a/packages/helix.nix +++ b/packages/helix.nix @@ -27,6 +27,9 @@ typescript-language-server, rustfmt, clippy, + vscode-langservers-extracted, + ruff, + basedpyright, ... }: let inherit (lib) getExe; @@ -89,7 +92,7 @@ }; helix-languages = { language = let - extraFormatter = lang: { + mark = lang: { command = getExe deno; args = ["fmt" "-" "--ext" lang]; }; @@ -123,20 +126,24 @@ } { name = "json"; - formatter = extraFormatter "json"; + formatter = mark "json"; } { name = "markdown"; auto-format = true; - formatter = extraFormatter "md"; + formatter = mark "md"; + } + { + name = "qml"; + language-servers = ["qmlls"]; } { name = "python"; - language-servers = ["pyright"]; - formatter = { - command = getExe black; - args = ["-" "--quiet" "--line-length 100"]; - }; + auto-format = true; + language-servers = [ + "basedpyright" + "ruff" + ]; } { name = "typescript"; @@ -199,6 +206,28 @@ command = getExe cmake-language-server; }; + deno-lsp = { + command = lib.getExe deno; + args = ["lsp"]; + environment.NO_COLOR = "1"; + config.deno = { + enable = true; + lint = true; + unstable = true; + suggest = { + completeFunctionCalls = false; + imports = {hosts."https://deno.land" = true;}; + }; + inlayHints = { + enumMemberValues.enabled = true; + functionLikeReturnTypes.enabled = true; + parameterNames.enabled = "all"; + parameterTypes.enabled = true; + propertyDeclarationTypes.enabled = true; + variableTypes.enabled = true; + }; + }; + }; dprint = { command = getExe dprint; args = ["lsp"]; @@ -210,32 +239,10 @@ config.nil.formatting.command = ["${getExe alejandra}" "-q"]; }; - pyright = { - command = "${pyright}/bin/pyright-langserver"; + typescript-language-server = { + command = lib.getExe typescript-language-server; args = ["--stdio"]; config = { - reportMissingTypeStubs = false; - analysis = { - typeCheckingMode = "basic"; - autoImportCompletions = true; - }; - }; - }; - - typescript-language-server = { - command = getExe typescript-language-server; - args = ["--stdio"]; - config = let - inlayHints = { - includeInlayEnumMemberValueHints = true; - includeInlayFunctionLikeReturnTypeHints = true; - includeInlayFunctionParameterTypeHints = true; - includeInlayParameterNameHints = "all"; - includeInlayParameterNameHintsWhenArgumentMatchesName = true; - includeInlayPropertyDeclarationTypeHints = true; - includeInlayVariableTypeHints = true; - }; - in { typescript-language-server.source = { addMissingImports.ts = true; fixAll.ts = true; @@ -243,11 +250,21 @@ removeUnusedImports.ts = true; sortImports.ts = true; }; + }; + }; + ruff = { + command = lib.getExe ruff; + args = ["server"]; + }; + basedpyright.command = "${basedpyright}/bin/basedpyright-langserver"; - typescript = {inherit inlayHints;}; - javascript = {inherit inlayHints;}; - - hostInfo = "helix"; + vscode-css-language-server = { + command = "${vscode-langservers-extracted}/bin/vscode-css-languageserver"; + args = ["--stdio"]; + config = { + provideFormatter = true; + css.validate.enable = true; + scss.validate.enable = true; }; }; };