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

Emacs 26 flymake: customizing the mode line format

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

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

我查看了 flymake.elflymake--mode-line-format defun,似乎这个字符串不可配置,或者根本无法更改。

有人对此有什么想法吗?

您需要重新定义 flymake--mode-line-format 函数。它可能应该更可定制,但事实并非如此。可能最少干扰的方法是在该函数上定义 :filter-return advice 来转换输出。

(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)