Use vue-lang-extra instead of hack
This commit is contained in:
@ -12,6 +12,7 @@
|
|||||||
"lazyvim.plugins.extras.lang.sql",
|
"lazyvim.plugins.extras.lang.sql",
|
||||||
"lazyvim.plugins.extras.lang.tailwind",
|
"lazyvim.plugins.extras.lang.tailwind",
|
||||||
"lazyvim.plugins.extras.lang.typescript",
|
"lazyvim.plugins.extras.lang.typescript",
|
||||||
|
"lazyvim.plugins.extras.lang.vue",
|
||||||
"lazyvim.plugins.extras.lang.yaml",
|
"lazyvim.plugins.extras.lang.yaml",
|
||||||
"lazyvim.plugins.extras.ui.treesitter-context"
|
"lazyvim.plugins.extras.ui.treesitter-context"
|
||||||
],
|
],
|
||||||
|
|||||||
@ -1,72 +0,0 @@
|
|||||||
return {
|
|
||||||
recommended = function()
|
|
||||||
return LazyVim.extras.wants({
|
|
||||||
ft = "vue",
|
|
||||||
root = { "vue.config.js", "nuxt.config.ts" },
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
|
|
||||||
-- depends on the typescript extra
|
|
||||||
{ import = "lazyvim.plugins.extras.lang.typescript" },
|
|
||||||
|
|
||||||
{
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
opts = { ensure_installed = { "vue", "css" } },
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Configure vtsls (the TypeScript plugin host) with @vue/typescript-plugin
|
|
||||||
{
|
|
||||||
"neovim/nvim-lspconfig",
|
|
||||||
opts = function(_, opts)
|
|
||||||
opts.servers.vtsls = opts.servers.vtsls or {}
|
|
||||||
opts.servers.vtsls.filetypes = opts.servers.vtsls.filetypes or {}
|
|
||||||
table.insert(opts.servers.vtsls.filetypes, "vue")
|
|
||||||
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,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Hook vue_ls to forward requests to vtsls
|
|
||||||
{
|
|
||||||
"neovim/nvim-lspconfig",
|
|
||||||
opts = {
|
|
||||||
servers = {
|
|
||||||
volar = { -- when LazyVim switches to nvim-lspconfig ≥ v2.2.0 rename this to `vue_ls`
|
|
||||||
on_init = function(client)
|
|
||||||
client.handlers["tsserver/request"] = function(_, result, context)
|
|
||||||
-- find the vtsls client
|
|
||||||
local clients = vim.lsp.get_clients({ bufnr = context.bufnr, name = "vtsls" })
|
|
||||||
if #clients == 0 then
|
|
||||||
vim.notify(
|
|
||||||
"Could not find `vtsls` client, Vue LSP features will be disabled",
|
|
||||||
vim.log.levels.ERROR
|
|
||||||
)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local ts_client = clients[1]
|
|
||||||
-- unpack the forwarded request
|
|
||||||
local params = unpack(result)
|
|
||||||
local id, command, payload = unpack(params)
|
|
||||||
-- forward it
|
|
||||||
ts_client:exec_cmd({
|
|
||||||
title = "vue_request_forward",
|
|
||||||
command = "typescript.tsserverRequest",
|
|
||||||
arguments = { command, payload },
|
|
||||||
}, { bufnr = context.bufnr }, function(_, resp)
|
|
||||||
-- send the tsserver/response back to Vue LSP
|
|
||||||
client.notify("tsserver/response", { { id, resp.body } })
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user