couleurs emacs basées sur la variable d'environnement $ TERM

9

Je veux savoir s'il est possible de faire des emacs, lorsque vous utilisez un écran gnu ou une session tmux, utilisez les mêmes couleurs que lorsque TERM=xterm. Dans un écran gnu ou une session tmux, TERM=screenet emacs utilise un ensemble de couleurs différent par rapport à quand TERM=xterm.

Par exemple, lorsque TERM=xterm-256color, la couleur de premier plan de font-lock-comment-faceest «Firebrick». Mais quand TERM=screen-256color, il est réglé sur 'chocolate1'.

Pour que tmux fonctionne correctement, la variable TERM doit être définie sur screen ou un dérivé, donc la réinitialisation de TERM n'est pas une option pour moi.

ALiX
la source
(J'aimerais pouvoir commenter ...) Il n'est pas clair pour moi si vous avez essayé d'exécuter emacs comme: TERM=xterm emacspour forcer le TERMréglage des variables pour emacs. Que se passe-t-il quand tu fais ça?
verdammelt
J'expérimente avec ça en ce moment. Je n'ai pas encore détecté de mauvaises choses. Il semble que tmux puisse être configuré pour émettre des séquences de touches xterm (bien que TERM = xterm ne soit toujours pas pris en charge). Sur la base de la FAQ tmux, tmux pourrait à l'avenir prendre en charge xterm au lieu d'uniquement écran.
ALiX

Réponses:

3

La définition defont-lock-comment-face comprend de nombreuses variantes pour les cas de prise en charge de couleurs variables.

  • La chocolate1variante est utilisée lorsqu'il y a au moins 88 couleurs disponibles et que le «fond» est «foncé».
  • La Firebrickvariante est utilisée lorsqu'il y a au moins 88 couleurs disponibles et que le «fond» est «clair».

La différence est causée par un code qui donne une signification particulière aux valeurs de terme qui commencent par xterm, rxvt, dttermet eterm: il les considère comme un arrière - plan « lumière ».

Vous devriez pouvoir personnaliser frame-background-mode* à sa lightvaleur pour toujours utiliser les variantes de couleur «claires».

Si votre Emacs n'est pas assez nouveau pour avoir le sien term/screen.el, vous devrez également en adapter un pour vous-même qui effectuera les appels de réglage des couleurs appropriés. Vous pouvez utiliser l'un de tronc Emacs , ou j'ai un Gist qui comprend un .emacs.d/lisp/term/screen.el(avec quelques bits supplémentaires pour reconnaître le modificateur + flèches / Accueil / séquences de fin fournies par tmux l » xterm-keysoption), et la .emacsmodification nécessaire pour laisser automatiquement la charge .

Bien sûr, il pourrait y avoir encore d' autres morceaux de code qui vérifient directement la valeur à long terme et faire quelque chose différent pour screen- et xterm-comme valeurs ...

* Mx personnaliser-variable frame-background-mode

Chris Johnsen
la source