summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Ecay <aaronecay@gmail.com>2015-11-07 20:09:34 +0000
committerAaron Ecay <aaronecay@gmail.com>2015-11-07 20:31:35 +0000
commitf0380f54c1d002e5b70f2f179fb94445b3e25ed5 (patch)
treed551d21fd21c964293cb419772329bcb70237a6f
parent3f6e71e62e558f4a1c4316c9ecf0519a905e87f3 (diff)
downloadorg-mode-f0380f54c1d002e5b70f2f179fb94445b3e25ed5.tar.gz
ob-ref: fix bug
* lisp/ob-ref.el (org-babel-ref-resolve): Fix error when src block result is nil.
-rw-r--r--lisp/ob-ref.el71
1 files changed, 34 insertions, 37 deletions
diff --git a/lisp/ob-ref.el b/lisp/ob-ref.el
index 8f69c8c..7d2f3c1 100644
--- a/lisp/ob-ref.el
+++ b/lisp/ob-ref.el
@@ -162,44 +162,41 @@ the variable."
(goto-char (point-min))
(let* ((params (append args '((:results . "silent"))))
(regexp (org-babel-named-data-regexp-for-name ref))
- lob-info
(result
- (cond
- ;; Check for code blocks or named data.
- ((catch :found
- (while (re-search-forward regexp nil t)
- ;; Ignore COMMENTed headings and orphaned
- ;; affiliated keywords.
- (unless (org-in-commented-heading-p)
- (let ((e (org-element-at-point)))
- (when (equal (org-element-property :name e) ref)
- (goto-char
- (org-element-property :post-affiliated e))
- (pcase (org-element-type e)
- (`babel-call
- (throw :found
- (org-babel-lob-execute
- (org-babel-lob-get-info))))
- (`src-block
- (throw :found
- (org-babel-execute-src-block
- nil nil
- (and
- (not org-babel-update-intermediate)
- params))))
- ((and (let v (org-babel-read-element e))
- (guard v))
- (throw :found v))
- (_ (error "Reference not found")))))))
- nil))
- ;; Check for local or global headlines by ID.
- ((org-babel-ref-goto-headline-id ref)
- (org-babel-ref-headline-body))
- ;; Check the Library of Babel.
- ((setq lob-info
- (cdr (assq (intern ref) org-babel-library-of-babel)))
- (org-babel-execute-src-block nil lob-info params))
- (t (error "Reference `%s' not found in this buffer" ref)))))
+ (catch :found
+ ;; Check for code blocks or named data.
+ (while (re-search-forward regexp nil t)
+ ;; Ignore COMMENTed headings and orphaned
+ ;; affiliated keywords.
+ (unless (org-in-commented-heading-p)
+ (let ((e (org-element-at-point)))
+ (when (equal (org-element-property :name e) ref)
+ (goto-char
+ (org-element-property :post-affiliated e))
+ (pcase (org-element-type e)
+ (`babel-call
+ (throw :found
+ (org-babel-lob-execute
+ (org-babel-lob-get-info))))
+ (`src-block
+ (throw :found
+ (org-babel-execute-src-block
+ nil nil
+ (and
+ (not org-babel-update-intermediate)
+ params))))
+ ((and (let v (org-babel-read-element e))
+ (guard v))
+ (throw :found v))
+ (_ (error "Reference not found")))))))
+ ;; Check for local or global headlines by ID.
+ (when (org-babel-ref-goto-headline-id ref)
+ (throw :found (org-babel-ref-headline-body)))
+ ;; Check the Library of Babel.
+ (let ((lob-info (cdr (assq (intern ref) org-babel-library-of-babel))))
+ (when lob-info
+ (throw :found (org-babel-execute-src-block nil lob-info params))))
+ (t (error "Reference `%s' not found in this buffer" ref)))))
(cond
((symbolp result) (format "%S" result))
((and index (listp result))