¿Cómo configuro los colores marginales para el color de fondo?

12

Estoy usando un modo sin distracciones que usa flecos gigantes para centrar el búfer llamado bzg-big-fringe-mode.

El problema es que estas franjas a menudo tienen un color diferente al del fondo, lo que da un efecto visual feo (vea la imagen al final).

No tengo ningún problema para solucionar esto manualmente, configurando el color marginal al color de fondo, de esta manera:

(set-face-attribute 'fringe nil :background "#3F3F3F" :foreground "#3F3F3F")

El problema es que, al cambiar los temas, los colores marginales permanecen grises, aunque eso no tiene sentido para el nuevo tema.

¿Hay alguna manera de establecer programáticamente la franja en el color de fondo?

Supongo que necesito dos cosas:

  1. La capacidad de establecer el color de fondo marginal al color de fondo predeterminado.
  2. Una función que está enganchada a los temas cambiantes y que hace 1. arriba.

Creo que debería poder hacer 2) a pesar de que no tengo habilidades de emacs, pero ¿cómo hago 1)?

¿O es una mala idea por alguna razón? Si es así, ¿cómo sería un mejor enfoque?

ingrese la descripción de la imagen aquí

El gato no divertido
fuente

Respuestas:

11

La forma oficial sería personalizar el tema en cuestión para que la cara marginal se vea igual que la cara de fondo. Una especificación de cara a lo largo de las líneas de (fringe :inherit default)debería hacer el truco.

Alternativamente, puede modificarlo sobre la marcha utilizando un fragmento de código:

(defun my-tone-down-fringes ()
  (set-face-attribute 'fringe nil
                      :foreground (face-foreground 'default)
                      :background (face-background 'default)))

El único problema que quedaría sería aplicarlo en cada cambio de tema. No puedo encontrar ningún gancho que parezca que podría hacer el trabajo, lo cual es un poco triste, defadvicetampoco parece funcionar correctamente. Al menos no en Emacs 24.4

wasamasa
fuente
Gracias. Esperaré hasta el lunes para aceptar en caso de que alguien tenga una solución.
The Unfun Cat
1
¿Hay alguna razón para no usar face-backgroundy face-foregrounden este fragmento de código?
Constantine
No hay, editado.
wasamasa
4

Puede establecer el color de franja en nulo, en cuyo caso no necesita preocuparse por ningún cambio de tema. Tengo lo siguiente en mi configuración:

(set-face-attribute 'fringe nil :background nil)

Y el flequillo simplemente desaparece ... :)

pandita
fuente
0

De alguna manera 'fringedejó de funcionar para mí, y ahora esto lo hace:

(set-face-attribute 'linum nil :background "gray19")
yPhil
fuente