mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-28 11:30:06 +02:00
lsp: added package
option to basic lsp servers (#61)
* nvim-lsp: added package options for basic servers * nvim-lsp: updated package options * nvim-lsp: added cmd to plugins that share dependency
This commit is contained in:
parent
50bda39cd2
commit
2180675750
2 changed files with 46 additions and 35 deletions
|
@ -6,22 +6,23 @@ let
|
||||||
{
|
{
|
||||||
name = "bashls";
|
name = "bashls";
|
||||||
description = "Enable bashls, for bash.";
|
description = "Enable bashls, for bash.";
|
||||||
packages = [ pkgs.nodePackages.bash-language-server ];
|
package = pkgs.nodePackages.bash-language-server;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "clangd";
|
name = "clangd";
|
||||||
description = "Enable clangd LSP, for C/C++.";
|
description = "Enable clangd LSP, for C/C++.";
|
||||||
packages = [ pkgs.clang-tools ];
|
package = pkgs.clang-tools;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "cssls";
|
name = "cssls";
|
||||||
description = "Enable cssls, for CSS";
|
description = "Enable cssls, for CSS";
|
||||||
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
|
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||||
|
cmd = cfg: [ "${cfg.package}/bin/vscode-css-language-server" "--stdio" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "dartls";
|
name = "dartls";
|
||||||
description = "Enable dart language-server, for dart";
|
description = "Enable dart language-server, for dart";
|
||||||
packages = [ pkgs.dart ];
|
package = pkgs.dart;
|
||||||
extraOptions = {
|
extraOptions = {
|
||||||
analysisExcludedFolders = mkOption {
|
analysisExcludedFolders = mkOption {
|
||||||
type = types.nullOr (types.listOf types.str);
|
type = types.nullOr (types.listOf types.str);
|
||||||
|
@ -112,23 +113,24 @@ let
|
||||||
{
|
{
|
||||||
name = "denols";
|
name = "denols";
|
||||||
description = "Enable denols, for Deno";
|
description = "Enable denols, for Deno";
|
||||||
packages = [ pkgs.deno ];
|
package = pkgs.deno;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "eslint";
|
name = "eslint";
|
||||||
description = "Enable eslint";
|
description = "Enable eslint";
|
||||||
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
|
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||||
|
cmd = cfg: [ "${cfg.package}/bin/vscode-eslint-langauge-server" "--stdio" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "elixirls";
|
name = "elixirls";
|
||||||
description = "Enable elixirls";
|
description = "Enable elixirls";
|
||||||
packages = [ ];
|
package = pkgs.elixir_ls;
|
||||||
cmd = [ "${pkgs.elixir_ls}/bin/elixir-ls" ];
|
cmd = cfg: ["${cfg.package}/bin/elixir-ls"];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "gdscript";
|
name = "gdscript";
|
||||||
description = "Enable gdscript, for Godot";
|
description = "Enable gdscript, for Godot";
|
||||||
packages = [ ];
|
package = null;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "gopls";
|
name = "gopls";
|
||||||
|
@ -137,17 +139,19 @@ let
|
||||||
{
|
{
|
||||||
name = "html";
|
name = "html";
|
||||||
description = "Enable html, for HTML";
|
description = "Enable html, for HTML";
|
||||||
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
|
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||||
|
cmd = cfg: [ "${cfg.package}/bin/vscode-html-language-server" "--stdio" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "jsonls";
|
name = "jsonls";
|
||||||
description = "Enable jsonls, for JSON";
|
description = "Enable jsonls, for JSON";
|
||||||
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
|
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||||
|
cmd = cfg: [ "${cfg.package}/bin/vscode-json-language-server" "--stdio" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "nil_ls";
|
name = "nil_ls";
|
||||||
description = "Enable nil, for Nix";
|
description = "Enable nil, for Nix";
|
||||||
packages = [ pkgs.nil ];
|
package = pkgs.nil;
|
||||||
extraOptions = {
|
extraOptions = {
|
||||||
formatting.command = mkOption {
|
formatting.command = mkOption {
|
||||||
type = types.nullOr (types.listOf types.str);
|
type = types.nullOr (types.listOf types.str);
|
||||||
|
@ -197,25 +201,21 @@ let
|
||||||
{
|
{
|
||||||
name = "tailwindcss";
|
name = "tailwindcss";
|
||||||
description = "Enable tailwindcss language server, for tailwindcss";
|
description = "Enable tailwindcss language server, for tailwindcss";
|
||||||
packages = [ pkgs.nodePackages."@tailwindcss/language-server" ];
|
package = pkgs.nodePackages."@tailwindcss/language-server";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "texlab";
|
name = "texlab";
|
||||||
description = "Enable texlab language server, for LaTeX";
|
description = "Enable texlab language server, for LaTeX";
|
||||||
packages = [ pkgs.texlab ];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "tsserver";
|
name = "tsserver";
|
||||||
description = "Enable tsserver for typescript";
|
description = "Enable tsserver for typescript";
|
||||||
packages = with pkgs; [
|
package = pkgs.nodePackages.typescript-language-server;
|
||||||
nodePackages.typescript
|
|
||||||
nodePackages.typescript-language-server
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "vuels";
|
name = "vuels";
|
||||||
description = "Enable vuels, for Vue";
|
description = "Enable vuels, for Vue";
|
||||||
packages = [ pkgs.nodePackages.vls ];
|
package = pkgs.nodePackages.vue-language-server;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "zls";
|
name = "zls";
|
||||||
|
@ -224,8 +224,8 @@ let
|
||||||
{
|
{
|
||||||
name = "hls";
|
name = "hls";
|
||||||
description = "Enable haskell language server";
|
description = "Enable haskell language server";
|
||||||
packages = [ pkgs.haskell-language-server ];
|
package = pkgs.haskell-language-server;
|
||||||
cmd = [ "haskell-language-server-wrapper" ];
|
cmd = cfg: [ "haskell-language-server-wrapper" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
|
|
|
@ -5,9 +5,10 @@
|
||||||
{ name
|
{ name
|
||||||
, description ? "Enable ${name}."
|
, description ? "Enable ${name}."
|
||||||
, serverName ? name
|
, serverName ? name
|
||||||
, packages ? [ pkgs.${name} ]
|
, package ? pkgs.${name}
|
||||||
, cmd ? null
|
, extraPackages ? { }
|
||||||
, settings ? null
|
, cmd ? (cfg: null)
|
||||||
|
, settings ? (cfg: { })
|
||||||
, extraOptions ? { }
|
, extraOptions ? { }
|
||||||
, ...
|
, ...
|
||||||
}:
|
}:
|
||||||
|
@ -16,22 +17,32 @@
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.plugins.lsp.servers.${name};
|
cfg = config.plugins.lsp.servers.${name};
|
||||||
|
|
||||||
|
packageOption =
|
||||||
|
if package != null then {
|
||||||
|
package = mkOption {
|
||||||
|
default = package;
|
||||||
|
type = types.nullOr types.package;
|
||||||
|
};
|
||||||
|
} else { };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
plugins.lsp.servers.${name} = {
|
plugins.lsp.servers.${name} = {
|
||||||
enable = mkEnableOption description;
|
enable = mkEnableOption description;
|
||||||
} // extraOptions;
|
} // packageOption // extraOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable
|
||||||
extraPackages = packages;
|
{
|
||||||
|
extraPackages = (optional (package != null) cfg.package) ++
|
||||||
|
(mapAttrsToList (name: _: cfg."${name}Package") extraPackages);
|
||||||
|
|
||||||
plugins.lsp.enabledServers = [{
|
plugins.lsp.enabledServers = [{
|
||||||
name = serverName;
|
name = serverName;
|
||||||
extraOptions = {
|
extraOptions = {
|
||||||
inherit cmd;
|
cmd = cmd cfg;
|
||||||
settings = if settings != null then settings cfg else { };
|
settings = settings cfg;
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue