Menyasar 4m sebelum meminta dengan Zsh di Mx ansi-term

10

Saya baru-baru ini membaca Running Shells di Emacs , dan meluangkan waktu untuk menyesuaikan Zsh prompt saya untuk bekerja dengan kemampuan terbatas M-x shelldan M-x ansi-term.

Setelah upaya ini, saya sekarang akhirnya dapat menggunakan Zsh dari dalam Emacs, namun ada — meskipun minor — gangguan M-x ansi-term. Saya selalu melihat teks yang menyimpang 4msebelum prompt.

Teks liar sebelum prompt

Seperti yang Anda lihat, fenomena ini tampaknya tidak tergantung dari tema prompt yang sebenarnya. Itu juga muncul dengan salah satu petunjuk bawaan, bahkan yang sederhana yang tidak menggunakan karakter kontrol mewah. Sebagai soal fakta, itu bahkan terjadi dengan prompt default, yaitu jika saya memulai Zsh tanpa saya .zshrc.

Yah, itu benar-benar hanya gangguan kecil, dan saya tidak akan keberatan jika saya tidak bisa menghilangkannya — saya lebih suka M-x shell, di mana masalah ini tidak terjadi.

Tapi itu benar-benar mengganggu saya bahwa saya belum dapat menemukan penyebab masalah ini, meskipun saya benar-benar mencoba untuk men-debug itu. Saya harus mengatakan, bahwa pemahaman saya tentang terminal agak terbatas, jadi saya mungkin telah melewatkan yang sangat jelas.

Saya menggunakan OS X 10.10. Emacs saya adalah 25.0.50, dibuat langsung dari bagasi dengan Homebrew, dan tidak ada bendera khusus. Zsh adalah 5.0.5, seperti yang disertakan dengan Yosemite, tetapi masalah ini juga terjadi dengan 5.0.7 diinstal melalui Homebrew.

Adakah yang bisa menjelaskan masalah ini?

lunaryorn
sumber
Cobalah untuk mengatur ekspor TERM = xterm-256color di .zshrc atau (setq system-using-terminfo nil Anda) .
kmicu
system-user-terminfotidak mengubah apa pun. Mengubah $TERMmemperbaiki masalah, tetapi itu tidak bisa menjadi solusi, bukan? Bagaimanapun, itu bohong, pada dasarnya: ansi-termada xterm, dan pasti tidak mendukung 256 warna.
lunaryorn
4m adalah artefak dari kode pelarian ANSI yang digunakan untuk mendefinisikan warna misalnya \x1b[37;4mmenentukan warna putih dengan 37 dan teks bergaris bawah dengan 4. Saya tidak dapat mereproduksi masalah Anda. Zsh saya adalah 5.0.7 dan 'echo $ TERM' dalam istilah ansi memberi saya warna eterm , emacs saya adalah 24.4.1 . Saya menguji juga membersihkan versi standar 'env HOME = ~ / tmp / emacstest emacs -Q' dan saya tidak dapat melihat masalah.
kmicu
@kmicu Pada OS X 10.10, saya dapat secara konsisten mereproduksi masalah dengan emacs -Qdan tanpa konfigurasi Zsh sama sekali.
lunaryorn

Jawaban:

10

Rupanya masalah ini disebabkan oleh terminfo yang hilang untuketerm-color . Saya berhasil memperbaiki masalah dengan mengikuti instruksi dalam jawaban itu untuk menginstal entri yang sesuai ke dalam basis data terminfo. Secara khusus:

$ tic -o ~/.terminfo /usr/local/share/emacs/25.0.50/etc/e/eterm-color.ti

Saya masih tidak yakin mengapa itu diperlukan sama sekali. term.elsebenarnya mengekspor $TERMINFOvariabel yang menunjuk ke direktori itu, jadi shell harus dapat menemukan terminfo. Zsh tampaknya mengabaikan direktori, meskipun ...

Itu memang terlihat ~/.terminfo, jadi, perintah di atas membuat entri terminfo tersedia untuk Zsh.

Saya akan senang jika ada yang bisa memberikan penjelasan yang lebih baik atau solusi yang tidak memerlukan intervensi manual.

lunaryorn
sumber