From e2f6ed72ed5152bd545ad4bf712b0d022ac15fe9 Mon Sep 17 00:00:00 2001 From: unexplrd Date: Fri, 13 Jun 2025 00:15:32 +0300 Subject: [PATCH] modules/home/programs/editor: some lsp work Signed-off-by: unexplrd --- modules/home/programs/editor/helix.nix | 82 +++++++++++++++-------- modules/home/programs/editor/zed.nix | 92 +++++++++++++++----------- 2 files changed, 111 insertions(+), 63 deletions(-) diff --git a/modules/home/programs/editor/helix.nix b/modules/home/programs/editor/helix.nix index b0776c0..2d498af 100644 --- a/modules/home/programs/editor/helix.nix +++ b/modules/home/programs/editor/helix.nix @@ -62,44 +62,57 @@ in { }; languages = { language-server = { - clangd.command = "${pkgs.clang-tools}/bin/clangd"; # markdown-oxide.command = getExe pkgs.markdown-oxide; - nil.command = getExe pkgs.nil; # nixd.command = getExe pkgs.nixd; - # pyright.command = getExe pkgs.pyright; - # pyright.args = ["-"]; - ruff.command = getExe pkgs.ruff; - ruff.args = ["server"]; + # pyright = { + # command = getExe pkgs.pyright; + # args = ["-"]; + # }; # rust-analyzer.command = getExe pkgs.rust-analyzer; # texlab.command = getExe pkgs.texlab; + bash-language-server = { + command = getExe pkgs.bash-language-server; + environment = { + "SHELLCHECK_PATH" = getExe pkgs.shellcheck; + "SHFMT_PATH" = getExe pkgs.shfmt; + }; + }; + clangd.command = "${pkgs.clang-tools}/bin/clangd"; + fsac = { + command = getExe pkgs.fsautocomplete; + config = { + # editor.formatOnSave = true; + AutomaticWorkspaceInit = true; + FSharp.ExternalAutocomplete = true; + FSharp.linting.fsharplint.enabled = true; + FSharp.linting.fsharplint.configFile = "fsharplint.json"; + FSharp.formatting.fantomas.enabled = true; + }; + }; + nil = { + command = getExe pkgs.nil; + config = { + formatting.command = [(getExe pkgs.alejandra)]; + }; + }; + ruff = { + command = getExe pkgs.ruff; + args = ["server"]; + }; tinymist.command = getExe pkgs.tinymist; + vscode-json-language-server.command = getExe pkgs.nodePackages.vscode-json-languageserver; + yaml-language-server.command = getExe pkgs.yaml-language-server; zk = { command = getExe pkgs.zk; args = ["lsp"]; }; - fsac.command = getExe pkgs.fsautocomplete; - fsac.config = { - # editor.formatOnSave = true; - AutomaticWorkspaceInit = true; - FSharp.ExternalAutocomplete = true; - FSharp.linting.fsharplint.enabled = true; - FSharp.linting.fsharplint.configFile = "fsharplint.json"; - FSharp.formatting.fantomas.enabled = true; - }; }; language = [ { name = "nix"; auto-format = true; - formatter.command = getExe pkgs.alejandra; language-servers = ["nil"]; } - # { - # name = "latex"; - # auto-format = true; - # formatter.command = "${pkgs.texlivePackages.latexindent}/bin/latexindent"; - # language-servers = ["texlab"]; - # } { name = "typst"; auto-format = true; @@ -109,23 +122,21 @@ in { { name = "markdown"; # auto-format = true; - # formatter.command = "${pkgs.comrak}/bin/comrak"; language-servers = ["zk" "markdown-oxide"]; } { name = "c"; auto-format = true; - formatter.command = "${pkgs.clang-tools}/bin/clang-format"; + # formatter.command = "${pkgs.clang-tools}/bin/clang-format"; } { name = "cpp"; auto-format = true; - formatter.command = "${pkgs.clang-tools}/bin/clang-format"; + # formatter.command = "${pkgs.clang-tools}/bin/clang-format"; } { name = "fsharp"; auto-format = true; - # formatter.command = getExe pkgs.fantomas; language-servers = ["fsac"]; scope = "source.fs"; roots = ["fsproj" "sln" ".git"]; @@ -136,6 +147,25 @@ in { # language-servers = ["rust-analyzer"]; # formatter.command = getExe pkgs.rustfmt; # } + { + name = "json"; + auto-format = true; + formatter.command = getExe pkgs.jq; + language-servers = ["vscode-json-language-server"]; + } + { + name = "yaml"; + auto-format = true; + formatter.command = getExe pkgs.yamlfmt; + formatter.args = ["-"]; + language-servers = ["yaml-language-server"]; + } + { + name = "bash"; + auto-format = true; + # formatter.command = getExe pkgs.shfmt; + # formatter.args = ["-"]; + } { name = "python"; auto-format = true; diff --git a/modules/home/programs/editor/zed.nix b/modules/home/programs/editor/zed.nix index 42b380a..d5d70fb 100644 --- a/modules/home/programs/editor/zed.nix +++ b/modules/home/programs/editor/zed.nix @@ -15,11 +15,11 @@ in { programs.zed-editor = { enable = true; extensions = [ - "nix" + "bash" "fsharp" - # "latex" - "typst" "justfile" + "nix" + "typst" ]; userSettings = { vim_mode = true; @@ -35,30 +35,29 @@ in { }; "Nix" = { language-servers = [ - "!nil" - "nixd" + "nil" ]; - formatter = { - external.command = getExe pkgs.alejandra; - }; - }; - "Rust" = { - formatter = { - external = { - command = getExe pkgs.rustfmt; - arguments = ["--edition" "2021"]; - }; - }; + # formatter = { + # external.command = getExe pkgs.alejandra; + # }; }; + # "Rust" = { + # formatter = { + # external = { + # command = getExe pkgs.rustfmt; + # arguments = ["--edition" "2021"]; + # }; + # }; + # }; "typst" = { language-servers = ["tinymist"]; format_on_save = "on"; - formatter = { - external = { - command = getExe pkgs.typstyle; - arguments = ["-i" "{buffer_path}"]; - }; - }; + # formatter = { + # external = { + # command = getExe pkgs.typstyle; + # arguments = ["-i" "{buffer_path}"]; + # }; + # }; }; "Python" = { format_on_save = "on"; @@ -73,6 +72,15 @@ in { }; }; lsp = { + bash-language-server = { + binary = { + path = getExe pkgs.bash-language-server; + env = { + "SHELLCHECK_PATH" = getExe pkgs.shellcheck; + "SHFMT_PATH" = getExe pkgs.shfmt; + }; + }; + }; fsautocomplete = { binary = { path = getExe pkgs.fsautocomplete; @@ -91,32 +99,32 @@ in { path = "${pkgs.clang-tools}/bin/clangd"; }; }; - rust-analyzer = { - binary = { - arguments = []; - path = getExe pkgs.rust-analyzer; - }; - }; + # rust-analyzer = { + # binary = { + # arguments = []; + # path = getExe pkgs.rust-analyzer; + # }; + # }; ruff = { binary = { arguments = []; path = getExe pkgs.ruff; }; }; - nixd = { - binary = { - arguments = []; - path = getExe pkgs.nixd; - }; - initialization_options.formatting.command = [(getExe pkgs.alejandra)]; - }; - # nil = { + # nixd = { # binary = { # arguments = []; - # path = getExe pkgs.nil; + # path = getExe pkgs.nixd; # }; # initialization_options.formatting.command = [(getExe pkgs.alejandra)]; # }; + nil = { + binary = { + arguments = []; + path = getExe pkgs.nil; + }; + settings.formatting.command = [(getExe pkgs.alejandra)]; + }; # texlab = { # binary = { # arguments = []; @@ -129,6 +137,16 @@ in { path = getExe pkgs.tinymist; }; }; + vscode-json-language-server = { + binary = { + path = getExe pkgs.nodePackages.vscode-json-languageserver; + }; + }; + yaml-language-server = { + binary = { + path = getExe pkgs.yaml-language-server; + }; + }; }; telemetry = { diagnostics = false;