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-modeusar elbuffer-list-update-hook. Aquí está el código:Lo que está haciendo este código:
hl-line-inactivepara usar en ventanas inactivas. Puede usarM-x customize-facepara modificar los atributos de esta cara a su gusto.buffer-list-update-hookese llamahl-line-update-facepara todas las ventanas visibles.Vieja respuesta
El código anterior (que estoy usando en mi propio
initarchivo) 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-modeno se cargahl-line-modepara cada búfer. Utiliza una superposición en lugar de usar lahl-linecara. He estado jugando con eso por un tiempo sin suerte. ¿Alguna sugerencia? ¿Debo abrir una pregunta por separado?