* lisp/org-element.el (org-element-babel-call-parser): Fix parsing recursive babel calls. * testing/lisp/test-org-element.el (test-org-element/babel-call-parser): Add test.
@@ -1633,7 +1633,7 @@ containing `:call', `:inside-header', `:arguments',
(if (eobp) (point) (line-beginning-position))))
(valid-value
(string-match
- "\\([^()\n]+?\\)\\(?:\\[\\(.*?\\)\\]\\)?(\\(.*?\\))[ \t]*\\(.*\\)"
+ "\\([^()\n]+?\\)\\(?:\\[\\(.*?\\)\\]\\)?(\\(.*\\))[ \t]*\\(.*\\)"
value)))
(list 'babel-call
(nconc
@@ -410,11 +410,15 @@ Some other text
(equal ":results output"
(org-test-with-temp-text "#+CALL: test[:results output]()"
(org-element-property :inside-header (org-element-at-point)))))
- ;; Parse arguments.
+ ;; Parse arguments, which can be nested.
(should
(equal "n=4"
(org-test-with-temp-text "#+CALL: test(n=4)"
(org-element-property :arguments (org-element-at-point)))))
+ (should
+ (equal "test()"
+ (org-test-with-temp-text "#+CALL: test(test())"
+ (org-element-property :arguments (org-element-at-point)))))
;; Parse end header.
(equal ":results html"