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

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


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 .... :)


0

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

(set-face-attribute 'linum nil :background "gray19")
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.