emacs cores baseadas na variável de ambiente $ TERM

9

Eu quero saber se é possível fazer o emacs, quando rodando em uma tela gnu ou sessão tmux, use as mesmas cores de quando TERM=xterm . Em uma tela gnu ou sessão tmux, TERM=screen e emacs usam um conjunto diferente de cores quando comparado a TERM=xterm .

Por exemplo, quando TERM=xterm-256color , a cor de primeiro plano de font-lock-comment-face é 'Firebrick'. Mas quando TERM=screen-256color , está definido como 'chocolate1'.

Para que o tmux funcione corretamente, a variável TERM deve ser configurada para tela ou alguma derivada, portanto, a redefinição do TERM não é uma opção para mim.

    
por ALiX 31.10.2012 / 21:27

1 resposta

3

A definição de font-lock-comment-face inclui muitas variantes para casos de suporte a cores variadas.

  • A variante chocolate1 é usada quando há pelo menos 88 cores disponíveis e o "fundo" é "escuro".
  • A variante Firebrick é usada quando há pelo menos 88 cores disponíveis e o "fundo" é "leve".

A diferença é causada por algum código que dá um significado especial aos valores TERM que começam com xterm , rxvt , dtterm e eterm : ele os considera como tendo um fundo "light".

Você deve ser capaz de personalizar frame-background-mode * para seu valor light para sempre usar as variantes de cor "light".

Se o seu Emacs não for novo o suficiente para ter seu próprio term/screen.el , você também precisará adaptar um para você mesmo que faça as chamadas de ajuste de cor apropriadas. Você pode usar o do tronco Emacs , ou Eu tenho um Gist que inclui um .emacs.d/lisp/term/screen.el (com alguns bits extras para reconhecer o modificador + setas / Home / End seqüências fornecidas por xterm-keys do tmux ), e a modificação em .emacs necessária para permitir o carregamento automático.

É claro que ainda pode haver outros pedaços de código que verificam diretamente o valor TERM e fazem algo diferente para screen - e xterm - como valores…

* M-x personalizar-variável frame-background-mode

    
por 16.11.2012 / 06:40