如何让Emacs的Flymake诊断缓冲区仅在存在错误时显示?
实现Flymake仅在有错误时弹出诊断缓冲区
你可以通过自定义一个包装函数,先检查当前缓冲区是否存在Flymake诊断信息,再决定是否调用原函数弹出诊断列表。
核心实现代码
(defun my-flymake-show-buffer-diagnostics () "仅当当前缓冲区存在Flymake诊断时,弹出错误列表缓冲区" (interactive) ;; 获取当前缓冲区的所有Flymake诊断(错误、警告等) (let ((diagnostics (flymake-diagnostics (current-buffer)))) ;; 仅当诊断列表非空时,调用原函数弹出缓冲区 (unless (null diagnostics) (flymake-show-buffer-diagnostics))))
使用方式
- 将上述代码添加到你的Emacs配置文件(比如
~/.emacs.d/init.el)中 - 绑定你习惯的快捷键,替换原
flymake-show-buffer-diagnostics的绑定,例如:
;; 替换默认的C-c ! l快捷键绑定 (global-set-key (kbd "C-c ! l") 'my-flymake-show-buffer-diagnostics)
原理说明
flymake-diagnostics函数会返回当前缓冲区所有Flymake诊断对象的列表,没有诊断时返回空列表- 通过判断这个列表是否非空,就能控制是否触发诊断缓冲区的弹出
内容的提问来源于stack exchange,提问作者Dummy
相关产品推荐
相关产品推荐

