diff options
| author | J.c <Jak-Ch-ll@mailbox.org> | 2025-05-10 13:56:36 +0200 |
|---|---|---|
| committer | J.c <Jak-Ch-ll@mailbox.org> | 2025-05-11 15:54:13 +0200 |
| commit | 221bc7bd182c78453c67db34e4bc465dc13612d4 (patch) | |
| tree | 777fa4e1af83081232497cad407ca139f64a61a3 | |
| parent | docs: cleanup (diff) | |
| download | nvim-lspconfig-221bc7bd182c78453c67db34e4bc465dc13612d4.tar nvim-lspconfig-221bc7bd182c78453c67db34e4bc465dc13612d4.tar.gz nvim-lspconfig-221bc7bd182c78453c67db34e4bc465dc13612d4.tar.bz2 nvim-lspconfig-221bc7bd182c78453c67db34e4bc465dc13612d4.tar.lz nvim-lspconfig-221bc7bd182c78453c67db34e4bc465dc13612d4.tar.xz nvim-lspconfig-221bc7bd182c78453c67db34e4bc465dc13612d4.tar.zst nvim-lspconfig-221bc7bd182c78453c67db34e4bc465dc13612d4.zip | |
feat(volar)!: rename to 'vue_ls'
The Vue language tooling does not use 'Volar' prominently in its
documentation. The official name for the language server is
'@vue/language-server'.
| -rw-r--r-- | lsp/ts_ls.lua | 10 | ||||
| -rw-r--r-- | lsp/volar.lua | 93 | ||||
| -rw-r--r-- | lsp/vue_ls.lua | 91 |
3 files changed, 99 insertions, 95 deletions
diff --git a/lsp/ts_ls.lua b/lsp/ts_ls.lua index 877a663c..360a805b 100644 --- a/lsp/ts_ls.lua +++ b/lsp/ts_ls.lua @@ -35,10 +35,10 @@ --- --- ### Vue support --- ---- As of 2.0.0, Volar no longer supports TypeScript itself. Instead, a plugin +--- As of 2.0.0, the Vue language server no longer supports TypeScript itself. Instead, a plugin --- adds Vue support to this language server. --- ---- *IMPORTANT*: It is crucial to ensure that `@vue/typescript-plugin` and `volar `are of identical versions. +--- *IMPORTANT*: It is crucial to ensure that `@vue/typescript-plugin` and `@vue/language-server `are of identical versions. --- --- ```lua --- vim.lsp.config('ts_ls', { @@ -58,9 +58,9 @@ --- }, --- }) --- ---- -- You must make sure volar is setup ---- -- e.g. vim.lsp.config('volar') ---- -- See volar's section for more information +--- -- You must make sure the Vue language server is setup +--- -- e.g. vim.lsp.config('vue_ls') +--- -- See vue_ls's section for more information --- ``` --- --- `location` MUST be defined. If the plugin is installed in `node_modules`, diff --git a/lsp/volar.lua b/lsp/volar.lua index bd8006cc..bfa4bc9a 100644 --- a/lsp/volar.lua +++ b/lsp/volar.lua @@ -1,95 +1,8 @@ ---@brief --- ---- https://github.com/vuejs/language-tools/tree/master/packages/language-server +--- Renamed to [vue_ls](#vue_ls) --- ---- Volar language server for Vue --- ---- Volar can be installed via npm: ---- ```sh ---- npm install -g @vue/language-server ---- ``` ---- ---- Volar by default supports Vue 3 projects. ---- For Vue 2 projects, [additional configuration](https://github.com/vuejs/language-tools/blob/master/extensions/vscode/README.md?plain=1#L19) are required. ---- ---- **Hybrid Mode (by default)** ---- ---- In this mode, the Vue Language Server exclusively manages the CSS/HTML sections. ---- You need the `ts_ls` server with the `@vue/typescript-plugin` plugin to support TypeScript in `.vue` files. ---- See `ts_ls` section for more information ---- ---- **No Hybrid Mode** ---- ---- Volar will run embedded `ts_ls` therefore there is no need to run it separately. ---- ```lua ---- local lspconfig = require('lspconfig') ---- ---- vim.lsp.config('volar', { ---- -- add filetypes for typescript, javascript and vue ---- filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' }, ---- init_options = { ---- vue = { ---- -- disable hybrid mode ---- hybridMode = false, ---- }, ---- }, ---- }) ---- -- you must remove "ts_ls" config ---- -- vim.lsp.config['ts_ls'] = {} ---- ``` ---- ---- **Overriding the default TypeScript Server used by Volar** ---- ---- The default config looks for TypeScript in the local `node_modules`. This can lead to issues ---- e.g. when working on a [monorepo](https://monorepo.tools/). The alternatives are: ---- ---- - use a global TypeScript Server installation ---- ```lua ---- vim.lsp.config('volar', { ---- init_options = { ---- typescript = { ---- -- replace with your global TypeScript library path ---- tsdk = '/path/to/node_modules/typescript/lib' ---- } ---- } ---- }) ---- ``` ---- ---- - use a local server and fall back to a global TypeScript Server installation ---- ```lua ---- vim.lsp.config('volar', { ---- init_options = { ---- typescript = { ---- -- replace with your global TypeScript library path ---- tsdk = '/path/to/node_modules/typescript/lib' ---- } ---- }, ---- before_init = function(params, config) ---- local lib_path = vim.fs.find('node_modules/typescript/lib', { path = new_root_dir, upward = true })[1] ---- if lib_path then ---- config.init_options.typescript.tsdk = lib_path ---- end ---- end ---- }) ---- ``` - -local util = require 'lspconfig.util' - --- https://github.com/vuejs/language-tools/blob/master/packages/language-server/lib/types.ts -local volar_init_options = { - typescript = { - tsdk = '', - }, -} +vim.deprecate('volar', 'vue_ls', '3.0.0', 'lspconfig', false) -return { - cmd = { 'vue-language-server', '--stdio' }, - filetypes = { 'vue' }, - root_markers = { 'package.json' }, - init_options = volar_init_options, - before_init = function(_, config) - if config.init_options and config.init_options.typescript and config.init_options.typescript.tsdk == '' then - config.init_options.typescript.tsdk = util.get_typescript_server_path(config.root_dir) - end - end, -} +return vim.lsp.config.vue_ls diff --git a/lsp/vue_ls.lua b/lsp/vue_ls.lua new file mode 100644 index 00000000..457303a1 --- /dev/null +++ b/lsp/vue_ls.lua @@ -0,0 +1,91 @@ +---@brief +--- +--- https://github.com/vuejs/language-tools/tree/master/packages/language-server +--- +--- The official language server for Vue +--- +--- It can be installed via npm: +--- ```sh +--- npm install -g @vue/language-server +--- ``` +--- +--- The language server only supports Vue 3 projects by default. +--- For Vue 2 projects, [additional configuration](https://github.com/vuejs/language-tools/blob/master/extensions/vscode/README.md?plain=1#L19) are required. +--- +--- **Hybrid Mode (by default)** +--- +--- In this mode, the Vue Language Server exclusively manages the CSS/HTML sections. +--- You need the `ts_ls` server with the `@vue/typescript-plugin` plugin to support TypeScript in `.vue` files. +--- See `ts_ls` section for more information +--- +--- **No Hybrid Mode** +--- +--- The Vue language server will run embedded `ts_ls` therefore there is no need to run it separately. +--- ```lua +--- vim.lsp.config('vue_ls', { +--- -- add filetypes for typescript, javascript and vue +--- filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' }, +--- init_options = { +--- vue = { +--- -- disable hybrid mode +--- hybridMode = false, +--- }, +--- }, +--- }) +--- -- you must remove "ts_ls" config +--- -- vim.lsp.config['ts_ls'] = {} +--- ``` +--- +--- **Overriding the default TypeScript Server used by the Vue language server** +--- +--- The default config looks for TypeScript in the local `node_modules`. This can lead to issues +--- e.g. when working on a [monorepo](https://monorepo.tools/). The alternatives are: +--- +--- - use a global TypeScript Server installation +--- ```lua +--- vim.lsp.config('vue_ls', { +--- init_options = { +--- typescript = { +--- -- replace with your global TypeScript library path +--- tsdk = '/path/to/node_modules/typescript/lib' +--- } +--- } +--- }) +--- ``` +--- +--- - use a local server and fall back to a global TypeScript Server installation +--- ```lua +--- vim.lsp.config('vue_ls', { +--- init_options = { +--- typescript = { +--- -- replace with your global TypeScript library path +--- tsdk = '/path/to/node_modules/typescript/lib' +--- } +--- }, +--- before_init = function(params, config) +--- local lib_path = vim.fs.find('node_modules/typescript/lib', { path = new_root_dir, upward = true })[1] +--- if lib_path then +--- config.init_options.typescript.tsdk = lib_path +--- end +--- end +--- }) +--- ``` + +local util = require 'lspconfig.util' + +return { + cmd = { 'vue-language-server', '--stdio' }, + filetypes = { 'vue' }, + root_markers = { 'package.json' }, + -- https://github.com/vuejs/language-tools/blob/v2/packages/language-server/lib/types.ts + init_options = { + typescript = { + tsdk = '', + }, + }, + before_init = function(_, config) + if config.init_options and config.init_options.typescript and config.init_options.typescript.tsdk == '' then + config.init_options.typescript.tsdk = util.get_typescript_server_path(config.root_dir) + end + end, +} |
