]> code.delx.au - gnu-emacs/blobdiff - lisp/org/ob-lob.el
msdos.c (dos_rawgetc): Use gen_help_event, instead of doing the same in-line.
[gnu-emacs] / lisp / org / ob-lob.el
index f806668e2e8167fcf519100fb7ca190f0eb2986b..243666c0a1b6f0e5c04ed5414b9a165638366e0a 100644 (file)
@@ -2,10 +2,11 @@
 
 ;; Copyright (C) 2009, 2010  Free Software Foundation, Inc.
 
-;; Author: Eric Schulte, Dan Davison
+;; Author: Eric Schulte
+;;     Dan Davison
 ;; Keywords: literate programming, reproducible research
 ;; Homepage: http://orgmode.org
-;; Version: 7.01
+;; Version: 7.3
 
 ;; This file is part of GNU Emacs.
 
@@ -25,7 +26,7 @@
 ;;; Commentary:
 
 ;; See the online documentation for more information
-;; 
+;;
 ;;   http://orgmode.org/worg/org-contrib/babel/
 
 ;;; Code:
@@ -45,15 +46,22 @@ To add files to this list use the `org-babel-lob-ingest' command."
 
 ;;;###autoload
 (defun org-babel-lob-ingest (&optional file)
-  "Add all source-blocks defined in FILE to `org-babel-library-of-babel'."
+  "Add all named source-blocks defined in FILE to
+`org-babel-library-of-babel'."
   (interactive "f")
-  (org-babel-map-src-blocks file
-    (let* ((info (org-babel-get-src-block-info))
-          (source-name (intern (nth 4 info))))
-      (when source-name
-        (setq org-babel-library-of-babel
-              (cons (cons source-name info)
-                    (assq-delete-all source-name org-babel-library-of-babel)))))))
+  (let ((lob-ingest-count 0))
+    (org-babel-map-src-blocks file
+      (let* ((info (org-babel-get-src-block-info 'light))
+            (source-name (nth 4 info)))
+       (when source-name
+         (setq source-name (intern source-name)
+               org-babel-library-of-babel
+               (cons (cons source-name info)
+                     (assq-delete-all source-name org-babel-library-of-babel))
+               lob-ingest-count (1+ lob-ingest-count)))))
+    (message "%d src block%s added to Library of Babel"
+            lob-ingest-count (if (> lob-ingest-count 1) "s" ""))
+    lob-ingest-count))
 
 (defconst org-babel-lob-call-aliases '("lob" "call")
   "Aliases to call a source block function.
@@ -61,9 +69,10 @@ If you change the value of this variable then your files may
   become unusable by other org-babel users, and vice versa.")
 
 (defconst org-babel-lob-one-liner-regexp
-  (concat "^\\([ \t]*\\)#\\+\\(?:"
-         (mapconcat #'regexp-quote org-babel-lob-call-aliases "\\|")
-         "\\):[ \t]+\\([^\(\)\n]+\\)\(\\([^\n]*\\)\)[ \t]*\\([^\n]*\\)")
+  (concat
+   "^\\([ \t]*\\)#\\+\\(?:"
+   (mapconcat #'regexp-quote org-babel-lob-call-aliases "\\|")
+   "\\):[ \t]+\\([^\(\)\n]+\\)\(\\([^\n]*\\)\)\\(\\[.+\\]\\|\\)[ \t]*\\([^\n]*\\)")
   "Regexp to match calls to predefined source block functions.")
 
 ;; functions for executing lob one-liners
@@ -76,36 +85,32 @@ if so then run the appropriate source block from the Library."
   (let ((info (org-babel-lob-get-info)))
     (if (nth 0 info) (progn (org-babel-lob-execute info) t) nil)))
 
-(add-hook 'org-ctrl-c-ctrl-c-hook 'org-babel-lob-execute-maybe)
-
 ;;;###autoload
 (defun org-babel-lob-get-info ()
-  "Return a Library of Babel function call as a string.
-
-This function is analogous to org-babel-get-src-block-name. For
-both functions, after they are called, (match-string 1) matches
-the function name, and (match-string 2) matches the function
-arguments inside the parentheses. I think perhaps these functions
-should be renamed to bring out this similarity, perhaps involving
-the word 'call'."
+  "Return a Library of Babel function call as a string."
   (let ((case-fold-search t))
     (save-excursion
       (beginning-of-line 1)
       (if (looking-at org-babel-lob-one-liner-regexp)
-          (append (mapcar #'org-babel-clean-text-properties 
-                         (list (format "%s(%s)" (match-string 2) (match-string 3))
-                               (match-string 4)))
-                 (list (length (match-string 1))))))))
-  
+          (append
+          (mapcar #'org-babel-clean-text-properties
+                  (list
+                   (format "%s(%s)%s"
+                           (match-string 2) (match-string 3) (match-string 4))
+                   (match-string 5)))
+          (list (length (match-string 1))))))))
+
 (defun org-babel-lob-execute (info)
   "Execute the lob call specified by INFO."
-  (let ((params (org-babel-merge-params
-                org-babel-default-header-args
-                (org-babel-params-from-buffer)
-                 (org-babel-params-from-properties)
-                (org-babel-parse-header-arguments
-                 (org-babel-clean-text-properties
-                  (concat ":var results=" (mapconcat #'identity (butlast info) " ")))))))
+  (let ((params (org-babel-process-params
+                (org-babel-merge-params
+                 org-babel-default-header-args
+                 (org-babel-params-from-buffer)
+                 (org-babel-params-from-properties)
+                 (org-babel-parse-header-arguments
+                  (org-babel-clean-text-properties
+                   (concat ":var results="
+                           (mapconcat #'identity (butlast info) " "))))))))
     (org-babel-execute-src-block
      nil (list "emacs-lisp" "results" params nil nil (nth 2 info)))))