J'ai récemment lu Running Shells in Emacs , et je passe un peu de temps à adapter mon invite Zsh élaborée pour qu'elle fonctionne avec les capacités limitées de M-x shell
et M-x ansi-term
.
Suite à cet effort, je peux enfin utiliser Zsh depuis Emacs, mais il y a une nuisance, quoique mineure M-x ansi-term
. Je vois toujours le texte errant 4m
avant l'invite.
Comme vous pouvez le voir, ce phénomène semble être indépendant du thème actuel de l'invite. Il apparaît également avec toutes les invites intégrées, même les plus simples qui n'utilisent aucun caractère de contrôle de fantaisie. En fait, cela arrive même avec l'invite par défaut, c'est-à-dire si je démarre Zsh sans mon .zshrc
.
Eh bien, c'est vraiment juste une nuisance mineure, et cela ne me dérangerait pas vraiment si je ne pouvais pas m'en débarrasser - je préfère surtout de M-x shell
toute façon, où ce problème ne se produit pas.
Mais cela m'énerve vraiment de ne pas avoir pu trouver la cause de ce problème, même si j'ai vraiment essayé de le déboguer. Je dois dire, cependant, que ma compréhension des terminaux est assez limitée, donc j'ai peut-être manqué l'évidence.
Je suis sur OS X 10.10. Mon Emacs est 25.0.50, construit directement à partir du tronc avec Homebrew, et aucun drapeau spécial. Zsh est 5.0.5, comme inclus avec Yosemite, mais le problème se produit également avec 5.0.7 installé via Homebrew.
Quelqu'un peut-il faire la lumière sur cette question?
system-user-terminfo
n'a rien changé. Changer a$TERM
résolu le problème, mais cela ne peut pas être la solution, n'est-ce pas? Après tout, c'est un mensonge, essentiellement:ansi-term
n'est pas xterm et ne prend certainement pas en charge 256 couleurs.\x1b[37;4m
spécifie une couleur blanche avec 37 et un texte souligné avec 4. Je ne peux pas reproduire votre problème. Mon zsh est 5.0.7 et 'echo $ TERM' en ansi-term me donne une couleur eterm , mon emacs est 24.4.1 . J'ai également testé la version par défaut propre 'env HOME = ~ / tmp / emacstest emacs -Q' et je ne vois aucun problème.emacs -Q
et sans configuration Zsh du tout.Réponses:
Apparemment, ce problème est dû à l' absence de terminfo pour
eterm-color
. J'ai réussi à résoudre le problème en suivant les instructions de cette réponse pour installer une entrée appropriée dans la base de données terminfo. Plus précisément:Je ne sais toujours pas pourquoi cela est nécessaire.
term.el
exporte en fait la$TERMINFO
variable pointant vers ce répertoire, donc le shell devrait pouvoir trouver le terminfo. Zsh semble ignorer le répertoire, cependant…Il regarde
~/.terminfo
cependant, donc la commande ci-dessus rend l'entrée terminfo disponible pour Zsh.Je serais heureux si quelqu'un pouvait fournir une meilleure explication ou une solution qui ne nécessite pas d'intervention manuelle.
la source