Como posso alterar a cor do plano de fundo de um único buffer do emacs?

8

Quero tornar os buffers interativos SQL que estão conectados aos bancos de dados de produção muito, muito óbvios, então pensei em mudar o plano de fundo do buffer para uma cor vermelho escuro.

set-background-colorembora não funcione; define a cor de todos os quadros para a cor especificada.

Como posso alterar o plano de fundo de apenas um único buffer?

Chris R
fonte

Respostas:

9

Eu criei um pacote emacs lisp para isso: https://github.com/vic/color-theme-buffer-local, ele usa o remapeamento de rosto do Emacs para instalar faces de tema localmente.


(require 'color-theme-buffer-local)
(add-hook 'java-mode-hook (lambda nil (color-theme-buffer-local 'color-theme-robin-hood (current-buffer)) ))

vic
fonte
6

Você não pode.

A cor de fundo geralmente é específica do quadro.

Você pode definir a cor de fundo da defaultface para ser específica do quadro set-face-background, usando :

(set-face-background 'default "#CCCCCC" (window-frame (frame-selected-window))

As personalizações de quadros geralmente são controladas por meio de parâmetros de quadros . Agora, se você observar atentamente os background-colorparâmetros do quadro , verá que a cor de fundo padrão é retirada da defaultface - e é por isso que o elisp acima tem efeito.

Depois disso, parece que o fechamento que você pode obter de uma cor de fundo do buffer é usando o modo secundário buffer-face-mode(adicionado em 23.1) - no entanto, isso altera apenas o fundo do texto de um buffer e não o fundo inteiro.

Trey Jackson
fonte