51 lines
1.4 KiB
Lua
51 lines
1.4 KiB
Lua
local lsp_conficts, _ = pcall(vim.api.nvim_get_autocmds, { group = "LspAttach_conflicts" })
|
|
if not lsp_conficts then
|
|
vim.api.nvim_create_augroup("LspAttach_conflicts", {})
|
|
end
|
|
vim.api.nvim_create_autocmd("LspAttach", {
|
|
group = "LspAttach_conflicts",
|
|
desc = "prevent tsserver and volar competing",
|
|
callback = function(args)
|
|
if not (args.data and args.data.client_id) then
|
|
return
|
|
end
|
|
local active_clients = vim.lsp.get_active_clients()
|
|
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
|
-- prevent tsserver and volar competing
|
|
-- if client.name == "volar" or require("lspconfig").util.root_pattern("nuxt.config.ts")(vim.fn.getcwd()) then
|
|
-- OR
|
|
if client.name == "volar" then
|
|
for _, client_ in pairs(active_clients) do
|
|
-- stop tsserver if volar is already active
|
|
if client_.name == "tsserver" then
|
|
client_.stop()
|
|
end
|
|
end
|
|
elseif client.name == "tsserver" then
|
|
for _, client_ in pairs(active_clients) do
|
|
-- prevent tsserver from starting if volar is already active
|
|
if client_.name == "volar" then
|
|
client.stop()
|
|
end
|
|
end
|
|
end
|
|
end,
|
|
})
|
|
return {
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
opts = {
|
|
servers = {
|
|
volar = {
|
|
filetypes = {
|
|
"javascript",
|
|
"typescript",
|
|
"vue",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{},
|
|
}
|