Nicolas,

attached is a patch (relative to master from a few minutes ago) which
allows gnuplot babel blocks to send the output to the right
directory.  I have tested this with both buffers associated with actual
files and buffers not associated with any file.

Your suggestion for getting the directory name worked just fine.

Thanks,
eric
From da418f64fd01958c17402e8c5c3556eb82ba127e Mon Sep 17 00:00:00 2001
From: Eric S Fraga <e.fr...@ucl.ac.uk>
Date: Wed, 6 Dec 2017 15:48:12 +0000
Subject: [PATCH] allow gnuplot to generate plots in different directories

* lisp/ob-gnuplot.el (org-babel-expand-body:gnuplot) if the org buffer
  is associated with a file, direct gnuplot to change to the directory
  for that file.
---
 lisp/ob-gnuplot.el | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/lisp/ob-gnuplot.el b/lisp/ob-gnuplot.el
index b0743f604..856efe13a 100644
--- a/lisp/ob-gnuplot.el
+++ b/lisp/ob-gnuplot.el
@@ -116,6 +116,8 @@ code."
            (timefmt (cdr (assq :timefmt params)))
            (time-ind (or (cdr (assq :timeind params))
                          (when timefmt 1)))
+	   (directory (and (buffer-file-name)
+			   (file-name-directory (buffer-file-name))))
 	   (add-to-body (lambda (text) (setq body (concat text "\n" body)))))
       ;; append header argument settings to body
       (when title (funcall add-to-body (format "set title '%s'" title)))
@@ -161,7 +163,10 @@ code."
 			  (format "\\$%s" (car pair)) (cdr pair) body)))
 	    vars)
       (when prologue (funcall add-to-body prologue))
-      (when epilogue (setq body (concat body "\n" epilogue))))
+      (when epilogue (setq body (concat body "\n" epilogue)))
+      ;; setting the directory needs to be done first so that
+      ;; subsequent 'output' directive goes to the right place
+      (when directory (funcall add-to-body (format "cd '%s'" directory))))
     body))
 
 (defun org-babel-execute:gnuplot (body params)
-- 
2.15.0

-- 
Eric S Fraga via Emacs 27.0.50, Org release_9.1.3-170-g51234f

Attachment: signature.asc
Description: PGP signature

Reply via email to