mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-20 16:15:43 +02:00
plugins/lsp: Use the auto-generated lsp plugin list
This commit is contained in:
parent
c79bfb75da
commit
8e8d9afe8e
11 changed files with 172 additions and 679 deletions
|
@ -1,14 +1,14 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.plugins.none-ls.sources.formatting.prettier;
|
||||
ts-ls-cfg = config.plugins.lsp.servers.ts-ls;
|
||||
ts-ls-cfg = config.plugins.lsp.servers.ts_ls;
|
||||
in
|
||||
{
|
||||
options.plugins.none-ls.sources.formatting.prettier = {
|
||||
disableTsServerFormatter = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
description = ''
|
||||
Disables the formatting capability of the `ts-ls` language server if it is enabled.
|
||||
Disables the formatting capability of the `ts_ls` language server if it is enabled.
|
||||
'';
|
||||
default = null;
|
||||
example = true;
|
||||
|
@ -18,14 +18,14 @@ in
|
|||
config = lib.mkIf cfg.enable {
|
||||
warnings = lib.optional ((cfg.disableTsServerFormatter == null) && ts-ls-cfg.enable) ''
|
||||
You have enabled the `prettier` formatter in none-ls.
|
||||
You have also enabled the `ts-ls` language server which also brings a formatting feature.
|
||||
You have also enabled the `ts_ls` language server which also brings a formatting feature.
|
||||
|
||||
- To disable the formatter built-in the `ts-ls` language server, set
|
||||
- To disable the formatter built-in the `ts_ls` language server, set
|
||||
`plugins.none-ls.sources.formatting.prettier.disableTsServerFormatter` to `true`.
|
||||
- Else, to silence this warning, explicitly set the option to `false`.
|
||||
'';
|
||||
|
||||
plugins.lsp.servers.ts-ls =
|
||||
plugins.lsp.servers.ts_ls =
|
||||
lib.mkIf
|
||||
(
|
||||
cfg.enable
|
||||
|
|
|
@ -58,7 +58,8 @@ in
|
|||
|
||||
cmd = mkOption {
|
||||
type = with types; nullOr (listOf str);
|
||||
default = if (cfg.package or null) != null then cmd cfg else null;
|
||||
default =
|
||||
if (cfg.package or null) != null then if builtins.isFunction cmd then cmd cfg else cmd else null;
|
||||
description = ''
|
||||
A list where each entry corresponds to the blankspace delimited part of the command that
|
||||
launches the server.
|
||||
|
|
39
plugins/lsp/language-servers/_renamed.nix
Normal file
39
plugins/lsp/language-servers/_renamed.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
tsserver = "ts-ls";
|
||||
|
||||
# TODO: Remove after 24.11
|
||||
# Names before the LSP server auto-generation
|
||||
ast-grep = "ast_grep";
|
||||
clojure-lsp = "clojure_lsp";
|
||||
csharp-ls = "csharp_ls";
|
||||
dhall-lsp-server = "dhall_lsp_server";
|
||||
docker-compose-language-service = "docker_compose_language_service";
|
||||
emmet-ls = "emmet_ls";
|
||||
futhark-lsp = "futhark_lsp";
|
||||
golangci-lint-ls = "golangci_lint_ls";
|
||||
harper-ls = "harper_ls";
|
||||
helm-ls = "helm_ls";
|
||||
idris2-lsp = "idris2_lsp";
|
||||
java-language-server = "java_language_server";
|
||||
jdt-language-server = "jdtls";
|
||||
jsonnet-ls = "jsonnet_ls";
|
||||
kotlin-language-server = "kotlin_language_server";
|
||||
lua-ls = "lua_ls";
|
||||
nginx-language-server = "nginx_language_server";
|
||||
nickel-ls = "nickel_ls";
|
||||
nil-ls = "nil_ls";
|
||||
openscad-lsp = "openscad_lsp";
|
||||
pest-ls = "pest_ls";
|
||||
prolog-ls = "prolog_ls";
|
||||
r-language-server = "r_language_server";
|
||||
rnix-lsp = "rnix";
|
||||
ruby-lsp = "ruby_lsp";
|
||||
ruff-lsp = "ruff_lsp";
|
||||
rust-analyzer = "rust_analyzer";
|
||||
slint-lsp = "slint_lsp";
|
||||
ts-ls = "ts_ls";
|
||||
typos-lsp = "typos_lsp";
|
||||
typst-lsp = "typst_lsp";
|
||||
vala-ls = "vala_ls";
|
||||
vhdl-ls = "vhdl_ls";
|
||||
}
|
|
@ -6,197 +6,14 @@
|
|||
}:
|
||||
with lib;
|
||||
let
|
||||
servers = [
|
||||
{
|
||||
name = "ansiblels";
|
||||
description = "ansiblels for Ansible";
|
||||
package = "ansible-language-server";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/ansible-language-server"
|
||||
"--stdio"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "ast-grep";
|
||||
description = ''
|
||||
ast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale.
|
||||
ast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories.
|
||||
'';
|
||||
serverName = "ast_grep";
|
||||
}
|
||||
{
|
||||
name = "astro";
|
||||
description = "astrols for Astro";
|
||||
package = "astro-language-server";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/astro-ls"
|
||||
"--stdio"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "basedpyright";
|
||||
description = "basedpyright, a static type checker and language server for python";
|
||||
}
|
||||
{
|
||||
name = "bashls";
|
||||
description = "bashls for bash";
|
||||
package = "bash-language-server";
|
||||
}
|
||||
{
|
||||
name = "beancount";
|
||||
description = "beancount-language-server";
|
||||
package = "beancount-language-server";
|
||||
}
|
||||
{
|
||||
name = "biome";
|
||||
description = "Biome, Toolchain of the Web";
|
||||
}
|
||||
{
|
||||
name = "bufls";
|
||||
description = "Prototype for a Protobuf language server compatible with Buf.";
|
||||
package = "buf-language-server";
|
||||
}
|
||||
{
|
||||
name = "ccls";
|
||||
description = "ccls for C/C++";
|
||||
}
|
||||
{
|
||||
name = "clangd";
|
||||
description = "clangd LSP for C/C++";
|
||||
package = "clang-tools";
|
||||
}
|
||||
{
|
||||
name = "clojure-lsp";
|
||||
description = "clojure-lsp for Clojure";
|
||||
serverName = "clojure_lsp";
|
||||
}
|
||||
{
|
||||
name = "cmake";
|
||||
description = "cmake language server";
|
||||
package = "cmake-language-server";
|
||||
}
|
||||
{
|
||||
name = "csharp-ls";
|
||||
description = "csharp-ls for C#";
|
||||
serverName = "csharp_ls";
|
||||
}
|
||||
{
|
||||
name = "cssls";
|
||||
description = "cssls for CSS";
|
||||
package = "vscode-langservers-extracted";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/vscode-css-language-server"
|
||||
"--stdio"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "dagger";
|
||||
description = "dagger for Cuelang";
|
||||
package = "cuelsp";
|
||||
}
|
||||
{
|
||||
name = "dartls";
|
||||
description = "dart language-server";
|
||||
package = "dart";
|
||||
renamedServers = import ./_renamed.nix;
|
||||
|
||||
lspExtraArgs = {
|
||||
dartls = {
|
||||
settingsOptions = import ./dartls-settings.nix { inherit lib helpers; };
|
||||
settings = cfg: { dart = cfg; };
|
||||
}
|
||||
{
|
||||
name = "denols";
|
||||
description = "denols for Deno";
|
||||
package = "deno";
|
||||
}
|
||||
{
|
||||
name = "dhall-lsp-server";
|
||||
description = "dhall-lsp-server for Dhall";
|
||||
serverName = "dhall_lsp_server";
|
||||
}
|
||||
{
|
||||
name = "digestif";
|
||||
description = "digestif for LaTeX";
|
||||
# luaPackages.digestif is currently broken, using lua54Packages instead
|
||||
package = [
|
||||
"lua54Packages"
|
||||
"digestif"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "docker-compose-language-service";
|
||||
description = "docker-compose-language-service for Docker Compose";
|
||||
serverName = "docker_compose_language_service";
|
||||
}
|
||||
{
|
||||
name = "dockerls";
|
||||
description = "dockerls for Dockerfile";
|
||||
package = "dockerfile-language-server-nodejs";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/docker-langserver"
|
||||
"--stdio"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "efm";
|
||||
description = "efm-langserver for misc tools";
|
||||
package = "efm-langserver";
|
||||
}
|
||||
{
|
||||
name = "elmls";
|
||||
description = "elmls for Elm";
|
||||
package = [
|
||||
"elmPackages"
|
||||
"elm-language-server"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "emmet-ls";
|
||||
description = "emmet_ls, emmet support based on LSP";
|
||||
serverName = "emmet_ls";
|
||||
}
|
||||
{
|
||||
name = "eslint";
|
||||
package = "vscode-langservers-extracted";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/vscode-eslint-language-server"
|
||||
"--stdio"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "elixirls";
|
||||
package = "elixir-ls";
|
||||
cmd = cfg: [ "${cfg.package}/bin/elixir-ls" ];
|
||||
}
|
||||
{
|
||||
name = "fortls";
|
||||
description = "fortls for Fortran";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/fortls"
|
||||
"--hover_signature"
|
||||
"--hover_language=fortran"
|
||||
"--use_signature_help"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "fsautocomplete";
|
||||
description = "fsautocomplete for F#";
|
||||
}
|
||||
{
|
||||
name = "futhark-lsp";
|
||||
description = "futhark-lsp for Futhark";
|
||||
package = "futhark";
|
||||
serverName = "futhark_lsp";
|
||||
}
|
||||
{
|
||||
name = "gdscript";
|
||||
description = "gdscript for Godot";
|
||||
package = null;
|
||||
}
|
||||
{
|
||||
name = "gleam";
|
||||
description = "gleam for gleam";
|
||||
}
|
||||
{
|
||||
name = "gopls";
|
||||
description = "gopls for Go";
|
||||
};
|
||||
gopls = {
|
||||
extraOptions = {
|
||||
goPackage = lib.mkPackageOption pkgs "go" {
|
||||
nullable = true;
|
||||
|
@ -205,224 +22,40 @@ let
|
|||
extraConfig = cfg: {
|
||||
extraPackages = [ cfg.goPackage ];
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "golangci-lint-ls";
|
||||
description = "golangci-lint-ls for Go";
|
||||
serverName = "golangci_lint_ls";
|
||||
package = "golangci-lint-langserver";
|
||||
}
|
||||
{
|
||||
name = "graphql";
|
||||
description = "graphql for GraphQL";
|
||||
package = [
|
||||
"nodePackages"
|
||||
"graphql-language-service-cli"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "harper-ls";
|
||||
description = "The Grammar Checker for Developers";
|
||||
serverName = "harper_ls";
|
||||
package = "harper";
|
||||
}
|
||||
{
|
||||
name = "helm-ls";
|
||||
description = "helm_ls for Helm";
|
||||
serverName = "helm_ls";
|
||||
}
|
||||
{
|
||||
name = "hls";
|
||||
description = "haskell language server";
|
||||
package = "haskell-language-server";
|
||||
cmd = cfg: [
|
||||
"haskell-language-server-wrapper"
|
||||
"--lsp"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "html";
|
||||
description = "HTML language server from `vscode-langservers-extracted`";
|
||||
package = "vscode-langservers-extracted";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/vscode-html-language-server"
|
||||
"--stdio"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "htmx";
|
||||
description = "htmx for HTMX";
|
||||
package = "htmx-lsp";
|
||||
}
|
||||
{
|
||||
name = "idris2-lsp";
|
||||
description = ''
|
||||
Idris 2 Language Server.
|
||||
Enabling this also enables the required `idris2` plugin.
|
||||
'';
|
||||
serverName = "idris2_lsp";
|
||||
package = [
|
||||
"idris2Packages"
|
||||
"idris2Lsp"
|
||||
];
|
||||
};
|
||||
idris2_lsp = {
|
||||
extraConfig =
|
||||
cfg:
|
||||
mkIf cfg.enable {
|
||||
plugins.idris2.enable = lib.mkDefault true;
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "intelephense";
|
||||
description = "intelephense for PHP";
|
||||
package = [
|
||||
"nodePackages"
|
||||
"intelephense"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "java-language-server";
|
||||
description = "Java language server";
|
||||
serverName = "java_language_server";
|
||||
cmd = cfg: [ "${cfg.package}/bin/java-language-server" ];
|
||||
}
|
||||
{
|
||||
name = "jdt-language-server";
|
||||
description = "Eclipse JDT Language Server for Java";
|
||||
serverName = "jdtls";
|
||||
cmd = cfg: [ (lib.getExe cfg.package) ];
|
||||
}
|
||||
{
|
||||
name = "jsonls";
|
||||
description = "jsonls for JSON";
|
||||
package = "vscode-langservers-extracted";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/vscode-json-language-server"
|
||||
"--stdio"
|
||||
];
|
||||
};
|
||||
jsonls = {
|
||||
settings = cfg: { json = cfg; };
|
||||
}
|
||||
{
|
||||
name = "jsonnet-ls";
|
||||
description = "jsonnet language server";
|
||||
package = "jsonnet-language-server";
|
||||
serverName = "jsonnet_ls";
|
||||
};
|
||||
jsonnet_ls = {
|
||||
settingsOptions = import ./jsonnet-ls-settings.nix { inherit lib helpers; };
|
||||
}
|
||||
{
|
||||
name = "julials";
|
||||
description = "julials for Julia";
|
||||
# The julia language server has to be installed from julia and thus is not packaged "as is" in
|
||||
# nixpkgs.
|
||||
package = null;
|
||||
}
|
||||
{
|
||||
name = "kotlin-language-server";
|
||||
description = "Kotlin language server";
|
||||
serverName = "kotlin_language_server";
|
||||
}
|
||||
{
|
||||
name = "leanls";
|
||||
description = "leanls for Lean";
|
||||
package = "lean4";
|
||||
}
|
||||
{
|
||||
name = "lemminx";
|
||||
description = "lemminx for XML";
|
||||
}
|
||||
{
|
||||
name = "lexical";
|
||||
description = "lexical for Elixir";
|
||||
}
|
||||
{
|
||||
name = "ltex";
|
||||
description = "ltex-ls for LanguageTool";
|
||||
package = "ltex-ls";
|
||||
};
|
||||
ltex = {
|
||||
settingsOptions = import ./ltex-settings.nix { inherit lib helpers; };
|
||||
settings = cfg: { ltex = cfg; };
|
||||
}
|
||||
{
|
||||
name = "lua-ls";
|
||||
description = "lua-ls for Lua";
|
||||
package = "lua-language-server";
|
||||
serverName = "lua_ls";
|
||||
};
|
||||
lua_ls = {
|
||||
settingsOptions = import ./lua-ls-settings.nix { inherit lib helpers; };
|
||||
settings = cfg: { Lua = cfg; };
|
||||
}
|
||||
{
|
||||
name = "marksman";
|
||||
description = "marksman for Markdown";
|
||||
}
|
||||
{
|
||||
name = "metals";
|
||||
description = "metals for Scala";
|
||||
}
|
||||
{
|
||||
name = "nextls";
|
||||
description = "The language server for Elixir that just works.";
|
||||
package = "next-ls";
|
||||
cmd = cfg: [
|
||||
"nextls"
|
||||
"--stdio"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "nginx-language-server";
|
||||
description = "nginx-language-server for `nginx.conf`";
|
||||
serverName = "nginx_language_server";
|
||||
}
|
||||
{
|
||||
name = "nickel-ls";
|
||||
description = "nls for Nickel";
|
||||
package = "nls";
|
||||
serverName = "nickel_ls";
|
||||
}
|
||||
{
|
||||
name = "nil-ls";
|
||||
description = "nil for Nix";
|
||||
package = "nil";
|
||||
serverName = "nil_ls";
|
||||
};
|
||||
nil_ls = {
|
||||
settingsOptions = import ./nil-ls-settings.nix { inherit lib helpers; };
|
||||
settings = cfg: { nil = cfg; };
|
||||
}
|
||||
{
|
||||
name = "nimls";
|
||||
description = "nimls for Nim";
|
||||
package = "nimlsp";
|
||||
}
|
||||
{
|
||||
name = "nixd";
|
||||
description = "nixd for Nix";
|
||||
};
|
||||
nixd = {
|
||||
settings = cfg: { nixd = cfg; };
|
||||
settingsOptions = import ./nixd-settings.nix { inherit lib helpers; };
|
||||
extraConfig = cfg: {
|
||||
extraPackages = optional (cfg.settings.formatting.command == [ "nixpkgs-fmt" ]) pkgs.nixpkgs-fmt;
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "nushell";
|
||||
description = "Nushell language server";
|
||||
cmd = cfg: [
|
||||
"${cfg.package}/bin/nu"
|
||||
"--lsp"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "ocamllsp";
|
||||
description = "ocamllsp for OCaml";
|
||||
package = [
|
||||
"ocamlPackages"
|
||||
"ocaml-lsp"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "ols";
|
||||
description = "ols for the Odin programming language";
|
||||
}
|
||||
{
|
||||
name = "omnisharp";
|
||||
description = "OmniSharp language server for C#";
|
||||
package = "omnisharp-roslyn";
|
||||
cmd = cfg: [ "${cfg.package}/bin/OmniSharp" ];
|
||||
};
|
||||
omnisharp = {
|
||||
settings = cfg: { omnisharp = cfg; };
|
||||
settingsOptions = {
|
||||
enableEditorConfigSupport = helpers.defaultNullOpts.mkBool true ''
|
||||
|
@ -471,180 +104,19 @@ let
|
|||
Only run analyzers against open files when 'enableRoslynAnalyzers' is true.
|
||||
'';
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "openscad-lsp";
|
||||
description = "A Language Server Protocol server for OpenSCAD";
|
||||
serverName = "openscad_lsp";
|
||||
}
|
||||
{
|
||||
name = "perlpls";
|
||||
description = "PLS for Perl";
|
||||
package = [
|
||||
"perlPackages"
|
||||
"PLS"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "pest-ls";
|
||||
description = "pest_ls for pest";
|
||||
package = "pest-ide-tools";
|
||||
serverName = "pest_ls";
|
||||
}
|
||||
{
|
||||
name = "phpactor";
|
||||
description = "phpactor for PHP";
|
||||
package = "phpactor";
|
||||
}
|
||||
{
|
||||
name = "prismals";
|
||||
description = "prismals for Prisma";
|
||||
package = [
|
||||
"nodePackages"
|
||||
"@prisma/language-server"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "prolog-ls";
|
||||
description = "prolog_ls for SWI-Prolog";
|
||||
serverName = "prolog_ls";
|
||||
package = "swi-prolog";
|
||||
}
|
||||
{
|
||||
name = "purescriptls";
|
||||
description = "purescriptls for PureScript";
|
||||
package = [
|
||||
"nodePackages"
|
||||
"purescript-language-server"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "pylsp";
|
||||
description = "pylsp for Python";
|
||||
package = [
|
||||
"python3Packages"
|
||||
"python-lsp-server"
|
||||
];
|
||||
};
|
||||
pylsp = {
|
||||
settings = cfg: { pylsp = cfg; };
|
||||
}
|
||||
{
|
||||
name = "pylyzer";
|
||||
description = "pylyzer for Python";
|
||||
}
|
||||
{
|
||||
name = "pyright";
|
||||
description = "pyright for Python";
|
||||
}
|
||||
{
|
||||
name = "r-language-server";
|
||||
description = "languageserver for R";
|
||||
package = [
|
||||
"rPackages"
|
||||
"languageserver"
|
||||
];
|
||||
serverName = "r_language_server";
|
||||
}
|
||||
{
|
||||
name = "rnix-lsp";
|
||||
description = "rnix LSP for Nix";
|
||||
serverName = "rnix";
|
||||
package = null;
|
||||
}
|
||||
{
|
||||
name = "ruby-lsp";
|
||||
description = "ruby-lsp for Ruby";
|
||||
serverName = "ruby_lsp";
|
||||
}
|
||||
{
|
||||
name = "ruff";
|
||||
description = "Official ruff language server (Rust) for Python";
|
||||
}
|
||||
{
|
||||
name = "ruff-lsp";
|
||||
description = "ruff-lsp, for Python";
|
||||
serverName = "ruff_lsp";
|
||||
}
|
||||
{
|
||||
name = "rust-analyzer";
|
||||
description = "rust-analyzer for Rust";
|
||||
serverName = "rust_analyzer";
|
||||
|
||||
};
|
||||
rust_analyzer = {
|
||||
settingsOptions = import ./rust-analyzer-config.nix lib helpers;
|
||||
settings = cfg: { rust-analyzer = cfg; };
|
||||
}
|
||||
{
|
||||
name = "slint-lsp";
|
||||
description = "slint_lsp for Slint GUI language";
|
||||
serverName = "slint_lsp";
|
||||
}
|
||||
{
|
||||
name = "solargraph";
|
||||
description = "solargraph for Ruby";
|
||||
package = [
|
||||
"rubyPackages"
|
||||
"solargraph"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "sourcekit";
|
||||
description = "sourcekit language server for Swift and C/C++/Objective-C";
|
||||
package = "sourcekit-lsp";
|
||||
}
|
||||
{
|
||||
name = "sqls";
|
||||
description = "sqls for SQL";
|
||||
}
|
||||
{
|
||||
name = "svelte";
|
||||
description = "svelte language server for Svelte";
|
||||
package = [
|
||||
"nodePackages"
|
||||
"svelte-language-server"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "tailwindcss";
|
||||
description = "tailwindcss language server for tailwindcss";
|
||||
package = [
|
||||
"nodePackages"
|
||||
"@tailwindcss/language-server"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "taplo";
|
||||
description = "taplo for TOML";
|
||||
}
|
||||
{
|
||||
name = "templ";
|
||||
description = "templ language server for the templ HTML templating language";
|
||||
}
|
||||
{
|
||||
name = "terraformls";
|
||||
description = "terraform-ls for terraform";
|
||||
package = "terraform-ls";
|
||||
}
|
||||
{
|
||||
name = "texlab";
|
||||
description = "texlab language server for LaTeX";
|
||||
}
|
||||
{
|
||||
name = "tflint";
|
||||
description = "tflint, a terraform linter";
|
||||
}
|
||||
{
|
||||
name = "tinymist";
|
||||
description = "tinymist for Typst";
|
||||
settingsOptions = import ./tinymist-settings.nix { inherit lib helpers; };
|
||||
}
|
||||
{
|
||||
name = "ts-ls";
|
||||
serverName = "ts_ls";
|
||||
description = "ts_ls for TypeScript";
|
||||
package = "typescript-language-server";
|
||||
};
|
||||
ts_ls = {
|
||||
# NOTE: Provide the plugin default filetypes so that
|
||||
# `plugins.lsp.servers.volar.tslsIntegration` doesn't wipe out the default filetypes
|
||||
extraConfig = cfg: {
|
||||
plugins.lsp.servers.ts-ls = {
|
||||
plugins.lsp.servers.ts_ls = {
|
||||
filetypes = [
|
||||
"javascript"
|
||||
"javascriptreact"
|
||||
|
@ -655,34 +127,8 @@ let
|
|||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "typos-lsp";
|
||||
serverName = "typos_lsp";
|
||||
description = "Source code spell checker for Visual Studio Code and LSP clients";
|
||||
}
|
||||
{
|
||||
name = "typst-lsp";
|
||||
serverName = "typst_lsp";
|
||||
description = "typst-lsp for typst";
|
||||
}
|
||||
{
|
||||
name = "vala-ls";
|
||||
description = "vala_ls for Vala";
|
||||
serverName = "vala_ls";
|
||||
package = "vala-language-server";
|
||||
}
|
||||
{
|
||||
name = "vhdl-ls";
|
||||
description = "vhdl_ls for VHDL";
|
||||
serverName = "vhdl_ls";
|
||||
}
|
||||
{
|
||||
name = "vls";
|
||||
description = "vls for V";
|
||||
# The v language server has to be installed from v and thus is not packaged "as is" in
|
||||
# nixpkgs.
|
||||
package = null;
|
||||
};
|
||||
vls = {
|
||||
extraOptions = {
|
||||
autoSetFiletype = mkOption {
|
||||
type = types.bool;
|
||||
|
@ -697,22 +143,8 @@ let
|
|||
extraConfig = cfg: {
|
||||
filetype.extension = mkIf (cfg.enable && cfg.autoSetFiletype) { v = "vlang"; };
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "vuels";
|
||||
description = "vuels for Vue";
|
||||
package = [
|
||||
"nodePackages"
|
||||
"vls"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "volar";
|
||||
description = "@volar/vue-language-server for Vue";
|
||||
package = [
|
||||
"nodePackages"
|
||||
"@volar/vue-language-server"
|
||||
];
|
||||
};
|
||||
volar = {
|
||||
extraOptions = {
|
||||
tslsIntegration = mkOption {
|
||||
type = types.bool;
|
||||
|
@ -724,7 +156,7 @@ let
|
|||
};
|
||||
};
|
||||
extraConfig = cfg: {
|
||||
plugins.lsp.servers.ts-ls = lib.mkIf (cfg.enable && cfg.tslsIntegration) {
|
||||
plugins.lsp.servers.ts_ls = lib.mkIf (cfg.enable && cfg.tslsIntegration) {
|
||||
filetypes = [ "vue" ];
|
||||
extraOptions = {
|
||||
init_options = {
|
||||
|
@ -739,27 +171,48 @@ let
|
|||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "yamlls";
|
||||
description = "yamlls for YAML";
|
||||
package = "yaml-language-server";
|
||||
};
|
||||
yamlls = {
|
||||
settings = cfg: { yaml = cfg; };
|
||||
}
|
||||
{
|
||||
name = "zls";
|
||||
description = "zls for Zig";
|
||||
}
|
||||
];
|
||||
renamedServers = {
|
||||
tsserver = "ts-ls";
|
||||
};
|
||||
};
|
||||
|
||||
lspPackages = import ../lsp-packages.nix;
|
||||
|
||||
getLspPackage =
|
||||
name:
|
||||
if lib.hasAttr name lspPackages.packages then
|
||||
{ package = lspPackages.packages.${name}; }
|
||||
else if lib.hasAttr name lspPackages.customCmd then
|
||||
{ inherit (lspPackages.customCmd.${name}) package cmd; }
|
||||
else
|
||||
assert lib.assertMsg (lib.elem name lspPackages.unpackaged) "LSP server ${name} is unknown";
|
||||
{
|
||||
package = null;
|
||||
};
|
||||
|
||||
generatedServers = lib.pipe ../../../generated/lspconfig-servers.json [
|
||||
lib.importJSON
|
||||
(lib.map (
|
||||
{
|
||||
name,
|
||||
desc ? "${name} language server",
|
||||
...
|
||||
}:
|
||||
{
|
||||
inherit name;
|
||||
description = desc;
|
||||
}
|
||||
// (getLspPackage name)
|
||||
// (lspExtraArgs.${name} or { })
|
||||
))
|
||||
];
|
||||
in
|
||||
{
|
||||
imports =
|
||||
let
|
||||
mkLsp = import ./_mk-lsp.nix;
|
||||
lspModules = map mkLsp servers;
|
||||
lspModules = map mkLsp generatedServers;
|
||||
baseLspPath = [
|
||||
"plugins"
|
||||
"lsp"
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.plugins.lsp.servers.rust-analyzer;
|
||||
cfg = config.plugins.lsp.servers.rust_analyzer;
|
||||
in
|
||||
{
|
||||
options.plugins.lsp.servers.rust-analyzer = {
|
||||
options.plugins.lsp.servers.rust_analyzer = {
|
||||
# https://github.com/nix-community/nixvim/issues/674
|
||||
installCargo = mkOption {
|
||||
type = with types; nullOr bool;
|
||||
|
@ -35,21 +35,21 @@ in
|
|||
warnings =
|
||||
(optional (cfg.installCargo == null) ''
|
||||
`rust_analyzer` relies on `cargo`.
|
||||
- Set `plugins.lsp.servers.rust-analyzer.installCargo = true` to install it automatically
|
||||
- Set `plugins.lsp.servers.rust_analyzer.installCargo = true` to install it automatically
|
||||
with Nixvim.
|
||||
You can customize which package to install by changing
|
||||
`plugins.lsp.servers.rust-analyzer.cargoPackage`.
|
||||
- Set `plugins.lsp.servers.rust-analyzer.installCargo = false` to not have it install
|
||||
`plugins.lsp.servers.rust_analyzer.cargoPackage`.
|
||||
- Set `plugins.lsp.servers.rust_analyzer.installCargo = false` to not have it install
|
||||
through Nixvim.
|
||||
By doing so, you will dismiss this warning.
|
||||
'')
|
||||
++ (optional (cfg.installRustc == null) ''
|
||||
`rust_analyzer` relies on `rustc`.
|
||||
- Set `plugins.lsp.servers.rust-analyzer.installRustc = true` to install it automatically
|
||||
- Set `plugins.lsp.servers.rust_analyzer.installRustc = true` to install it automatically
|
||||
with Nixvim.
|
||||
You can customize which package to install by changing
|
||||
`plugins.lsp.servers.rust-analyzer.rustcPackage`.
|
||||
- Set `plugins.lsp.servers.rust-analyzer.installRustc = false` to not have it install
|
||||
`plugins.lsp.servers.rust_analyzer.rustcPackage`.
|
||||
- Set `plugins.lsp.servers.rust_analyzer.installRustc = false` to not have it install
|
||||
through Nixvim.
|
||||
By doing so, you will dismiss this warning.
|
||||
'');
|
||||
|
|
|
@ -9,7 +9,7 @@ pkgs.lib.optionalAttrs
|
|||
|
||||
servers = {
|
||||
ansiblels.enable = true;
|
||||
ast-grep.enable = true;
|
||||
ast_grep.enable = true;
|
||||
astro.enable = true;
|
||||
basedpyright.enable = true;
|
||||
bashls.enable = true;
|
||||
|
@ -18,53 +18,53 @@ pkgs.lib.optionalAttrs
|
|||
bufls.enable = true;
|
||||
ccls.enable = true;
|
||||
clangd.enable = true;
|
||||
clojure-lsp.enable = true;
|
||||
clojure_lsp.enable = true;
|
||||
cmake.enable = true;
|
||||
csharp-ls.enable = true;
|
||||
csharp_ls.enable = true;
|
||||
cssls.enable = true;
|
||||
dagger.enable = true;
|
||||
dartls.enable = true;
|
||||
denols.enable = true;
|
||||
dhall-lsp-server.enable = true;
|
||||
dhall_lsp_server.enable = true;
|
||||
digestif.enable = true;
|
||||
docker-compose-language-service.enable = true;
|
||||
docker_compose_language_service.enable = true;
|
||||
dockerls.enable = true;
|
||||
efm.enable = true;
|
||||
elmls.enable = true;
|
||||
emmet-ls.enable = true;
|
||||
emmet_ls.enable = true;
|
||||
eslint.enable = true;
|
||||
elixirls.enable = true;
|
||||
fortls.enable = true;
|
||||
# pkgs.fsautocomplete only supports linux platforms
|
||||
fsautocomplete.enable = pkgs.stdenv.isLinux;
|
||||
futhark-lsp.enable = true;
|
||||
futhark_lsp.enable = true;
|
||||
gleam.enable = true;
|
||||
gopls.enable = true;
|
||||
golangci-lint-ls.enable = true;
|
||||
golangci_lint_ls.enable = true;
|
||||
graphql.enable = true;
|
||||
harper-ls.enable = true;
|
||||
helm-ls.enable = true;
|
||||
harper_ls.enable = true;
|
||||
helm_ls.enable = true;
|
||||
hls.enable = true;
|
||||
html.enable = true;
|
||||
htmx.enable = true;
|
||||
idris2-lsp.enable = true;
|
||||
java-language-server.enable = true;
|
||||
jdt-language-server.enable = true;
|
||||
idris2_lsp.enable = true;
|
||||
java_language_server.enable = true;
|
||||
jdtls.enable = true;
|
||||
jsonls.enable = true;
|
||||
jsonnet-ls.enable = true;
|
||||
jsonnet_ls.enable = true;
|
||||
julials.enable = true;
|
||||
kotlin-language-server.enable = true;
|
||||
kotlin_language_server.enable = true;
|
||||
leanls.enable = true;
|
||||
lemminx.enable = true;
|
||||
lexical.enable = true;
|
||||
ltex.enable = true;
|
||||
lua-ls.enable = true;
|
||||
lua_ls.enable = true;
|
||||
marksman.enable = true;
|
||||
metals.enable = true;
|
||||
nextls.enable = true;
|
||||
nginx-language-server.enable = true;
|
||||
nickel-ls.enable = true;
|
||||
nil-ls.enable = true;
|
||||
nginx_language_server.enable = true;
|
||||
nickel_ls.enable = true;
|
||||
nil_ls.enable = true;
|
||||
nimls.enable = true;
|
||||
nixd.enable = true;
|
||||
nushell.enable = true;
|
||||
|
@ -73,25 +73,25 @@ pkgs.lib.optionalAttrs
|
|||
# ols is not supported on aarch64-linux
|
||||
pkgs.stdenv.hostPlatform.system != "aarch64-linux";
|
||||
omnisharp.enable = true;
|
||||
openscad-lsp.enable = true;
|
||||
openscad_lsp.enable = true;
|
||||
perlpls.enable = true;
|
||||
pest-ls.enable = true;
|
||||
pest_ls.enable = true;
|
||||
prismals.enable = true;
|
||||
prolog-ls.enable = true;
|
||||
prolog_ls.enable = true;
|
||||
purescriptls.enable = true;
|
||||
pylsp.enable = true;
|
||||
pylyzer.enable = true;
|
||||
pyright.enable = true;
|
||||
r-language-server.enable = true;
|
||||
ruby-lsp.enable = true;
|
||||
r_language_server.enable = true;
|
||||
ruby_lsp.enable = true;
|
||||
ruff.enable = true;
|
||||
ruff-lsp.enable = true;
|
||||
rust-analyzer = {
|
||||
ruff_lsp.enable = true;
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
slint-lsp.enable = true;
|
||||
slint_lsp.enable = true;
|
||||
solargraph.enable = true;
|
||||
# As of 2024-09-13, sourcekit-lsp is broken due to swift dependency
|
||||
# TODO: re-enable this test when fixed
|
||||
|
@ -105,11 +105,11 @@ pkgs.lib.optionalAttrs
|
|||
texlab.enable = true;
|
||||
tflint.enable = true;
|
||||
tinymist.enable = true;
|
||||
ts-ls.enable = true;
|
||||
typos-lsp.enable = true;
|
||||
typst-lsp.enable = true;
|
||||
vala-ls.enable = true;
|
||||
vhdl-ls.enable = true;
|
||||
ts_ls.enable = true;
|
||||
typos_lsp.enable = true;
|
||||
typst_lsp.enable = true;
|
||||
vala_ls.enable = true;
|
||||
vhdl_ls.enable = true;
|
||||
vls.enable = true;
|
||||
vuels.enable = true;
|
||||
yamlls.enable = true;
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
lsp = {
|
||||
enable = true;
|
||||
servers = {
|
||||
rust-analyzer = {
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
|
@ -84,7 +84,7 @@
|
|||
enable = true;
|
||||
servers = {
|
||||
nixd.enable = true;
|
||||
rust-analyzer = {
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
|
|
|
@ -67,13 +67,13 @@
|
|||
enable = true;
|
||||
package = null;
|
||||
};
|
||||
nil-ls.enable = true;
|
||||
rust-analyzer = {
|
||||
nil_ls.enable = true;
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
ruff-lsp = {
|
||||
ruff_lsp = {
|
||||
enable = true;
|
||||
extraOptions = {
|
||||
init_options.settings.args = [ "--config=/path/to/config.toml" ];
|
||||
|
@ -102,7 +102,7 @@
|
|||
enable = true;
|
||||
servers = {
|
||||
volar.enable = true;
|
||||
ts-ls = {
|
||||
ts_ls = {
|
||||
enable = true;
|
||||
filetypes = [ "typescript" ];
|
||||
};
|
||||
|
@ -111,17 +111,17 @@
|
|||
|
||||
assertions = [
|
||||
{
|
||||
assertion = lib.any (x: x == "vue") config.plugins.lsp.servers.ts-ls.filetypes;
|
||||
assertion = lib.any (x: x == "vue") config.plugins.lsp.servers.ts_ls.filetypes;
|
||||
message = "Expected `vue` filetype configuration.";
|
||||
}
|
||||
{
|
||||
assertion = lib.any (
|
||||
x: x.name == "@vue/typescript-plugin"
|
||||
) config.plugins.lsp.servers.ts-ls.extraOptions.init_options.plugins;
|
||||
) config.plugins.lsp.servers.ts_ls.extraOptions.init_options.plugins;
|
||||
message = "Expected `@vue/typescript-plugin` plugin.";
|
||||
}
|
||||
{
|
||||
assertion = lib.any (x: x == "typescript") config.plugins.lsp.servers.ts-ls.filetypes;
|
||||
assertion = lib.any (x: x == "typescript") config.plugins.lsp.servers.ts_ls.filetypes;
|
||||
message = "Expected `typescript` filetype configuration.";
|
||||
}
|
||||
];
|
||||
|
@ -133,7 +133,7 @@
|
|||
plugins.lsp = {
|
||||
enable = true;
|
||||
servers = {
|
||||
ts-ls = {
|
||||
ts_ls = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
@ -141,17 +141,17 @@
|
|||
|
||||
assertions = [
|
||||
{
|
||||
assertion = lib.all (x: x != "vue") config.plugins.lsp.servers.ts-ls.filetypes;
|
||||
assertion = lib.all (x: x != "vue") config.plugins.lsp.servers.ts_ls.filetypes;
|
||||
message = "Did not expect `vue` filetype configuration.";
|
||||
}
|
||||
(lib.mkIf (config.plugins.lsp.servers.ts-ls.extraOptions ? init_options) {
|
||||
(lib.mkIf (config.plugins.lsp.servers.ts_ls.extraOptions ? init_options) {
|
||||
assertion = lib.all (
|
||||
x: x.name != "@vue/typescript-plugin"
|
||||
) config.plugins.lsp.servers.ts-ls.extraOptions.init_options.plugins;
|
||||
) config.plugins.lsp.servers.ts_ls.extraOptions.init_options.plugins;
|
||||
message = "Did not expect `@vue/typescript-plugin` plugin.";
|
||||
})
|
||||
{
|
||||
assertion = lib.any (x: x == "typescript") config.plugins.lsp.servers.ts-ls.filetypes;
|
||||
assertion = lib.any (x: x == "typescript") config.plugins.lsp.servers.ts_ls.filetypes;
|
||||
message = "Expected `typescript` filetype configuration.";
|
||||
}
|
||||
];
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
plugins.lsp = {
|
||||
enable = true;
|
||||
|
||||
servers.jsonnet-ls = {
|
||||
servers.jsonnet_ls = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
plugins.lsp = {
|
||||
enable = true;
|
||||
|
||||
servers.lua-ls = {
|
||||
servers.lua_ls = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
plugins.lsp = {
|
||||
enable = true;
|
||||
|
||||
servers.nil-ls = {
|
||||
servers.nil_ls = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue