The problem is located in org-babel-get-src-block-info
.
The function org-babel-params-from-properties
is used there. Its doc-string is:
Retrieve parameters specified as properties.
Return a list of association lists of source block params
specified in the properties of the current outline entry.
But they do not say what the current outline entry is. In org-babel-get-src-block-info
they assumed that the current outline entry would be that one at point but org-babel-params-from-properties
uses also org-babel-current-src-block-location
to retrieve parameters from there.
Even if (point)
is 1 for the first source block add3
the variable org-babel-current-src-block-location
in org-babel-params-from-properties
points to the source block whatIsN
.
So not the header-args
for add3
are collected by org-babel-params-from-properties
but those of whatIsN
.
The consequence is that add3
gets the header arg n=add3(5)
from the drawer. Naturally, that leads to infinite recursion.
The funny thing is that they already tried to make sure that org-babel-params-from-properties
gets the right header args from the location of datum
.
I cite a small section of org-babel-get-src-block-info
:
;; If DATUM is provided, make sure we get node
;; properties applicable to its location within
;; the document.
(org-with-point-at (org-element-property :begin datum)
(org-babel-params-from-properties lang))
You can avoid the error if you additionally let
-bind org-babel-current-src-block-location
to the location of datum
:
;; If DATUM is provided, make sure we get node
;; properties applicable to its location within
;; the document.
(let ((org-babel-current-src-block-location (org-element-property :begin datum)))
(org-with-point-at org-babel-current-src-block-location
(org-babel-params-from-properties lang)))
I am not sure about the full consequences of that change through.
Note that I sent a bug-report to [email protected].
EDIT: I already got a response on [email protected] from Charles Berry. He wrote that he could not reproduce the problem on Orgmode 9.1.14.
I had a quick look at the current master of the orgmode repository. They fixed the bug by substituting the reference to org-babel-current-src-block-location
with (point)
in org-babel-params-from-properties
.
Nevertheless, the problem is still present in the current maint branch of orgmode.
The problematic reference of org-babel-current-src-block-location
within org-babel-params-from-properties
is even present in the release_9.14
branch of orgmode. In spite of what Charles said.
toggle-debug-on-error
you'll see that org-babel get's stuck parsing the expression n=add3(5).master
of orgmode but not in themaint
branch of orgmode.