Niedawno przeczytałem Uruchamianie pocisków w Emacsie i spędziłem trochę czasu, aby dostosować mój skomplikowany monit Zsh do pracy z ograniczonymi możliwościami M-x shell
i M-x ansi-term
.
Po tym wysiłku jestem w końcu w stanie korzystać z Zsh z poziomu Emacsa, jednak z pewną niedogodnością M-x ansi-term
. 4m
Przed monitem zawsze widzę zbłąkany tekst .
Jak widać, zjawisko to wydaje się być niezależne od faktycznego podpowiedzi. Pojawia się również z dowolnymi wbudowanymi monitami, nawet tymi prostymi, które nie używają żadnych fantazyjnych znaków kontrolnych. W rzeczywistości dzieje się tak nawet z domyślnym monitem, tzn. Jeśli uruchomię Zsh bez mojego .zshrc
.
Cóż, to naprawdę tylko niewielka uciążliwość i nie miałbym nic przeciwko, gdybym nie był w stanie się go pozbyć - i M-x shell
tak wolę przede wszystkim tam, gdzie ten problem nie występuje.
Ale naprawdę denerwuje mnie, że nie udało mi się znaleźć przyczyny tego problemu, mimo że naprawdę próbowałem go debugować. Muszę jednak powiedzieć, że moje rozumienie terminali jest raczej ograniczone, więc mogłem przeoczyć to, co oczywiste.
Korzystam z systemu OS X 10.10. My Emacs ma 25.0.50, buduj prosto z bagażnika z Homebrew, bez specjalnych flag. Zsh to 5.0.5, tak jak w Yosemite, ale problem występuje również w wersji 5.0.7 zainstalowanej przez Homebrew.
Czy ktoś może rzucić światło na ten problem?
system-user-terminfo
nic nie zmieniłem. Zmiana$TERM
rozwiązała problem, ale to nie może być rozwiązanie, prawda? W końcu to kłamstwo, w gruncie rzeczy:ansi-term
nie ma Xtermu i zdecydowanie nie obsługuje 256 kolorów.\x1b[37;4m
Określa biały kolor z 37 i podkreślony tekst z 4. Nie mogę odtworzyć twojego problemu. Mój zsh to 5.0.7, a 'echo $ TERM' w ansi-term daje mi eterm-kolor , moje emacs to 24.4.1 . Przetestowałem również czystą domyślną wersję „env HOME = ~ / tmp / emacstest emacs -Q” i nie widzę żadnych problemów.emacs -Q
konfiguracją Zsh i wcale.Odpowiedzi:
Najwyraźniej ten problem jest spowodowany brakującym terminfo dla
eterm-color
. Udało mi się rozwiązać problem, postępując zgodnie z instrukcjami w tej odpowiedzi, aby zainstalować odpowiedni wpis w bazie danych terminfo. Konkretnie:Nadal nie jestem pewien, dlaczego jest to w ogóle potrzebne.
term.el
faktycznie eksportuje$TERMINFO
zmienną wskazującą do tego katalogu, więc powłoka powinna być w stanie znaleźć terminfo. Zsh wydaje się ignorować katalog, chociaż…Wygląda
~/.terminfo
jednak na to, więc powyższe polecenie udostępnia pozycję terminfo dla Zsh.Byłbym zadowolony, gdyby ktoś mógł podać lepsze wyjaśnienie lub rozwiązanie, które nie wymaga ręcznej interwencji.
źródło