Tide: JavaScript智能补全插件

标准的项目 不仅仅要包含代码

还应该包含配置的el文件 以便 emacs -Q 的时候加载

我用 Emacs -Q 只加载 tide 和 company, 一点都不卡, 感觉是我个人的配置有问题.

找到卡的原因了, 卡顿是因为 js2-mode 这个模式, 禁用这个模式以后, 再也不卡了.

复现了一下。

image

{}里面输入,就会报Error from the Language Server: Request textDocument/completion failed with message: No content available. (Internal Error) [4 times]的错

LSP 服务器端的错误, 如果你不想每打一个字就报错, 可以试一下下面的代码:

(setq lsp--silent-errors
      '(
        -32800                          ;default error in lsp-mode
        -32603                          ;error that type in {...}
        ))

方法就是, 用 (setq lsp-print-io t) 打开调试信息, 然后 lsp 报错的时候, 会把服务器返回的错误代码打印出来, 然后加到 lsp–silent-errors 列表中, 就可以在给 lsp 后端报 bug 的时候不被这些错误打扰.

1 个赞

emm, 我在js2-mode下用tide貌似一点不卡诶。

我的快卡死了, 我把所有的 js2-mode 都删除了.

用了 lsp–silent-errors 不会乱报错了撒? 确认一下, 随意翻了一下代码, 不知道这个技巧有没有用.

emm,我之前好像也见过别人说tide用起来很卡的。你在 typescript-mode下也卡吗?

可以用的,确实会ignore掉error

js2-mode 删除了, 我的 tide 和 lsp-typescript 都不卡, 我很少写 typescript 代码. :wink:

早上还怀疑是 typescript 的 bug, 最后定位到 js2-mode 的锅了

感觉大神可能js2-mode-hook里加了一些奇怪的东西导致很卡。

因为doom-emacs默认javascript就是用的js2-modetide,应该两者是没有问题的,我也用着没问题。可以参考下doom-emacs的内容。

是lsp-mode問題的話發PR,類似 Use generic sequence functions to accommodate future json-array-type-> 'vector change by MaskRay · Pull Request #418 · emacs-lsp/lsp-mode · GitHub (讓更多部分可以適應 (setq json-array-type 'vector))這樣,就能用 Pull requests · emacs-lsp/lsp-mode · GitHub 了(用Emacs 27 native JSON parser)

(setq lsp-message-project-root-warning t) ;avoid popup warning buffer if lsp can’t found root directory (such as edit simple *.py file)

參考https://github.com/emacs-lsp/lsp-mode/issues/293#issuecomment-423421860(project root detection logic)

求大大實現這個~今天撞到lsp-python make-traversal不好了

其實就應該統一用(project-project-root)或者(project-roots (project-current))。現在各lsp-*這堆make-traversal讓我很難受

一直在用这个给js补全, 之前写typescript的时候用到了, 后来typescript的文档里面说tsc本身就支持js文件, vscode也是拿tsserver来补全, 就用上了.

如果只写在浏览器里跑的javascript,不想装nodejs,用什么最好?(好像没有?)

感觉如果你是只在浏览器里跑的,估计还是html里面一堆scripts吧,那任何langserver都没啥卵用