colores de emacs basados ​​en la variable de entorno $ TERM

9

Quiero saber si es posible hacer emacs, cuando se ejecuta en una pantalla gnu o una sesión tmux, use los mismos colores que cuando TERM=xterm. En una pantalla gnu o una sesión tmux, TERM=screeny emacs usa un conjunto diferente de colores en comparación con cuándo TERM=xterm.

Por ejemplo, cuándo TERM=xterm-256color, el color de primer plano font-lock-comment-facees 'Firebrick'. Pero cuando TERM=screen-256color, se establece en 'chocolate1'.

Para que tmux funcione correctamente, la variable TERM debe establecerse en pantalla o alguna derivada, por lo que restablecer TERM no es una opción para mí.

ALiX
fuente
(Ojalá pudiera comentar ...) No me queda claro si ha intentado ejecutar emacs como: TERM=xterm emacsforzar la TERMconfiguración variable para emacs. ¿Qué pasa cuando haces eso?
Verdammelt
Estoy experimentando con eso en este momento. Todavía no he detectado nada malo. Parece que tmux se puede configurar para emitir secuencias de teclas xterm (aunque TERM = xterm todavía no es compatible). Según las preguntas frecuentes de tmux, tmux podría ser compatible con xterm en el futuro en lugar de solo en la pantalla.
ALiX

Respuestas:

3

La definición defont-lock-comment-face incluye muchas variantes para casos de diferentes colores.

  • La chocolate1variante se utiliza cuando hay al menos 88 colores disponibles y el "fondo" es "oscuro".
  • La Firebrickvariante se utiliza cuando hay al menos 88 colores disponibles y el "fondo" es "claro".

La diferencia es causada por un código que le da un significado especial a los valores término que comienzan con xterm, rxvt, dtterm, y eterm: se les considera que tienen un fondo “luz”.

Debería poder personalizar frame-background-mode* a su lightvalor para usar siempre las variantes de color "claro".

Si su Emacs no es lo suficientemente nuevo como para tener el suyo term/screen.el, entonces también necesitará adaptar uno que haga las llamadas de ajuste de color apropiadas. Puede usar el de la troncal de Emacs , o tengo un Gist que incluye un .emacs.d/lisp/term/screen.el(con algunos bits adicionales para reconocer el modificador + flechas / Inicio / secuencias finales proporcionadas por la opción de tmuxxterm-keys ), y la .emacsmodificación necesaria para permitir que se cargue automáticamente .

Por supuesto, todavía podría haber otros bits de código que consultar directamente el valor a largo plazo y hacer algo diferente para screen- y xterm-como valores ...

* Mx personalizar-variable-frame-background-mode

Chris Johnsen
fuente