Kursivschrift in Emacs auf einem Textterminal (rxvt-unicode)

15

Ich verwende Emacs, das in einem urxvt ausgeführt wird, und ich kann in Emacs keine Kursivschrift verwenden, obwohl das Terminal dies unterstützt.

Hier ist mein aktuelles Setup:

  • Ich habe nicht festgelegt $TERM, so ist es die Standardeinstellung rxvt-unicode-256color.
  • Meine ~/.Xdefaultsdefiniert URxvt.font: xft:Inconsolata:size=15als die Terminal-Schriftart.
  • Laufen echo '\e[3mitalics\e[m'in der Schale in der Tat Ausbeuten italics, so kursiv im Terminal do Arbeit, im Grunde.

Wenn das „Kursiv“ Gesicht Anpassen macht es keinen Unterschied, ob ich wähle italic, oblique, normaloder romanals der Wert für das SlantAttribut, noch ist es , wenn ich das nicht festgelegt habe SlantAttribut überhaupt. Ich habe dies auch in Kombination mit einer expliziten Definition URxvt.italicFontin meinem ~/.Xdefaultsversucht, aber ohne Erfolg.

Fett funktioniert gut, Kursiv funktioniert überhaupt nicht. Irgendwelche Ideen?

igor
quelle
Ich wusste nicht, dass es überhaupt möglich ist, Kursivschrift in einem Terminal zu verwenden. Dank dafür.
Wfaulk

Antworten:

10

Kurz gesagt: Sie können mit der aktuellen Version von Emacs (überprüft mit 23.2) nicht, aber sehen Sie unten für eine mögliche Problemumgehung.

Längere Geschichte: Unterstützung für Kursivschrift wird in der terminfo- Datenbank als sitm(Eingabe kursiv) und ritm(Beenden kursiv) -Funktion kodiert (auch als ZHund ZRaus Gründen der Termcap-Kompatibilität bezeichnet). Sie können überprüfen, ob Ihr Terminal diese unterstützt:

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

Wenn diese nicht vorhanden sind, rxvt-unicode-256colorliefert Ihre Terminalbeschreibung der ncurses-Bibliothek keine Informationen zu den Kursivdruckfunktionen des Terminals, und Sie möchten sie möglicherweise hinzufügen. Andernfalls kann keine TTY-Anwendung Kursivdruck verwenden.

Die Funktion turn_on_face(in den Emacs-Quellen, Datei src/term.cin Zeile 1919-2012), die die Terminalanzeige verwaltet, bietet jedoch keine Unterstützung für Kursivschrift: Sie prüft, ob Attribute eines Gesichts fett, dunkel, blinkend oder unterstrichen sind. Tatsächlich ist in kein Attribut "Kursiv" codiert struct face.

In der Tat zeigt mein Emacs (Version 23.1 auf Ubuntu 11.04 natty) kursive Gesichter (die in X11 korrekt angezeigt werden), wie in einem TTY unterstrichen . (Das bedeutet, dass Sie, wenn Sie sich nicht für Unterstreichung interessieren, einfach die Terminfo-Beschreibung Ihres Terminals ändern können, um die Escape-Sequenzen für Eingabe / Ausgabe in Kursivschrift anstelle der unterstrichenen für Eingabe / Ausgabe zu verwenden und Kursivschrift zu erhalten.)

Riccardo Murri
quelle
Diese Antwort sieht gut aus, aber im Moment kann ich sie nicht testen, da die einzige Linux-Installation, die ich habe, als Gast in einem win7-Host ist. Infolgedessen habe ich Schwierigkeiten, dies zu testen. Insbesondere kann ich die ASCII-Escape-Codes scheinbar nicht einfügen. Wenn jemand anderes testen kann, um zu bestätigen oder zu erklären, was ich möglicherweise mit den Fluchtsequenzen falsch mache, werde ich die Prämie gerne vergeben.
Vschum
@vschum Wenn Sie versuchen, Ihre terminfo-Datenbank zu ändern, sollte diese Antwort hilfreich sein. Wir können nicht mit Ihren Schwierigkeiten helfen, es sei denn Sie erklären sie; Sie könnten eine Frage zu ihnen stellen.
Gilles 'SO - hör auf böse zu sein'
@ Gilles Eigentlich hat es mehr mit dieser Antwort zu tun . Ich kann nicht herausfinden, wie man die Sequenzen einfügt, um zu testen, ob die Kursivschrift funktioniert oder nicht. Wenn ich ESC [3 m eingebe, wird im Terminal nichts angezeigt.
Vschum
2
@vschum Durch Drücken von ESCwird kein Escapezeichen eingefügt . Sie können drücken Ctrl+V ESC, um eine einzufügen, dies ist jedoch selten erforderlich. ZB wird das Escape-Zeichen durch \Ein terminfo source dargestellt. Versuchen Sie es in einem Terminal (mit bash / ksh / zsh) echo $'\e[3mhello\e[0m'.
Gilles 'SO - hör auf böse zu sein'
4

Ich füge diese Antwort hinzu, weil die anderen veraltet sind. Emacs 24.5 zeigt Kursivschrift in Terminals korrekt an.

Bildbeschreibung hier eingeben

Dies ist Emacs 24.5 in einem Terminal ( emacs -nw) ausgeführt. Das Terminal ist uxvrtund das Setup in meinem .Xdefaultsist:

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

In Bezug auf Emacs, die in Terminal-Emulatoren, die diese Funktionalität bieten, keine Kursivschrift verwenden können: Dies ist der Emacs-Fehler # 9652, der von Chong Yidong am 10. Juni 2012 behoben wurde.

Das Update ist jedoch nicht in einer veröffentlichten Version von Emacs enthalten, sondern beispielsweise im emacs-snapshot-Paket von emacs.naquadah.org .

Gregor Zattler
quelle
Diese Information ist wahrscheinlich veraltet ....
Samuel Edwin Ward