Estoy usando el modo hl como modo menor para hábil. ¿Cómo hago que la línea resaltada cambie de color (por ejemplo, a gris) cuando la ventana hábil no es la ventana actual, y luego vuelvo al color de resaltado predeterminado cuando la ventana hábil se convierte nuevamente en la ventana actual?
window
highlighting
focus
Shankar
fuente
fuente
Respuestas:
He implementado esto para
hl-line-mode
usar elbuffer-list-update-hook
. Aquí está el código:Lo que está haciendo este código:
hl-line-inactive
para usar en ventanas inactivas. Puede usarM-x customize-face
para modificar los atributos de esta cara a su gusto.buffer-list-update-hook
ese llamahl-line-update-face
para todas las ventanas visibles.Vieja respuesta
El código anterior (que estoy usando en mi propio
init
archivo) es mucho más simple que lo que publiqué originalmente. Gracias @Drew por la sugerencia de usarwalk-windows
. También leí más sobre la reasignación de rostros (consulte Reasignación de rostros en el Manual de Emacs Lisp) y me di cuenta de que podía eliminar gran parte del código.Para la posteridad, esto es lo que publiqué originalmente:
fuente
walk-windows
, que puede usar para iterar sobre las ventanas de marcos visibles, etc. (Y +1 parabuffer-list-update-hook
, que recibe la llamadaselect-window
).global-hl-line-mode
. Parece queglobal-hl-line-mode
no se cargahl-line-mode
para cada búfer. Utiliza una superposición en lugar de usar lahl-line
cara. He estado jugando con eso por un tiempo sin suerte. ¿Alguna sugerencia? ¿Debo abrir una pregunta por separado?