summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2015-07-03 00:33:45 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2015-07-03 00:33:45 +0200
commit1221715a74b73dcf36676c7f64348dea09543205 (patch)
tree684265f7413945f8cabf8ec6ea12678477ddde49
parent2c66e40c6755c042bc6bd0632058ccdba009f50f (diff)
downloadorg-mode-1221715a74b73dcf36676c7f64348dea09543205.tar.gz
org-element: Fix parsing recursive babel calls
* 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.
-rw-r--r--lisp/org-element.el2
-rw-r--r--testing/lisp/test-org-element.el6
2 files changed, 6 insertions, 2 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 29f714e..aa6e8d0 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -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
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index 7e46096..9d9ac86 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -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.
(should
(equal ":results html"