Ich benutze den HL-Modus als Nebenmodus für Geschicklichkeit. Wie ändere ich die Farbe der hervorgehobenen Linie (z. B. in Grau), wenn das geschickte Fenster nicht das aktuelle Fenster ist, und kehre dann zur Standard-Hervorhebungsfarbe zurück, wenn das geschickte Fenster wieder das aktuelle Fenster ist?
window
highlighting
focus
Shankar
quelle
quelle
Antworten:
Ich habe dies für die
hl-line-mode
Verwendung der implementiertbuffer-list-update-hook
. Hier ist der Code:Was dieser Code macht:
hl-line-inactive
, das in inaktiven Fenstern verwendet werden soll. Mit können SieM-x customize-face
die Attribute dieses Gesichts nach Ihrem Geschmack ändern.buffer-list-update-hook
, derhl-line-update-face
alle sichtbaren Fenster aufruft .Alte Antwort
Der obige Code (den ich in meiner eigenen
init
Datei verwende) ist viel einfacher als der, den ich ursprünglich gepostet habe. Vielen Dank an @Drew für den Vorschlagwalk-windows
. Ich habe auch mehr über Face Remapping gelesen (siehe Face Remapping im Emacs Lisp-Handbuch) und festgestellt, dass ich einen Großteil des Codes entfernen kann.Für die Nachwelt ist hier, was ich ursprünglich gepostet habe:
quelle
walk-windows
, mit der Sie über die Fenster von sichtbaren Frames usw. iterieren können (und +1 fürbuffer-list-update-hook
, die von aufgerufen wirdselect-window
.)global-hl-line-mode
. Es scheint, dassglobal-hl-line-mode
nichthl-line-mode
für jeden Puffer geladen wird . Es wird eine Überlagerung verwendet, anstatt dashl-line
Gesicht zu verwenden. Ich habe eine Weile ohne Glück damit herumgespielt. Irgendwelche Vorschläge? Sollte ich eine separate Frage öffnen?