return { recommended = function() return LazyVim.extras.wants({ ft = "svelte", root = { "svelte.config.js", "svelte.config.mjs", "svelte.config.cjs", }, }) end, -- depends on the typescript extra { import = "lazyvim.plugins.extras.lang.typescript" }, { "nvim-treesitter/nvim-treesitter", opts = function(_, opts) if type(opts.ensure_installed) == "table" then vim.list_extend(opts.ensure_installed, { "svelte" }) end end, }, -- LSP Servers { "neovim/nvim-lspconfig", opts = { servers = { svelte = { keys = { { "co", function() vim.lsp.buf.code_action({ apply = true, context = { only = { "source.organizeImports" }, diagnostics = {}, }, }) end, desc = "Organize Imports", }, }, capabilities = { workspace = { didChangeWatchedFiles = vim.fn.has("nvim-0.10") == 0 and { dynamicRegistration = true }, }, }, }, }, }, }, -- Configure tsserver plugin { "neovim/nvim-lspconfig", opts = function(_, opts) LazyVim.extend(opts.servers.vtsls, "settings.vtsls.tsserver.globalPlugins", { { name = "typescript-svelte-plugin", location = LazyVim.get_pkg_path("svelte-language-server", "/node_modules/typescript-svelte-plugin"), enableForWorkspaceTypeScriptVersions = true, }, }) end, }, { "stevearc/conform.nvim", optional = true, opts = { formatters_by_ft = { ["svelte"] = { "prettier" }, }, }, }, }