Jelajahi Sumber

ob-exp: Fix source blocks generated by other source blocks

* lisp/ob-exp.el (org-babel-exp--at-source): Source blocks generated
  by evaluating other source blocks may not be found in the original
  buffer.  In that case, do not move point.

Reported-by: "Berry, Charles" <ccberry@ucsd.edu>
<http://lists.gnu.org/r/emacs-orgmode/2017-12/msg00538.html>
Nicolas Goaziou 7 tahun lalu
induk
melakukan
b3ddb051e6
1 mengubah file dengan 6 tambahan dan 2 penghapusan
  1. 6 2
      lisp/ob-exp.el

+ 6 - 2
lisp/ob-exp.el

@@ -58,9 +58,13 @@ returned is the value of the last form in BODY.  Assume that
 point is at the beginning of the Babel block."
 point is at the beginning of the Babel block."
   (declare (indent 1) (debug body))
   (declare (indent 1) (debug body))
   `(let ((source (get-text-property (point) 'org-reference)))
   `(let ((source (get-text-property (point) 'org-reference)))
-     (with-current-buffer org-babel-exp-reference-buffer
+     ;; Source blocks created during export process (e.g., by other
+     ;; source blocks) are not referenced.  In this case, do not move
+     ;; point at all.
+     (with-current-buffer (if source org-babel-exp-reference-buffer
+			    (current-buffer))
        (org-with-wide-buffer
        (org-with-wide-buffer
-	(goto-char source)
+	(when source (goto-char source))
 	,@body))))
 	,@body))))
 
 
 (defun org-babel-exp-src-block ()
 (defun org-babel-exp-src-block ()