您可以使用post-command-hook,然后只评估所需的内容并设置模式线的脸部颜色。我这样做是在3种颜色之间切换,具体取决于我所处的邪恶模式状态以及缓冲区是否有未保存的更改。
(lexical-let ((default-color (cons (face-background 'mode-line)
(face-foreground 'mode-line))))
(add-hook 'post-command-hook
(lambda ()
(let ((color (cond ((minibufferp) default-color)
((evil-insert-state-p) '("#e80000" . "#ffffff"))
((evil-emacs-state-p) '("#af00d7" . "#ffffff"))
((buffer-modified-p) '("#006fa0" . "#ffffff"))
(t default-color))))
(set-face-background 'mode-line (car color))
(set-face-foreground 'mode-line (cdr color))))))
Run Code Online (Sandbox Code Playgroud)