Miring di Emacs pada terminal teks (rxvt-unicode)

15

Saya menggunakan Emacs yang berjalan di urxvt, dan saya tidak bisa membuat huruf miring bekerja di Emacs meskipun terminal mendukungnya.

Inilah pengaturan saya saat ini:

  • Saya belum menetapkan $TERM, jadi ini adalah default rxvt-unicode-256color.
  • Saya ~/.Xdefaultsmendefinisikan URxvt.font: xft:Inconsolata:size=15sebagai font terminal.
  • Menjalankan echo '\e[3mitalics\e[m'di shell memang hasil italics, sehingga miring di terminal do kerja, pada dasarnya.

Ketika menyesuaikan “Miring” wajah, itu tidak ada bedanya apakah saya pilih italic, oblique, normal, atau romansebagai nilai untuk Slantatribut, juga tidak jika saya tidak mengatur Slantatribut sama sekali. Saya juga mencoba ini dalam kombinasi dengan mendefinisikan secara eksplisit URxvt.italicFontdi saya ~/.Xdefaults, tetapi tidak berhasil.

Berani bekerja dengan baik, cetak miring tidak bekerja sama sekali. Ada ide?

igor
sumber
Saya tidak menyadari bahwa itu mungkin untuk memiliki huruf miring di terminal. Terima kasih untuk itu.
wfaulk

Jawaban:

10

Singkatnya: Anda tidak dapat menggunakan versi Emacs saat ini (diperiksa dengan 23.2), tetapi lihat di bawah untuk kemungkinan solusinya.

Cerita yang lebih panjang: dukungan untuk huruf miring dikodekan dalam basis data terminfo sebagai kemampuan sitm(masukkan huruf miring) dan ritm(keluar huruf miring) (juga disebut ZHdan ZRuntuk kompatibilitas termcap); Anda dapat memeriksa apakah terminal Anda mendukungnya melalui:

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

Jika tidak ada, maka rxvt-unicode-256colordeskripsi terminal Anda tidak memberikan informasi kepada perpustakaan ncurses tentang kemampuan cetak miring terminal dan Anda mungkin ingin menambahkannya, jika tidak, tidak ada aplikasi TTY yang dapat menggunakan italics.

Namun, fungsi turn_on_face(dalam sumber Emacs, file src/term.cpada baris 1919-2012), yang mengelola tampilan terminal, tidak memberikan dukungan untuk cetak miring: ia memeriksa atribut wajah yang tebal / redup / berkedip / bergaris bawah. Sebenarnya, tidak ada atribut "miring" yang disandikan di struct face.

Memang, Emacs saya (versi 23.1 pada Ubuntu 11.04 natty) menunjukkan wajah miring (yang ditampilkan dengan benar di X11) seperti yang digarisbawahi dalam TTY. (Yang berarti bahwa, jika Anda tidak peduli dengan garis bawah, Anda bisa mengubah uraian terminfo terminal Anda untuk menggunakan urutan lolos / enter italics alih-alih yang masuk / keluar yang digarisbawahi dan dapatkan huruf miring.)

Riccardo Murri
sumber
Jawaban ini terlihat bagus, tetapi saat ini saya tidak dapat mengujinya karena satu-satunya instal linux yang saya miliki adalah sebagai tamu di host win7. Akibatnya saya mengalami kesulitan untuk menguji ini. Secara khusus saya tidak bisa memasukkan kode escape ascii. Jika orang lain dapat menguji untuk mengkonfirmasi atau menjelaskan apa yang mungkin saya lakukan salah dengan urutan melarikan diri saya akan dengan senang hati memberikan hadiah.
vschum
@vschum Jika Anda mencoba mengubah basis data terminfo Anda, jawaban ini akan membantu. Kami tidak dapat membantu dengan kesulitan Anda kecuali Anda menjelaskannya; Anda bisa bertanya tentang mereka.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles Sebenarnya, ini lebih berkaitan dengan jawaban ini . Saya tidak tahu bagaimana cara memasukkan urutan untuk menguji apakah huruf miring berfungsi atau tidak. Ketika saya mengetik ESC [3 m tidak ada yang muncul di terminal.
vschum
2
@vschum Menekan ESCtidak menyisipkan karakter pelarian. Anda dapat menekan Ctrl+V ESCuntuk memasukkan satu, tetapi Anda jarang perlu melakukannya. Misalnya karakter escape diwakili oleh \Edalam sumber terminfo; di terminal (dengan bash / ksh / zsh), coba echo $'\e[3mhello\e[0m'.
Gilles 'SANGAT berhenti menjadi jahat'
4

Saya menambahkan jawaban ini karena yang lain sudah ketinggalan zaman. Emacs 24.5 tidak menampilkan wajah miring dengan benar di terminal.

masukkan deskripsi gambar di sini

Ini adalah emacs 24.5 yang berjalan di terminal ( emacs -nw). Terminal adalah uxvrtdan pengaturan di saya .Xdefaultsadalah:

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

Mengenai emacs yang tidak dapat memanfaatkan huruf miring di emulator terminal yang menyediakan fungsi ini: Ini adalah bug emacs # 9652 yang diperbaiki oleh Chong Yidong pada 10 Juni 2012.

Perbaikannya tidak dalam versi emacs yang dirilis, tetapi misalnya dalam paket snapshot emacs dari emacs.naquadah.org .

Gregor Zattler
sumber
Informasi ini mungkin kedaluwarsa ....
Samuel Edwin Ward