Explorar o código

ob: export of inline call blocks

* lisp/ob-exp.el (org-babel-exp-lob-one-liners): Appropriate
  replacement of inline call blocks with their results.
Eric Schulte %!s(int64=14) %!d(string=hai) anos
pai
achega
5c3def4713
Modificáronse 1 ficheiros con 31 adicións e 26 borrados
  1. 31 26
      lisp/ob-exp.el

+ 31 - 26
lisp/ob-exp.el

@@ -184,34 +184,39 @@ org-mode text."
 See `org-babel-exp-src-block' for export options. Currently the
 options are taken from `org-babel-default-header-args'."
   (interactive)
-  (let (replacement)
-    (save-excursion
-      (goto-char start)
-      (while (and (< (point) end)
-		  (re-search-forward org-babel-lob-one-liner-regexp nil t))
-	(setq replacement
-	      (let ((lob-info (org-babel-lob-get-info)))
-		(save-match-data
-		  (org-babel-exp-do-export
-		   (list "emacs-lisp" "results"
-			 (org-babel-merge-params
-			  org-babel-default-header-args
-			  org-babel-default-lob-header-args
-			  (org-babel-params-from-buffer)
-			  (org-babel-params-from-properties)
-			  (org-babel-parse-header-arguments
-			   (org-babel-clean-text-properties
-			    (concat ":var results="
-				    (mapconcat #'identity
-					       (butlast lob-info) " ")))))
-			 "" nil (car (last lob-info)))
-		   'lob))))
-	(setq end (+ end (- (length replacement)
+  (save-excursion
+    (goto-char start)
+    (while (and (< (point) end)
+		(re-search-forward org-babel-lob-one-liner-regexp nil t))
+      (let* ((lob-info (org-babel-lob-get-info))
+	     (inlinep (match-string 11))
+	     (inline-start (match-end 11))
+	     (inline-end (match-end 0))
+	     (rep (let ((lob-info (org-babel-lob-get-info)))
+		    (save-match-data
+		      (org-babel-exp-do-export
+		       (list "emacs-lisp" "results"
+			     (org-babel-merge-params
+			      org-babel-default-header-args
+			      org-babel-default-lob-header-args
+			      (org-babel-params-from-buffer)
+			      (org-babel-params-from-properties)
+			      (org-babel-parse-header-arguments
+			       (org-babel-clean-text-properties
+				(concat ":var results="
+					(mapconcat #'identity
+						   (butlast lob-info) " ")))))
+			     "" nil (car (last lob-info)))
+		       'lob)))))
+	(setq end (+ end (- (length rep)
 			    (- (length (match-string 0))
 			       (length (or (match-string 11) ""))))))
-	(when replacement
-	  ;; when (match-string 11) from (match-end 11) to (match-end 0) else replace-match
-	  (replace-match replacement t t))))))
+	(if inlinep
+	    (save-excursion
+	      (goto-char inline-start)
+	      (delete-region inline-start inline-end)
+	      (insert rep))
+	  (replace-match rep t t))))))
 
 (defun org-babel-exp-do-export (info type &optional hash)
   "Return a string with the exported content of a code block.