language/css: migrate to vim.lsp.servers

This commit is contained in:
Ching Pei Yang 2025-04-06 01:43:34 +02:00
commit 7cabd47716
No known key found for this signature in database
GPG key ID: B3841364253DC4C8

View file

@ -8,34 +8,25 @@
inherit (lib.options) mkEnableOption mkOption; inherit (lib.options) mkEnableOption mkOption;
inherit (lib.meta) getExe; inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.lists) isList; inherit (lib.types) enum listOf package;
inherit (lib.types) enum either listOf package str;
inherit (lib.nvim.types) mkGrammarOption; inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.lua) expToLua; inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.css; cfg = config.vim.languages.css;
defaultServer = "vscode-langservers-extracted"; defaultServer = ["cssls"];
servers = { servers = {
vscode-langservers-extracted = { cssls = {
package = pkgs.vscode-langservers-extracted; cmd = ["${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server" "--stdio"];
lspConfig = '' filetypes = ["css" "scss" "less"];
-- enable (broadcasting) snippet capability for completion # needed to enable formatting
-- see <https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#cssls> init_options = {provideFormatter = true;};
local css_capabilities = vim.lsp.protocol.make_client_capabilities() root_markers = [".git" "package.json"];
css_capabilities.textDocument.completion.completionItem.snippetSupport = true settings = {
css.validate = true;
-- cssls setup scss.validate = true;
lspconfig.cssls.setup { less.validate = true;
capabilities = css_capabilities; };
on_attach = default_on_attach;
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else ''{"${cfg.lsp.package}/bin/vscode-css-language-server", "--stdio"}''
}
}
'';
}; };
}; };
@ -82,17 +73,10 @@ in {
lsp = { lsp = {
enable = mkEnableOption "CSS LSP support" // {default = config.vim.lsp.enable;}; enable = mkEnableOption "CSS LSP support" // {default = config.vim.lsp.enable;};
server = mkOption { servers = mkOption {
description = "CSS LSP server to use"; type = singleOrListOf (enum (attrNames servers));
type = enum (attrNames servers);
default = defaultServer; default = defaultServer;
}; description = "CSS LSP server to use";
package = mkOption {
description = "CSS LSP server package, or the command to run as a list of strings";
example = ''[lib.getExe pkgs.jdt-language-server " - data " " ~/.cache/jdtls/workspace "]'';
type = either package (listOf str);
default = servers.${cfg.lsp.server}.package;
}; };
}; };
@ -120,8 +104,12 @@ in {
}) })
(mkIf cfg.lsp.enable { (mkIf cfg.lsp.enable {
vim.lsp.lspconfig.enable = true; vim.lsp.servers =
vim.lsp.lspconfig.sources.css-lsp = servers.${cfg.lsp.server}.lspConfig; mapListToAttrs (name: {
inherit name;
value = servers.${name};
})
cfg.lsp.servers;
}) })
(mkIf cfg.format.enable { (mkIf cfg.format.enable {