diff --git a/contrib/babel/lisp/langs/org-babel-gnuplot.el b/contrib/babel/lisp/langs/org-babel-gnuplot.el index 6d1922c58..101eda397 100644 --- a/contrib/babel/lisp/langs/org-babel-gnuplot.el +++ b/contrib/babel/lisp/langs/org-babel-gnuplot.el @@ -68,13 +68,9 @@ variable names and the value to be used in the gnuplot code." (cdr pair)))) (org-babel-ref-variables params))) -(defun org-babel-execute:gnuplot (body params) - "Execute a block of Gnuplot code with org-babel. This function is -called by `org-babel-execute-src-block'." - (message "executing Gnuplot source code block") +(defun org-babel-expand-body:gnuplot (body params &optional processed-params) (save-window-excursion (let* ((vars (org-babel-gnuplot-process-vars params)) - (session (cdr (assoc :session params))) (out-file (cdr (assoc :file params))) (term (or (cdr (assoc :term params)) (when out-file (file-name-extension out-file)))) @@ -87,7 +83,6 @@ called by `org-babel-execute-src-block'." (timefmt (plist-get params :timefmt)) (time-ind (or (plist-get params :timeind) (when timefmt 1))) - (result-type (cdr (assoc :results params))) output) (flet ((add-to-body (text) (setq body (concat text "\n" body)))) @@ -126,23 +121,33 @@ called by `org-babel-execute-src-block'." (mapc (lambda (pair) (setq body (replace-regexp-in-string (format "\\$%s" (car pair)) (cdr pair) body))) - vars) - ;; evaluate the code body with gnuplot - (if (string= session "none") - (let ((script-file (make-temp-file "org-babel-gnuplot-script"))) - (with-temp-file script-file - (insert (concat body "\n"))) - (message "gnuplot \"%s\"" script-file) - (setq output - (shell-command-to-string (format "gnuplot \"%s\"" script-file))) - (message output)) - (with-temp-buffer - (insert (concat body "\n")) - (gnuplot-mode) - (gnuplot-send-buffer-to-gnuplot))) - (if (member "output" (split-string result-type)) - output - out-file))))) + vars)) + body))) + +(defun org-babel-execute:gnuplot (body params) + "Execute a block of Gnuplot code with org-babel. This function is +called by `org-babel-execute-src-block'." + (message "executing Gnuplot source code block") + (let ((session (cdr (assoc :session params))) + (result-type (cdr (assoc :results params))) + (body (org-babel-expand-body:gnuplot body params))) + (save-window-excursion + ;; evaluate the code body with gnuplot + (if (string= session "none") + (let ((script-file (make-temp-file "org-babel-gnuplot-script"))) + (with-temp-file script-file + (insert (concat body "\n"))) + (message "gnuplot \"%s\"" script-file) + (setq output + (shell-command-to-string (format "gnuplot \"%s\"" script-file))) + (message output)) + (with-temp-buffer + (insert (concat body "\n")) + (gnuplot-mode) + (gnuplot-send-buffer-to-gnuplot))) + (if (member "output" (split-string result-type)) + output + out-file)))) (defun org-babel-prep-session:gnuplot (session params) "Prepare SESSION according to the header arguments specified in PARAMS."