Browse Source

intuitive code block post processing w/file results

* lisp/ob-core.el (org-babel-execute-src-block): Make sure we process
  file results before they are passed to the post-processing code block,
  and not afterwards.  Tangles these two header arguments in the code,
  but makes for more intuitive behavior and enables important use cases.
Eric Schulte 12 years ago
parent
commit
3932efdf8e
1 changed files with 14 additions and 5 deletions
  1. 14 5
      lisp/ob-core.el

+ 14 - 5
lisp/ob-core.el

@@ -612,11 +612,6 @@ block."
 				      (not (listp result)))
 				 (list (list result)) result))
 			   (funcall cmd body params)))
-		    ;; possibly perform post process provided its appropriate
-		    (when (cdr (assoc :post params))
-		      (let ((*this* result))
-			(setq result (org-babel-ref-resolve
-				      (cdr (assoc :post params))))))
 		    ;; if non-empty result and :file then write to :file
 		    (when (cdr (assoc :file params))
 		      (when result
@@ -625,6 +620,20 @@ block."
 			   (org-babel-format-result
 			    result (cdr (assoc :sep (nth 2 info)))))))
 		      (setq result (cdr (assoc :file params))))
+		    ;; possibly perform post process provided its appropriate
+		    (when (cdr (assoc :post params))
+		      (let ((*this* (if (cdr (assoc :file params))
+					(org-babel-result-to-file
+					 (cdr (assoc :file params))
+					 (when (assoc :file-desc params)
+					   (or (cdr (assoc :file-desc params))
+					       result)))
+				      result)))
+			(setq result (org-babel-ref-resolve
+				      (cdr (assoc :post params))))
+			(when (cdr (assoc :file params))
+			  (setq result-params
+				(remove "file" result-params)))))
 		    (org-babel-insert-result
 		     result result-params info new-hash indent lang)
 		    (run-hooks 'org-babel-after-execute-hook)