]> code.delx.au - gnu-emacs/blobdiff - lisp/org/ob-octave.el
Fix more copyright year for Org files.
[gnu-emacs] / lisp / org / ob-octave.el
index 9fcd825f91e0148973f251441b7bbdf35cb5956b..9e8575768dc18f37fafe71b35a1e9dcf24cc6874 100644 (file)
@@ -1,11 +1,10 @@
 ;;; ob-octave.el --- org-babel functions for octave and matlab evaluation
 
-;; Copyright (C) 2010  Free Software Foundation, Inc.
+;; Copyright (C) 2010-2012  Free Software Foundation, Inc.
 
 ;; Author: Dan Davison
 ;; Keywords: literate programming, reproducible research
 ;; Homepage: http://orgmode.org
-;; Version: 7.4
 
 ;; This file is part of GNU Emacs.
 
@@ -87,14 +86,24 @@ end")
          (org-babel-expand-body:generic
           body params (org-babel-variable-assignments:octave params)))
         (result (org-babel-octave-evaluate
-                 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)))))))
+                 session
+                 (if (org-babel-octave-graphical-output-file params)
+                     (mapconcat 'identity
+                                (list
+                                 "set (0, \"defaultfigurevisible\", \"off\");"
+                                 full-body
+                                 (format "print -dpng %s" (org-babel-octave-graphical-output-file params)))
+                                "\n")
+                   full-body)
+                 result-type matlabp)))
+    (if (org-babel-octave-graphical-output-file params)
+       nil
+      (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)
   "Prepare SESSION according to PARAMS."
@@ -104,7 +113,7 @@ end")
   "Return list of octave statements assigning the block's variables"
   (mapcar
    (lambda (pair)
-     (format "%s=%s"
+     (format "%s=%s;"
             (car pair)
             (org-babel-octave-var-to-octave (cdr pair))))
    (mapcar #'cdr (org-babel-get-header params :var))))
@@ -119,7 +128,11 @@ specifying a variable of the same value."
   (if (listp var)
       (concat "[" (mapconcat #'org-babel-octave-var-to-octave var
                             (if (listp (car var)) "; " ",")) "]")
-    (format "%s" (or var "nil"))))
+    (cond
+     ((stringp var)
+      (format "\'%s\'" var))
+     (t
+      (format "%s" var)))))
 
 (defun org-babel-prep-session:octave (session params &optional matlabp)
   "Prepare SESSION according to the header arguments specified in PARAMS."
@@ -257,8 +270,13 @@ This removes initial blank and comment lines and then calls
       (match-string 1 string)
     string))
 
+(defun org-babel-octave-graphical-output-file (params)
+  "Name of file to which maxima should send graphical output."
+  (and (member "graphics" (cdr (assq :result-params params)))
+       (cdr (assq :file params))))
+
 (provide 'ob-octave)
 
-;; arch-tag: d8e5f68b-ba13-440a-a495-b653e989e704
+
 
 ;;; ob-octave.el ends here