This checklist will help you diagnose problems with your ob-async
setup.
Execute the src blocks one at a time with ctrl-c ctrl-c
to
ensure that ob-async-org-babel-execute-src-block
is used for files
with the :async header-arg. If by the end of this file your issue
isn’t solved, open an issue on Github with the contents of this file.
First, make sure you can execute emacs-lisp src blocks without the async header argument. Otherwise you’ve got bigger problems, and none of this is going to work.
(message "Yes, I can synchronously execute emacs-lisp from an org-babel src block.")
From where are you loading ob-async
?
(symbol-file 'ob-async-org-babel-execute-src-block)
(message "PID: %s\nEmacs version: %s\norg version: %s\nPath to org: %s" (emacs-pid) (emacs-version) (org-version) (symbol-file 'org-version))
Execution of the :async block occurs in an Emacs subprocess. Are you using a consistent version of emacs and org-mode across both processes? Compare the output of this block the output of the previous block.
(message "PID: %s\nEmacs version: %s\norg version: %s\nPath to org: %s" (emacs-pid) (emacs-version) (org-version) (symbol-file 'org-version))
The Emacs subprocess inherits the value of org-babel-load-languages
from its parent. Here are the languages which are loaded in the
subprocess. If you don’t see your desired language here, it means you
never added it to org-babel-load-languages
(in the parent process).
org-babel-load-languages
If you’re still facing problems, turn on async debugging.
(setq async-debug t)
If possible, replace the following block with a block that reproduces your problem, then execute it.
echo FooBar
echo $input_var
This is the elisp that was sent to the Emacs subprocess. If there’s still nothing obviously wrong, file an issue on GitHub and include the contents of this file as a Gist.
(switch-to-buffer "*Messages*")
(goto-char (point-max))
(re-search-backward "Transmitting sexp {{{\\([^}]+\\)}}}")
(match-string 1)
If your issue still hasn’t been resolved, describe it here.
I want to pass the output of one block as a variable to another. I have verified that this works if the block that sets the variable isn’t async, as I’ve reproduced below. I would like it to work if that block is async.
echo FooBar
echo $input_var