| 
					
				 | 
			
			
				@@ -79,44 +79,54 @@ if so then run the appropriate source block from the Library." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (org-babel-execute-src-block nil info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       t))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(defun org-babel-lob--src-info (name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  "Return internal representation for Babel data named NAME. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-NAME is a string.  This function looks into the current document 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defun org-babel-lob--src-info (ref) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "Return internal representation for Babel data referenced as REF. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+REF is a string.  This function looks into the current document 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 for a Babel call or source block.  If none is found, it looks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-after NAME in the Library of Babel.  Eventually, if that also 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fails, it returns nil." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ;; During export, look into the pristine copy of the document being 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ;; exported instead of the current one, which could miss some data. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  (with-current-buffer (or org-babel-exp-reference-buffer (current-buffer)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (org-with-wide-buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     (goto-char (point-min)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     (catch :found 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       (let ((case-fold-search t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (regexp (org-babel-named-data-regexp-for-name name))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (while (re-search-forward regexp nil t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	   (let ((element (org-element-at-point))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (when (equal name (org-element-property :name element)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	       (throw :found 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		      (pcase (org-element-type element) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			(`src-block (org-babel-get-src-block-info t element)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			(`babel-call (org-babel-lob-get-info element)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			;; Non-executable data found.  Since names are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			;; supposed to be unique throughout a document, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			;; bail out. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			(_ nil)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 ;; No element named NAME in buffer.  Try Library of Babel. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (cdr (assoc-string name org-babel-library-of-babel))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+after REF in the Library of Babel." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (let ((name ref) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(file nil)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ;; Extract the remote file, if specified in the reference. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (when (string-match "\\`\\(.+\\):\\(.+\\)\\'" ref) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (setq file (match-string 1 ref)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (setq name (match-string 2 ref))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ;; During export, look into the pristine copy of the document 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ;; being exported instead of the current one, which could miss 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ;; some data. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (with-current-buffer (cond (file (find-file-noselect file t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       (org-babel-exp-reference-buffer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       (t (current-buffer))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-with-point-at 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(catch :found 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (let ((case-fold-search t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(regexp (org-babel-named-data-regexp-for-name name))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (while (re-search-forward regexp nil t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (let ((element (org-element-at-point))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(when (equal name (org-element-property :name element)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  (throw :found 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 (pcase (org-element-type element) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   (`src-block (org-babel-get-src-block-info t element)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   (`babel-call (org-babel-lob-get-info element)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   ;; Non-executable data found.  Since names 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   ;; are supposed to be unique throughout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   ;; a document, bail out. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			   (_ nil)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (cdr (assoc-string ref org-babel-library-of-babel)))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;;###autoload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-babel-lob-get-info (&optional datum) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Return internal representation for Library of Babel function call. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Consider DATUM, when provided, or element at point.  Return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-when not on an appropriate location.  Otherwise return a list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-compatible with `org-babel-get-src-block-info', which see." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Consider DATUM, when provided, or element at point otherwise. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Return nil when not on an appropriate location.  Otherwise return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+a list compatible with `org-babel-get-src-block-info', which 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+see." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (let* ((context (or datum (org-element-context))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (type (org-element-type context))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (type (org-element-type context)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (reference (org-element-property :call context))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (when (memq type '(babel-call inline-babel-call)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (pcase (org-babel-lob--src-info (org-element-property :call context)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (pcase (org-babel-lob--src-info reference) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(`(,language ,body ,header ,_ ,_ ,_ ,coderef) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 (let ((begin (org-element-property (if (eq type 'inline-babel-call) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						:begin 
			 |