[Vue with typescript] 如何为 typescript-mode 和 web-mode 配置同一个 language-server

我的Vue用的是 web-mode,我的lsp配置是

(use-package lsp-mode
  :hook
  ((c++-mode python-mode clojure-mode typescript-mode web-mode julia-mode) . lsp)
  :config
  (setq lsp-enable-snippet nil
	lsp-eslint-enable nil
	lsp-idle-delay 0.500
	;; STUB add some config, risky
	lsp-log-io nil
	lsp-enable-symbol-highlighting t
	lsp-restart 'auto-restart
	lsp-file-watch-threshold 1000
	)
  (add-to-list 'lsp-file-watch-ignored-directories "node_modules/")
  :commands lsp)

另外我发现编辑 typescript 文件和 vue 文件时启用的 language-server 不是同一个, typescript 用的是 ts-ls vue 用的是 vls

有没有方法让他们都用 vls ??
不知道各位都是怎么配置 vuetypescript 的,因为他们用的 language-server不一样,我这里遇到了这个问题

那需要用volar 而不是vls了

是这样吗,我好像安装失败了

@volar/server 已经改名成 @volar/vue-language-server

1 个赞

这样?又失败了

没失败啊,成功了这

接下来怎么办?

如果是最新的lsp-mode 重启一下项目应该就可以了

感觉不对

你的lspmode是最新版本的吗 执行 lsp-install-server 看看有volar-api吗

没有诶 我也不知道怎么回事

我用的是doom-emacs 它是用的straight 所以可以使用github上的最新版

我用自己的配置,我该怎么办 :joy:

那你去看看 lsp-volar 吧 不过我没上melpa啥的,所以需要本地安装之类的。。

卧槽,重新装下 lsp 就好了,一脸懵逼

那应该就是更新到最新了

另外问下,为什么这种情况下emacs这边的lsp跟vscode的不一样

如果你是写 vue2 + composition-api 或者 vue3 的话,现在都推荐使用 volar了,vscode中也需要安装 volar,而不是用以前的 vetur ,如果是旧的vue2项目,那需要还是用 vls 。

两边其实是一样的,只是 vscode 是一整个插件,而emacs这边用只是它插件的服务,前端用的是 lsp-mode.

又出问题了,新建了一个项目,但是 volar-api 装载不上去

原来这个插件是你做的,大佬你好 :slightly_smiling_face:

这只是你重新安装了,你不需要每次都重新安装,看你的code action 都显示了,已经能正常工作了吧