Emacs 在行末实时显示错误信息
文章目录
VSCode 中 Error Lens (可直译为“错误透镜”或“错误放大镜”)插件可以直接在行末展示错误信息,而不需要把鼠标移动到出错的位置,这是个非常有用的功能。
在 How do improve code diagnostics in eglot? : r/emacs 中,提到了 flymake 的一个新选项可以实现类似效果
(setq flymake-show-diagnostics-at-end-of-line t)
需要注意的是这个选项是在 Flymake 1.3.7 中新增的,会在 Emacs 30 中出现,之前版本的 Emacs 需要单独去 elpa 下载。
Eglot 默认就使用 flymake 作为 diagnostic 展示前端,因此不需要额外配置。对于 lsp-bridge 来说,可以借助 flymake-bridge 插件实现:
(require 'flymake-bridge)
(add-hook 'lsp-bridge-mode-hook #'flymake-bridge-setup)
(setq lsp-bridge-diagnostic-enable-overlays nil)
对于写 Zig 的朋友,可以移步:提升 Zig 编码体验技巧:zls 配置保存时自动检查代码。
控制 flymake 启动
Flymake 的语法检查是“即时的”(on-the-fly)。可以通过下面的配置达到仅在保存时检查:
(use-package flymake
:custom ((flymake-start-on-flymake-mode nil)
(flymake-no-changes-timeout nil)
(flymake-start-on-save-buffer t)))
这样可以最大程度的避免诊断信息带来的干扰。更多启动方式,可以参考:
收听方式
反馈
- 对节目有想法或发现内容错误?欢迎来信交流️