浏览代码

ob: language-specific changes in response to :file arg changes

These languages are capable of writing results to file; for several of
them this is their only mode of operation. These changes cause the
languages to return to ob.el either the computed result, or nil, when
they have written results to file themselves. This is in place of the
previous method of returning the output file name as a string to
ob.el.

* lisp/ob-asymptote.el (org-babel-execute:asymptote): Return nil to
signal that the intended content has been written to file.
* lisp/ob-ditaa.el (org-babel-execute:ditaa): Return nil to signal
that the intended content has been written to file.
* lisp/ob-dot.el (org-babel-execute:dot): Return nil to signal that
the intended content has been written to file.
* lisp/ob-gnuplot.el (org-babel-execute:gnuplot): Return nil to signal
that the intended content has been written to file.
* lisp/ob-latex.el (org-babel-execute:latex): Return nil to signal
that the intended content has been written to file.
* lisp/ob-mscgen.el (org-babel-execute:mscgen): Return nil to
signal that the intended content has been written to file.
* lisp/ob-octave.el (org-babel-execute:octave): Return result; not
name of output file.
* lisp/ob-plantuml.el (org-babel-execute:plantuml): Return nil to
signal that the intended content has been written to file.
* lisp/ob-python.el (org-babel-execute:python): Return result; not
name of output file.
* lisp/ob-ruby.el (org-babel-execute:ruby): Return result; not
name of output file.
* lisp/ob-sass.el (org-babel-execute:sass): Return nil if result has
been written to file
Dan Davison 14 年之前
父节点
当前提交
e030d95ddb
共有 11 个文件被更改,包括 28 次插入29 次删除
  1. 1 1
      lisp/ob-asymptote.el
  2. 1 1
      lisp/ob-ditaa.el
  3. 1 1
      lisp/ob-dot.el
  4. 1 1
      lisp/ob-gnuplot.el
  5. 1 1
      lisp/ob-latex.el
  6. 1 1
      lisp/ob-mscgen.el
  7. 6 7
      lisp/ob-octave.el
  8. 1 1
      lisp/ob-plantuml.el
  9. 6 7
      lisp/ob-python.el
  10. 6 7
      lisp/ob-ruby.el
  11. 3 1
      lisp/ob-sass.el

+ 1 - 1
lisp/ob-asymptote.el

@@ -80,7 +80,7 @@ This function is called by `org-babel-execute-src-block'."
 	       body params
 	       body params
 	       (org-babel-variable-assignments:asymptote params))))
 	       (org-babel-variable-assignments:asymptote params))))
     (message cmd) (shell-command cmd)
     (message cmd) (shell-command cmd)
-    out-file))
+    nil)) ;; signal that output has already been written to file
 
 
 (defun org-babel-prep-session:asymptote (session params)
 (defun org-babel-prep-session:asymptote (session params)
   "Return an error if the :session header argument is set.
   "Return an error if the :session header argument is set.

+ 1 - 1
lisp/ob-ditaa.el

@@ -61,7 +61,7 @@ This function is called by `org-babel-execute-src-block'."
       (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
       (error "Could not find ditaa.jar at %s" org-ditaa-jar-path))
     (with-temp-file in-file (insert body))
     (with-temp-file in-file (insert body))
     (message cmd) (shell-command cmd)
     (message cmd) (shell-command cmd)
-    out-file))
+    nil)) ;; signal that output has already been written to file
 
 
 (defun org-babel-prep-session:ditaa (session params)
 (defun org-babel-prep-session:ditaa (session params)
   "Return an error because ditaa does not support sessions."
   "Return an error because ditaa does not support sessions."

+ 1 - 1
lisp/ob-dot.el

@@ -77,7 +77,7 @@ This function is called by `org-babel-execute-src-block'."
 	     " " (org-babel-process-file-name in-file)
 	     " " (org-babel-process-file-name in-file)
 	     " " cmdline
 	     " " cmdline
 	     " -o " (org-babel-process-file-name out-file)) "")
 	     " -o " (org-babel-process-file-name out-file)) "")
-    out-file))
+    nil)) ;; signal that output has already been written to file
 
 
 (defun org-babel-prep-session:dot (session params)
 (defun org-babel-prep-session:dot (session params)
   "Return an error because Dot does not support sessions."
   "Return an error because Dot does not support sessions."

+ 1 - 1
lisp/ob-gnuplot.el

@@ -157,7 +157,7 @@ This function is called by `org-babel-execute-src-block'."
           (gnuplot-send-buffer-to-gnuplot)))
           (gnuplot-send-buffer-to-gnuplot)))
       (if (member "output" (split-string result-type))
       (if (member "output" (split-string result-type))
           output
           output
-        out-file))))
+	nil)))) ;; signal that output has already been written to file
 
 
 (defun org-babel-prep-session:gnuplot (session params)
 (defun org-babel-prep-session:gnuplot (session params)
   "Prepare SESSION according to the header arguments in PARAMS."
   "Prepare SESSION according to the header arguments in PARAMS."

+ 1 - 1
lisp/ob-latex.el

@@ -122,7 +122,7 @@ This function is called by `org-babel-execute-src-block'."
          ((string-match "\\.\\([^\\.]+\\)$" out-file)
          ((string-match "\\.\\([^\\.]+\\)$" out-file)
           (error "can not create %s files, please specify a .png or .pdf file"
           (error "can not create %s files, please specify a .png or .pdf file"
 		 (match-string 1 out-file))))
 		 (match-string 1 out-file))))
-        out-file)
+        nil) ;; signal that output has already been written to file
     body))
     body))
 
 
 (defun org-babel-latex-tex-to-pdf (file)
 (defun org-babel-latex-tex-to-pdf (file)

+ 1 - 1
lisp/ob-mscgen.el

@@ -73,7 +73,7 @@ mscgen supported formats."
       (error "
       (error "
 ERROR: no output file specified. Add \":file name.png\" to the src header"))
 ERROR: no output file specified. Add \":file name.png\" to the src header"))
     (org-babel-eval (concat "mscgen -T " filetype " -o " out-file) body)
     (org-babel-eval (concat "mscgen -T " filetype " -o " out-file) body)
-    out-file))
+    nil)) ;; signal that output has already been written to file
 
 
 (defun org-babel-prep-session:mscgen (session params)
 (defun org-babel-prep-session:mscgen (session params)
   "Raise an error because Mscgen doesn't support sessions."
   "Raise an error because Mscgen doesn't support sessions."

+ 6 - 7
lisp/ob-octave.el

@@ -88,13 +88,12 @@ end")
 	   body params (org-babel-variable-assignments:octave params)))
 	   body params (org-babel-variable-assignments:octave params)))
 	 (result (org-babel-octave-evaluate
 	 (result (org-babel-octave-evaluate
 		  session full-body result-type matlabp)))
 		  session full-body result-type matlabp)))
-    (or out-file
-        (org-babel-reassemble-table
-         result
-         (org-babel-pick-name
-	  (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
-         (org-babel-pick-name
-	  (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params)))))))
+    (org-babel-reassemble-table
+     result
+     (org-babel-pick-name
+      (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
+     (org-babel-pick-name
+      (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params))))))
 
 
 (defun org-babel-prep-session:matlab (session params)
 (defun org-babel-prep-session:matlab (session params)
   "Prepare SESSION according to PARAMS."
   "Prepare SESSION according to PARAMS."

+ 1 - 1
lisp/ob-plantuml.el

@@ -70,7 +70,7 @@ This function is called by `org-babel-execute-src-block'."
       (error "Could not find plantuml.jar at %s" org-plantuml-jar-path))
       (error "Could not find plantuml.jar at %s" org-plantuml-jar-path))
     (with-temp-file in-file (insert (concat "@startuml\n" body "\n@enduml")))
     (with-temp-file in-file (insert (concat "@startuml\n" body "\n@enduml")))
     (message "%s" cmd) (org-babel-eval cmd "")
     (message "%s" cmd) (org-babel-eval cmd "")
-    out-file))
+    nil)) ;; signal that output has already been written to file
 
 
 (defun org-babel-prep-session:plantuml (session params)
 (defun org-babel-prep-session:plantuml (session params)
   "Return an error because plantuml does not support sessions."
   "Return an error because plantuml does not support sessions."

+ 6 - 7
lisp/ob-python.el

@@ -66,13 +66,12 @@ This function is called by `org-babel-execute-src-block'."
 	   params (org-babel-variable-assignments:python params)))
 	   params (org-babel-variable-assignments:python params)))
          (result (org-babel-python-evaluate
          (result (org-babel-python-evaluate
 		  session full-body result-type result-params preamble)))
 		  session full-body result-type result-params preamble)))
-    (or (cdr (assoc :file params))
-        (org-babel-reassemble-table
-         result
-         (org-babel-pick-name (cdr (assoc :colname-names params))
-			      (cdr (assoc :colnames params)))
-         (org-babel-pick-name (cdr (assoc :rowname-names params))
-			      (cdr (assoc :rownames params)))))))
+    (org-babel-reassemble-table
+     result
+     (org-babel-pick-name (cdr (assoc :colname-names params))
+			  (cdr (assoc :colnames params)))
+     (org-babel-pick-name (cdr (assoc :rowname-names params))
+			  (cdr (assoc :rownames params))))))
 
 
 (defun org-babel-prep-session:python (session params)
 (defun org-babel-prep-session:python (session params)
   "Prepare SESSION according to the header arguments in PARAMS.
   "Prepare SESSION according to the header arguments in PARAMS.

+ 6 - 7
lisp/ob-ruby.el

@@ -63,13 +63,12 @@ This function is called by `org-babel-execute-src-block'."
 		     body params (org-babel-variable-assignments:ruby params)))
 		     body params (org-babel-variable-assignments:ruby params)))
          (result (org-babel-ruby-evaluate
          (result (org-babel-ruby-evaluate
 		  session full-body result-type result-params)))
 		  session full-body result-type result-params)))
-    (or (cdr (assoc :file params))
-        (org-babel-reassemble-table
-         result
-         (org-babel-pick-name (cdr (assoc :colname-names params))
-			      (cdr (assoc :colnames params)))
-         (org-babel-pick-name (cdr (assoc :rowname-names params))
-			      (cdr (assoc :rownames params)))))))
+    (org-babel-reassemble-table
+     result
+     (org-babel-pick-name (cdr (assoc :colname-names params))
+			  (cdr (assoc :colnames params)))
+     (org-babel-pick-name (cdr (assoc :rowname-names params))
+			  (cdr (assoc :rownames params))))))
 
 
 (defun org-babel-prep-session:ruby (session params)
 (defun org-babel-prep-session:ruby (session params)
   "Prepare SESSION according to the header arguments specified in PARAMS."
   "Prepare SESSION according to the header arguments specified in PARAMS."

+ 3 - 1
lisp/ob-sass.el

@@ -56,7 +56,9 @@ This function is called by `org-babel-execute-src-block'."
 		      " " (org-babel-process-file-name out-file))))
 		      " " (org-babel-process-file-name out-file))))
     (with-temp-file in-file
     (with-temp-file in-file
       (insert (org-babel-expand-body:generic body params))) (shell-command cmd)
       (insert (org-babel-expand-body:generic body params))) (shell-command cmd)
-    (or file (with-temp-buffer (insert-file-contents out-file) (buffer-string)))))
+    (if file
+	nil ;; signal that output has already been written to file
+      (with-temp-buffer (insert-file-contents out-file) (buffer-string)))))
 
 
 (defun org-babel-prep-session:sass (session params)
 (defun org-babel-prep-session:sass (session params)
   "Raise an error because sass does not support sessions."
   "Raise an error because sass does not support sessions."