Browse Source

Merge branch 'master' of git+ssh://repo.or.cz/srv/git/org-mode

Carsten Dominik 15 years ago
parent
commit
aba1c85f14
2 changed files with 21 additions and 13 deletions
  1. 9 6
      contrib/babel/lisp/org-babel-lob.el
  2. 12 7
      contrib/babel/lisp/org-babel.el

+ 9 - 6
contrib/babel/lisp/org-babel-lob.el

@@ -55,7 +55,7 @@ add files to this list use the `org-babel-lob-ingest' command."
 
 ;; functions for executing lob one-liners
 
-(defvar org-babel-lob-one-liner-regexp "#\\+lob:[ \t]+\\([^\(\)\n]+\\)\(\\([^\n]*\\)\)[ \t]*\n")
+(defvar org-babel-lob-one-liner-regexp "#\\+lob:[ \t]+\\([^\(\)\n]+\\)\(\\([^\n]*\\)\)[ \t]*\\([^\n]*\\)\n")
 
 (defun org-babel-lob-execute-maybe ()
   "Detect if this is context for a org-babel Library Of Babel
@@ -63,7 +63,7 @@ src-block and if so then run the appropriate source block from
 the Library."
   (interactive)
   (let ((info (org-babel-lob-get-info)))
-    (if info (progn (org-babel-lob-execute info) t) nil)))
+    (if (first info) (progn (org-babel-lob-execute info) t) nil)))
 
 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-babel-lob-execute-maybe)
 
@@ -81,13 +81,16 @@ the word 'call'."
     (save-excursion
       (move-beginning-of-line 1)
       (if (looking-at org-babel-lob-one-liner-regexp)
-          (org-babel-clean-text-properties 
-	   (format "%s(%s)" (match-string 1) (match-string 2)))))))
-
+          (mapcar #'org-babel-clean-text-properties 
+		  (list (format "%s(%s)" (match-string 1) (match-string 2))
+			(match-string 3)))))))
+  
 (defun org-babel-lob-execute (info)
   (let ((params (org-babel-merge-params
 		 org-babel-default-header-args
-		 (org-babel-parse-header-arguments (concat ":var results=" info)))))
+		 (org-babel-parse-header-arguments
+		  (org-babel-clean-text-properties
+		   (concat ":var results=" (mapconcat #'identity info " ")))))))
     (org-babel-execute-src-block nil (list "emacs-lisp" "results" params))))
 
 (provide 'org-babel-lob)

+ 12 - 7
contrib/babel/lisp/org-babel.el

@@ -480,7 +480,7 @@ line.  If no result exists for this block then create a
   (save-excursion
     (let* ((on-lob-line (progn (beginning-of-line 1)
 			       (looking-at org-babel-lob-one-liner-regexp)))
-	   (name (if on-lob-line (org-babel-lob-get-info) (org-babel-get-src-block-name)))
+	   (name (if on-lob-line (first (org-babel-lob-get-info)) (org-babel-get-src-block-name)))
 	   (head (unless on-lob-line (org-babel-where-is-src-block-head))) end)
       (when head (goto-char head))
       (or (and name (org-babel-find-named-result name))
@@ -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)))))