From 675dbc677fcc11aa71344507aba30d5a7b5b5522 Mon Sep 17 00:00:00 2001 From: poz Date: Mon, 21 Jul 2025 12:19:29 +0200 Subject: [PATCH] languages/css: convert module --- modules/plugins/languages/css.nix | 61 +++++++++++-------------------- 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/modules/plugins/languages/css.nix b/modules/plugins/languages/css.nix index 1075bbc7..30ff28f7 100644 --- a/modules/plugins/languages/css.nix +++ b/modules/plugins/languages/css.nix @@ -6,36 +6,26 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; - inherit (lib.meta) getExe; + inherit (lib.meta) getExe 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.types) enum package; + inherit (lib.nvim.attrsets) mapListToAttrs; + inherit (lib.nvim.types) mkGrammarOption mkServersOption; cfg = config.vim.languages.css; - defaultServer = "vscode-langservers-extracted"; + defaultServers = ["vscode-langservers-extracted"]; 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"}'' - } - } - ''; + enable = true; + cmd = [(getExe' pkgs.vscode-langservers-extracted "vscode-css-language-server") "--stdio"]; + filetypes = ["css" "scss" "less"]; + root_markers = ["package.json" ".git"]; + capabilities = { + # enable (broadcasting) snippet capability for completion + # see + textDocument.completion.completionItem.snippetSupport = true; + }; }; }; @@ -75,25 +65,12 @@ in { treesitter = { enable = mkEnableOption "CSS treesitter" // {default = config.vim.languages.enableTreesitter;}; - package = mkGrammarOption pkgs "css"; }; lsp = { enable = mkEnableOption "CSS LSP support" // {default = config.vim.lsp.enable;}; - - server = mkOption { - description = "CSS LSP server to use"; - type = enum (attrNames servers); - default = defaultServer; - }; - - 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; - }; + servers = mkServersOption "CSS" servers defaultServers; }; format = { @@ -120,8 +97,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 (n: { + name = n; + value = servers.${n}; + }) + cfg.lsp.servers; }) (mkIf cfg.format.enable {