浏览代码

correctly handling exclusive :exports params

Eric Schulte 16 年之前
父节点
当前提交
fcfe110fef
共有 2 个文件被更改,包括 20 次插入7 次删除
  1. 10 6
      lisp/org-babel.el
  2. 10 1
      org-babel.org

+ 10 - 6
lisp/org-babel.el

@@ -476,8 +476,9 @@ 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 vars var ref)
+  (let (params results exports vars var ref)
     (flet ((e-merge (exclusive-groups &rest result-params)
+                    ;; maintain exclusivity of mutually exclusive parameters
                     (let (output)
                       (mapc (lambda (new-params)
                               (mapc (lambda (new-param)
@@ -502,18 +503,21 @@ parameters when merging lists."
                                  ref (match-string 2 (cdr pair))
                                  vars (cons (cons var ref) (assq-delete-all var vars)))))
                         (:results
-                         ;; maintain list of unique :results specifications
                          (setq results (e-merge '(("file" "vector" "scalar")
                                                   ("replace" "silent"))
                                                 results (split-string (cdr pair)))))
-                        (t
-                         ;; replace: this covers e.g. :session
-                         (setq params (cons pair (assq-delete-all	(car pair) params))))))
+                        (:exports
+                         (setq exports (e-merge '(("code" "results" "both"))
+                                                exports (split-string (cdr pair)))))
+                        (t ;; replace: this covers e.g. :session
+                         (setq params (cons pair (assq-delete-all (car pair) params))))))
                     plist))
             plists))
     (setq vars (mapcar (lambda (pair) (format "%s=%s" (car pair) (cdr pair))) vars))
     (while vars (setq params (cons (cons :var (pop vars)) params)))
-    (cons (cons :results (mapconcat 'identity results " ")) params)))
+    (cons (cons :exports (mapconcat 'identity exports " "))
+          (cons (cons :results (mapconcat 'identity results " "))
+                params))))
 
 (defun org-babel-clean-text-properties (text)
   "Strip all properties from text return."

+ 10 - 1
org-babel.org

@@ -204,7 +204,7 @@ would then be [[#sandbox][the sandbox]].
 #+end_src
 
 
-* Tasks [30/50]
+* Tasks [31/51]
 ** PROPOSED optional timestamp for output
    Add option to place an (inactive) timestamp at the #+resname, to
    record when that output was generated.
@@ -888,6 +888,15 @@ $0
 [[file:snippets/org-mode/sb][sb -- snippet]]
 
 waiting for guidance from those more familiar with yasnippets
+** DONE exclusive =exports= params
+   
+#+srcname: implement-export-exclusivity
+#+begin_src ruby 
+:this_is_a_test
+#+end_src
+
+#+resname:
+: :this_is_a_test
 ** DONE LoB: allow output in buffer
 ** DONE allow default header arguments by language
 org-babel-default-header-args:lang-name