cores do emacs com base na variável de ambiente $ TERM

9

Quero saber se é possível fazer com que o emacs, ao executar em uma tela gnu ou sessão do tmux, use as mesmas cores de quando TERM=xterm. Em uma tela gnu ou sessão tmux, o TERM=screenemacs usa um conjunto diferente de cores em comparação com quando TERM=xterm.

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

Para o tmux funcionar corretamente, a variável TERM deve ser configurada como screen ou alguma derivada, portanto, redefinir o TERM não é uma opção para mim.

ALiX
fonte
(Gostaria de poder comentar ...) Não está claro para mim se você tentou executar o emacs como: TERM=xterm emacsforçar a TERMconfiguração variável para o emacs. O que acontece quando você faz isso?
Verdammelt #
Estou experimentando isso no momento. Ainda não detectei nenhuma coisa ruim acontecendo. Parece que o tmux pode ser configurado para emitir sequências de teclas xterm (embora TERM = xterm ainda não seja suportado). Com base nas perguntas frequentes do tmux, o tmux pode oferecer suporte ao xterm no futuro, em vez de apenas na tela.
Alix

Respostas:

3

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

  • A chocolate1variante é usada quando há pelo menos 88 cores disponíveis e o "fundo" é "escuro".
  • A Firebrickvariante é usada quando há pelo menos 88 cores disponíveis e o "fundo" é "claro".

A diferença é causada por um código que dá significado especial para valores termo que começam com xterm, rxvt, dtterm, e eterm: considera-los a ter um fundo “light”.

Você deve poder personalizar frame-background-mode* ao seu lightvalor para sempre usar as variantes de cores "claras".

Se o seu Emacs não é novo o suficiente para ter o seu term/screen.el, você também precisará adaptar um para si mesmo, que faça as chamadas de ajuste de cor apropriadas. Você pode usar o de tronco Emacs , ou eu tenho uma essência que inclui uma .emacs.d/lisp/term/screen.el(com alguns bits extras para reconhecer as seqüências modificador + setas / Home / End fornecidos pelo tmux ‘s xterm-keysopção), ea .emacsmodificação necessária para deixá-lo de carga automaticamente .

Claro, ainda pode haver outros pedaços de código que verificam diretamente o valor a longo prazo e fazer algo diferente para screen- e xterm-como valores ...

* Modo de quadro de fundo variável variável Mx

Chris Johnsen
fonte