chore: add language.<name>.lsp.servers deprecation information

This commit is contained in:
Snoweuph 2026-04-14 00:51:36 +02:00
commit ec8a66bb3c
No known key found for this signature in database
GPG key ID: BEFC41DA223CEC55
16 changed files with 126 additions and 33 deletions

View file

@ -1,9 +1,9 @@
{lib}: let
inherit (builtins) toJSON;
inherit (builtins) toJSON attrNames;
inherit (lib.options) mergeEqualOption;
inherit (lib.lists) singleton;
inherit (lib.strings) isString stringLength match;
inherit (lib.types) listOf mkOptionType coercedTo;
inherit (lib.types) listOf mkOptionType coercedTo enum;
inherit (lib.trivial) warn;
in {
mergelessListOf = elemType:
@ -39,4 +39,28 @@ in {
''
(singleton x))
(listOf t);
# Create an enum type for `values`, which additionally accepts deprecated
# values listed in the `renames` attrset as `old = new` pairs.
#
# Example:
#
# vim.languages.typescript.lsp.servers = mkOption {
# type = renamedEnum
# "vim.languages.typescript.lsp.servers"
# ["typescript-language-server" "some-other-server"]
# { ts_ls = "typescript-language-server"; };
# }
#
# With this option definition, when users enter `ts_ls`, they
# get a warning "`ts_ls` is deprecated, use `typescript-language-server`
# instead", and typescript-language-server is automatically used.
enumWithRename = option: values: renames:
coercedTo (enum (attrNames renames)) (
old:
warn
"${option}: `${old}` is deprecated, use `${renames.${old}}` instead"
renames.${old}
)
(enum values);
}

View file

@ -12,5 +12,5 @@ in {
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
inherit (typesLanguage) diagnostics mkGrammarOption;
inherit (typesLsp) mkLspPresetEnableOption;
inherit (customTypes) char hexColor mergelessListOf deprecatedSingleOrListOf;
inherit (customTypes) char hexColor mergelessListOf deprecatedSingleOrListOf enumWithRename;
}

View file

@ -11,7 +11,7 @@
inherit (lib.meta) getExe;
inherit (lib.types) enum coercedTo listOf;
inherit (lib.nvim.attrsets) mapListToAttrs;
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf;
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf enumWithRename;
inherit (lib) genAttrs;
cfg = config.vim.languages.astro;
@ -85,7 +85,12 @@ in {
defaultText = literalExpression "config.vim.lsp.enable";
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.astro.lsp.servers"
servers
{
astro = "astro-language-server";
});
default = defaultServers;
description = "Astro LSP server to use";
};

View file

@ -10,7 +10,7 @@
inherit (lib.modules) mkIf mkMerge;
inherit (lib.types) enum bool listOf;
inherit (lib) genAttrs;
inherit (lib.nvim.types) diagnostics mkGrammarOption deprecatedSingleOrListOf;
inherit (lib.nvim.types) diagnostics mkGrammarOption deprecatedSingleOrListOf enumWithRename;
inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.bash;
@ -53,7 +53,12 @@ in {
defaultText = literalExpression "config.vim.lsp.enable";
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.bash.lsp.servers"
servers
{
bash-ls = "bash-language-server";
});
default = defaultServers;
description = "Bash LSP server to use";
};

View file

@ -10,7 +10,7 @@
inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.types) enum listOf;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf enumWithRename;
inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.css;
@ -56,7 +56,12 @@ in {
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.css.lsp.servers"
servers
{
cssls = "vscode-css-language-server";
});
default = defaultServer;
description = "CSS LSP server to use";
};

View file

@ -9,7 +9,7 @@
inherit (lib.modules) mkIf mkMerge;
inherit (lib) genAttrs;
inherit (lib.types) enum listOf;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf enumWithRename;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.attrsets) mapListToAttrs;
@ -48,7 +48,12 @@ in {
defaultText = literalExpression "config.vim.lsp.enable";
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.elixir.lsp.servers"
servers
{
elixirls = "elixir-ls";
});
default = defaultServers;
description = "Elixir LSP server to use";
};

View file

@ -10,7 +10,7 @@
inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.types) enum listOf;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.types) mkGrammarOption enumWithRename;
inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.hcl;
@ -51,7 +51,13 @@ in {
defaultText = literalExpression "config.vim.lsp.enable";
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.hcl.lsp.servers"
servers
{
terraformls-hcl = "terraform-ls";
tofuls-hcl = "tofu-ls";
});
default = defaultServers;
description = "HCL LSP server to use";
};

View file

@ -7,8 +7,8 @@
inherit (lib.options) literalExpression mkEnableOption mkOption;
inherit (lib.modules) mkIf mkMerge;
inherit (lib) genAttrs;
inherit (lib.types) listOf enum;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.types) listOf;
inherit (lib.nvim.types) mkGrammarOption enumWithRename;
cfg = config.vim.languages.java;
@ -36,7 +36,12 @@ in {
defaultText = literalExpression "config.vim.lsp.enable";
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.java.lsp.servers"
servers
{
jdtls = "jdt-language-server";
});
default = defaultServers;
description = "Java LSP server to use";
};

View file

@ -10,7 +10,7 @@
inherit (lib.modules) mkIf mkMerge;
inherit (lib.types) enum listOf;
inherit (lib) genAttrs;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf enumWithRename;
inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.json;
@ -51,7 +51,12 @@ in {
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.json.lsp.servers"
servers
{
jsonls = "vscode-json-language-server";
});
default = defaultServers;
description = "JSON LSP server to use";
};

View file

@ -5,10 +5,10 @@
...
}: let
inherit (lib.options) literalExpression mkEnableOption mkOption;
inherit (lib.types) enum listOf;
inherit (lib.types) listOf;
inherit (lib.modules) mkIf mkMerge;
inherit (lib) genAttrs;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.types) mkGrammarOption enumWithRename;
cfg = config.vim.languages.julia;
@ -37,7 +37,12 @@ in {
defaultText = literalExpression "config.vim.lsp.enable";
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.julia.lsp.servers"
servers
{
julials = "julia-languageserver";
});
default = defaultServers;
description = ''
Julia LSP Server to Use

View file

@ -9,7 +9,7 @@
inherit (lib.modules) mkIf mkMerge;
inherit (lib.types) enum listOf;
inherit (lib) genAttrs;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf enumWithRename;
inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.r;
@ -67,7 +67,12 @@ in {
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.r.lsp.servers"
servers
{
r_language_server = "r-languageserver";
});
default = defaultServers;
description = "R LSP server to use";
};

View file

@ -9,7 +9,7 @@
inherit (lib) genAttrs;
inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf;
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf enumWithRename;
inherit (lib.types) enum listOf;
inherit (lib.nvim.attrsets) mapListToAttrs;
@ -56,7 +56,12 @@ in {
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.ruby.lsp.servers"
servers
{
ruby_lsp = "ruby-lsp";
});
default = defaultServers;
description = "Ruby LSP server to use";
};

View file

@ -10,7 +10,7 @@
inherit (lib) genAttrs;
inherit (lib.meta) getExe;
inherit (lib.types) enum listOf;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.types) mkGrammarOption enumWithRename;
inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.terraform;
@ -53,7 +53,13 @@ in {
defaultText = literalExpression "config.vim.lsp.enable";
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.terraform.lsp.servers"
servers
{
terraformls-tf = "terraform-ls";
tofuls-tf = "tofu-ls";
});
default = defaultServers;
description = "Terraform LSP server to use";
};

View file

@ -12,7 +12,7 @@
inherit (lib.types) enum bool listOf;
inherit (lib.nvim.attrsets) mapListToAttrs;
inherit (lib.nvim.lua) toLuaObject;
inherit (lib.nvim.types) mkGrammarOption diagnostics mkPluginSetupOption deprecatedSingleOrListOf;
inherit (lib.nvim.types) mkGrammarOption diagnostics mkPluginSetupOption deprecatedSingleOrListOf enumWithRename;
inherit (lib.nvim.dag) entryAnywhere;
cfg = config.vim.languages.ts;
@ -99,7 +99,14 @@ in {
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.ts.lsp.servers"
servers
{
ts_ls = "typescript-language-server";
denols = "deno";
tsgo = "typescript-go";
});
default = defaultServers;
description = "Typescript/Javascript LSP server to use";
};

View file

@ -7,8 +7,8 @@
inherit (lib.options) mkEnableOption mkOption literalExpression;
inherit (lib.modules) mkIf mkMerge;
inherit (lib) genAttrs;
inherit (lib.types) enum listOf;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.types) listOf;
inherit (lib.nvim.types) mkGrammarOption enumWithRename;
cfg = config.vim.languages.vala;
@ -36,7 +36,12 @@ in {
defaultText = literalExpression "config.vim.lsp.enable";
};
servers = mkOption {
type = listOf (enum servers);
type = listOf (enumWithRename
"vim.languages.vala.lsp.servers"
servers
{
vala_ls = "vala-language-server";
});
default = defaultServers;
description = "Vala LSP server to use";
};

View file

@ -11,7 +11,7 @@
cfg = config.vim.lsp.presets.terraform-ls;
in {
options.vim.lsp.presets.terraform-ls = {
enable = mkLspPresetEnableOption "terrraform-ls" "Terraform" [];
enable = mkLspPresetEnableOption "terraform-ls" "Terraform" [];
};
config = mkIf cfg.enable {