language/css: migrate to vim.lsp.servers

This commit is contained in:
Ching Pei Yang 2025-04-06 01:43:34 +02:00
parent 75f2be910b
commit 478bbc67f4
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 either listOf package str; 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.options = {
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"}''
}
}
'';
}; };
}; };
@ -84,7 +75,7 @@ in {
server = mkOption { server = mkOption {
description = "CSS LSP server to use"; description = "CSS LSP server to use";
type = enum (attrNames servers); type = listOf (enum (attrNames servers));
default = defaultServer; default = defaultServer;
}; };
@ -120,8 +111,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}.options;
})
cfg.lsp.server;
}) })
(mkIf cfg.format.enable { (mkIf cfg.format.enable {