精简 mode-line minor-mode-alist

在 minor mode 多的时候,mode-line 基本没法看了,论坛里有些帖子讨论如何简化,感觉都有些复杂了, 这里提供一个简单的方案,不需要额外安装第三方包,效果是 minor 部分只显示 flycheck:

(let ((my/minor-mode-alist '((flycheck-mode flycheck-mode-line))))
  (setq mode-line-modes
        (mapcar (lambda (elem)
                  (pcase elem
                    (`(:propertize (,_ minor-mode-alist . ,_) . ,_)
                     `(:propertize ("" ,my/minor-mode-alist)
			                       mouse-face mode-line-highlight
			                       local-map ,mode-line-minor-mode-keymap)
                     )
                    (_ elem)))
                mode-line-modes)
        ))

参考:

用diminish包? 我用use-package,所以还更简单,加个:diminish就成了

diminish 相当于黑名单方式,我上面的方式是白名单。

2 个赞