Emacs-Farben basierend auf der Umgebungsvariablen $ TERM

9

Ich möchte wissen, ob es möglich ist, Emacs zu erstellen, wenn sie in einem Gnu-Bildschirm oder einer tmux-Sitzung ausgeführt werden und dieselben Farben wie bei verwenden TERM=xterm. In einem Gnu-Bildschirm oder einer tmux-Sitzung TERM=screenverwendet emacs einen anderen Farbsatz als wann TERM=xterm.

Wenn beispielsweise TERM=xterm-256colordie Vordergrundfarbe von font-lock-comment-face"Firebrick" ist. Aber wenn TERM=screen-256color, ist es auf "Schokolade1" gesetzt.

Für tmux zur Arbeit der Variablen TERM richtig, muss festgelegt werden , um Bildschirm oder ein Derivat, so TERM Zurücksetzen ist keine Option für mich.

ALiX
quelle
(Ich wünschte, ich könnte einen Kommentar abgeben ...) Es ist mir unklar, ob Sie versucht haben, Emacs wie folgt auszuführen: TERM=xterm emacsErzwingen der TERMVariableneinstellung für Emacs. Was passiert, wenn Sie das tun?
verdammelt
Ich experimentiere gerade damit. Ich habe noch keine schlimmen Dinge entdeckt. Es scheint, dass tmux so konfiguriert werden kann, dass xterm-Schlüsselsequenzen ausgegeben werden (obwohl TERM = xterm immer noch nicht unterstützt wird). Basierend auf den häufig gestellten Fragen zu tmux wird tmux in Zukunft möglicherweise xterm unterstützen, anstatt nur den Bildschirm.
ALiX

Antworten:

3

Die Definition vonfont-lock-comment-face umfasst viele Varianten für Fälle unterschiedlicher Farbunterstützung.

  • Die chocolate1Variante wird verwendet, wenn mindestens 88 Farben verfügbar sind und der „Hintergrund“ „dunkel“ ist.
  • Die FirebrickVariante wird verwendet, wenn mindestens 88 Farben verfügbar sind und der „Hintergrund“ „hell“ ist.

Die Differenz wird durch einige Code verursacht , die eine besondere Bedeutung für TERM Werte gibt , die mit beginnen xterm, rxvt, dtterm, und eterm: es hält sie für ein „Licht“ Hintergrund zu haben.

Sie sollten in der Lage sein, frame-background-mode* an seinen lightWert anzupassen , um immer die "hellen" Farbvarianten zu verwenden.

Wenn Ihr Emacs nicht neu genug ist, um einen eigenen zu haben term/screen.el, müssen Sie auch einen für sich selbst anpassen, der die entsprechenden Farbanpassungsaufrufe ausführt. Sie können die aus dem Emacs-Trunk verwenden , oder ich habe eine Übersicht , die a enthält .emacs.d/lisp/term/screen.el(mit einigen zusätzlichen Bits, um die Modifikator + Pfeile / Home / End-Sequenzen zu erkennen, die von der Option von tmux bereitgestellt werden xterm-keys), und die .emacsModifikation, die erforderlich ist, damit sie automatisch geladen wird .

Natürlich könnte es noch andere Codebits geben, die den TERM-Wert direkt überprüfen und etwas anderes für screen- und xterm-ähnliche Werte tun …

* Mx Customize-Variable Frame-Hintergrund-Modus

Chris Johnsen
quelle