Ich bin mir nicht sicher, ob es möglich ist. Es scheint, dass die Moduszeile nur aktualisiert wird, wenn ihr Fenster ausgewählt ist (Testen mit Aufrufen vonmessage
dies zu bestätigen). Und der Code, der dies tut, ist C-Code, nicht Lisp.
Sie können einen bedingten Ausdruck in der Definition von verwenden mode-line-buffer-identification
, damit das zu verwendende Gesicht dynamisch berechnet wird. Ich kenne jedoch keine Funktion oder Variable, mit der Sie testen können, ob ein bestimmtes Fenster eine inaktive Moduszeile hat.
Sie können nicht verwenden selected-window
zum Beispiel , da dies immer auf das Fenster mit der aktiven Moduszeile zeigt.
Hier ist ein Beispiel für eine dynamische Aktualisierung, die auf dem Puffernamen basiert. Es ist nicht das, was Sie wollen, aber es zeigt Ihnen zumindest, was Sie tun können. Wenn Sie eine Möglichkeit finden, zu testen, ob das zu aktualisierende Fenster ausgewählt ist, können Sie diese durch den Puffernamen-Test ersetzen. (Mein Eindruck ist jedoch, dass nur die ausgewählte Moduszeile des ausgewählten Fensters aktualisiert wird.)
(setq-default mode-line-buffer-identification
'(:eval
(list (propertize "%b"
'face (if ;; NOPE (eq (selected-window) (get-buffer-window (current-buffer)))
(eq (current-buffer) (get-buffer "some-buffer"))
'mode-line-buffer-id
'some-other-face)
'help-echo "Buffer name mouse-1: Previous buffer\nmouse-3: Next buffer"
'mouse-face 'mode-line-highlight
'local-map mode-line-buffer-identification-keymap))))
Eine andere Sache, die Sie versuchen könnten, ist die Beratung der Funktion format-mode-line
. Es unterscheidet anscheinend ein Fenster mit einer aktiven Moduszeile von einem Fenster mit einer inaktiven Moduszeile. Aber es ist auch in C codiert, daher bezweifle ich, dass Sie mit der Beratung sehr weit kommen werden. Es testet die C-VariableQmode_line_inactive
FWIW.
Ich würde vorschlagen, diese Frage auf einer der Emacs-Mailinglisten zu stellen (z. B. help-gnu-emacs@gnu.org
), wenn Sie hier keine zufriedenstellende Antwort erhalten. Es scheint gut zu sein, das tun zu können, was Sie verlangen. Auf jeden Fall +1 für die Frage.