modules/lsp/server: rename config -> settings

`config` is a loaded term within modules and options.

`settings` is the name usually used for freeform config in nixvim and
most other module configurations.
This commit is contained in:
Matt Sturgeon 2025-04-30 17:30:30 +01:00
parent fc6f00a7fd
commit 21688b1d2a
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
3 changed files with 38 additions and 12 deletions

View file

@ -93,7 +93,7 @@ in
''; '';
default = { }; default = { };
example = { example = {
"*".config = { "*".settings = {
root_markers = [ ".git" ]; root_markers = [ ".git" ];
capabilities.textDocument.semanticTokens = { capabilities.textDocument.semanticTokens = {
multilineTokenSupport = true; multilineTokenSupport = true;
@ -102,7 +102,7 @@ in
luals.enable = true; luals.enable = true;
clangd = { clangd = {
enable = true; enable = true;
config = { settings = {
cmd = [ cmd = [
"clangd" "clangd"
"--background-index" "--background-index"
@ -127,6 +127,13 @@ in
builtins.attrValues builtins.attrValues
(builtins.filter (server: server.enable)) (builtins.filter (server: server.enable))
]; ];
# Collect per-server warnings
serverWarnings = lib.pipe cfg.servers [
builtins.attrValues
(builtins.catAttrs "warnings")
builtins.concatLists
];
in in
{ {
extraPackages = builtins.catAttrs "package" enabledServers; extraPackages = builtins.catAttrs "package" enabledServers;
@ -137,10 +144,10 @@ in
server: server:
let let
luaName = toLuaObject server.name; luaName = toLuaObject server.name;
luaCfg = toLuaObject server.config; luaSettings = toLuaObject server.settings;
in in
'' ''
vim.lsp.config(${luaName}, ${luaCfg}) vim.lsp.config(${luaName}, ${luaSettings})
'' ''
+ lib.optionalString server.activate '' + lib.optionalString server.activate ''
vim.lsp.enable(${luaName}) vim.lsp.enable(${luaName})
@ -158,5 +165,8 @@ in
end end
-- }}} -- }}}
''; '';
# Propagate per-server warnings
warnings = lib.mkIf (serverWarnings != [ ]) serverWarnings;
}; };
} }

View file

@ -2,9 +2,7 @@
{ {
name ? null, name ? null,
package ? null, package ? null,
# Avoid naming conflict with the `config` module arg settings ? null,
# TODO: consider renaming the `config` option to something like `settings`?
configOption ? null,
pkgs ? { }, pkgs ? { },
}@args: }@args:
{ lib, name, ... }: { lib, name, ... }:
@ -48,14 +46,14 @@ in
''; '';
}; };
config = lib.mkOption { settings = lib.mkOption {
type = with types; attrsOf anything; type = with types; attrsOf anything;
description = '' description = ''
Configurations for ${displayName}. ${configOption.extraDescription or ""} Configurations for ${displayName}. ${settings.extraDescription or ""}
''; '';
default = { }; default = { };
example = example =
configOption.example or { settings.example or {
cmd = [ cmd = [
"clangd" "clangd"
"--background-index" "--background-index"
@ -70,5 +68,23 @@ in
]; ];
}; };
}; };
# NOTE: we need a warnings option for `mkRenamedOptionModule` to warn about unexpected definitions
# This can be removed when all rename aliases are gone
warnings = lib.mkOption {
type = with types; listOf str;
description = "Warnings to propagate to nixvim's `warnings` option.";
default = [ ];
internal = true;
visible = false;
};
}; };
imports = [
# TODO: rename added 2025-04-30 (during the 25.05 cycle)
# The previous name `config` was introduced 2025-04-28 (during the 25.05 cycle)
# Because the previous name `config` never made it into a stable release,
# we could consider dropping this alias sooner than normal.
(lib.mkRenamedOptionModule [ "config" ] [ "settings" ])
];
} }

View file

@ -1,7 +1,7 @@
{ {
example = { example = {
lsp.servers = { lsp.servers = {
"*".config = { "*".settings = {
root_markers = [ ".git" ]; root_markers = [ ".git" ];
capabilities.textDocument.semanticTokens = { capabilities.textDocument.semanticTokens = {
multilineTokenSupport = true; multilineTokenSupport = true;
@ -10,7 +10,7 @@
luals.enable = true; luals.enable = true;
clangd = { clangd = {
enable = true; enable = true;
config = { settings = {
cmd = [ cmd = [
"clangd" "clangd"
"--background-index" "--background-index"