Hi Nicolas,
Here is a blog post that explains the changes I did. I still have one
improvement to do (but don't how it could be done or even if it can be
done) which is explained at the end of the post:
http://fgiasson.com/blog/index.php/2016/04/05/using-clojure-in-org-mode-and-implementing-asynchronous-processing/
Thanks for your help, it is now working the way I need it to.
This looks interesting. Thank you for sharing your result.
Org Babel would benefit from a generic asynchronous execution mechanism.
See for example <http://permalink.gmane.org/gmane.emacs.orgmode/101757>.
Indeed, it would be interesting to generalize such a generic mechanism
directly in Babel, and not in each OB plugins.
However, I am not sure neither how generic such a solution could be, and
what would still be required to implement in each OB plugin. My (very
little) experience so far is the Python prototype that John wrote, and
then my analysis of the Clojure OB plugin. As I was explaining in this
blog post, things are quite different between the two. In Python, it
appears that one has to run a sub-process, in Clojure this is not
necessary since we benefit the nREPL that handle that.
So far, the best idea about how to present async process I think is what
John was proposing with the new window. Otherwise I still wonder about
having a real background process for this thing to run such that one can
continue to write things in the Org buffer while a code block is running
in background. But as I explained, I will have to seriously look into
Elisp in order to assess the full scope of such a task.
So, if anyone feels like discussing the details of an implementation of
such a thing, please chime in.
So far this is the only thing I have to say about that. In mean time I
will fix my other patch, and then I will submit another one for this
async feature (which will probably require much more review from your part).
Thanks,
Fred