Como faço para definir as cores da franja como a cor do plano de fundo?

12

Estou usando um modo livre de distrações que usa franjas gigantes para centralizar o buffer chamado bzg-big-fringe-mode.

O problema é que essas franjas geralmente têm uma cor diferente da do fundo, o que dá um efeito visual feio (veja a figura no final).

Não tenho problema em corrigir isso manualmente, definindo a cor da franja para a cor do plano de fundo, da seguinte maneira:

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

O problema é que, ao alterar os temas, as cores das bordas permanecem cinza, mesmo que isso não faça sentido para o novo tema.

Existe uma maneira de definir programaticamente a franja para a cor de fundo?

Eu acho que preciso de duas coisas:

  1. A capacidade de definir a cor de fundo da franja para a cor de fundo padrão.
  2. Uma função ligada à alteração de temas e que faz 1. acima.

Eu acho que deveria ser capaz de fazer 2) mesmo que eu não possua habilidades no emacs, mas como eu faço 1)?

Ou isso é uma má idéia por algum motivo? Nesse caso, como seria uma abordagem melhor?

insira a descrição da imagem aqui

The Unfun Cat
fonte

Respostas:

11

A maneira oficial seria personalizar o tema em questão para fazer com que o rosto de franja pareça o mesmo que o rosto de fundo. Uma especificação de rosto ao longo das linhas de (fringe :inherit default)deve fazer o truque.

Como alternativa, você pode modificá-lo rapidamente usando um trecho de código:

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

O único problema que restaria seria aplicá-lo em todas as alterações de tema. Não consigo encontrar nenhum anzol defadviceque pareça capaz de fazer o trabalho que é um pouco triste, também não parece funcionar corretamente. Pelo menos não no Emacs 24.4

wasamasa
fonte
Obrigado. Vou esperar até segunda-feira aceitando caso o sb tenha uma solução.
The Unfun Cat
1
Existe um motivo para não usar face-backgrounde face-foregroundneste trecho de código?
Constantine
Não há, editado.
wasamasa
4

Você pode definir a cor da franja como nula, caso em que não precisa se preocupar com alterações no tema. Eu tenho o seguinte na minha configuração:

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

E a franja simplesmente desaparece .... :)

pandita
fonte
0

De alguma forma, 'fringeparou de funcionar para mim, e agora isso:

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