lsp-mode flymake diagnostics 信息不在sideline里面显示

求助大神!emacs27.2,lsp-mode 7.0.1,default 配置,lsp-ui 7.0.1,flymake作为backend,能够检测出语法错误,并且高亮出错代码位置,但是光标移动到代码上并不能自动在sideline显示诊断信息。使用flymake-goto-next-error 或者 show-diagnostics-buffer 能正常显示诊断信息。不知道哪个地方没配置对,其实也没配置任何东西。 :pray::pray:

补充一下,是在js-mode下面。用的推荐的typescript-language-server

头像好评~ 你看看这个链接(关于lsp的一些feature如何关闭和打开)有帮助么?

多谢回复!

我打开了所有能打开的,还是不显示… 举个栗子, 错误是有提示的,比如图中的function给下划线标出来了。但是光标移动上去之后,sideline不显示任何东西。modeline里面显示的内容是通过“flymake-goto-next-error" 显示出来的。

这是我配置。以前我记得用flycheck的时候好好的。

(use-package lsp-mode
  :ensure t
  :defer t
  :commands (lsp lsp-deferred)
  :hook
  (js-mode . lsp-deferred)
  :init
  (setq lsp-session-file "~/.emacs.d/.local/etc/lsp-session")
  (setq lsp-auto-guess-root t)
  (setq lsp-idle-delay 1.0)
  (setq lsp-enable-symbol-highlighting nil))
;;  (setq lsp-log-io t)) ;; logging gopls

(use-package lsp-ui
  :ensure t
  :defer t
  :command lsp-ui-mode)

找到原因了, 应该是lsp-ui 不支持 built-in flymake ,换成flycheck 后就能显示了。下面是我的配置,仅供朋友们参考。

(use-package lsp-ui
  :ensure t
  :defer t
  :commands lsp-ui-mode
  :config
  (setq lsp-ui-sideline-diagnostic-max-lines 10)  ;; 默认最大行数是1,长的信息会显示不全。
  (setq lsp-ui-sideline-delay 0.5))
2 个赞