lsp: add vstls LSP with vue support

This commit is contained in:
Adrian Perez 2025-07-30 15:30:50 -07:00
commit 4b7357166d
No known key found for this signature in database
2 changed files with 54 additions and 3 deletions

View file

@ -52,6 +52,57 @@
'';
};
# vtsls language server, including Vue support
# https://github.com/yioneko/vtsls
# https://github.com/vuejs/language-tools/wiki/Neovim
vtsls = {
package = pkgs.vtsls;
lspConfig =
# lua
''
local vue_language_server_path = '${pkgs.vue-language-server + "/lib/node_modules/@vue/language-server"}'
local vue_plugin = {
name = '@vue/typescript-plugin',
location = vue_language_server_path,
languages = { 'vue' },
configNamespace = 'typescript',
}
--- lsconfig method doesn't work in nvf, it says
--- it cannot find vue_ls or vtsls config.md
--- Using it this way means they're always enabled configs
vim.lsp.config("vtsls", {
capabilities = capabilities,
on_attach = function(client, bufnr)
attach_keymaps(client, bufnr);
-- TODO: do we need to disable formatting for this LS?
client.server_capabilities.documentFormattingProvider = false;
end,
filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' },
settings = {
vtsls = {
tsserver = {
globalPlugins = {
vue_plugin,
}
}
}
},
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else ''{"${cfg.lsp.package}/bin/vtsls", "--stdio"}''
},
})
vim.lsp.config('vue_ls', {
cmd = {"${getExe pkgs.vue-language-server}", "--stdio"}
})
vim.lsp.enable({'vtsls', 'vue_ls'})
'';
};
# Here for backwards compatibility. Still consider tsserver a valid
# configuration in the enum, but assert if it's set to *properly*
# redirect the user to the correct server.

View file

@ -1860,9 +1860,9 @@
},
"branch": "master",
"submodules": false,
"revision": "4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe",
"url": "https://github.com/neovim/nvim-lspconfig/archive/4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe.tar.gz",
"hash": "1lssglccyxlzkypklr4cwz20zik0qwnv514hp06722vcrxs32pzw"
"revision": "3db16ceeea947517f0dc1404c24dcb5ab0c91d26",
"url": "https://github.com/neovim/nvim-lspconfig/archive/3db16ceeea947517f0dc1404c24dcb5ab0c91d26.tar.gz",
"hash": "0gam1rxqkxksayblhj1i7jkh4sqjp6lpvyb1psmrhkryj6967ir2"
},
"nvim-metals": {
"type": "Git",