minibuffer-setup-hook
se usa solo cuando el minibúfer está configurado, es decir, activado, no cuando está desactivado.
minibuffer-exit-hook
surte efecto cuando se sale del minibúfer. También existe minibuffer-inactive-mode-hook
.
Pero aunque esos inician el cambio de color (como se muestra al agregar (debug)
al principio de la función de enlace, y luego pasar por el depurador con d
), parece que kill-local-variables
elimina el color agregado en algún momento. No tengo tiempo ahora para verificar más, pero tal vez puedas, o tal vez alguien más tenga una solución rápida. Perdón por proporcionar solo información incompleta.
Tengo que irme ahora, pero rápidamente, supongo que tal vez no necesites jugar con ganchos en absoluto, y puedes simplemente reasignar la cara para todos los buffers con nombres coincidentes \` \*Minibuf-[0-9]+\*\'
.
FWIW, uso un marco de minibúfer separado , y lo pongo minibuffer-exit-hook
para colorear el fondo del marco:
(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)))))))