emacs kolory na podstawie zmiennej środowiskowej $ TERM

9

Chcę wiedzieć, czy możliwe jest tworzenie emacsa, podczas uruchamiania na ekranie GNU lub sesji Tmux, używaj tych samych kolorów, co kiedy TERM=xterm. Na ekranie GNU lub sesji Tmux, TERM=screenemacs używa innego zestawu kolorów w porównaniu do kiedy TERM=xterm.

Na przykład, kiedy TERM=xterm-256colorkolor pierwszego planu font-lock-comment-faceto „Firebrick”. Ale kiedy TERM=screen-256colorjest ustawiony na „czekolada1”.

Aby tmux działał poprawnie, zmienna TERM musi być ustawiona na screen lub jakąś pochodną, ​​więc resetowanie TERM nie jest dla mnie opcją.

ALiX
źródło
(Chciałbym móc komentować ...) Nie jest dla mnie jasne, czy próbowałeś uruchomić emacsa jako: TERM=xterm emacsaby wymusić TERMustawienie zmiennej dla emacsa. Co się stanie, kiedy to zrobisz?
verdammelt
W tej chwili eksperymentuję z tym. Nie wykryłem jeszcze żadnych złych rzeczy. Wygląda na to, że tmux można skonfigurować tak, aby emitował sekwencje klawiszy xterm (chociaż TERM = xterm jest nadal nieobsługiwany). Na podstawie FAQ tmux, tmux może w przyszłości obsługiwać xterm zamiast tylko screena.
ALiX,

Odpowiedzi:

3

Definicjafont-lock-comment-face obejmuje wiele wariantów dla różnych przypadków pomocy kolorów.

  • Ten chocolate1wariant jest używany, gdy dostępnych jest co najmniej 88 kolorów, a „tło” jest „ciemne”.
  • Ten Firebrickwariant jest używany, gdy dostępnych jest co najmniej 88 kolorów, a „tło” jest „jasne”.

Różnica jest spowodowana jakimś kodem, który daje szczególne znaczenie wartościom pojęcie, które zaczynają się xterm, rxvt, dtterm, i eterm: uzna je mieć „lekkie” tło.

Powinieneś być w stanie dostosować frame-background-mode* do jego lightwartości, aby zawsze używać „jasnych” wariantów kolorów.

Jeśli Twój Emacs nie jest wystarczająco nowy, aby mieć własny term/screen.el, musisz również dostosować go dla siebie, który wykona odpowiednie połączenia dostosowujące kolory. Można użyć jednego z Emacs bagażniku lub mam GIST , która obejmuje .emacs.d/lisp/term/screen.el(wraz z dodatkowymi bitami rozpoznawać sekwencje modyfikator + strzałki / Home / End dostarczonych przez tmux „s xterm-keysopcja), a .emacsmodyfikacja potrzebne do niech go automatycznie obciążenie .

Oczywiście, nie może być jeszcze inne fragmenty kodu, które bezpośrednio sprawdzić wartość TERM i zrobić coś innego na screen- i xterm-jak wartości ...

* Mx dostosuj zmienną ramkę w tle

Chris Johnsen
źródło