Cursiva en Emacs en una terminal de texto (rxvt-unicode)

15

Estoy usando Emacs ejecutándose en un urxvt, y no puedo obtener cursiva para trabajar en Emacs aunque el terminal lo admite.

Aquí está mi configuración actual:

  • No lo he configurado $TERM, por lo que es el valor predeterminado rxvt-unicode-256color.
  • My ~/.Xdefaultsdefine URxvt.font: xft:Inconsolata:size=15como la fuente del terminal.
  • Correr echo '\e[3mitalics\e[m'en la cáscara de hecho rendimientos italics, por lo cursiva en el terminal de do trabajo, básicamente.

Al personalizar la cara “cursiva”, no hace ninguna diferencia si selecciono italic, oblique, normal, o romancomo el valor para el Slantatributo, ni tampoco si no se establece la Slantatributo en absoluto. También probé esto en combinación con definir explícitamente URxvt.italicFonten mi ~/.Xdefaults, pero fue en vano.

La negrita funciona bien, la cursiva no funciona en absoluto. ¿Algunas ideas?

igor
fuente
No me di cuenta de que era remotamente posible tener cursiva en una terminal. Gracias por eso.
wfaulk

Respuestas:

10

En resumen: no puede con la versión actual de Emacs (verificada con 23.2), pero vea a continuación una posible solución.

Una historia más larga: el soporte para cursiva está codificado en la base de datos terminfo como las capacidades ( sitmingresar cursiva) y ritm(salir cursiva) (también llamadas ZHy ZRpara compatibilidad con termcap); Puede comprobar que su terminal los admite a través de:

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

Si no están presentes, la rxvt-unicode-256colordescripción de su terminal no proporciona información a la biblioteca ncurses sobre las capacidades de cursiva del terminal y es posible que desee agregarlas, de lo contrario, ninguna aplicación de TTY puede usar cursiva.

Sin embargo, la función turn_on_face(en las fuentes de Emacs, archivo src/term.cen la línea 1919--2012), que gestiona la pantalla del terminal, no admite cursiva: comprueba los atributos de negrita / tenue / parpadeo / subrayado de una cara. En realidad, no hay ningún atributo "cursiva" codificado en struct face.

De hecho, mi Emacs (versión 23.1 en Ubuntu 11.04 natty) muestra caras en cursiva (que se muestran correctamente en X11) como subrayadas en un TTY. (Lo que significa que, si no le importa subrayar, puede cambiar la descripción del terminal de su terminal para usar las secuencias de escape de cursiva de entrada / salida en lugar de las de subrayado de entrada / salida y obtener cursiva).

Riccardo Murri
fuente
Esta respuesta se ve bien, pero en este momento no puedo probarla porque la única instalación de Linux que tengo es como invitado en un host win7. Como resultado, tengo dificultades para probar esto. Específicamente, parece que no puedo insertar los códigos de escape ASCII. Si alguien más puede probar para confirmar o explicar lo que podría estar haciendo mal con las secuencias de escape, estaré encantado de otorgar la recompensa.
vschum
@vschum Si está intentando cambiar su base de datos terminfo, esta respuesta debería ayudar. No podemos ayudarlo con sus dificultades a menos que usted las explique; podrías hacer una pregunta sobre ellos.
Gilles 'SO- deja de ser malvado'
@Gilles En realidad, tiene más que ver con esta respuesta . No puedo entender cómo insertar las secuencias para probar si las cursivas funcionan o no. Cuando escribo ESC [3 m, no aparece nada en el terminal.
vschum
2
@vschum Al presionar ESCno se inserta un carácter de escape. Puede presionar Ctrl+V ESCpara insertar uno, pero rara vez lo necesita. Por ejemplo, el carácter de escape está representado por \Ein terminfo source; en una terminal (con bash / ksh / zsh), intente echo $'\e[3mhello\e[0m'.
Gilles 'SO- deja de ser malvado'
4

Estoy agregando esta respuesta porque las otras están desactualizadas. Emacs 24.5 muestra correctamente las caras en cursiva en los terminales.

ingrese la descripción de la imagen aquí

Esto es emacs 24.5 ejecutándose en una terminal ( emacs -nw). El terminal es uxvrty la configuración en mi .Xdefaultses:

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

Con respecto a emacs que no puede utilizar cursiva en emuladores de terminal que proporcionan esta funcionalidad: este es el error # 9652 de emacs que fue corregido por Chong Yidong el 10 de junio de 2012.

Sin embargo, la solución no se encuentra en ninguna versión lanzada de emacs, sino, por ejemplo, en el paquete emacs-snapshot de emacs.naquadah.org .

Gregor Zattler
fuente
Esta información probablemente esté desactualizada ...
Samuel Edwin Ward