-- http://www.lazyvim.org/extras/lang/vue require("lspconfig").ts_ls.setup({ cmd = { "typescript-language-server", "--stdio" }, filetype = { "javascript", "html" }, }) return { { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = { "vue", "css", "scss", "go", "gomod", "gowork", "gosum", "json5" } }, }, { "williamboman/mason.nvim", opts = { ensure_installed = { "bash-language-server", "css-lsp", "html-lsp", "vue-language-server", "vtsls", "typescript-language-server", "gopls", "helm-ls", "json-lsp", "goimports", "gofumpt", "gomodifytags", "impl", "delve", }, }, }, { "neovim/nvim-lspconfig", opts = { servers = { volar = { init_options = { vue = { hybridMode = true, }, }, }, tsserver = { enabled = false, }, ts_ls = { enabled = false, }, vtsls = { enabled = false, filetypes = { "vue", "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", }, settings = { complete_function_calls = true, vtsls = { enableMoveToFileCodeAction = true, autoUseWorkspaceTsdk = true, experimental = { completion = { enableServerSideFuzzyMatch = true, }, }, }, typescript = { updateImportsOnFileMove = { enabled = "always" }, suggest = { completeFunctionCalls = true, }, inlayHints = { enumMemberValues = { enabled = true }, functionLikeReturnTypes = { enabled = false }, parameterNames = { enabled = false }, parameterTypes = { enabled = false }, propertyDeclarationTypes = { enabled = true }, variableTypes = { enabled = false }, }, }, }, }, }, }, }, { "neovim/nvim-lspconfig", opts = function(_, opts) LazyVim.extend(opts.servers.vtsls, "settings.vtsls.tsserver.globalPlugins", { { name = "@vue/typescript-plugin", location = LazyVim.get_pkg_path("vue-language-server", "/node_modules/@vue/language-server"), languages = { "vue" }, configNamespace = "typescript", enableForWorkspaceTypeScriptVersions = true, }, }) end, }, }