Browse Source

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

Carsten Dominik 14 years ago
parent
commit
73304c5f46
4 changed files with 52 additions and 19 deletions
  1. 27 10
      lisp/ob-table.el
  2. 12 7
      lisp/ob.el
  3. 5 2
      lisp/org-exp.el
  4. 8 0
      lisp/org-latex.el

+ 27 - 10
lisp/ob-table.el

@@ -79,13 +79,25 @@ references to source-code blocks, to force interpretation of a
 cell's value as a string, prefix the identifier with two \"$\"s
 rather than a single \"$\" (i.e. \"$$2\" instead of \"$2\" in the
 example above."
-  (let ((variables (mapcar
-                    (lambda (var)
-                      (if (and (= 3 (length var)) (eq (nth 1 var) '$))
-                          (list (car var) (format "\"%s\"" (last var)))
-                        var))
-                    variables)))
-    (unless (stringp source-block) (setq source-block (symbol-name source-block)))
+  (let* (quote
+	 (variables (mapcar
+		     (lambda (var)
+		       ;; ensure that all cells prefixed with $'s are strings
+		       (cons (car var)
+			     (delq nil
+				   (mapcar
+				    (lambda (el)
+				      (if (eq '$ el)
+					  (setq quote t)
+					(prog1
+					    (if quote
+						(format "\"%s\"" el)
+					      (org-babel-clean-text-properties el))
+					  (setq quote nil))))
+				    (cdr var)))))
+		     variables)))
+    (unless (stringp source-block)
+      (setq source-block (symbol-name source-block)))
     (org-babel-table-truncate-at-newline ;; org-table cells can't be multi-line
      (if (and source-block (> (length source-block) 0))
          (let ((params
@@ -93,9 +105,14 @@ example above."
                         (concat ":var results="
                                 ,source-block
                                 "("
-                                (mapconcat (lambda (var-spec)
-                                             (format "%S=%s" (nth 0 var-spec) (nth 1 var-spec)))
-                                           ',variables ", ")
+                                (mapconcat
+				 (lambda (var-spec)
+				   (if (> (length (cdr var-spec)) 1)
+				       (format "%S='%S"
+					       (car var-spec) (mapcar #'read (cdr var-spec)))
+				     (format "%S=%s"
+					     (car var-spec) (cadr var-spec))))
+				 ',variables ", ")
                                 ")")))))
            (org-babel-execute-src-block
             nil (list "emacs-lisp" "results"

+ 12 - 7
lisp/ob.el

@@ -827,13 +827,18 @@ names.  Note: this function removes any hlines in TABLE."
     table))
 
 (defun org-babel-pick-name (names selector)
-  "Select one out of an alist of row or column names."
-  (when names
-    (if (and selector (symbolp selector) (not (equal t selector)))
-        (cdr (assoc selector names))
-      (if (integerp selector)
-          (nth (- selector 1) names)
-        (cdr (car (last names)))))))
+  "Select one out of an alist of row or column names.
+SELECTOR can be either a list of names in which case those names
+will be returned directly, or an index into the list NAMES in
+which case the indexed names will be return."
+  (if (listp selector)
+      selector
+    (when names
+      (if (and selector (symbolp selector) (not (equal t selector)))
+	  (cdr (assoc selector names))
+	(if (integerp selector)
+	    (nth (- selector 1) names)
+	  (cdr (car (last names))))))))
 
 (defun org-babel-disassemble-tables (vars hlines colnames rownames)
   "Parse tables for further processing.

+ 5 - 2
lisp/org-exp.el

@@ -2288,8 +2288,11 @@ INDENT was the original indentation of the block."
 					     lang)))
                                      (format "\\lstset{language=%s}\n" lstlang))
                                  "\n")
-                               (when caption
-                                 (format "\n%s $\\equiv$ \n" caption))
+                               (when (and caption
+					  org-export-latex-listings-w-names)
+                                 (format "\n%s $\\equiv$ \n"
+					 (replace-regexp-in-string
+					  "_" "\\\\_" caption)))
                                "\\begin{lstlisting}\n"
                                rtn "\\end{lstlisting}\n")
                             (concat (car org-export-latex-verbatim-wrap)

+ 8 - 0
lisp/org-latex.el

@@ -398,6 +398,14 @@ hurt if it is present."
 	   (symbol :tag "Major mode       ")
 	   (string :tag "Listings language"))))
 
+(defcustom org-export-latex-listings-w-names t
+  "Non-nil means export names of named code blocks.
+Code blocks exported with the listings package (controlled by the
+`org-export-latex-listings' variable) can be named in the style
+of noweb."
+  :group 'org-export-latex
+  :type 'boolean)
+
 (defcustom org-export-latex-remove-from-headlines
   '(:todo nil :priority nil :tags nil)
   "A plist of keywords to remove from headlines.  OBSOLETE.