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
 ;; 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 ()
 (defun org-babel-lob-execute-maybe ()
   "Detect if this is context for a org-babel Library Of Babel
   "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."
 the Library."
   (interactive)
   (interactive)
   (let ((info (org-babel-lob-get-info)))
   (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)
 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-babel-lob-execute-maybe)
 
 
@@ -81,13 +81,16 @@ the word 'call'."
     (save-excursion
     (save-excursion
       (move-beginning-of-line 1)
       (move-beginning-of-line 1)
       (if (looking-at org-babel-lob-one-liner-regexp)
       (if (looking-at org-babel-lob-one-liner-regexp)
-          (org-babel-clean-text-properties 
+          (mapcar #'org-babel-clean-text-properties 
-	   (format "%s(%s)" (match-string 1) (match-string 2)))))))
+		  (list (format "%s(%s)" (match-string 1) (match-string 2))
-
+			(match-string 3)))))))
+  
 (defun org-babel-lob-execute (info)
 (defun org-babel-lob-execute (info)
   (let ((params (org-babel-merge-params
   (let ((params (org-babel-merge-params
 		 org-babel-default-header-args
 		 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))))
     (org-babel-execute-src-block nil (list "emacs-lisp" "results" params))))
 
 
 (provide 'org-babel-lob)
 (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
   (save-excursion
     (let* ((on-lob-line (progn (beginning-of-line 1)
     (let* ((on-lob-line (progn (beginning-of-line 1)
 			       (looking-at org-babel-lob-one-liner-regexp)))
 			       (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)
 	   (head (unless on-lob-line (org-babel-where-is-src-block-head))) end)
       (when head (goto-char head))
       (when head (goto-char head))
       (or (and name (org-babel-find-named-result name))
       (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
 elements of PLISTS override the values of previous element.  This
 takes into account some special considerations for certain
 takes into account some special considerations for certain
 parameters when merging lists."
 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)
     (flet ((e-merge (exclusive-groups &rest result-params)
                     ;; maintain exclusivity of mutually exclusive parameters
                     ;; maintain exclusivity of mutually exclusive parameters
                     (let (output)
                     (let (output)
@@ -682,11 +686,12 @@ parameters when merging lists."
                                  ref (match-string 2 (cdr pair))
                                  ref (match-string 2 (cdr pair))
                                  vars (cons (cons var ref) (assq-delete-all var vars)))))
                                  vars (cons (cons var ref) (assq-delete-all var vars)))))
                         (:results
                         (:results
-                         (setq results (e-merge
+                         (setq results
-                                        '(("file" "vector" "scalar" "raw" "org" "html" "latex")
+			       (e-merge results-exclusive-groups results (split-string (cdr pair)))))
-                                          ("replace" "silent")
+			(:file
-                                          ("output" "value"))
+			 (when (cdr pair)
-                                        results (split-string (cdr pair)))))
+			   (setq results (e-merge results-exclusive-groups results '("file")))
+			   (setq params (cons pair (assq-delete-all (car pair) params)))))
                         (:exports
                         (:exports
                          (setq exports (e-merge '(("code" "results" "both" "none"))
                          (setq exports (e-merge '(("code" "results" "both" "none"))
                                                 exports (split-string (cdr pair)))))
                                                 exports (split-string (cdr pair)))))