-
-
Notifications
You must be signed in to change notification settings - Fork 219
Description
Describe the bug
Hi! If I start the svelte language server with the following settings
svelte = {
settings = {
typescript = {
inlayHints = {
parameterNames = { enabled = "all" },
parameterTypes = { enabled = true },
variableTypes = { enabled = true },
propertyDeclarationTypes = { enabled = true },
functionLikeReturnTypes = { enabled = true },
enumMemberValues = { enabled = true },
},
},
},
},
During the 'completionItem/resolve' request, svelte language server seems to change the textedit value thus not following LSP spec by default which throws error in neovim with plugins like mini.completion.
Please take a look at this issue above for the reproduction steps. Although the author of the plugin has fixed it, He suggested that svelte-language-server does not follow lsp spec in this scenario. Hence, I am raising this issue.
Please let me know If I can help in any way. Below is the LSP response returned by the server when typing import ass
and select the asset, which is the first entry in the completion menu.
textEdit = {
newText = "{ asset$1 } from '\\$app/paths';",
range = {
start = { line = 5, character = 8 },
["end"] = { line = 6, character = 0 },
}
}
textEdit = {
newText = "{ asset$1 } from '\\$app/paths';",
range = {
start = { line = 5, character = 8 },
["end"] = { line = 5, character = 11 },
}
}
Reproduction
- Make sure to have nodejs, npm and svelte-language-server installed. I use arch btw 😏
in WSL2, so with arch using yayyay -Syu --noconfirm svelte-language-server nodejs-lts npm
does the job. - Below is the config to use to reproduce the issue.
-- Clone latest 'mini.nvim' (requires Git CLI installed)
vim.cmd('echo "Installing `mini.nvim`" | redraw')
local mini_path = vim.fn.stdpath("data") .. "/site/pack/deps/start/mini.nvim"
local clone_cmd = { "git", "clone", "--depth=1", "https://github.com/nvim-mini/mini.nvim", mini_path }
vim.fn.system(clone_cmd)
vim.cmd('echo "`mini.nvim` is installed" | redraw')
-- Make sure 'mini.nvim' is available
vim.cmd("packadd mini.nvim")
require("mini.deps").setup()
require("mini.snippets").setup()
require("mini.completion").setup()
MiniDeps.add("neovim/nvim-lspconfig")
local lsp_servers = {
svelte = {
settings = {
typescript = {
inlayHints = {
parameterNames = { enabled = "all" },
parameterTypes = { enabled = true },
variableTypes = { enabled = true },
propertyDeclarationTypes = { enabled = true },
functionLikeReturnTypes = { enabled = true },
enumMemberValues = { enabled = true },
},
},
},
},
}
vim.lsp.config("*", {
capabilities = lsp_capabilities,
root_markers = { ".git" },
})
for server, config in pairs(lsp_servers) do
vim.lsp.config(server, config)
vim.lsp.enable(server)
end
- Clone this repo
https://github.com/231tr0n/231tr0n.github.io.git
. - Navigate into the git root directory.
- Run
npm install
to install all packages. This step is necessary for the svelte language server to work, as it does not seem to work properly without installing all the packages. - Run
NVIM_APPNAME=repro nvim -- src/routes/+layout.svelte
. - Go to line number 5 and press
o
to create a new line 6. - Type
import ass
and pressCtrl-n
to select the first element in the completion menu namedasset
and pressEnter
to get the error.
Expected behaviour
Text edit property to not change during 'completionItem/resolve' request.
System Info
- OS: Archlinux WSL2
- IDE: Neovim
Which package is the issue about?
svelte-language-server
Additional Information, eg. Screenshots
No response