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

Странно, что никто не упомянул о multitail утилита, которая имеет эту функциональность из поля. Один из примера использования:

Покажите вывод команды ping и если он отображает тайм-аут, отправьте, сообщение всем пользователям в настоящее время входило в систему

multitail -ex timeout "echo timeout | wall" -l "ping 192.168.0.1"

См. также другого примеры multitail использование.

15
30.07.2011, 19:42
3 ответа

Короче говоря: Вы не можете с текущей версией 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) шоу выделили курсивом поверхности (которые отображаются правильно в X11), как подчеркнуто в TTY. (Что означает, что, если Вы не заботитесь о подчеркивании, можно просто изменить terminfo описание терминала, чтобы использовать ввести/выйти escape-последовательности курсива вместо ввести/выйти подчеркивания и получить курсив.)

10
27.01.2020, 19:50
  • 1
    Этот ответ выглядит хорошим, но прямо сейчас я не могу протестировать его, потому что единственная установка Linux, которую я имею, как гость в хосте win7. В результате я испытываю затруднения при тестировании этого. Конкретно я, может казаться, не вставляю управляющие коды ASCII. Если кто-то еще может протестировать, чтобы подтвердить или объяснить, что я мог бы делать неправильно с escape-последовательностями, я буду рад наградить щедрость. –  vschum 11.08.2011, 20:09
  • 2
    @vschum, При попытке изменить свою terminfo базу данных, этот ответ должен помочь. Мы не можем помочь с Вашими трудностями, если Вы не объясняете их; Вы могли задать вопрос о них. –  Gilles 'SO- stop being evil' 12.08.2011, 02:30
  • 3
    @Gilles На самом деле, это больше имеет отношение к этому ответу. Я не могу выяснить, как вставить последовательности, чтобы протестировать, если курсивы работают или нет. Когда я ввожу ESC [3 м, ничто не обнаруживается в терминале. –  vschum 12.08.2011, 05:07
  • 4
    @vschum ESC не вставляет символ ESC. Можно нажать Ctrl+V ESC для вставки один но Вы редко должны. Например, символ ESC представлен \E в terminfo источнике; в терминале (с bash/ksh/zsh), попробовать echo $'\e[3mhello\e[0m'. –  Gilles 'SO- stop being evil' 12.08.2011, 10:19

Относительно emacs, который не в состоянии использовать курсив в эмуляторах терминала, которые обеспечивают этот funtionality: Это - emacs ошибка № 9652, который был зафиксирован Chong Yidong 10 июня 2012.

Фиксация не находится ни в какой выпущенной версии emacs хотя, но например в пакете emacs-снимка из emacs.naquadah.org.

3
27.01.2020, 19:50
  • 1
    Эта информация, вероятно, устарела.... –  Samuel Edwin Ward 16.07.2013, 17:53

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

enter image description here

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

URxvt*termName: rxvt-unicode-256color
URxvt.font: xft:DejaVu Sans Mono:size=9
4
27.01.2020, 19:50

Теги

Похожие вопросы