Je viens de mettre à jour la dernière version d'IPython et maintenant, quelque chose ne va pas quand je l'utilise dans emacs.
Lors de son utilisation dans un terminal régulier , il fonctionne très bien (couleurs, complétion par tabulation, etc.), mais soit dans M-x eshell
ou M-x shell
, au lieu de outputing In [1]:
, il en fait des sorties [?12l[?25h
et des Out[1]
sorties [J[?7h[?12l[?25h[?2004l[?7hOut[1]:
.
Peut-être que certaines fonctionnalités du terminal ne sont pas disponibles sur emacs utilisé par IPython, mais j'aimerais savoir de quoi il s'agit.
Terminal.app:
In [1]: 2+2
Out[1]: 4
Emacs
[?12l[?25h2+2
[J[?7h[?12l[?25h[?2004l[?7hOut[1]: 4
Réponses:
IPython 5 a une nouvelle interface de terminal incompatible avec les shells inférieurs d’Emacs. Pour résoudre ce problème, ajoutez l'
--simple-prompt
indicateur à la commande IPython:De la documentation:
Référence: http://ipython.readthedocs.io/fr/stable/whatsnew/version5.html#id1
la source
python-shell-interpreter-args
. Si vous n'avez pas essayé Elpy, vous devriez y jeter un coup d'œil. Il vous permet d'écrire vos définitions de fonction dans un tampon séparé et de les passer facilement à l'interpréteur avec une seule commande. Dans ce cas, vous pouvez utiliser toutes les commandes d'édition d'Emacs et obtenir une session interactive, le meilleur des deux mondes.readline
àprompt_toolkit
IPython 5.prompt_toolkit
n’est pas compatible avec les shells d’Emacs, qui fonctionnent différemment determ
: pour autant que je sache, les shells utilisent des terminaux stupides dans le but de fonctionner plus comme un tampon Emacs standard, alors qu’ilterm
exécute un véritable émulateur de terminal. Il semble que les obus soient compatibles avecreadline
mais pas avecprompt_toolkit
, ce qui expliquerait l'invite affichant les séquences d'échappement. Depuisterm
exécute un terminal complet, il interprète correctement les séquences d'échappement.Il existe un moyen d'ouvrir IPython dans le shell emacs sans utiliser --simple-prompt
Après cela, vous devriez pouvoir ouvrir ipython directement dans le shell emacs sans rencontrer le problème d'affichage.
Il y a cependant un autre problème dans mon cas: pour une raison quelconque, même après que l'affichage soit devenu correct, je ne pouvais toujours pas copier-coller directement certaines définitions de classe multiligne dans ipython dans le shell emacs. Ma solution actuelle consiste à utiliser la commande Ipython% paste. Si vous avez de meilleures approches, s'il vous plaît faites le moi savoir.
PS: J'utilise Ubuntu 16.04. Quelqu'un utilise MacOS dit qu'il casse IPython.
la source