цвета emacs на основе переменной окружения $ TERM

9

Я хочу знать, возможно ли сделать так, чтобы emacs, работая на экране gnu или в сеансе tmux, использовал те же цвета, что и когда TERM=xterm. В сеансе gnu или сеансе tmux TERM=screenemacs использует другой набор цветов по сравнению с тем, когда TERM=xterm.

Например, когда TERM=xterm-256colorцвет переднего плана font-lock-comment-face- «Огнеупорный кирпич». Но когда TERM=screen-256colorон установлен на «Chocolate1».

Для правильной работы tmux переменная TERM должна быть установлена ​​на screen или на некоторую производную, поэтому сброс TERM для меня не вариант.

Аликс
источник
(Хотел бы я прокомментировать ...) Мне неясно, пытались ли вы запустить emacs как: TERM=xterm emacsдля принудительной TERMустановки переменной для emacs. Что происходит, когда вы делаете это?
Вердам расплавить
Я экспериментирую с этим в данный момент. Я пока не обнаружил никаких плохих вещей. Похоже, что tmux можно настроить на передачу последовательностей ключей xterm (хотя TERM = xterm по-прежнему не поддерживается). Исходя из часто задаваемых вопросов по tmux, tmux может в будущем поддерживать xterm, а не только screen.
ALiX

Ответы:

3

Определениеfont-lock-comment-face включает в себя множество вариантов для случаев различной поддержки цвета.

  • chocolate1Вариант используется , когда есть, по крайней мере , 88 доступных цветов и «фон» является «темным».
  • FirebrickВариант используется , когда есть, по крайней мере , 88 доступных цветов и «фон» является «свет».

Разница вызвана какой - то код , который дает особое значение для значений TERM , которые начинаются с xterm, rxvt, dttermи eterm: он считает их иметь «свет» фон.

Вы должны иметь возможность настроить frame-background-mode* на его lightзначение, чтобы всегда использовать «светлые» варианты цвета.

Если ваш Emacs не достаточно новый, чтобы иметь свой собственный term/screen.el, то вам также нужно будет адаптировать его для себя, который будет делать соответствующие вызовы с настройкой цвета. Вы можете использовать один из ствола Emacs , или у меня есть Сущность , которая включает в себя .emacs.d/lisp/term/screen.el(с некоторыми дополнительными битами признать модификатор + стрелки / Home / End последовательность , предоставляемый tmux «S xterm-keysопция), а .emacsизменение необходимо , чтобы он автоматически нагрузки ,

Конечно, могут быть и другие фрагменты кода, которые напрямую проверяют значение TERM и делают что-то другое для значений типа «как screenи xterm…»

* Mx настраиваемая переменная frame-background-mode

Крис Джонсен
источник