Курсив в Emacs на текстовом терминале (rxvt-unicode)

15

Я использую Emacs, работающий в urxvt, и не могу заставить курсив работать в Emacs, хотя терминал его поддерживает.

Вот мои текущие настройки:

  • Я не установил $TERM, так что это по умолчанию rxvt-unicode-256color.
  • Мой ~/.Xdefaultsопределяет URxvt.font: xft:Inconsolata:size=15как терминальный шрифт.
  • Запуск echo '\e[3mitalics\e[m'в оболочке в самом деле урожайность italics, так курсив в терминале сделайте работу, в основном.

При настройке лица «Курсив», это не делает никакой разницы выбрать ли я italic, oblique, normalили в romanкачестве значения для Slantатрибута, и делает это , если я не установить Slantатрибут на всех. Я также попробовал это в сочетании с явным определением URxvt.italicFontв моем ~/.Xdefaults, но безрезультатно.

Жирный отлично работает, курсив вообще не работает. Есть идеи?

игорь
источник
Я не осознавал, что курсивом в терминале можно было даже отдаленно. Спасибо за это.
wfaulk

Ответы:

10

Вкратце: вы не можете использовать текущую версию Emacs (проверено с помощью 23.2), но смотрите ниже возможный обходной путь.

Более длинная история: поддержка курсива кодируется в базе данных terminfo как возможности sitm(ввести курсив) и ritm(выйти курсивом) (также называемые ZHи ZRдля совместимости с termcap); Вы можете проверить, что ваш терминал поддерживает их через:

infocmp $TERM | egrep '(sitm|ritm)'

Если их нет, то rxvt-unicode-256colorописание вашего терминала не предоставляет информацию библиотеке ncurses о курсивных возможностях терминала, и вы можете добавить их, иначе приложение TTY не сможет использовать курсив.

Однако функция turn_on_face(в источниках Emacs, файл src/term.cв строке 1919-2012), которая управляет отображением терминала, не обеспечивает поддержку курсива: она проверяет атрибуты лица, выделенные жирным шрифтом / тусклым светом / мерцанием / подчеркиванием. На самом деле, нет атрибута «курсив», закодированный в struct face.

Действительно, мой Emacs (версия 23.1 на Ubuntu 11.04 natty) показывает выделенные курсивом грани (которые правильно отображаются в X11), как подчеркнуто в TTY. (Это означает, что, если вы не заботитесь о подчеркивании, вы можете просто изменить описание terminfo вашего терминала, чтобы использовать escape-последовательности курсора ввода / выхода вместо подчеркивания ввода / выхода и получать курсив.)

Риккардо Мурри
источник
Этот ответ выглядит хорошо, но сейчас я не могу его протестировать, потому что единственная установленная у меня установка linux - это как гость на хосте win7. В результате я испытываю трудности с тестированием. В частности, я не могу вставить escape-коды ascii. Если кто-то еще может проверить, чтобы подтвердить или объяснить, что я могу делать не так с последовательностями побега, я буду рад присудить награду.
Всум
@vschum Если вы пытаетесь изменить базу данных terminfo, этот ответ должен помочь. Мы не можем помочь с вашими трудностями, если вы не объясните их; Вы можете задать вопрос о них.
Жиль "ТАК - перестань быть злым"
@ Жиль На самом деле, это больше связано с этим ответом . Я не могу понять, как вставить последовательности, чтобы проверить, работает курсив или нет. Когда я набираю ESC [3 м, в терминале ничего не появляется.
Вщум
2
@vschum Нажатие ESCне вставляет escape-символ. Вы можете нажать, Ctrl+V ESCчтобы вставить один, но вам редко нужно. Например, escape-символ представлен \Eв источнике terminfo; в терминале (с bash / ksh / zsh) попробуйте echo $'\e[3mhello\e[0m'.
Жиль "ТАК - перестань быть злым"
4

Я добавляю этот ответ, потому что другие устарели. Emacs 24.5 правильно отображает курсивные лица в терминалах.

введите описание изображения здесь

Это emacs 24.5, работающий в терминале ( emacs -nw). Терминал есть uxvrtи настройка у меня .Xdefaultsтакая:

URxvt*termName: rxvt-unicode-256color
URxvt.font: xft:DejaVu Sans Mono:size=9
Casey
источник
3

Что касается emacs, который не может использовать курсив в эмуляторах терминала, которые обеспечивают эту функциональность: это ошибка emacs # 9652, которая была исправлена ​​Чонг Ийдонг 10 июня 2012 года.

Исправление не в любой выпущенной версии emacs, но, например, в пакете emacs-snapshot от emacs.naquadah.org .

Грегор Заттлер
источник
Эта информация, вероятно, устарела ....
Сэмюэль Эдвин Уорд