Comment puis-je définir les couleurs des franges sur la couleur d'arrière-plan?

12

J'utilise un mode sans distraction qui utilise des franges géantes pour centrer le tampon appelé bzg-big-fringe-mode.

Le problème est que ces franges ont souvent une couleur différente de celle de l'arrière-plan, ce qui donne un effet visuel moche (voir l'image à la fin).

Je n'ai aucun problème à résoudre ce problème manuellement, en définissant la couleur de la frange sur la couleur d'arrière-plan, comme ceci:

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

Le problème est que lorsque vous changez de thème, les couleurs des franges restent grises, même si cela n'a pas de sens pour le nouveau thème.

Existe-t-il un moyen de définir par programme la frange sur la couleur d'arrière-plan?

Je suppose que j'ai besoin de deux choses:

  1. La possibilité de définir la couleur d'arrière-plan de la frange sur la couleur d'arrière-plan par défaut.
  2. Une fonction qui est liée à l'évolution des thèmes et qui fait 1. ci-dessus.

Je pense que je devrais être capable de faire 2) même si je n'ai pas de compétences emacs, mais comment faire 1)?

Ou est-ce une mauvaise idée pour une raison quelconque? Si oui, à quoi ressemblerait une meilleure approche?

entrez la description de l'image ici

Le chat unfun
la source

Réponses:

11

La manière officielle serait de personnaliser le thème en question pour que le visage de la frange ressemble à celui du fond. Une spécification de visage dans le sens de (fringe :inherit default)devrait faire l'affaire.

Vous pouvez également le modifier à la volée à l'aide d'un extrait de code:

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

Le seul problème restant serait de l'appliquer à chaque changement de thème. Je ne trouve aucun crochet qui semble faire le travail, ce qui est un peu triste, defadvicene semble pas fonctionner correctement non plus. Du moins pas dans Emacs 24.4

wasamasa
la source
Merci. J'attendrai jusqu'à lundi pour accepter si sb a une solution.
The Unfun Cat
1
Y at - il une raison de ne pas utiliser face-backgroundet face-foregrounddans cet extrait de code?
Constantine
Il n'y en a pas, édité.
wasamasa
4

Vous pouvez définir la couleur de la frange sur zéro, auquel cas vous n'avez pas à vous soucier des changements de thème. J'ai les éléments suivants dans ma configuration:

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

Et la frange disparaît juste .... :)

pandita
la source
0

D'une manière ou d'une autre, il a 'fringecessé de travailler pour moi, et maintenant cela fait:

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