From 7ce9d912f4f4f7df99ffe7f83db221c894c97bf9 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Sat, 11 Apr 2026 16:33:00 +0200 Subject: [PATCH] languages/svelte: refactor lsp.servers to use lsp/presets/ --- modules/plugins/languages/svelte.nix | 57 ++++++---------------------- 1 file changed, 11 insertions(+), 46 deletions(-) diff --git a/modules/plugins/languages/svelte.nix b/modules/plugins/languages/svelte.nix index 73ed8019..10eea320 100644 --- a/modules/plugins/languages/svelte.nix +++ b/modules/plugins/languages/svelte.nix @@ -8,51 +8,16 @@ inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; + inherit (lib) genAttrs; inherit (lib.meta) getExe; - inherit (lib.types) enum coercedTo; + inherit (lib.types) enum coercedTo listOf; inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf; inherit (lib.nvim.attrsets) mapListToAttrs; - inherit (lib.generators) mkLuaInline; cfg = config.vim.languages.svelte; - defaultServers = ["svelte"]; - servers = { - svelte = { - enable = true; - cmd = [(getExe pkgs.svelte-language-server) "--stdio"]; - filetypes = ["svelte"]; - root_dir = mkLuaInline '' - function(bufnr, on_dir) - local root_files = { 'package.json', '.git' } - local fname = vim.api.nvim_buf_get_name(bufnr) - -- Svelte LSP only supports file:// schema. https://github.com/sveltejs/language-tools/issues/2777 - if vim.uv.fs_stat(fname) ~= nil then - on_dir(vim.fs.dirname(vim.fs.find(root_files, { path = fname, upward = true })[1])) - end - end - ''; - on_attach = mkLuaInline '' - function(client, bufnr) - vim.api.nvim_create_autocmd('BufWritePost', { - pattern = { '*.js', '*.ts' }, - group = vim.api.nvim_create_augroup('svelte_js_ts_file_watch', {}), - callback = function(ctx) - -- internal API to sync changes that have not yet been saved to the file system - client:notify('$/onDidChangeTsOrJsFile', { uri = ctx.match }) - end, - }) - - vim.api.nvim_buf_create_user_command(bufnr, 'LspMigrateToSvelte5', function() - client:exec_cmd({ - command = 'migrate_to_svelte_5', - arguments = { vim.uri_from_bufnr(bufnr) }, - }) - end, { desc = 'Migrate Component to Svelte 5 Syntax' }) - end - ''; - }; - }; + defaultServers = ["svelte-language-server"]; + servers = ["svelte-language-server"]; defaultFormat = ["prettier"]; formats = let @@ -123,7 +88,7 @@ in { }; servers = mkOption { - type = deprecatedSingleOrListOf "vim.language.svelte.lsp.servers" (enum (attrNames servers)); + type = listOf (enum servers); default = defaultServers; description = "Svelte LSP server to use"; }; @@ -167,12 +132,12 @@ in { }) (mkIf cfg.lsp.enable { - vim.lsp.servers = - mapListToAttrs (n: { - name = n; - value = servers.${n}; - }) - cfg.lsp.servers; + vim.lsp = { + presets = genAttrs cfg.lsp.servers (_: {enable = true;}); + servers = genAttrs cfg.lsp.servers (_: { + filetypes = ["svelte"]; + }); + }; }) (mkIf cfg.format.enable {