正如mbork所说,您可以使用delight.el来有选择地修改或禁用模式行中的次要(实际上是主要)模式文本。
优点之一是它可以解决eval-after-load
(在大多数情况下,您需要使用diminish.el进行手动编写),从而使配置更整洁。您仍然需要相同的信息-模式的名称以及实现该模式的库(如果询问有关模式的信息,Emacs会告诉您)-但您可以将它们全部包装为一个形式:
(require 'delight)
(delight '((some-mode nil "some-library")
(some-other-mode nil "some-other-library")))
(或点击上面的链接获取一些实际用法示例。)
我建议您采用这种方法,因为即使您不希望大多数次要模式的文本变浅,也很有可能会发现其中的一些有用(并且您仍然可以将它们修改得更短)。
如果您确实想消除所有次要模式的浅色文字(同样,我不推荐这样做),则可以修改该mode-line-modes
变量。模式行变量在不久前进行了更改,因此您可能要使用M-x find-variable RET mode-line-modes RET
然后手动调整默认定义,并删除有关的部分minor-modes-alist
。
当然,那么您需要对其进行维护,因为它不是那么快,因此您可能更希望在现有值内替换该minor-mode-alist
符号。以下内容是特定于实现的,但肯定比整体设置更好,您可以打开和关闭它。mode-line-modes
(define-minor-mode minor-mode-blackout-mode
"Hides minor modes from the mode line."
t)
(catch 'done
(mapc (lambda (x)
(when (and (consp x)
(equal (cadr x) '("" minor-mode-alist)))
(let ((original (copy-sequence x)))
(setcar x 'minor-mode-blackout-mode)
(setcdr x (list "" original)))
(throw 'done t)))
mode-line-modes))
(global-set-key (kbd "C-c m") 'minor-mode-blackout-mode)