nvim/lua/plugins/lsp.lua
2024-12-02 16:57:34 +08:00

107 lines
2.7 KiB
Lua

-- http://www.lazyvim.org/extras/lang/vue
require("lspconfig").ts_ls.setup({
cmd = { "typescript-language-server", "--stdio" },
filetype = { "javascript" },
})
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,
},
}