minibuffer-setup-hook
используется только когда минибуфер настроен, т.е. активирован, а не когда он деактивирован.
minibuffer-exit-hook
вступает в силу при выходе из минибуфера. Также есть minibuffer-inactive-mode-hook
.
Но хотя они действительно инициируют изменение цвета (как показано добавлением (debug)
в начале функции ловушки, а затем пошаговым переходом через отладчик d
), кажется, что kill-local-variables
удаляет добавленный цвет в некоторой точке. У меня нет времени, чтобы проверить дальше, но, возможно, вы можете, или, может быть, у кого-то еще есть быстрое решение. Извините за предоставление только неполной информации.
Мне нужно идти сейчас - но быстро, я предполагаю, что, возможно, вам вообще не нужно возиться с крючками, и вы можете просто сделать перераспределение лица для всех буферов с совпадающими именами \` \*Minibuf-[0-9]+\*\'
.
Кстати, я использую отдельную рамку минибуфера и надеваю это, чтобы закрасить minibuffer-exit-hook
фон рамки:
(defun 1on1-color-minibuffer-frame-on-exit ()
"Change background of minibuffer frame to reflect the minibuffer depth.
Use this when reducing the minibuffer recursion depth."
(when 1on1-minibuffer-frame
(save-window-excursion
(select-frame 1on1-minibuffer-frame)
(cond ((= (minibuffer-depth) 2)
(set-background-color 1on1-active-minibuffer-frame-background))
((< (minibuffer-depth) 2)
(set-background-color 1on1-inactive-minibuffer-frame-background))
(t
(set-background-color (hexrgb-increment-hue ; Change bg hue slightly.
(frame-parameter nil 'background-color)
1on1-color-minibuffer-frame-on-exit-increment)))))))