diff options
| author | Rasmus | 2017-06-21 13:20:20 +0200 |
|---|---|---|
| committer | Rasmus | 2017-06-22 11:54:18 +0200 |
| commit | 5cecd275820df825c51bf9a27fcc7e35f30ff273 (patch) | |
| tree | b3f72e63953613d565e6d5a35bec97f158eb603c /lisp/org/ob-gnuplot.el | |
| parent | 386a3da920482b8cb3e962fb944d135c8a770e26 (diff) | |
| download | emacs-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.el | 76 |
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 @@ | |||
| 81 | Dumps all vectors into files and returns an association list | 79 | Dumps all vectors into files and returns an association list |
| 82 | of variable names and the related value to be used in the gnuplot | 80 | of variable names and the related value to be used in the gnuplot |
| 83 | code." | 81 | code." |
| 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. |
| 176 | This function is called by `org-babel-execute-src-block'." | 169 | This 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. |
| 237 | If there is not a current inferior-process-buffer in SESSION | 231 | If there is not a current inferior-process-buffer in SESSION |
| 238 | then create one. Return the initialized session. The current | 232 | then 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. |
| 269 | Pass PARAMS through to `orgtbl-to-generic' when exporting TABLE." | 263 | Pass 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) |