Я использую hl-mode как второстепенный режим для ловкости. Как сделать так, чтобы выделенная линия изменила цвет (например, на серый), когда окно deft не является текущим окном, и затем вернулась к цвету выделения по умолчанию, когда окно deft снова становится текущим окном?
window
highlighting
focus
Шанкар
источник
источник
Ответы:
Я реализовал это для
hl-line-mode
использованияbuffer-list-update-hook
. Вот код:Что делает этот код:
hl-line-inactive
которое будет использоваться в неактивных окнах. Вы можете использовать,M-x customize-face
чтобы изменить атрибуты этого лица по своему вкусу.buffer-list-update-hook
этому вызовуhl-line-update-face
для всех видимых окон.Старый ответ
Приведенный выше код (который я использую в своем собственном
init
файле) намного проще, чем тот, который я первоначально разместил. Спасибо @Drew за предложение использоватьwalk-windows
. Я также прочитал больше о перераспределении лиц (см. Face Remapping в Руководстве по Emacs Lisp) и понял, что могу удалить большую часть кода.Для потомков вот что я первоначально отправил:
источник
walk-windows
, которую вы можете использовать для перебора окон видимых фреймов и т. Д. (И +1 дляbuffer-list-update-hook
, который вызываетсяselect-window
.)global-hl-line-mode
. Кажется, чтоglobal-hl-line-mode
не загружаетсяhl-line-mode
для каждого буфера. Он использует наложение вместо использованияhl-line
лица. Я возился с этим какое-то время без удачи. Какие-либо предложения? Должен ли я открыть отдельный вопрос?