Korzystam z Emacsa działającego w urxvt i nie mogę zmusić kursywy do pracy w Emacsie, chociaż terminal go obsługuje.
Oto moja obecna konfiguracja:
- Nie ustawiłem
$TERM
, więc jest to ustawienie domyślnerxvt-unicode-256color
. - Mój
~/.Xdefaults
określa sięURxvt.font: xft:Inconsolata:size=15
jako czcionkę terminalową. - Uruchomienie
echo '\e[3mitalics\e[m'
w powłoce rzeczywiście daje wynikitalics
, więc kursywą w terminalu jest , w zasadzie, działanie.
Podczas dostosowywania „Kursywa” twarz, to nie ma żadnej różnicy, czy mogę wybrać italic
, oblique
, normal
lub roman
jako wartość dla Slant
atrybutu, ani też nie, jeśli nie ustawić Slant
atrybut w ogóle. Próbowałem tego również w połączeniu z wyraźnym zdefiniowaniem URxvt.italicFont
w moim ~/.Xdefaults
, ale bezskutecznie.
Pogrubienie działa dobrze, kursywa w ogóle nie działa. Jakieś pomysły?
Odpowiedzi:
W skrócie: nie możesz używać bieżącej wersji Emacsa (sprawdzonej za pomocą 23.2), ale zobacz możliwe obejście poniżej.
Dłuższa historia: obsługa kursywy jest zakodowana w bazie danych terminfo jako funkcja
sitm
(wpisz kursywę) iritm
(wyjdź kursywą) (zwana takżeZH
iZR
dla zgodności termcap); możesz sprawdzić, czy twój terminal je obsługuje:Jeśli nie są one obecne,
rxvt-unicode-256color
opis terminala nie dostarcza informacji do biblioteki ncurses o możliwościach kursywy terminala i możesz je dodać, w przeciwnym razie żadna aplikacja TTY nie będzie mogła używać kursywy.Jednak funkcja
turn_on_face
(w źródłach Emacsa, pliksrc/term.c
w linii 1919--2012), która zarządza terminalem, nie obsługuje kursywy: sprawdza pogrubienie / przyciemnienie / miganie / podkreślenie atrybutów twarzy. W rzeczywistości nie ma zakodowanego atrybutu „kursywa”struct face
.Rzeczywiście, mój Emacs (wersja 23.1 na Ubuntu 11.04 natty) pokazuje twarze pochylone (które są wyświetlane poprawnie w X11), jak podkreślono w TTY. (Co oznacza, że jeśli nie przejmujesz się podkreślaniem, możesz po prostu zmienić opis terminfo terminala, aby użyć sekwencji ucieczki kursywą enter / exit zamiast podkreślenia enter / exit i uzyskać kursywę.)
źródło
ESC
nie wstawia znaku zmiany znaczenia. Możesz nacisnąć,Ctrl+V ESC
aby wstawić, ale rzadko musisz. Np. Znak zmiany znaczenia reprezentowany jest przez\E
źródło w terminfo; w terminalu (z bash / ksh / zsh), spróbujecho $'\e[3mhello\e[0m'
.Dodaję tę odpowiedź, ponieważ pozostałe są nieaktualne. Emacs 24.5 poprawnie wyświetla twarze kursywą w terminalach.
Jest to emacs 24.5 działający w terminalu (
emacs -nw
). Terminal jest,uxvrt
a konfiguracja w moim.Xdefaults
to:źródło
Odnośnie emacsa, który nie może używać kursywy w emulatorach terminali, które zapewniają tę funkcjonalność: Tak jest błąd emacsa # 9652, który został naprawiony przez Chong Yidong 10 czerwca 2012 r.
Poprawka nie występuje w żadnej wydanej wersji emacsa, ale na przykład w pakiecie emacs-snapshot z emacs.naquadah.org .
źródło