4

Я пытаюсь получить пользовательскую настройку цветовой темы (соляризованную) для моего emacs, которая использует 16-цветовую палитру, которую я уже настроил для своего терминала (gnome-терминал).

Когда я запускаю emacs из обычного терминала с TERM=xterm-256color , я могу правильно настроить M-x list-colors-display чтобы показать все 16 цветов ANSI, например, красный, зеленый, ярко-зеленый, ярко-красный и т.д.

Однако при запуске изнутри tmux и TERM=screen-256color M-x list-colors-display перечисляет только основные 8 цветов и пропускает расширенные яркие цвета. При обеих настройках при оценке (display-color-cells) 256 цветов. Единственные ссылки на яркие цвета, которые я могу найти, находятся в lisp/term/xterm.el и lisp/term/rxvt.el, поэтому кажется, что проблема в настройке TERM .

Для правильной работы tmux TERM должен быть установлен на screen или screen-256color, поэтому установка TERM по-другому не нужна. Мне повезло, используя псевдоним:

alias emacs='TERM=xterm-256color emacs'

Есть ли лучший способ заставить emacs разрешить использование всех 16 цветов ANSI?

1 ответ1

2

Как вы обнаружили, дополнительные цвета настраиваются с помощью специального библиотечного файла TERM (например, term/lisp). Более новые версии GNU Emacs включают термин / экран, который повторно использует определения цвета из термина / xterm, но, похоже, ваша версия Emacs этого не делает.

Если вы не хотите обновляться до более нового Emacs, то вы, вероятно, можете просто использовать содержимое из Gist, которое включает в себя term/screen.el и бит, который вы можете вставить в свой .emacs чтобы включить его; эта версия term/screen.el также включает несколько ключевых определений, которые могут оказаться полезными, если вы включите опцию tmux xterm-keys .

Основные биты кода выглядят так:

;;; .emacs addition
(add-to-list 'load-path "~/.emacs.d/lisp/")

;;; ~/.emacs.d/lisp/term/screen.el
(load "term/xterm") 
(defun terminal-init-screen ()
  (xterm-register-default-colors)
  (tty-set-up-initial-frame-faces))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .