Курсиви в 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для сумісності з термінальними картами); ви можете перевірити, чи підтримує їх термінал через:

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. (Це означає, що якщо ви не переймаєтесь підкресленням, ви можете просто змінити опис терміналу свого терміналу, щоб використовувати послідовності входу / виходу курсивом введення / виходу, а не підкреслювати підпис і виходи, і отримувати курсив.)


Ця відповідь виглядає добре, але зараз я не можу її перевірити, оскільки єдина інстальована система Linux, яка є у мене як гість, у хості win7. Як результат, у мене виникають труднощі з тестуванням цього. Зокрема, я не можу вставити коди втечі ascii. Якщо хтось інший може перевірити, щоб підтвердити або пояснити, що я можу зробити неправильно з послідовностями втечі, я буду радий нагородити нагороду.
vschum

@vschum Якщо ви намагаєтесь змінити свою базу даних terminfo, ця відповідь має допомогти. Ми не можемо допомогти з вашими труднощами, якщо ви не поясните їх; Ви можете задати питання про них.
Жил 'SO- перестань бути злим'

@Gilles Насправді це більше стосується цієї відповіді . Я не можу зрозуміти, як вставити послідовності для перевірки, чи курсив працює чи ні. Коли я набираю ESC [3 м, у терміналі нічого не з’являється.
vschum

2
@vschum Натискання ESCне вставляє символу втечі. Ви можете натиснути, Ctrl+V ESCщоб вставити його, але це рідко потрібно. Наприклад, символ втечі представлений символом \Eу джерелі terminfo; в терміналі (з bash / ksh / zsh), спробуйте echo $'\e[3mhello\e[0m'.
Жил 'SO- перестань бути злим'

4

Я додаю цю відповідь, оскільки інші застаріли. Emacs 24.5 правильно відображає курсив у терміналах.

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

Це emacs 24.5, що працює в терміналі ( emacs -nw). Термінал є, uxvrtа налаштування в моєму .Xdefaults:

URxvt*termName: rxvt-unicode-256color
URxvt.font: xft:DejaVu Sans Mono:size=9

3

Що стосується emacs, які не в змозі використовувати курсив у термінальних емуляторах, які забезпечують цю функціональність: це помилка emacs №9652, яку було виправлено Chong Yidong 10 червня 2012 року.

Виправлення не в жодній випущеній версії emacs, але, наприклад, у пакеті emacs-знімка від emacs.naquadah.org .


Ця інформація, ймовірно, застаріла ....
Семюел Едвін Уорд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.