Emacs 26 Flymake:自定义模式行格式

Mad*_*ist 1 emacs flymake defadvice

我正在考虑在 Emacs 26 重写后从 Flycheck 切换回 Flymake。Flymake 让我困扰的一件事是它在模式线上占用了多少空间。它有一个字符串Flymake加上结果。这似乎是一件愚蠢的事情,但这只是 80 字符帧上模式行的 10%,只是为了一个名称!我想在模式行上看到很多重要信息,因此我尝试删除对我没有帮助的内容 - 我知道缓冲区中启用了哪些次要模式等,因为我配置了它们!就我个人而言,我宁愿根本不看到名称,而只看到结果,或者最多看到FFM

我可以用来diminish完全摆脱模式行信息,但我当然不希望这样:我希望能够看到缓冲区的状态。

我查看了flymake.eldefun flymake--mode-line-format,发现这个字符串似乎不是可配置的,或者根本不容易更改。

有人对此有什么想法吗?

jpk*_*tta 5

您需要重新定义flymake--mode-line-format函数。它可能应该更加可定制,但事实并非如此。可能最不具有侵入性的方法是定义有关该函数的:filter-return建议以转换输出。

(defun flymake--transform-mode-line-format (ret)
  "Change the output of `flymake--mode-line-format'."
  (setf (seq-elt (car ret) 1) " FM")
  ret)
(advice-add #'flymake--mode-line-format
            :filter-return #'flymake--transform-mode-line-format)
Run Code Online (Sandbox Code Playgroud)