Gibt es ein Emacs-Gesicht, mit dem die Farbe inaktiver Puffernamen gesteuert werden kann?
Normalerweise sind beim Einstellen des Gesichts mode-line-buffer-id
alle Fenster betroffen.
In diesem Beispiel mode-line
hat der einen hellen Hintergrund, daher habe ich mode-line-buffer-id
einen viel dunkleren eingestellt #333
.
Die Idee ist, die Farbkombination für for umzukehren mode-line-inactive
.
Während dies für den größten Teil des Textes in der Moduszeile inaktiver Fenster möglich ist, werden die Puffernamen unlesbar, da sie immer noch vom mode-line-buffer-id
Gesicht gesteuert werden .
Ich glaube, dass die Einstellung mode-line-inactive
auf einen helleren Hintergrund das Problem umgehen würde, aber das ist nicht das Ergebnis, das ich erreichen möchte.
Antworten:
Ich bin mir nicht sicher, ob Sie noch nach einer Antwort suchen oder nicht, aber dies war das einzige Ergebnis, das ich bei Google erhalten habe, als ich versucht habe, dies selbst zu tun.
Wie auch immer, aus welchem Grund auch immer Emacs dies nennt
distant-foreground
, das einzige, was Sie wirklich tun müssen, ist:distant-foreground $colour-of-choice
, Ihrem Gesicht etwas hinzuzufügen .quelle
Hier ist eine Variation einer anderen Antwort , die helfen könnte. In diesem Beispiel wird
mode-line-buffer-id
in inaktiven Puffern erneut grün angezeigt .Update: Wie in den Kommentaren erwähnt, wird das Problem dadurch nicht vollständig gelöst. Wenn mehrere sichtbare Fenster denselben Puffer besuchen, haben alle dasselbe Gesicht.
quelle
Dies ist eine Variation der anderen Antworten, wobei diese zwischen aktiven und inaktiven Fenstern unterscheidet. Wenn ein Puffer in mehr als einem Fenster sichtbar ist, hat nur das aktive Fenster
ml-active-window-face
und die anderen Fenster alleml-inactive-window-face
.quelle
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 von
message
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.)
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.
[email protected]
), 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.quelle