plugins/nvim-lsp: add extraOptions for nvim-lsp language servers (#351)

This commit is contained in:
Gaétan Lepage 2023-04-28 12:17:05 +02:00 committed by GitHub
parent 7f36532bdb
commit 3014192cdc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 14 deletions

View file

@ -20,6 +20,7 @@
pkgs, pkgs,
config, config,
lib, lib,
options,
... ...
}: }:
with lib; let with lib; let
@ -84,6 +85,12 @@
Extra settings for the ${name} language server. Extra settings for the ${name} language server.
''; '';
}; };
extraOptions = mkOption {
default = {};
type = types.attrs;
description = "Extra options for the ${name} language server.";
};
} }
// packageOption; // packageOption;
}; };
@ -98,22 +105,35 @@
plugins.lsp.enabledServers = [ plugins.lsp.enabledServers = [
{ {
name = serverName; name = serverName;
extraOptions = { extraOptions =
inherit (cfg) cmd filetypes autostart; {
on_attach = inherit (cfg) cmd filetypes autostart;
helpers.ifNonNull' cfg.onAttach on_attach =
( helpers.ifNonNull' cfg.onAttach
helpers.mkRaw '' (
function(client, bufnr) helpers.mkRaw ''
${optionalString (!cfg.onAttach.override) config.plugins.lsp.onAttach} function(client, bufnr)
${cfg.onAttach.function} ${optionalString (!cfg.onAttach.override) config.plugins.lsp.onAttach}
end ${cfg.onAttach.function}
'' end
); ''
settings = (settings cfg.settings) // cfg.extraSettings; );
}; settings = (settings cfg.settings) // cfg.extraSettings;
}
// cfg.extraOptions;
} }
]; ];
warnings = let
extraSettingsOption = options.plugins.lsp.servers.${name}.extraSettings;
in
optional
(extraSettingsOption.isDefined)
(
let
optionPrefix = "plugins.lsp.servers.${name}";
in "The `${optionPrefix}.extraSettings` option is deprecated in favor of `${optionPrefix}.extraOptions.settings`."
);
}; };
}; };
} }

View file

@ -33,6 +33,12 @@
}; };
nil_ls.enable = true; nil_ls.enable = true;
rust-analyzer.enable = true; rust-analyzer.enable = true;
ruff-lsp = {
enable = true;
extraOptions = {
init_options.settings.args = ["--config=/path/to/config.toml"];
};
};
pylsp = { pylsp = {
enable = true; enable = true;
filetypes = ["python"]; filetypes = ["python"];