This looks great, please apply this patch. Thanks,
Alan Schmitt <alan.schm...@polytechnique.org> writes: > Hello, > > It is not currently possible to asynchronously export the results of the > evaluation an ocaml babel block because the evaluation needs to start a > toplevel > and thus asks the user what program to run. This of course blocks the > asynchronous export. > > The attached patch adds a custom variable to specify the name of the command > to run, and directly calls the tuareg function that starts the toplevel given > the command. > > For some context, here is the code that starts the caml session. > > #+BEGIN_SRC emacs-lisp > (defvar tuareg-interactive-buffer-name) > (defun org-babel-prep-session:ocaml (session params) > "Prepare SESSION according to the header arguments in PARAMS." > (require 'tuareg) > (let ((tuareg-interactive-buffer-name (if (and (not (string= session > "none")) > (not (string= session > "default")) > (stringp session)) > session > tuareg-interactive-buffer-name))) > (save-window-excursion > (if (fboundp 'tuareg-run-caml) (tuareg-run-caml) (tuareg-run-ocaml)) > (get-buffer tuareg-interactive-buffer-name)))) > #+END_SRC > > And this is the code from tuareg that is run. > > #+BEGIN_SRC emacs-lisp > ;;;###autoload > (defun tuareg-run-ocaml () > "Run an OCaml toplevel process. I/O via buffer `*ocaml-toplevel*'." > (interactive) > (tuareg-run-process-if-needed) > (display-buffer tuareg-interactive-buffer-name)) > > (defun tuareg-run-process-if-needed (&optional cmd) > "Run an OCaml toplevel process if needed, with an optional command name. > I/O via buffer `*ocaml-toplevel*'." > (if cmd > (setq tuareg-interactive-program cmd) > (unless (comint-check-proc tuareg-interactive-buffer-name) > (setq tuareg-interactive-program > (read-shell-command "OCaml toplevel to run: " > tuareg-interactive-program)))) > (unless (comint-check-proc tuareg-interactive-buffer-name) > (let ((cmdlist (tuareg-args-to-list tuareg-interactive-program)) > (process-connection-type nil)) > (set-buffer (apply (function make-comint) "ocaml-toplevel" > (car cmdlist) nil (cdr cmdlist))) > (tuareg-interactive-mode) > (sleep-for 1)))) > #+END_SRC > > With this patch (and setting `org-confirm-babel-evaluate' to nil), I'm able to > export documents requiring the evaluation of caml code asynchronously. > > Alan > > -- Eric Schulte http://cs.unm.edu/~eschulte