minibuffer-setup-hook
використовується лише тоді, коли мінібуфер встановлений, тобто активований, а не тоді, коли він відключений.
minibuffer-exit-hook
набуває чинності при виході мінібуфера. Є також minibuffer-inactive-mode-hook
.
Але хоча вони ініціюють зміну кольору (як показано, додавши (debug)
на початку функції гачка, а потім перейшовши через налагоджувач з d
), здається, що kill-local-variables
видаляє доданий колір у якийсь момент. Зараз у мене немає часу, щоб перевірити далі, але, можливо, ви можете, чи, можливо, хтось інший має швидке рішення. Вибачте за надання лише неповної інформації.
Треба йти зараз - але швидко, я здогадуюсь, що, можливо, вам зовсім не потрібно возитися з гачками, і ви можете просто зробити перезапис обличчя для всіх буферів, які відповідають іменам \` \*Minibuf-[0-9]+\*\'
.
FWIW, я використовую окремий кадр мінібуфера , і я надягаю це, 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)))))))