Acabo de actualizar a la última versión de IPython y ahora algo está mal cuando lo uso en emacs.
Cuando se usa en un terminal normal, funciona bien (colores, finalización de tabulación, etc.), sin embargo, ya sea en M-x eshello M-x shell, en lugar de generar In [1]:, realmente emite [?12l[?25hy se Out[1]envía a [J[?7h[?12l[?25h[?2004l[?7hOut[1]:.
Tal vez sea una característica del terminal que no está disponible en los emacs utilizados por IPython, pero me gustaría saber cuál es.
Terminal.app:
In [1]: 2+2
Out[1]: 4
Emacs
[?12l[?25h2+2
[J[?7h[?12l[?25h[?2004l[?7hOut[1]: 4

Respuestas:
IPython 5 tiene una nueva interfaz de terminal, que no es compatible con los shells inferiores de Emacs. Para solucionarlo, agregue la
--simple-promptbandera al comando IPython:De la documentación:
Referencia: http://ipython.readthedocs.io/en/stable/whatsnew/version5.html#id1
fuente
python-shell-interpreter-args. Si no has probado Elpy, deberías echarle un vistazo. Le permite escribir las definiciones de sus funciones en un búfer separado y pasarlas fácilmente al intérprete con solo un comando. En este caso, puede utilizar todos los comandos de edición de Emacs y obtener una sesión interactiva, lo mejor de ambos mundos.readlineaprompt_toolkiten IPython 5.prompt_toolkitno es compatible con los shells de Emacs, que funcionan de manera diferente aterm: hasta donde yo sé, los shells ejecutan terminales tontos con el propósito de funcionar más como un búfer estándar de Emacs, mientras quetermejecuta un emulador de terminal completo real. Parece que los shells son compatibles con,readlinepero no conprompt_toolkit, lo que explicaría el aviso que muestra las secuencias de escape. Comotermejecuta un terminal completo, interpreta correctamente las secuencias de escape.Hay una manera de abrir IPython en el shell de emacs sin usar --simple-prompt
Después de esto, debería poder abrir ipython directamente en el shell de emacs sin experimentar el problema de visualización.
Sin embargo, hay un problema más en mi caso: por alguna razón, incluso después de que la visualización se volvió correcta, todavía no podía copiar y pegar directamente algunas definiciones de clase de varias líneas en ipython en el shell de emacs. Mi solución actual es usar el comando Ipython% paste. Si tiene mejores enfoques, hágamelo saber.
PD: estoy usando Ubuntu 16.04. Alguien usa MacOS dice que rompe IPython.
fuente