Skip to content

Instantly share code, notes, and snippets.

@dzfranklin
Created November 24, 2019 03:36
Show Gist options
  • Save dzfranklin/95a552768663878a1f852c07eddad484 to your computer and use it in GitHub Desktop.
Save dzfranklin/95a552768663878a1f852c07eddad484 to your computer and use it in GitHub Desktop.
For issue report to ob-async about issue with :var

Issue Reporting Checklist

This checklist will help you diagnose problems with your ob-async setup.

Instructions

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.")

Checklist

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)

Bug Description

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment