gregsexton / ob-ipython

org-babel integration with Jupyter for evaluation of (Python by default) code blocks
739 stars 109 forks source link

fix broken interrupt-kernel on unix #163

Closed jackkamm closed 6 years ago

jackkamm commented 6 years ago

This fixes https://github.com/gregsexton/ob-ipython/issues/115 (broken ob-ipython-interrupt-kernel) on linux and (probably) mac.

To interrupt the kernel, SIGINT needs to be sent to the appropriate process. This process is not the "jupyter console" process itself, but rather a child process of it ("python -m ipykernel_launcher ..."). The old code was sending SIGINT to the wrong process.

As the process to signal is not a direct subprocess of emacs, I had to resort to unix tools to interrupt it, so this won't work on windows. An alternative approach might be to start the kernel with ipython kernel instead of jupyter console, then it would be a direct subprocess of emacs and we could interrupt it with (interrupt-process) as before.

Note it currently appears impossible to interrupt remote kernel, as noted in https://github.com/jupyter/jupyter_console/issues/150

gregsexton commented 6 years ago

Awesome work, thanks for fixing this.