From 32d3ac849f178cc76a6d58b2a1100c31c9b8d4e6 Mon Sep 17 00:00:00 2001 From: Martin Larsson Date: Thu, 8 May 2025 22:51:20 +0200 Subject: [PATCH] Add svelte support to neovim(lsp, ts) --- nix/pkgs/home.nix | 1 + nvim/lsp/svelte-language-server.lua | 22 ++++++++++++++++++++++ nvim/lua/plugs/treesitter.lua | 1 + 3 files changed, 24 insertions(+) create mode 100644 nvim/lsp/svelte-language-server.lua diff --git a/nix/pkgs/home.nix b/nix/pkgs/home.nix index 2ec62f9..0a94fa5 100644 --- a/nix/pkgs/home.nix +++ b/nix/pkgs/home.nix @@ -119,6 +119,7 @@ in bottom bc cmatrix + svelte-language-server ]; file = symlinkFiles; diff --git a/nvim/lsp/svelte-language-server.lua b/nvim/lsp/svelte-language-server.lua new file mode 100644 index 0000000..afdb9e3 --- /dev/null +++ b/nvim/lsp/svelte-language-server.lua @@ -0,0 +1,22 @@ +-- Helper function for the 'MigrateToSvelte5' LSP command. +-- This function will be called by the user command created in on_attach. +local function migrate_to_svelte_5_command(client) + client:exec_param({ + command = "migrate_to_svelte_5", + arguments = { vim.uri_from_bufnr(vim.api.nvim_get_current_buf()) }, + }) +end + +return { + cmd = { "svelteserver", "--stdio" }, + + filetypes = { "svelte" }, + + root_markers = { "package.json", ".git/" }, + on_attach = function(client, bufnr) + local fn = function() migrate_to_svelte_5_command(client) end + vim.api.nvim_buf_create_user_command(bufnr, "SvelteMigrateToSvelte5", fn, { + desc = "Svelte: Migrate Component to Svelte 5 Syntax (via LSP).", + }) + end, +} diff --git a/nvim/lua/plugs/treesitter.lua b/nvim/lua/plugs/treesitter.lua index 04a099c..0e1351e 100644 --- a/nvim/lua/plugs/treesitter.lua +++ b/nvim/lua/plugs/treesitter.lua @@ -50,6 +50,7 @@ return { "latex", "typst", "ruby", + "svelte", }, sync_install = false, -- This can be updated to a list of languages instead of defaulting to true