瀏覽代碼

org-babel: make :file header arg imply :results file

Dan Davison 15 年之前
父節點
當前提交
10ea3ad10b
共有 1 個文件被更改,包括 11 次插入6 次删除
  1. 11 6
      contrib/babel/lisp/org-babel.el

+ 11 - 6
contrib/babel/lisp/org-babel.el

@@ -655,7 +655,11 @@ non-nil."
 elements of PLISTS override the values of previous element.  This
 takes into account some special considerations for certain
 parameters when merging lists."
-  (let (params results exports tangle vars var ref)
+  (let ((results-exclusive-groups
+	 '(("file" "vector" "scalar" "raw" "org" "html" "latex")
+	   ("replace" "silent")
+	   ("output" "value")))
+	params results exports tangle vars var ref)
     (flet ((e-merge (exclusive-groups &rest result-params)
                     ;; maintain exclusivity of mutually exclusive parameters
                     (let (output)
@@ -682,11 +686,12 @@ parameters when merging lists."
                                  ref (match-string 2 (cdr pair))
                                  vars (cons (cons var ref) (assq-delete-all var vars)))))
                         (:results
-                         (setq results (e-merge
-                                        '(("file" "vector" "scalar" "raw" "org" "html" "latex")
-                                          ("replace" "silent")
-                                          ("output" "value"))
-                                        results (split-string (cdr pair)))))
+                         (setq results
+			       (e-merge results-exclusive-groups results (split-string (cdr pair)))))
+			(:file
+			 (when (cdr pair)
+			   (setq results (e-merge results-exclusive-groups results '("file")))
+			   (setq params (cons pair (assq-delete-all (car pair) params)))))
                         (:exports
                          (setq exports (e-merge '(("code" "results" "both" "none"))
                                                 exports (split-string (cdr pair)))))