Używam trybu hl jako mniejszego trybu dla zręczności. Jak zmienić kolor podświetlonej linii (np. Na szary), gdy okno deft nie jest bieżącym oknem, a następnie powrócić do domyślnego koloru podświetlenia, gdy okno deft ponownie staje się bieżącym oknem?
window
highlighting
focus
Shankar
źródło
źródło
Odpowiedzi:
Zaimplementowałem to do
hl-line-mode
używaniabuffer-list-update-hook
. Oto kod:Co robi ten kod:
hl-line-inactive
do użycia w nieaktywnych oknach. Możesz użyćM-x customize-face
do zmodyfikowania atrybutów tej twarzy według własnego gustu.buffer-list-update-hook
tych połączeńhl-line-update-face
dla wszystkich widocznych okien.Stara odpowiedź
Powyższy kod (którego używam we własnym
init
pliku) jest znacznie prostszy niż ten, który pierwotnie opublikowałem. Dzięki @Drew za sugestię użyciawalk-windows
. Przeczytałem również więcej o remapowaniu twarzy (zobacz Remapowanie twarzy w Podręczniku Emacs Lisp) i zdałem sobie sprawę, że mogę usunąć dużo kodu.Dla potomnych oto, co pierwotnie opublikowałem:
źródło
walk-windows
, której można użyć do iteracji po oknach widocznych ram itp. (I +1 dlabuffer-list-update-hook
, który zostaje wywołanyselect-window
).global-hl-line-mode
. Wygląda na to, żeglobal-hl-line-mode
nie ładuje sięhl-line-mode
dla każdego bufora. Używa nakładki zamiasthl-line
twarzy. Przez jakiś czas majstrowałem przy tym bez powodzenia. Jakieś sugestie? Czy powinienem otworzyć osobne pytanie?