lsp-mode 目前似乎成熟了?

我在用ccls,牛人

lsp-mode 的python 还是可以感觉到明显卡顿,特别是使用numpy这个包 有一定几率能把emacs卡死。

我最近也在配置 lsp,碰到个问题,也参考了你这个配置,但是还是没有解决,所以想问一下。

我希望使用 lsp ui + flycheck,目前参考你的 flycheck 配置,flycheck 在我修改配置时,emacs-lisp 的 buffer 中是可以使用的,此时是没有emacs-lisp 的 lsp server。

而我在 Golang 中,可以看到 lsp lang server 正常启动,company 和 ui 也都是正常,但是 flycheck 没有渲染。

部分配置如下:

; flycheck
:hook (after-init . global-flycheck-mode)

; lsp
 (setq lsp-prefer-flymake nil)

; lsp ui
 (setq lsp-ui-flycheck-enable t)

C-h m 可以看到 minor mode 有 Flycheck

flycheck-verify-setup 可以看到 go 相关的 enable 都是 yes flycheck-list-error 是空的,但是我可以确定有 error 和 warning

还有一个点是 doom-modeline 在 flycheck 可用时,右下角有图标提示,但是 go mode 里没有这个图标。

内容有可能有点多,还希望能指点一下,我应该如何进行下一步排查?

如果 flycheck 不起作用,doom-modeline 当然不会显示状态。

从你的描述中很难判定是什么问题。在其他语言比如 Python 使用 lsp+flycheck 是否起作用?如果都不行,就是 lsp-ui 配置有问题;如果起作用就是跟golang相关部分有问题。

我居然没试一下其它语言,失误了。。。

不过试了一下,Python 没有问题,看来还是 Golang 的哪配置有问题,谢谢了,我再查一下。。。

不过话说有什么方式能够看到更多的 log 吗?

我试过 --debug-init 好像没看到有用的 log

查看 *lsp-log*,检查lsp-ui是否 enable:flycheck-verify-setup RET lsp-ui`

关掉side line,关掉ui doc,关掉symbol highlighting,只用补全,flycheck和eldoc,感觉还可以。lsp-mode默认会开启很多花里胡哨的东西。

(setq lsp-ui-flycheck-enable t
      lsp-ui-doc-enable nil
      lsp-ui-imenu-enable nil
      lsp-ui-sideline-enable nil
      lsp-enable-symbol-highlighting nil)

这个配置似乎是不起作用的,得用 (setq lsp-prefer-flymake nil)

另外,关掉 ui-doc 可以试试lsp-describe-thing-at-point

The following checker is explicitly selected for this buffer:

  lsp-ui
    - major mode: `go-mode' supported
    - may enable: yes
    - predicate:  t

感觉已经 enable 了,但是没有渲染,而且 flycheck list error 也是空的

lsp-log 里就看到这个,感觉不知道是否相关?

Command "bingo" is present on the path.
Command "go-langserver" is not present on the path.

我用的是 bingo,不知道为什么还会找 go-langserver?

bingo 都不在 $PATH 里,Emacs 找不到啊

Bingo 在啊,是 go-langserver 不在吧?

我先研究一下把 go langserver 的依赖去了

对,打错了,是go-langserver不在。如果 bingo 在应该就没问题,看看lsp是否启动成功了。

居然是 lang server 的问题,bingo 已经不维护了,试着用了一下官方的 gopls,flycheck 居然好了 :exploding_head:

Go 的 lang server 都用第三个了,希望这回进官方库了,能长久

1 个赞

LSP下,eldoc用着用着就不显示了是什么鬼?有人遇到过吗?没error,用得好好的,就突然傻了。

是不是lsp-ui接管doc了

谢谢提示,我待会看看。但我的LSP sideline和doc都是disabled的。

问一下,大家,lsp-find-definition进行跳转后,都是如何回跳的啊?

lsp-ui-peek-jump-backward

如果是evil用户的话,C-t回跳