aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/org/ob-gnuplot.el
diff options
context:
space:
mode:
authorRasmus2017-06-21 13:20:20 +0200
committerRasmus2017-06-22 11:54:18 +0200
commit5cecd275820df825c51bf9a27fcc7e35f30ff273 (patch)
treeb3f72e63953613d565e6d5a35bec97f158eb603c /lisp/org/ob-gnuplot.el
parent386a3da920482b8cb3e962fb944d135c8a770e26 (diff)
downloademacs-5cecd275820df825c51bf9a27fcc7e35f30ff273.tar.gz
emacs-5cecd275820df825c51bf9a27fcc7e35f30ff273.zip
Update Org to v9.0.9
Please see etc/ORG-NEWS for details.
Diffstat (limited to 'lisp/org/ob-gnuplot.el')
-rw-r--r--lisp/org/ob-gnuplot.el76
1 files changed, 34 insertions, 42 deletions
diff --git a/lisp/org/ob-gnuplot.el b/lisp/org/ob-gnuplot.el
index 82b103e52cd..400823b2d70 100644
--- a/lisp/org/ob-gnuplot.el
+++ b/lisp/org/ob-gnuplot.el
@@ -1,4 +1,4 @@
1;;; ob-gnuplot.el --- org-babel functions for gnuplot evaluation 1;;; ob-gnuplot.el --- Babel Functions for Gnuplot -*- lexical-binding: t; -*-
2 2
3;; Copyright (C) 2009-2017 Free Software Foundation, Inc. 3;; Copyright (C) 2009-2017 Free Software Foundation, Inc.
4 4
@@ -39,12 +39,10 @@
39 39
40;;; Code: 40;;; Code:
41(require 'ob) 41(require 'ob)
42(eval-when-compile (require 'cl))
43 42
44(declare-function org-time-string-to-time "org" (s &optional buffer pos)) 43(declare-function org-time-string-to-time "org" (s &optional buffer pos))
45(declare-function org-combine-plists "org" (&rest plists)) 44(declare-function org-combine-plists "org" (&rest plists))
46(declare-function orgtbl-to-generic "org-table" 45(declare-function orgtbl-to-generic "org-table" (table params))
47 (table params &optional backend))
48(declare-function gnuplot-mode "ext:gnuplot-mode" ()) 46(declare-function gnuplot-mode "ext:gnuplot-mode" ())
49(declare-function gnuplot-send-string-to-gnuplot "ext:gnuplot-mode" (str txt)) 47(declare-function gnuplot-send-string-to-gnuplot "ext:gnuplot-mode" (str txt))
50(declare-function gnuplot-send-buffer-to-gnuplot "ext:gnuplot-mode" ()) 48(declare-function gnuplot-send-buffer-to-gnuplot "ext:gnuplot-mode" ())
@@ -65,7 +63,7 @@
65 (term . :any)) 63 (term . :any))
66 "Gnuplot specific header args.") 64 "Gnuplot specific header args.")
67 65
68(defvar org-babel-gnuplot-timestamp-fmt nil) 66(defvar org-babel-gnuplot-timestamp-fmt nil) ; Dynamically scoped.
69 67
70(defvar *org-babel-gnuplot-missing* nil) 68(defvar *org-babel-gnuplot-missing* nil)
71 69
@@ -81,7 +79,7 @@
81Dumps all vectors into files and returns an association list 79Dumps all vectors into files and returns an association list
82of variable names and the related value to be used in the gnuplot 80of variable names and the related value to be used in the gnuplot
83code." 81code."
84 (let ((*org-babel-gnuplot-missing* (cdr (assoc :missing params)))) 82 (let ((*org-babel-gnuplot-missing* (cdr (assq :missing params))))
85 (mapcar 83 (mapcar
86 (lambda (pair) 84 (lambda (pair)
87 (cons 85 (cons
@@ -95,38 +93,33 @@ code."
95 (if tablep val (mapcar 'list val))) 93 (if tablep val (mapcar 'list val)))
96 (org-babel-temp-file "gnuplot-") params) 94 (org-babel-temp-file "gnuplot-") params)
97 val)))) 95 val))))
98 (mapcar #'cdr (org-babel-get-header params :var))))) 96 (org-babel--get-vars params))))
99 97
100(defun org-babel-expand-body:gnuplot (body params) 98(defun org-babel-expand-body:gnuplot (body params)
101 "Expand BODY according to PARAMS, return the expanded body." 99 "Expand BODY according to PARAMS, return the expanded body."
102 (save-window-excursion 100 (save-window-excursion
103 (let* ((vars (org-babel-gnuplot-process-vars params)) 101 (let* ((vars (org-babel-gnuplot-process-vars params))
104 (out-file (cdr (assoc :file params))) 102 (out-file (cdr (assq :file params)))
105 (prologue (cdr (assoc :prologue params))) 103 (prologue (cdr (assq :prologue params)))
106 (epilogue (cdr (assoc :epilogue params))) 104 (epilogue (cdr (assq :epilogue params)))
107 (term (or (cdr (assoc :term params)) 105 (term (or (cdr (assq :term params))
108 (when out-file 106 (when out-file
109 (let ((ext (file-name-extension out-file))) 107 (let ((ext (file-name-extension out-file)))
110 (or (cdr (assoc (intern (downcase ext)) 108 (or (cdr (assoc (intern (downcase ext))
111 *org-babel-gnuplot-terms*)) 109 *org-babel-gnuplot-terms*))
112 ext))))) 110 ext)))))
113 (cmdline (cdr (assoc :cmdline params))) 111 (title (cdr (assq :title params)))
114 (title (cdr (assoc :title params))) 112 (lines (cdr (assq :line params)))
115 (lines (cdr (assoc :line params))) 113 (sets (cdr (assq :set params)))
116 (sets (cdr (assoc :set params))) 114 (x-labels (cdr (assq :xlabels params)))
117 (x-labels (cdr (assoc :xlabels params))) 115 (y-labels (cdr (assq :ylabels params)))
118 (y-labels (cdr (assoc :ylabels params))) 116 (timefmt (cdr (assq :timefmt params)))
119 (timefmt (cdr (assoc :timefmt params))) 117 (time-ind (or (cdr (assq :timeind params))
120 (time-ind (or (cdr (assoc :timeind params))
121 (when timefmt 1))) 118 (when timefmt 1)))
122 (missing (cdr (assoc :missing params))) 119 (add-to-body (lambda (text) (setq body (concat text "\n" body)))))
123 (add-to-body (lambda (text) (setq body (concat text "\n" body))))
124 output)
125 ;; append header argument settings to body 120 ;; append header argument settings to body
126 (when title (funcall add-to-body (format "set title '%s'" title))) 121 (when title (funcall add-to-body (format "set title '%s'" title)))
127 (when lines (mapc (lambda (el) (funcall add-to-body el)) lines)) 122 (when lines (mapc (lambda (el) (funcall add-to-body el)) lines))
128 (when missing
129 (funcall add-to-body (format "set datafile missing '%s'" missing)))
130 (when sets 123 (when sets
131 (mapc (lambda (el) (funcall add-to-body (format "set %s" el))) sets)) 124 (mapc (lambda (el) (funcall add-to-body (format "set %s" el))) sets))
132 (when x-labels 125 (when x-labels
@@ -175,9 +168,8 @@ code."
175 "Execute a block of Gnuplot code. 168 "Execute a block of Gnuplot code.
176This function is called by `org-babel-execute-src-block'." 169This function is called by `org-babel-execute-src-block'."
177 (require 'gnuplot) 170 (require 'gnuplot)
178 (let ((session (cdr (assoc :session params))) 171 (let ((session (cdr (assq :session params)))
179 (result-type (cdr (assoc :results params))) 172 (result-type (cdr (assq :results params)))
180 (out-file (cdr (assoc :file params)))
181 (body (org-babel-expand-body:gnuplot body params)) 173 (body (org-babel-expand-body:gnuplot body params))
182 output) 174 output)
183 (save-window-excursion 175 (save-window-excursion
@@ -195,7 +187,7 @@ This function is called by `org-babel-execute-src-block'."
195 script-file 187 script-file
196 (if (member system-type '(cygwin windows-nt ms-dos)) 188 (if (member system-type '(cygwin windows-nt ms-dos))
197 t nil))))) 189 t nil)))))
198 (message output)) 190 (message "%s" output))
199 (with-temp-buffer 191 (with-temp-buffer
200 (insert (concat body "\n")) 192 (insert (concat body "\n"))
201 (gnuplot-mode) 193 (gnuplot-mode)
@@ -210,10 +202,12 @@ This function is called by `org-babel-execute-src-block'."
210 (var-lines (org-babel-variable-assignments:gnuplot params))) 202 (var-lines (org-babel-variable-assignments:gnuplot params)))
211 (message "%S" session) 203 (message "%S" session)
212 (org-babel-comint-in-buffer session 204 (org-babel-comint-in-buffer session
213 (mapc (lambda (var-line) 205 (dolist (var-line var-lines)
214 (insert var-line) (comint-send-input nil t) 206 (insert var-line)
215 (org-babel-comint-wait-for-output session) 207 (comint-send-input nil t)
216 (sit-for .1) (goto-char (point-max))) var-lines)) 208 (org-babel-comint-wait-for-output session)
209 (sit-for .1)
210 (goto-char (point-max))))
217 session)) 211 session))
218 212
219(defun org-babel-load-session:gnuplot (session body params) 213(defun org-babel-load-session:gnuplot (session body params)
@@ -232,7 +226,7 @@ This function is called by `org-babel-execute-src-block'."
232 (org-babel-gnuplot-process-vars params))) 226 (org-babel-gnuplot-process-vars params)))
233 227
234(defvar gnuplot-buffer) 228(defvar gnuplot-buffer)
235(defun org-babel-gnuplot-initiate-session (&optional session params) 229(defun org-babel-gnuplot-initiate-session (&optional session _params)
236 "Initiate a gnuplot session. 230 "Initiate a gnuplot session.
237If there is not a current inferior-process-buffer in SESSION 231If there is not a current inferior-process-buffer in SESSION
238then create one. Return the initialized session. The current 232then create one. Return the initialized session. The current
@@ -268,15 +262,13 @@ then create one. Return the initialized session. The current
268 "Export TABLE to DATA-FILE in a format readable by gnuplot. 262 "Export TABLE to DATA-FILE in a format readable by gnuplot.
269Pass PARAMS through to `orgtbl-to-generic' when exporting TABLE." 263Pass PARAMS through to `orgtbl-to-generic' when exporting TABLE."
270 (with-temp-file data-file 264 (with-temp-file data-file
271 (make-local-variable 'org-babel-gnuplot-timestamp-fmt) 265 (insert (let ((org-babel-gnuplot-timestamp-fmt
272 (setq org-babel-gnuplot-timestamp-fmt (or 266 (or (plist-get params :timefmt) "%Y-%m-%d-%H:%M:%S")))
273 (plist-get params :timefmt) 267 (orgtbl-to-generic
274 "%Y-%m-%d-%H:%M:%S")) 268 table
275 (insert (orgtbl-to-generic 269 (org-combine-plists
276 table 270 '(:sep "\t" :fmt org-babel-gnuplot-quote-tsv-field)
277 (org-combine-plists 271 params)))))
278 '(:sep "\t" :fmt org-babel-gnuplot-quote-tsv-field)
279 params))))
280 data-file) 272 data-file)
281 273
282(provide 'ob-gnuplot) 274(provide 'ob-gnuplot)