Closed RayGuo-ergou closed 5 months ago
It seems that both installing Volar and @vue/typescript-plugin is necessary for normal usage.
However, enabling two language server may cause performance issues and they may interfere with each other, affecting the operation of the cmp.
It seems to be faster to use than before ๐ค
@CofCat456 for me it feels slower, i have to wait for 1to3 seconds for one autocompletion, sometimes slower than codeium suggestions, and hints sometimes just stick at the old place, especially when i change the lang
of <script>
in SFC files, it takes way too long to recover and won't diagnose the file again. Also, no package or file name of the auto-imports in cmp.
typescript-tool.nvim
error link: https://github.com/pmizio/typescript-tools.nvim/issues/250
I'm noob at configuring neovim, what do I need to do to get version > 2 working on my end? After installing LazyVim and installing the vue-language-server
plugin with Mason, it's not working. After downgrading to 1.8.27, it's working. What do I need to do to get the latest version working in LazyVim?
I'm noob at configuring neovim, what do I need to do to get version > 2 working on my end? After installing LazyVim and installing the
vue-language-server
plugin with Mason, it's not working. After downgrading to 1.8.27, it's working. What do I need to do to get the latest version working in LazyVim?
Follow the instructions to add vue support in tsserver: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#tsserver
and npm install -D @vue/typescript-plugin
in your project and then the location
property can be whatever string you want, but has to be populated. OR you can install that globally and add that path in location.
I'm noob at configuring neovim, what do I need to do to get version > 2 working on my end? After installing LazyVim and installing the
vue-language-server
plugin with Mason, it's not working. After downgrading to 1.8.27, it's working. What do I need to do to get the latest version working in LazyVim?Follow the instructions to add vue support in tsserver: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#tsserver
and
npm install -D @vue/typescript-plugin
in your project and then thelocation
property can be whatever string you want, but has to be populated. OR you can install that globally and add that path in location.
Thanks. But will these manual steps always be required from now on? It makes the user experience worse. Maybe it's a Mason issue and not a Volar issue, I don't know? Hope it will not require additional user config in the future!
I think it's neither Volar or Mason's "issue". Before 2.0 Volar cannot co-op with Typescript server, that's why there's a take over mode. To me the take over mode is more like a "work around". The new approach is more ideal in my opinion, and it should be clear for everyone as long as it documented properly.
Even with the recommended settings, on a fresh Vue project with typescript configured, I still cannot get Go to Definition or Go to Reference to work for my custom components in either the <template>
or <script>
part of a Vue SFC -- it just points to vite-env.d.ts
. Go to Definition and Go to Reference both work fine for purely TypeScript references and I even get proper diagnostics in both the <template>
and <script>
sections for both Vue and TS entities.
When I run :LspInfo
I can see that both tsserver and volar are running (which I think is correct?) because without volar running I don't seem to get proper diagnostics in the section of the SFC.
Is it just me experiencing this behavior? With everything configured as suggested and the @vue/typescript-plugin
installed this is better -- but still not as good as they are when I am running Take Over Mode with 1.8.27 of volar by itself without tsserver.
As @RayGuo-ergou commented -- the new design of 2.0 seem like the better way forward -- but there seems to be some missing piece of configuration that is required for neovim users.
Even with the recommended settings, on a fresh Vue project with typescript configured, I still cannot get Go to Definition or Go to Reference to work for my custom components in either the
<template>
or<script>
part of a Vue SFC -- it just points tovite-env.d.ts
. Go to Definition and Go to Reference both work fine for purely TypeScript references and I even get proper diagnostics in both the<template>
and<script>
sections for both Vue and TS entities.When I run
:LspInfo
I can see that both tsserver and volar are running (which I think is correct?) because without volar running I don't seem to get proper diagnostics in the section of the SFC.Is it just me experiencing this behavior? With everything configured as suggested and the
@vue/typescript-plugin
installed this is better -- but still not as good as they are when I am running Take Over Mode with 1.8.27 of volar by itself without tsserver.As @RayGuo-ergou commented -- the new design of 2.0 seem like the better way forward -- but there seems to be some missing piece of configuration that is required for neovim users.
Agreed, goto definition is broken for me. I haven't tested this much, but I do use unplugin auto import. I'll do more testing tomorrow and try to figure it out.
I still cannot get Go to Definition or Go to Reference to work
That's a bit odd, ๐ค it works fine for me. Maybe worth to create a new issue.
auto import also works fine.
@RayGuo-ergou Does auto import provide you package or file name like this? (i'm using v1.8.27)
my cmp menu is simple as
menu = {
buffer = '[Buffer]',
nvim_lsp = '[LSP]',
luasnip = '[LuaSnip]',
nvim_lua = '[Lua]',
latex_symbols = '[Latex]',
},
So i dont have the dependency name with either 1.8.27
or version 2.
I've been using version 2.0+ for a few days now, and I find it stable enough for my needs, working fine on Neovim ๐
Currently, I need to have both tsserver and Volar enabled simultaneously to work properly in Single File Components (SFC). I used to rely on typescript-tools, which also worked for me, but I've encountered some issues lately. (I've switched to tsserver for a few days now, and haven't encountered any problem, so I suspect the problem lies with typescript-tools)
I'm still very happy with version 2.0 as a Neovim user ๐
In the past, to enable the "take over" mode, we had to customize some checks to disable tsserver or typescript-tools in Vue files, and we also needed to specify tsdk to make Volar work properly.
Now, all we need to do is install @vue/typescript-plugin, set up tsserver, and install Volar, and we're good to go. It's much more convenient compared to before.
Also, I believe there has been an improvement in autocompletion speed for me. I think this is largely due to the changes in version 2.0, where tsserver is used as the language server for handling TypeScript, which is faster compared to before. (However, I still encounter some issues in templates; sometimes there are missing prompts for features like v-if ๐ค)
Finally, I want to express my gratitude to @johnsoncodehk and his team for their dedication and hard work! There have been too many malicious comments in these days, which I think is very unfortunate and unhelpful. Regarding the architectural changes in version 2.0, I believe it's a fantastic choice, and I look forward to seeing Volar improve even further in the future!
I also want to thank @WhyNotHugo and everyone in this discussion thread for enabling me to swiftly transition during this major overhaul. Thank you all !
(However, I still encounter some issues in templates; sometimes there are missing prompts for features like v-if ๐ค)
Thanks for your kind comment! Please note that for CSS/HTML/VUE language features to continue to work, you still need to install @vue/language-server
, @vue/typescript-plugin
is only used for TS/JS support in SFC. (Therefore 2.0 is called hybrid mode.)
@CofCat456 I am also using Neovim and I do see completion items for v-if
, what exactly are you expecting to see but missing?
I would like to share the config that should make your vue language server v2 working for people who having issue here and there. This should give you all things working in a vue SFC (v-if
, variable type in both <template>
and <script>
, auto completion ect).
local servers = {
tsserver = {
init_options = {
plugins = {
{
name = '@vue/typescript-plugin',
location = '{YOUR NPM/YARN/PNPM ROOT}/node_modules/@vue/typescript-plugin',
-- If .vue file cannot be recognized in either js or ts file try to add `typescript` and `javascript` in languages table.
languages = { 'vue' },
},
},
},
filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' },
},
volar = {},
}
local mason_lspconfig = require('mason-lspconfig')
-- Auto cmd (LspAttach) to setup keybind, codelens, and formatting stuff
-- I assume everyone should have this configured already but just for reference
-- @see https://github.com/RayGuo-ergou/dotfiles/blob/cdf866790b1daa27444bd9991025740c8eb74c5b/nvim/lua/ergou/util/lsp.lua#L43
Util.lsp.lsp_autocmd()
local capabilities = vim.lsp.protocol.make_client_capabilities()
-- If you need cmp
capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
mason_lspconfig.setup({
ensure_installed = vim.tbl_keys(servers),
handlers = {
function(server_name)
local server = servers[server_name] or {}
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
require('lspconfig')[server_name].setup(server)
end,
},
})
languages = { 'typescript', 'vue', 'javascript' },
I'm not sure if 'typescript'
, 'javascript'
are necessary, in VSCode the languages
option just needs to add 'vue'
.
@ogios I have tested the dependency name with cmp.
It's likely from entry.completion_item.detail
in cmpConfig.format.formatting
( you may configured yourself or some of your plugin configured that for you ). In 1.8.27
take over mode, I guess volar push the dependency name for you anyway. In version 2, it's tsserver
do the job and if entry.completion_item.detail
exist in the response means tsserver
will do a auto import for you, e.g. if you see vue
after ref
when you complete ref with cmp
a import statement(import { ref } from 'vue'
) will be push to your file. As the auto import methods such as ref
are already imported, tsserver will leave entry.completion_item.detail
as nil
.
@CofCat456ๆไนๅจไฝฟ็จ Neovim๏ผ่ๆ็ขบๅฏฆ็ๅฐไบ ็ๅฎๆ้
v-if
๏ผๆจๅฐๅบๆๆ็ๅฐไฝ็ผบๅฐไป้บผ๏ผ
I updated my @vue/typescript-plugin to the 2.0.5 version, and v-if syntax works fine, but I don't see prompts like props. I'm not sure if it's a configuration issue on my end.
I'm not sure if 'typescript', 'javascript' are necessary, in VSCode the languages option just needs to add 'vue'.
Thanks @johnsoncodehk for pointing that out, I did a test and apparently languages = { 'vue' },
will work perfectly.
The reason I keep ts and js file type is because in version prior to 2, I have to use volar for all ts and js files ( I did not even have tsserver
installed at that time) the reason is in *.ts
file, import with .vue
will not recognized by only tsserver
.
e.g. in volar prior to version 2
// test.ts
import Test from '@/Test.vue'
// ^ this will show error with tsserver
With version 2 is fine
Also I think this is a good chance for me to say a big thanks, Johnson. I am seeing people using open source software but feel entitled that maintainers should do things they "like" which is really ridiculous for me. The work you have done is just amazing really really appreciate it. ๐
@CofCat456 from what i experienced, directives and props are provided not by tsserver plugin but volar2.0 in SFC template
. tssever plugin only gives me avaliable variables and auto-imports.
if you open both tsserver and volar, it should be working, and volar2.0 doesn't need any configuration itself right?
but I don't see prompts like props.
Seems the newest version having issue, seeing props with 2.0.4
Another thing is that you must make sure to use the same version of @vue/language-server
, @vue/typescript-plugin
. Which communicate through Named Pipe behind the scenes. If the versions are different, they cannot communicate with each other. This results in the lack of some additional features such as missing props inlay hints.
If @vue/language-server
cannot connect to @vue/typescript-plugin
, the server log will have corresponding messages.
Ops totally forget that part, thanks!
@ogios @catgoose try to update @vue/typescript-plugin
. I can confirm if volar
and @vue/typescript-plugin
version is align, props auto completion is back.
Another thing is that you must make sure to use the same version of @vue/language-server, @vue/typescript-plugin. Which communicate through Named Pipe behind the scenes. If the versions are different, they cannot communicate with each other. This results in the lack of some additional features such as missing props inlay hints.
@johnsoncodehk Where is this pipe located? I run each LSP in an isolated namespace, so they see entirely different filesystem trees. I'd like to cross-mount this location.
After finally getting the time to read through the comments here I was able to understand the difference now. Here is my solution to it, not relying on any distros or additional plugins.
If installed globally then it will get that node_modules
location. This way @vue/language-server
and @vue/typescript-plugin
will always be the same version whenever I run npm update -g
to update them.
And once https://github.com/mason-org/mason-registry/pull/4869 merges then it should work with mason as well.
I also added root_dir
so that way it will only work for vue projects but this was just at my assumption when I created a vue project via npm create vue
or npx nuxi@latest init
for a nuxt project. So adjust this as you see fit (I hope it'll mostly be the same structure ๐
)
local result = vim.fn.systemlist("npm ls -g --depth=0")
local location = string.format("%s/node_modules/@vue/typescript-plugin", result[1])
-- if using mason, uncomment lines below
-- local is_mason = pcall(require, "mason")
-- location = is_mason and vim.fn.stdpath("data") .. "/mason/packages/vue-language-server/node_modules/@vue/typescript-plugin"
if vim.fn.isdirectory(location) == 1 then
-- Ensure @vue/typescript-plugin is installed
-- before setting up tsserver
require("lspconfig").tsserver.setup({
-- on_attach = on_attach,
-- capabilities = capabilities,
root_dir = require("lspconfig.util").root_pattern("src/App.vue", "nuxt.config.ts", "nuxt.config.js"),
filetypes = { "vue", "typescript", "javascript", "json" },
init_options = {
plugins = {
{
name = "@vue/typescript-plugin",
location = location,
languages = { "vue" },
},
},
},
})
else
vim.api.nvim_err_writeln(
"@vue/typescript-plugin is required, install globally via `npm install -g @vue/typescript-plugin`"
)
end
Also would like to take this opportunity to thank @johnsoncodehk and everyone here with helpful tips. I saw the tweet and felt compelled to say it as OSS work is indeed a thankless job!
While v2 is a bit verbose for my setup, it's still a way better experience than I had on v1 especially when I created new files and the LSP didn't pick up any autocompletion for it, this works flawlessly on v2. Thank you!
@WhyNotHugo This is the path used by Named Pipe.
This is the json location where the typescript plugin records the Name Pipe path. @vue/language-server
will read the json file to obtain the currently valid Name Pipes list. (The json file name contains the version, which is why different versions are not interoperable.)
@creativenull #4061 might improve your approach.
After finally getting the time to read through the comments here I was able to understand the difference now. Here is my solution to it, not relying on any distros or additional plugins.
If installed globally then it will get that
node_modules
location. This way@vue/language-server
and@vue/typescript-plugin
will always be the same version whenever I runnpm update -g
to update them.And once mason-org/mason-registry#4869 merges then it should work with mason as well.
I also added
root_dir
so that way it will only work for vue projects but this was just at my assumption when I created a vue project vianpm create vue
ornpx nuxi@latest init
for a nuxt project. So adjust this as you see fit (I hope it'll mostly be the same structure ๐ )local result = vim.fn.systemlist("npm ls -g --depth=0") local location = string.format("%s/node_modules/@vue/typescript-plugin", result[1]) -- if using mason, uncomment lines below -- local is_mason = pcall(require, "mason") -- location = is_mason and vim.fn.stdpath("data") .. "/mason/packages/vue-language-server/node_modules/@vue/typescript-plugin" if vim.fn.isdirectory(location) == 1 then -- Ensure @vue/typescript-plugin is installed -- before setting up tsserver require("lspconfig").tsserver.setup({ -- on_attach = on_attach, -- capabilities = capabilities, root_dir = require("lspconfig.util").root_pattern("src/App.vue", "nuxt.config.ts", "nuxt.config.js"), filetypes = { "vue", "typescript", "javascript", "json" }, init_options = { plugins = { { name = "@vue/typescript-plugin", location = location, languages = { "vue" }, }, }, }, }) else vim.api.nvim_err_writeln( "@vue/typescript-plugin is required, install globally via `npm install -g @vue/typescript-plugin`" ) end
Also would like to take this opportunity to thank @johnsoncodehk and everyone here with helpful tips. I saw the tweet and felt compelled to say it as OSS work is indeed a thankless job!
While v2 is a bit verbose for my setup, it's still a way better experience than I had on v1 especially when I created new files and the LSP didn't pick up any autocompletion for it, this works flawlessly on v2. Thank you!
This is my approach to check if I'm in a vue project in order to start tsserver
. It relies on fd to check the presence of any .vue
file. My tsserver
root dir looks like:
function(filename, _)
local root = ts_root(filename)
if root and has_vue(root) then return root end
end
The function has_vue
is defined as:
local function has_vue(root)
return vim.fn.glob("`fd -d2 -tf -1 -e'vue' --base-directory " .. root .. " --glob '*'`") ~= ""
end
It can also be useful to use tsserver only for vue projects and typescript-tools (if root and not has_vue(root) then return root end
) for the other ones, pending a solution is found for the issue https://github.com/pmizio/typescript-tools.nvim/issues/250.
Thanks to everybody who contributed to this thread. And a special one to @johnsoncodehk and his collaborators !
After #4061, we do not have to manually manage two packages version.
local mason_registry = require('mason-registry')
local ts_plugin_path = mason_registry.get_package('vue-language-server'):get_install_path()
.. '/typescript-plugin'
-- Even for now can use
-- local ts_plugin_path = mason_registry.get_package('vue-language-server'):get_install_path() .. '/node_modules/@vue/language-server/node_modules/@vue/typescript-plugin'
Does it mean we no longer need to install @vue/typescript-plugin
? If so, how should location
in
init_options = {
plugins = {
{
name = '@vue/typescript-plugin',
location = '(rest of path here)/node_modules/@vue/typescript-plugin',
languages = { 'vue' },
},
},
},
be set now?
Look to typescript-language-server
docs:
The `name` and the `location` are required. The `location` is a path to the package or a directory in which `tsserver` will try to import the plugin `name` using Node's `require` API.
I think #4061 is not needed because just specify location
as @vue/language-server
directory and typescript-language-server
will execute require('@vue/typescript-plugin')
in that directory, which is already ensured use the same version.
init_options = {
plugins = {
{
name = '@vue/typescript-plugin',
location = '.../vue-language-server/node_modules/@vue/language-server,
languages = { 'vue' },
},
},
},
Interestingly I don't have any files in node_modules/@vue/language-server/node_modules
other than node_modules/@vue/language-server/node_modules/.bin/vue-language-server
on version 2.0.6
(installed globally with pnpm). I assume #4061 is needed after all?
@gegoune @vue/language-server
does not necessarily have node_modules
. @vue/typescript-plugin
should be a directory accessible to @vue/language-server
, such as ../.pnpm/@vue/typescript-plugin
, so it should still works.
I got bit confused by other recent comments here, my understanding was that #4061 will bundle @vue/typescript-plugin
installation (into @vue/language-server
's node_modules
) and separate installation of won't be necessary any longer. I must have misunderstood it then?
You don't necessarily need #4061 to get the @vue/typescript-plugin
with in @vue/language-server
. It just makes the file path cleaner.
Interestingly I don't have any files in node_modules/@vue/language-server/node_modules other than node_modules/@vue/language-server/node_modules/.bin/vue-language-server on version 2.0.6 (installed globally with pnpm).
You should check the Mason
folder rather than pnpm
. The default path would be $HOME/.local/share/nvim/mason/packages/vue-language-server/...
You don't necessarily need #4061 to get the
@vue/typescript-plugin
with in@vue/language-server
. It just makes the file path cleaner.
Are you saying installing @vue/language-server
installs @vue/typescript-plugin
inside it for you?
For me it's:
.pnpm-global/5/node_modules/@vue/language-server/
โโโ LICENSE
โโโ bin
โย ย โโโ vue-language-server.js
โโโ index.d.ts
โโโ index.js
โโโ lib
โย ย โโโ protocol.d.ts
โย ย โโโ protocol.js
โย ย โโโ types.d.ts
โย ย โโโ types.js
โโโ node.d.ts
โโโ node.js
โโโ node_modules
โย ย โโโ .bin
โย ย โโโ vue-language-server
โโโ package.json
You should check the
Mason
folder rather thanpnpm
.
I am not using mason. Perhaps that's where differences in installation are coming from?
I am not using mason. Perhaps that's where differences in installation are coming from?
Oh yeah I think that's why we have these differences. Here's my mason
file tree:
$ pwd
/home/raydev/.local/share/nvim/mason/packages/vue-language-server
$ tree -d -L 6
.
โโโ node_modules
โโโ @vue
โย ย โโโ language-server
โย ย โโโ bin
โย ย โโโ lib
โย ย โโโ node_modules
โย ย โโโ @vue
โย ย โย ย โโโ typescript-plugin
Install with pnpm globally will only download the built files so I am guessing you have to wait for #4061 to be published.
I wasn`t able to fix this without downgrading as mentioned above.
MasonUninstall vue-language-server
MasonInstall vue-language-server@1.8.27
We don't use language servers in v2. You should install volar as a typescript plugin.
Using vim with https://github.com/yegappan/lsp and the following config:
{
"name": "ts-ls",
"filetype": ["typescript", "javascript", "vue"],
"path": "typescript-language-server",
"args": ["--stdio"],
"features": {
"documentFormatting": false
},
"initializationOptions": {
"plugins":[
{
"name": "@vue/typescript-plugin",
"location":"/home/daniel/.nvm/versions/node/v20.11.0/lib/node_modules/@vue/language-server/node_modules/@vue/typescript-plugin",
"languages": ["vue"]
}
]
}
},
{
"name": "vue-ls",
"filetype": ["vue"],
"path": "vue-language-server",
"args": ["--stdio"],
"features": {
"documentFormatting": true
},
"initializationOptions": {
"typescript": {
"tsdk": "/home/daniel/.nvm/versions/node/v20.11.0/lib/node_modules/typescript/lib"
}
},
"workspaceConfig": {
"html": {
"format": {
"wrapAttributes": "force-aligned"
}
}
}
},
I only get ts completion, but no vue completion:
Am i missing something?
Am i missing something?
@DanielViberg may have to install @vue/typescript-plugin
globally and use that path /home/daniel/.nvm/versions/node/v20.11.0/lib/node_modules/@vue/typescript-plugin
From my understanding and correct me if I'm wrong but #4061 is merged but not tagged yet so it's not available until maybe v2.0.7
is out.
After that the location will be /home/daniel/.nvm/versions/node/v20.11.0/lib/node_modules/@vue/language-server/typescript-plugin
Thanks for your respons, i tried to install the plugin but I'm still unable to get completion for both html and ts. Have you manage to get it to work with your config in neovim?
Check my comment before and see if that can help: https://github.com/vuejs/language-tools/issues/3925#issuecomment-1987051939
From what I see it should work, maybe have to check if your lsp client has logs you can look into and see if there are any errors.
I wanted to follow up on my post from earlier -- thanks to the many helpful posts on here I was able to get a working configuration with completion in both the <template>
and <script>
sections of .vue
files as well as Go to Definition and (mostly) Go to References. There is still something off with Go to References (specifically it doesn't include usage of a component in the <template>
tag -- but it at least brings me to the import statement for the selected component in any file that references it which honestly is more than good enough). Even with that caveat, the improved Go to Definition when .ts files are involved is very nice!
I won't bother pasting any configs as I don't think it will be anything you haven't seen already on this thread. However, one thing that might be useful: the code I work in uses a monorepo configured as follows:
packages
-- apps
---- vue-app-lives-here
-- libs
---- ts-library-1
---- ts-library-2
. . .
---- ts-library-n
-- tests
I had a short lua function that would detect I was inside a monorepo and set the LSP root_dir of volar to the outer most directory of the repo. I got rid of that code because I think it was what broke Go to Definition and Go to References in .vue files. I'm uncertain if this is a bug or not so am holding off on reporting it.
I end up with several instances of tsserver
running (as indicated by :LspInfo
) as I move around the monorepo now -- but everything still seems to work just fine!
Very thankful for everyone's help on this thread as well as for all the work that went into the new version of Volar!
I wanted to follow up on my post from earlier -- thanks to the many helpful posts on here I was able to get a working configuration with completion in both the
<template>
and<script>
sections of.vue
files as well as Go to Definition and (mostly) Go to References. There is still something off with Go to References (specifically it doesn't include usage of a component in the<template>
tag -- but it at least brings me to the import statement for the selected component in any file that references it which honestly is more than good enough). Even with that caveat, the improved Go to Definition when .ts files are involved is very nice!I won't bother pasting any configs as I don't think it will be anything you haven't seen already on this thread. However, one thing that might be useful: the code I work in uses a monorepo configured as follows:
packages -- apps ---- vue-app-lives-here -- libs ---- ts-library-1 ---- ts-library-2 . . . ---- ts-library-n -- tests
I had a short lua function that would detect I was inside a monorepo and set the LSP root_dir of volar to the outer most directory of the repo. I got rid of that code because I think it was what broke Go to Definition and Go to References in .vue files. I'm uncertain if this is a bug or not so am holding off on reporting it.
I end up with several instances of
tsserver
running (as indicated by:LspInfo
) as I move around the monorepo now -- but everything still seems to work just fine!Very thankful for everyone's help on this thread as well as for all the work that went into the new version of Volar!
Can you provide a link to your config? I can't get goto definition working for components in the template
Ops totally forget that part, thanks!
@ogios @catgoose try to update
@vue/typescript-plugin
. I can confirm ifvolar
and@vue/typescript-plugin
version is align, props auto completion is back.
![]()
![]()
for you does vim.lsp.buf.rename()
work within script tags and vim.lsp.buf.definition
work for custom components within template?
Yes everything working for me. Anything does not work inside script tag means something wrong with tsserver.
Yes everything working for me. Anything does not work inside script tag means something wrong with tsserver.
Can I see your config? I cannot get goto definition and error diagnostics working in templates
Update: check readme.
tldr:
Hi,
I am having issue to run
volar@2.0.1
with neovimlsp
.cmd:
vue-language-server --stdio
With
![image](https://github.com/vuejs/language-tools/assets/33137074/6c0aaa6f-4883-46e8-b076-ad7224df3252)
1.8.27
:With
![image](https://github.com/vuejs/language-tools/assets/33137074/a646727e-aa72-40e5-8f05-4baa7c34c2de)
2.0.1
: