diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2017-03-18 10:29:33 +0100 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2017-03-18 10:29:33 +0100 |
commit | 36c7cfe9eb50d5a3d6d21e59707f1c779f549092 (patch) | |
tree | 97e101271130d4b0de2a3e25d6169a9553a9eaa3 | |
parent | 3a9ac1f035504839f86af137a1a5877c0131dd82 (diff) | |
parent | b72920344f7c940701b85aa157e1a1c88d93e4fd (diff) | |
download | org-mode-36c7cfe9eb50d5a3d6d21e59707f1c779f549092.tar.gz |
Merge branch 'maint'
-rw-r--r-- | lisp/ob-exp.el | 20 | ||||
-rw-r--r-- | testing/lisp/test-ob-exp.el | 12 |
2 files changed, 30 insertions, 2 deletions
diff --git a/lisp/ob-exp.el b/lisp/ob-exp.el index 53a16f0..d966cd9 100644 --- a/lisp/ob-exp.el +++ b/lisp/ob-exp.el @@ -160,8 +160,24 @@ this template." (goto-char (point-min)) (while (re-search-forward regexp nil t) (unless (save-match-data (org-in-commented-heading-p)) - (let* ((element (save-match-data (org-element-context))) - (type (org-element-type element)) + (let* ((object? (match-end 1)) + (element (save-match-data + (if object? (org-element-context) + ;; No deep inspection if we're + ;; just looking for an element. + (org-element-at-point)))) + (type + (pcase (org-element-type element) + ;; Discard block elements if we're looking + ;; for inline objects. False results + ;; happen when, e.g., "call_" syntax is + ;; located within affiliated keywords: + ;; + ;; #+name: call_src + ;; #+begin_src ... + ((and (or `babel-call `src-block) (guard object?)) + nil) + (type type))) (begin (copy-marker (org-element-property :begin element))) (end diff --git a/testing/lisp/test-ob-exp.el b/testing/lisp/test-ob-exp.el index 4b96b72..c7c7a7b 100644 --- a/testing/lisp/test-ob-exp.el +++ b/testing/lisp/test-ob-exp.el @@ -584,6 +584,18 @@ src_emacs-lisp{(+ 1 1)}" (org-babel-exp-process-buffer)) (buffer-string))))) +(ert-deftest ob-exp/src-block-with-affiliated-keyword () + "Test exporting a code block with affiliated keywords." + ;; Pathological case: affiliated keyword matches inline src block + ;; syntax. + (should + (equal "#+name: call_foo\n#+BEGIN_SRC emacs-lisp\n42\n#+END_SRC" + (org-test-with-temp-text + "#+name: call_foo\n#+BEGIN_SRC emacs-lisp\n42\n#+END_SRC" + (let ((org-export-use-babel t)) + (org-babel-exp-process-buffer)) + (buffer-string))))) + (provide 'test-ob-exp) |