Italique dans Emacs sur un terminal texte (rxvt-unicode)

15

J'utilise Emacs fonctionnant dans un urxvt, et je ne peux pas faire fonctionner l'italique dans Emacs bien que le terminal le supporte.

Voici ma configuration actuelle:

  • Je n'ai pas défini $TERM, c'est donc la valeur par défaut rxvt-unicode-256color.
  • My ~/.Xdefaultsdéfinit URxvt.font: xft:Inconsolata:size=15comme la police du terminal.
  • Courir echo '\e[3mitalics\e[m'dans la coquille en effet les rendements italics, donc italique dans le terminal do travail, essentiellement.

Lors de la personnalisation du visage « italique », il ne fait aucune différence si je choisis italic, oblique, normalou romancomme la valeur de l' Slantattribut, ni il ne si je ne mets pas l' Slantattribut du tout. J'ai également essayé cela en combinaison avec la définition explicite URxvt.italicFontdans mon ~/.Xdefaults, mais en vain.

Le gras fonctionne bien, l'italique ne fonctionne pas du tout. Des idées?

igor
la source
Je ne savais pas qu'il était même possible à distance d'avoir des italiques dans un terminal. Merci pour ça.
wfaulk

Réponses:

10

En bref: vous ne pouvez pas avec la version actuelle d'Emacs (vérifié avec 23.2), mais voir ci-dessous pour une solution de contournement possible.

Histoire plus longue: la prise en charge de l'italique est codée dans la base de données terminfo en tant que capacités ( sitmsaisir l'italique) et ritm(quitter l'italique) (également appelées ZHet ZRpour la compatibilité termcap); vous pouvez vérifier que votre terminal les prend en charge via:

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

Si ceux-ci ne sont pas présents, la rxvt-unicode-256colordescription de votre terminal ne fournit pas d'informations à la bibliothèque ncurses sur les capacités en italique du terminal et vous pouvez les ajouter, sinon aucune application TTY ne peut utiliser l'italique.

Cependant, la fonction turn_on_face(dans les sources Emacs, fichier src/term.cà la ligne 1919-2012), qui gère l'affichage du terminal, ne prend pas en charge l'italique: elle vérifie les attributs gras / faible / clignotant / souligné d'un visage. En fait, il n'y a pas d'attribut "italique" codé dans struct face.

En effet, mon Emacs (version 23.1 sur Ubuntu 11.04 natty) montre des visages en italique (qui s'affichent correctement en X11) comme souligné dans un TTY. (Ce qui signifie que, si vous ne vous souciez pas du soulignement, vous pouvez simplement modifier la description terminfo de votre terminal pour utiliser les séquences d'échappement italiques d'entrée / sortie au lieu des séquences soulignées d'entrée / sortie et obtenir l'italique.)

Riccardo Murri
la source
Cette réponse semble bonne, mais pour le moment je ne peux pas la tester car la seule installation Linux que j'ai est en tant qu'invité sur un hôte win7. Par conséquent, j'ai du mal à tester cela. Plus précisément, je n'arrive pas à insérer les codes d'échappement ascii. Si quelqu'un d'autre peut tester pour confirmer ou expliquer ce que je peux faire de mal avec les séquences d'échappement, je serai heureux d'attribuer la prime.
vschum
@vschum Si vous essayez de changer votre base de données terminfo, cette réponse devrait vous aider. Nous ne pouvons pas aider avec vos difficultés à moins que vous ne les expliquiez; vous pourriez poser une question à leur sujet.
Gilles 'SO- arrête d'être méchant'
@Gilles En fait, cela a plus à voir avec cette réponse . Je ne sais pas comment insérer les séquences pour tester si l'italique fonctionne ou non. Lorsque je tape ESC [3 m, rien ne s'affiche dans le terminal.
vschum
2
@vschum Presser n'insère ESCpas de caractère d'échappement. Vous pouvez appuyer sur Ctrl+V ESCpour en insérer un, mais vous en avez rarement besoin. Par exemple, le caractère d'échappement est représenté par \Edans la source terminfo; dans un terminal (avec bash / ksh / zsh), essayez echo $'\e[3mhello\e[0m'.
Gilles 'SO- arrête d'être méchant'
4

J'ajoute cette réponse parce que les autres sont obsolètes. Emacs 24.5 affiche correctement les faces italiques dans les terminaux.

entrez la description de l'image ici

C'est emacs 24.5 fonctionnant dans un terminal ( emacs -nw). Le terminal est uxvrtet la configuration dans mon .Xdefaultsest:

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

En ce qui concerne les emacs qui ne peuvent pas utiliser l'italique dans les émulateurs de terminaux qui fournissent cette fonctionnalité: il s'agit du bogue emacs # 9652 qui a été corrigé par Chong Yidong le 10 juin 2012.

Le correctif ne se trouve cependant dans aucune version publiée d'emacs, mais par exemple dans le package emacs-snapshot d' emacs.naquadah.org .

Gregor Zattler
la source
Ces informations sont probablement obsolètes ....
Samuel Edwin Ward