From 478bbc67f47f4e7e6951db60d8aa4355e30c6228 Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Sun, 6 Apr 2025 01:43:34 +0200 Subject: [PATCH] language/css: migrate to vim.lsp.servers --- modules/plugins/languages/css.nix | 45 ++++++++++++++----------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/modules/plugins/languages/css.nix b/modules/plugins/languages/css.nix index d103f241..33cfa283 100644 --- a/modules/plugins/languages/css.nix +++ b/modules/plugins/languages/css.nix @@ -8,34 +8,25 @@ inherit (lib.options) mkEnableOption mkOption; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; - inherit (lib.lists) isList; inherit (lib.types) enum either listOf package str; inherit (lib.nvim.types) mkGrammarOption; - inherit (lib.nvim.lua) expToLua; + inherit (lib.nvim.attrsets) mapListToAttrs; cfg = config.vim.languages.css; - defaultServer = "vscode-langservers-extracted"; + defaultServer = ["cssls"]; servers = { - vscode-langservers-extracted = { - package = pkgs.vscode-langservers-extracted; - lspConfig = '' - -- enable (broadcasting) snippet capability for completion - -- see - local css_capabilities = vim.lsp.protocol.make_client_capabilities() - css_capabilities.textDocument.completion.completionItem.snippetSupport = true - - -- cssls setup - lspconfig.cssls.setup { - 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"}'' - } - } - ''; + cssls.options = { + cmd = ["${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server" "--stdio"]; + filetypes = ["css" "scss" "less"]; + # needed to enable formatting + init_options = {provideFormatter = true;}; + root_markers = [".git" "package.json"]; + settings = { + css.validate = true; + scss.validate = true; + less.validate = true; + }; }; }; @@ -84,7 +75,7 @@ in { server = mkOption { description = "CSS LSP server to use"; - type = enum (attrNames servers); + type = listOf (enum (attrNames servers)); default = defaultServer; }; @@ -120,8 +111,12 @@ in { }) (mkIf cfg.lsp.enable { - vim.lsp.lspconfig.enable = true; - vim.lsp.lspconfig.sources.css-lsp = servers.${cfg.lsp.server}.lspConfig; + vim.lsp.servers = + mapListToAttrs (name: { + inherit name; + value = servers.${name}.options; + }) + cfg.lsp.server; }) (mkIf cfg.format.enable {