Corsivo in Emacs su un terminale di testo (rxvt-unicode)


15

Sto usando Emacs in esecuzione in un urxvt e non riesco a far funzionare il corsivo in Emacs sebbene il terminale lo supporti.

Ecco la mia configurazione attuale:

  • Non ho impostato $TERM, quindi è l'impostazione predefinita rxvt-unicode-256color.
  • My ~/.Xdefaultsdefinisce URxvt.font: xft:Inconsolata:size=15il carattere terminale.
  • Esecuzione echo '\e[3mitalics\e[m'nel guscio effettivamente rese italics, così corsivo nel terminale do lavoro, sostanzialmente.

Quando si personalizza la faccia “italico”, non fa alcuna differenza se seleziono italic, oblique, normal, o romancome il valore per l' Slantattributo, né se non imposto l' Slantattributo a tutti. Ho anche provato questo in combinazione con la definizione esplicita URxvt.italicFontnel mio ~/.Xdefaults, ma senza risultati.

Il grassetto funziona bene, il corsivo non funziona affatto. Qualche idea?


Non mi ero reso conto che fosse possibile anche avere il corsivo in un terminale a distanza. Grazie per quello
wfaulk,

Risposte:


10

In breve: non è possibile con l'attuale versione di Emacs (verificato con 23.2), ma vedere di seguito per una possibile soluzione alternativa.

Storia più lunga: il supporto per il corsivo è codificato nel database terminfo come capacità sitm(entra in corsivo) e ritm(esce in corsivo) (chiamato anche ZHe ZRper compatibilità termcap); puoi verificare che il tuo terminale li supporti tramite:

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

Se questi non sono presenti, la rxvt-unicode-256colordescrizione del tuo terminale non fornisce informazioni alla libreria ncurses sulle funzionalità in corsivo del terminale e potresti volerle aggiungere, altrimenti nessuna applicazione TTY può usare il corsivo.

Tuttavia, la funzione turn_on_face(nelle fonti Emacs, file src/term.calla riga 1919-2012), che gestisce la visualizzazione del terminale, non fornisce supporto per il corsivo: controlla gli attributi grassetto / fioco / lampeggiante / sottolineato di una faccia. In realtà, non esiste un attributo "corsivo" codificato struct face.

Infatti, il mio Emacs (versione 23.1 su Ubuntu 11.04 natty) mostra facce in corsivo (che vengono visualizzate correttamente in X11) come sottolineato in un TTY. (Il che significa che, se non ti interessa sottolineare, puoi semplicemente cambiare la descrizione del terminfo del tuo terminale per usare le sequenze di escape in corsivo enter / exit anziché quelle sottolineate in enter / exit e ottenere corsivo.)


Questa risposta sembra buona, ma in questo momento non posso provarla perché l'unica installazione di Linux che ho è come ospite in un host win7. Di conseguenza, ho difficoltà a testarlo. In particolare, non riesco a inserire i codici di escape ASCII. Se qualcun altro può testare per confermare o spiegare cosa potrei fare di sbagliato con le sequenze di escape, sarò felice di assegnare la taglia.
vschum,

@vschum Se stai cercando di cambiare il tuo database terminfo, questa risposta dovrebbe aiutarti. Non possiamo aiutarti con le tue difficoltà se non le spieghi; potresti fare una domanda su di loro.
Gilles 'SO- smetti di essere malvagio' l'

@Gilles In realtà, ha più a che fare con questa risposta . Non riesco a capire come inserire le sequenze per verificare se il corsivo funziona o meno. Quando scrivo ESC [3 m non compare nulla nel terminale.
vschum,

2
@vschum Premendo ESCnon si inserisce un carattere di escape. È possibile premere Ctrl+V ESCper inserirne uno, ma raramente è necessario. Ad esempio, il carattere di escape è rappresentato da \Ein terminfo source; in un terminale (con bash / ksh / zsh), provare echo $'\e[3mhello\e[0m'.
Gilles 'SO- smetti di essere malvagio' il

4

Sto aggiungendo questa risposta perché gli altri non sono aggiornati. Emacs 24.5 mostra correttamente le facce in corsivo nei terminali.

inserisci qui la descrizione dell'immagine

Questo è emacs 24.5 in esecuzione in un terminale ( emacs -nw). Il terminale è uxvrte l'installazione nel mio .Xdefaultsè:

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

3

Per quanto riguarda gli emacs che non sono in grado di utilizzare il corsivo negli emulatori terminali che forniscono questa funzionalità: questo è il bug # 9652 di emacs che è stato corretto da Chong Yidong il 10 giugno 2012.

La correzione non è presente in nessuna versione rilasciata di emacs, ma ad esempio nel pacchetto emacs-snapshot di emacs.naquadah.org .


Questa informazione è probabilmente obsoleta ....
Samuel Edwin Ward,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.