¿Puedo cambiar el color de fondo del minibúfer inactivo?


9

Minibúfer inactivo

Lo probé con la siguiente configuración:

(add-hook 'minibuffer-setup-hook
      (lambda ()
        (make-local-variable 'face-remapping-alist)
        (add-to-list 'face-remapping-alist '(default (:background "green")))))

(set-face-background 'minibuffer-prompt "blue")

pero solo afectaron al minibúfer activo:

Minibúfer activo


1
Creo que eso también se llama área de eco.
Malabarba

1
@Malabarba: solo se llama área de eco (cuando el minibúfer está inactivo).
Dibujó

Respuestas:


6

minibuffer-setup-hook se usa solo cuando el minibúfer está configurado, es decir, activado, no cuando está desactivado.

minibuffer-exit-hooksurte 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-variableselimina 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-hookpara 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)))))))

Dado su análisis, ¿supongo que hacer face-remapping-alist permanente funcionaría? Para las comillas inversas en el marcado de código, vea esta respuesta .
Gilles 'SO- deja de ser malvado'

El enlace que proporcionó da como resultado un 404.
Compro Prasad

@ComproPrasad: Corregido. Gracias.
Dibujó el

3

Puedes probar:

(dolist (buf '(" *Echo Area 0*" " *Echo Area 1*"))
  (with-current-buffer (get-buffer buf)
    (make-local-variable 'face-remapping-alist)
    (add-to-list 'face-remapping-alist '(default (:background "green")))))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.