nvim/lua/user/lsp_servers/svelte.lua
2026-07-07 22:21:01 +05:30

43 lines
1.3 KiB
Lua

-- Svelte LSP configuration
-- Uses svelte-language-server installed via Mason
local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
vim.lsp.config("svelte", {
cmd = { "svelteserver", "--stdio" },
filetypes = { "svelte" },
capabilities = capabilities,
root_markers = { "package.json", "svelte.config.js", ".git" },
settings = {
svelte = {
enableTsPlugin = true,
plugin = {
svelte = {
enable = true,
},
},
},
},
})
-- Svelte-specific LSP attach handlers
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if client and client.name == "svelte" then
local bufnr = args.buf
-- Restart Svelte language server
vim.keymap.set("n", "<leader>sr", function()
vim.cmd("LspRestart svelte")
end, { buffer = bufnr, desc = "Svelte: Restart LSP" })
-- Go to component definition (jumps to imported .svelte files)
vim.keymap.set("n", "gD", function()
vim.lsp.buf.declaration()
end, { buffer = bufnr, desc = "Svelte: Go to declaration" })
end
end,
})
vim.lsp.enable("svelte")