nix-community.nixvim/plugins/by-name/lspconfig/default.nix
Matt Sturgeon e34eaf8395
modules/lsp/server: declare package defaults
Convert the `attrsOf (servers.nix)` option to a freeform submodule.

Declare a `servers.nix` option for each lsp server listed in
`lsp-packages.nix` that has a known nixpkgs package.
2025-04-30 16:53:55 +01:00

67 lines
1.8 KiB
Nix

{
lib,
config,
options,
...
}:
let
# cfg = config.plugins.lspconfig;
opts = options.plugins.lspconfig;
oldCfg = config.plugins.lsp;
oldOpts = options.plugins.lsp;
in
lib.nixvim.plugins.mkNeovimPlugin {
name = "lspconfig";
packPathName = "nvim-lspconfig";
package = "nvim-lspconfig";
maintainers = with lib.maintainers; [
GaetanLepage
HeitorAugustoLN
MattSturgeon
khaneliman
traxys
];
description = ''
[nvim-lspconfig] provides default configs for many language servers, but it does not enable any of them.
You should use the [`lsp`] module to configure and enable LSP servers.
> [!NOTE]
> This plugin module will soon replace [`plugins.lsp`].
>
> Both `${opts.enable}` and `${oldOpts.enable}` will install nvim-lspconfig,
> however the older [`plugins.lsp`] module includes additional options and
> setup that relate to neovim's builtin LSP and are now being moved to the
> new [`lsp`] module.
[`lsp`]: ../../lsp/servers/index.md
[`plugins.lsp`]: ../lsp/index.md
[nvim-lspconfig]: ${opts.package.default.meta.homepage}
'';
# nvim-lspconfig provides configs for `vim.lsp.config` and requires no setup
# all configuration should be done via nvim's builtin `vim.lsp` API
callSetup = false;
hasLuaConfig = false;
hasSettings = false;
extraConfig = {
warnings = lib.nixvim.mkWarnings "plugins.lspconfig" [
{
when = oldCfg.enable;
message = ''
Both `${opts.enable}' and `${oldOpts.enable}' configure the same plugin (nvim-lspconfig).
${lib.pipe
[ opts oldOpts ]
[
(builtins.catAttrs "enable")
(map (o: "`${o}' defined in ${lib.options.showFiles o.files}."))
lib.strings.concatLines
]
}
'';
}
];
};
}