From 9755ccb636ab8e1d855bbc386bc6bab2203a2cd5 Mon Sep 17 00:00:00 2001 From: Visuwesh Date: Tue, 18 Jun 2024 10:39:27 +0530 Subject: [PATCH] org-plot: Respect parameters given in `org-plot/preset-plot-types' * org-plot.el (org-plot/gnuplot-script-preamble) (org-plot/gnuplot-term-extra): Explain what "plot type" means. (org-plot/preset-plot-types): Fix docstring and correct the lambda argument order for the 'grid' plot type. (org-plot/gnuplot): Merge the parameters given in `org-plot/preset-plot-types' and the #+PLOT line to ensure the former is respected everywhere. Reported-by: Visuwesh Link: https://orgmode.org/list/87cypbjw50.fsf@gmail.com --- lisp/org-plot.el | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/lisp/org-plot.el b/lisp/org-plot.el index 83483b2..b436613 100644 --- a/lisp/org-plot.el +++ b/lisp/org-plot.el @@ -302,9 +302,10 @@ (defgroup org-plot nil (defcustom org-plot/gnuplot-script-preamble "" "String of function to be inserted before the gnuplot plot command is run. -Note that this is in addition to, not instead of other content generated in -`org-plot/gnuplot-script'. If a function, it is called with the plot type as -the argument, and must return a string to be used." +Note that this is in addition to, not instead of other content generated +in `org-plot/gnuplot-script'. If a function, it is called with the +parameters used by the current plot type (see +`org-plot/preset-plot-types'), and must return a string to be used." :group 'org-plot :type '(choice string function)) @@ -349,7 +350,7 @@ (defcustom org-plot/preset-plot-types (grid :plot-cmd "splot" :plot-pre (lambda (_table _data-file _num-cols params _plot-str) (if (plist-get params :map) "set pm3d map" "set map")) - :data-dump (lambda (table data-file params _num-cols) + :data-dump (lambda (table data-file _num-cols params) (let ((y-labels (org-plot/gnuplot-to-grid-data table data-file params))) (when y-labels (plist-put params :ylabels y-labels)))) @@ -391,8 +392,8 @@ (defcustom org-plot/preset-plot-types - :data-dump - Function to dump the table to a datafile for ease of use. - Accepts lambda function. Default lambda body: - (org-plot/gnuplot-to-data table data-file params) + Accepts function with arguments: + (table data-file num-cols params) - :plot-pre - Gnuplot code to be inserted early into the script, just after term and output have been set. @@ -541,7 +542,8 @@ (defcustom org-plot/gnuplot-term-extra "" "String or function which provides the extra term options. E.g. a value of \"size 1050,650\" would cause \"set term ... size 1050,650\" to be used. -If a function, it is called with the plot type as the argument." +If a function, it is called with the parameters used by the current plot +type, see `org-plot/preset-plot-types'." :group 'org-plot :type '(choice string function)) @@ -678,8 +680,8 @@ (defun org-plot/gnuplot (&optional params) tbl)) (num-cols (length (if (eq (nth 0 table) 'hline) (nth 1 table) (nth 0 table)))) - (type (assoc (plist-get params :plot-type) - org-plot/preset-plot-types)) + (type (cdr (assoc (plist-get params :plot-type) + org-plot/preset-plot-types))) gnuplot-script data-file) (unless type @@ -693,6 +695,10 @@ (defun org-plot/gnuplot (&optional params) (save-excursion (while (and (equal 0 (forward-line -1)) (looking-at "[[:space:]]*#\\+")) (setf params (org-plot/collect-options params)))) + ;; Ensure that the user can override any plot parameter, and + ;; that the parameters set by the plot type in + ;; `org-plot/preset-plot-types' is respected. + (setq params (org-combine-plists type params)) ;; Dump table to datafile (let ((dump-func (plist-get type :data-dump))) ;; Use a stable temporary file to ensure that 'replot' upon -- 2.43.0