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

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

Например, когда TERM=xterm-256color , цвет переднего плана font-lock-comment-face – «Firebrick». Но когда TERM=screen-256color , он настроен на «chocolate1».

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

  • tmux.conf встраивает скрипт оболочки?
  • Использование переменных среды в командах командной строки состояния Tmux
  • tmux с iterm2 присоединяет удаленный сеанс
  • как изменить панель на главную панель в tmux
  • Перемещение панели tmux в окно
  • Почему tmux не подбирает переменные, полученные в моем tmux.conf?
  • Как изменить цвет разделительных линий панели в tmux?
  • Остановить прокрутку при остановке колесика
  • One Solution collect form web for “emacs цвета, основанные на переменной окружения $ TERM”

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

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

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

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

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

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

    * Mx customize-variable frame-background-mode

    Linux и Unix - лучшая ОС в мире.