Emacs 在行末实时显示错误信息

发布: 2024-07-05   上次更新: 2024-07-06   标签: lsp flymake

文章目录

VSCode 中 Error Lens (可直译为“错误透镜”或“错误放大镜”)插件可以直接在行末展示错误信息,而不需要把鼠标移动到出错的位置,这是个非常有用的功能。

How do improve code diagnostics in eglot? : r/emacs 中,提到了 flymake 的一个新选项可以实现类似效果

1
(setq flymake-show-diagnostics-at-end-of-line t)

需要注意的是这个选项是在 Flymake 1.3.7 中新增的,会在 Emacs 30 中出现,之前版本的 Emacs 需要单独去 elpa 下载。

Eglot 默认就使用 flymake 作为 diagnostic 展示前端,因此不需要额外配置。对于 lsp-bridge 来说,可以借助 flymake-bridge 插件实现:

1
2
3
(require 'flymake-bridge)
(add-hook 'lsp-bridge-mode-hook #'flymake-bridge-setup)
(setq lsp-bridge-diagnostic-enable-overlays nil)

Eglot 使用 flymake 实时展示错误信息

Lsp-bridge 使用 flymake 实时展示错误信息

对于写 Zig 的朋友,可以移步:提升 Zig 编码体验技巧:zls 配置保存时自动检查代码

控制 flymake 启动

Flymake 的语法检查是“即时的”(on-the-fly)。可以通过下面的配置达到仅在保存时检查:

1
2
3
4
(use-package flymake
  :custom ((flymake-start-on-flymake-mode nil)
           (flymake-no-changes-timeout nil)
           (flymake-start-on-save-buffer t)))

这样可以最大程度的避免诊断信息带来的干扰。更多启动方式,可以参考:



收听方式

反馈