Actualización: La pregunta aún no tiene una respuesta satisfactoria.IPython en Emacs. Evaluación rápida del código
Me gustaría "enviar" fragmentos de código a un intérprete de IPython en Emacs 23.2 (Linux). Suponiendo que ya he iniciado un shell IPython en un búfer en Emacs (por ejemplo, usando Python-mode.el
y IPython.el
), ¿hay alguna manera de seleccionar una región en un búfer diferente y "enviar" esta región al shell IPython ya iniciado?
He tratado C-c C-c
(enviar-buffer-a-shell) y C-c |
(enviar de región a-shell), pero esto sólo funciona siempre y cuando el código está escrito en Python y no en IPython (IPython puede ejecutar el código de Python). La razón parece ser que, para ambos comandos, Emacs crea un archivo temporal con la extensión .py
(a diferencia de la extensión .ipy
), que luego es interpretada por IPython como "código específico de Python". Esto me impide usar funciones específicas de IPython , como comandos mágicos.
En una nota aparte, también he leído que Emacs proporciona M-| ('shell-command-on-region')
para ejecutar regiones seleccionadas en un shell. Para hacer esto con un intérprete de IPython, intenté configurar shell-file-name
en mi ruta de IPython. Sin embargo, cuando corro después de seleccionar una región, Emacs me incita la siguiente:
comando de Shell en la región:
y si a continuación escribo RET
, consigo la página del manual IPython en el *Shell Command Output*
buffer, sin la región que se está ejecutando. ¿Hay algún comando específico de IPython que pueda usar para M-| ('shell-command-on-region')
para que IPython ejecute mi código?
Gracias!
Suponiendo que puede ejecutar ipython directamente, sospecho que realmente quiere irse 'shell-file-name' solo, y simplemente ingrese el nombre del ejecutable ipython en el prompt. Ese es el uso normal de 'shell-command-on-region', en cualquier caso. La historia del minibúfer recordará ese comando, por lo que puede repetirlo fácilmente con 'M- | M-p RET'. No estoy seguro de cómo funciona 'call-process-region', pero imagino que envía el texto de la región al comando como stdin, por lo que siempre que el comando ipython pueda tratar con la recepción de un script de esa manera, creo que debería para trabajar (aunque si no, podría representar el texto de ayuda). – phils
Gracias phils, esa solución funciona, pero requiere abrir un nuevo shell de IPython (que toma algo de tiempo para comenzar) cada vez que necesito probar un fragmento de código –