From b88d2418e0094e0f93374acc5875a7146d95d1b6 Mon Sep 17 00:00:00 2001 From: rice-cracker-dev Date: Thu, 21 Aug 2025 17:44:21 +0700 Subject: [PATCH] languages/svelte: fix svelte-language-server not reloading types on .ts/.js files change --- docs/release-notes/rl-0.8.md | 1 + modules/plugins/languages/svelte.nix | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index d2a1a098..9de89822 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -319,6 +319,7 @@ - Add global function `nvf_lint` under `vim.diagnostics.nvim-lint.lint_function`. - Deprecate `vim.scrollOffset` in favor of `vim.options.scrolloff`. +- Fix `svelte-language-server` not reloading TS/JS files on change. [Sc3l3t0n](https://github.com/Sc3l3t0n): diff --git a/modules/plugins/languages/svelte.nix b/modules/plugins/languages/svelte.nix index 4cc9ffe9..0b22242c 100644 --- a/modules/plugins/languages/svelte.nix +++ b/modules/plugins/languages/svelte.nix @@ -22,7 +22,20 @@ lspConfig = '' lspconfig.svelte.setup { capabilities = capabilities; - on_attach = attach_keymaps, + on_attach = function(client, bufnr) + -- Workaround to trigger reloading JS/TS files + -- See https://github.com/sveltejs/language-tools/issues/2008 + 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, + }) + + attach_keymaps(client, bufnr) + end, cmd = ${ if isList cfg.lsp.package then expToLua cfg.lsp.package