diff options
| author | Fidel Yin <fidel.yin@hotmail.com> | 2025-07-10 21:14:43 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-10 06:14:43 -0700 |
| commit | 85379d02d3bac8dc68129a4b81d7dbd00c8b0f77 (patch) | |
| tree | 3339dab7392077501669219c0f273307df7b1a04 /lsp/vtsls.lua | |
| parent | docs: update configs.md (diff) | |
| download | nvim-lspconfig-85379d02d3bac8dc68129a4b81d7dbd00c8b0f77.tar nvim-lspconfig-85379d02d3bac8dc68129a4b81d7dbd00c8b0f77.tar.gz nvim-lspconfig-85379d02d3bac8dc68129a4b81d7dbd00c8b0f77.tar.bz2 nvim-lspconfig-85379d02d3bac8dc68129a4b81d7dbd00c8b0f77.tar.lz nvim-lspconfig-85379d02d3bac8dc68129a4b81d7dbd00c8b0f77.tar.xz nvim-lspconfig-85379d02d3bac8dc68129a4b81d7dbd00c8b0f77.tar.zst nvim-lspconfig-85379d02d3bac8dc68129a4b81d7dbd00c8b0f77.zip | |
fix(vue_ls): support `vue_ls` v3 #3943
Problem:
`vue_ls` made breaking changes to its config in v3.
Solution:
Change the typescript language server for `vue_ls` from `ts_ls` to
`vtsls`.
Add a client handler to communicate between `vue_ls` and `vtsls`.
Remove `typescript.tsdk` option.
Remove documentation for the deprecated takeover mode.
Diffstat (limited to 'lsp/vtsls.lua')
| -rw-r--r-- | lsp/vtsls.lua | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lsp/vtsls.lua b/lsp/vtsls.lua index dc8410fa..7b8c0b30 100644 --- a/lsp/vtsls.lua +++ b/lsp/vtsls.lua @@ -11,6 +11,53 @@ --- [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) --- or [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to --- the root of your project. +--- +--- ### Vue support +--- +--- Since v3.0.0, the Vue language server requires `vtsls` to support TypeScript. +--- +--- ``` +--- -- If you are using mason.nvim, you can get the ts_plugin_path like this +--- -- For Mason v1, +--- -- local mason_registry = require('mason-registry') +--- -- local vue_language_server_path = mason_registry.get_package('vue-language-server'):get_install_path() .. '/node_modules/@vue/language-server' +--- -- For Mason v2, +--- -- local vue_language_server_path = vim.fn.expand '$MASON/packages' .. '/vue-language-server' .. '/node_modules/@vue/language-server' +--- -- or even +--- -- local vue_language_server_path = vim.fn.stdpath('data') .. "/mason/packages/vue-language-server/node_modules/@vue/language-server" +--- local vue_language_server_path = '/path/to/@vue/language-server' +--- local vue_plugin = { +--- name = '@vue/typescript-plugin', +--- location = vue_language_server_path, +--- languages = { 'vue' }, +--- configNamespace = 'typescript', +--- } +--- vim.lsp.config('vtsls', { +--- settings = { +--- vtsls = { +--- tsserver = { +--- globalPlugins = { +--- vue_plugin, +--- }, +--- }, +--- }, +--- }, +--- filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' }, +--- }) +--- ``` +--- +--- - `location` MUST be defined. If the plugin is installed in `node_modules`, `location` can have any value. +--- - `languages` must include vue even if it is listed in filetypes. +--- - `filetypes` is extended here to include Vue SFC. +--- +--- You must make sure the Vue language server is setup. For example, +--- +--- ``` +--- vim.lsp.enable('vue_ls') +--- ``` +--- +--- See `vue_ls` section and https://github.com/vuejs/language-tools/wiki/Neovim for more information. + return { cmd = { 'vtsls', '--stdio' }, filetypes = { |
