summaryrefslogtreecommitdiff
path: root/elpa/gnuplot-20200322.53/gnuplot.el
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/gnuplot-20200322.53/gnuplot.el')
-rw-r--r--elpa/gnuplot-20200322.53/gnuplot.el3265
1 files changed, 0 insertions, 3265 deletions
diff --git a/elpa/gnuplot-20200322.53/gnuplot.el b/elpa/gnuplot-20200322.53/gnuplot.el
deleted file mode 100644
index b6fe49e..0000000
--- a/elpa/gnuplot-20200322.53/gnuplot.el
+++ /dev/null
@@ -1,3265 +0,0 @@
-;;; gnuplot.el --- Major-mode and interactive frontend for gnuplot
-
-;; Copyright (C) 1998, 2011 Phil Type and Bruce Ravel, 1999-2012 Bruce Ravel
-
-;; Author: Jon Oddie
-;; Bruce Ravel
-;; Phil Type
-;; Maintainer: Bruce Ravel <bruceravel1@gmail.com>
-;; Created: June 28 1998
-;; Version: 0.7.0
-;; Keywords: data gnuplot plotting
-;; URL: https://github.com/emacsorphanage/gnuplot
-;; Package-Requires: ((emacs "24.1"))
-
-;; This file is not part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This is a major mode for composing gnuplot scripts and displaying
-;; their results using gnuplot. It supports features of recent
-;; Gnuplot versions (4.4 and up), but should also work fine with older
-;; versions.
-;;
-;; This version of gnuplot-mode has been tested mostly on GNU Emacs 23
-;; and 24, but should also work with older GNU Emacs versions back to
-;; Emacs 21, and XEmacs 21.
-;;
-;; This mode offers several tools to help you compose your scripts,
-;; including font-lock syntax colorization, a syntax table appropriate
-;; to gnuplot, key bindings, pull-down menus, indentation, keyword
-;; completions and variable customization using the Custom package.
-;; Once the script is composed, there are several function for sending
-;; some or all of the script to gnuplot. The interaction with the
-;; gnuplot process is within a comint buffer. Plots can optionally be
-;; displayed within Emacs.
-;;
-;; C-c C-l send current line to gnuplot
-;; C-c C-v send current line to gnuplot and move forward 1 line
-;; C-c C-r send current region to gnuplot
-;; C-c C-b send entire buffer to gnuplot
-;; C-c C-f send a file to gnuplot
-;; C-c C-i insert filename at point
-;; C-c C-n negate set option on current line
-;; C-c C-c comment region
-;; C-c C-o set arguments for command at point
-;; S-mouse-2 set arguments for command under mouse cursor
-;; C-c C-d read the gnuplot info file
-;; C-c C-e show-gnuplot-buffer
-;; C-c C-k kill gnuplot process
-;; C-c C-u submit a bug report about gnuplot-mode
-;; C-c C-z customize gnuplot-mode
-;; M-tab or M-ret complete keyword before point
-;; ret newline and indent
-;; tab indent current line
-;; C-c M-i toggle inline plot display in comint buffer
-;;
-;; With the exception of the commands for sending commands to Gnuplot,
-;; most of the above commands also work in the Gnuplot comint buffer,
-;; in addition to the following:
-;; M-C-p plot the most recent script buffer line-by-line
-;; M-C-f save the current script buffer and load that file
-;; C-c C-e pop back to most recent script buffer
-;;
-;; These two functions are useful for starting up gnuplot-mode:
-;;
-;; M-x gnuplot-mode
-;; start gnuplot-mode in the current buffer
-;;
-;; M-x gnuplot-make-buffer
-;; open a new buffer (which is not visiting a file) and start
-;; gnuplot-mode in that buffer
-;;
-;; Gnuplot-mode now includes context-sensitive support for keyword
-;; completion and, optionally, eldoc-mode help text. See the
-;; commentary in gnuplot-context.el for more information. If you
-;; don't find it useful, it can be turned off by customizing
-;; `gnuplot-context-sensitive-mode'.
-;;
-;;
-;; ---------------------------------------------------------------------
-;;
-;; Other Lisp files used by gnuplot.el
-;;
-;; gnuplot-gui.el (written by Bruce):
-;; Defines the GUI interface for setting setting arguments to
-;; gnuplot options. This uses the widget package extensively.
-;;
-;; gnuplot-context.el (written by Jonathan, j.j.oddie@gmail.com)
-;; Context-sensitive completion, help lookup and eldoc
-;; strings for gnuplot buffers. Should be byte-compiled before
-;; using.
-;;
-;; ---------------------------------------------------------------------
-;;
-;; This mode was inspired by the original gnu-plot-mode by Gershon
-;; Elber, which is distributed with gnuplot itself and which dates
-;; back to the early 90's. Although this mode encompasses the
-;; functionality of the original, the two share no code and the
-;; current implementation takes advantage of many features of modern
-;; versions of Emacs and adheres (or so I intend) to the major mode
-;; conventions described in the emacs-lisp reference for version 19
-;; and later.
-;;
-;; ---------------------------------------------------------------------
-;;
-;; Installation
-;; ============
-;;
-;; A recent version of this file can be found at
-;; https://github.com/emacsorphanage/gnuplot/
-;;
-;; To autoload gnuplot-mode on any file with gp extension, put this in
-;; your .emacs file
-;; (autoload 'gnuplot-mode "gnuplot" "gnuplot major mode" t)
-;; (autoload 'gnuplot-make-buffer "gnuplot" "open a buffer in gnuplot-mode" t)
-;;
-;; Something like
-;; (setq auto-mode-alist (append '(("\\.gp$" . gnuplot-mode))
-;; auto-mode-alist))
-;; is useful for having files ending in .gp start up in gnuplot-mode.
-;;
-;; Something like
-;; (global-set-key [(f9)] 'gnuplot-make-buffer)
-;; may be useful. This binds f9 to the function that opens a scratch
-;; buffer (i.e. one that is not visiting a file) in gnuplot-mode.
-;; This is handy for your quick 'n' dirty plotting chores.
-;;
-;; To use the `gnuplot-info-lookup-symbol' function, the file
-;; gnuplot.info MUST be installed somewhere that info can find it.
-;; This means you must either:
-;; 1. Copy gnuplot.info to the normal info directory or
-;; 2. Make sure info can find gnuplot.info by putting this in your
-;; .emacs file:
-;; (setenv "INFOPATH"
-;; (concat (getenv "INFOPATH") ":"
-;; (expand-file-name "/path/to/file")))
-;; where "/path/to/file" is the location of gnuplot.info
-;;
-;; This mode has been tested extensively with GNU Emacs 23 and 24, and
-;; in a limited manner with GNU Emacs 22 and XEmacs 21.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;; History:
-
-;;
-;; 0.1 Jun 25 1998 Finished with initial release.
-;; 0.2 Sep 4 1998 Added filename insertion, indentation, and
-;; colorization/completion in comint buffer. <BR>
-;; 0.2a Sep 11 1998 made `indent-line-function' buffer-local (whoops!)
-;; and fixed some stuff in the installation script <BR>
-;; 0.3 Sep 12 1998 include insertions menu <BR>
-;; 0.3a Sep 14 1998 fixed bug finding info file if missing, fixed bug
-;; starting font-lock, fixed bug re overwriting files in
-;; installation script <BR>
-;; 0.3b Sep 15 1998 Added (require 'info) to `(eval-and-compile'
-;; clause, Added (kill-all-local-variables) to `gnuplot-mode',
-;; altered order of:-
-;; (provide 'gnuplot)
-;; (run-hooks 'gnuplot-load-hook)
-;; at the end of the file in case something in the load hook
-;; requires gnuplot (oh not that old one again...), added
-;; `gnuplot-comint-setup-hook', corrected `gnuplot-mark-active'
-;; which caused an error to be raised by (mark) when the mark
-;; was inactive <DB> Some changes to font-lock rules <LB>&<BR>
-;; 0.4 Nov 14 1998 <BR> Use info-look for info interface. No
-;; change to gnuplot-mode user interface, but cleaner code.
-;; With info-look, the help funcion works regardless of the
-;; version number of gnuplot. Also, `gnuplot-keywords' (used
-;; for help, keyword-completion, and hilit19 highlighting) is
-;; now generated automatically.
-;; 0.4a Nov 18 1998 <BR> info-look leaves a couple of really useless
-;; buffers lying around so I cleaned them up. Also fixed
-;; font-lock rules so that things in quotes get highlighted
-;; correctly and the surrounding text is unhighlighted. Fixed
-;; up font-lock rules for plot and splot. Added
-;; `gnuplot-send-line-and-forward' as suggested by <MD>.
-;; 0.4b Nov 21 1998 <BR> added toolbar for xemacs -- see file
-;; gnuplot-toolbar.el. fixed error message in plot line
-;; function when line is empty. option added to display the
-;; comint buffer showing the gnuplot process in a separate
-;; frame
-;; 0.4c Minor stuff: Nov 30 1998 <BR> fixed highlighting in comint
-;; buffer. fixed frame behavior. added "[:]" to range
-;; insertions. added :link to defgroup. Dec 1 1998 <BR> fixed
-;; some mismatched defcustoms. added a few lines to suppress
-;; some compile-time warnings. Dec 3 1998 <BR> Fixed behavior
-;; of filename insertion function. Added more :links to
-;; defgroup.
-;; 0.4d Dec 6 1998 <BR> Added function gnuplot-setup-info-look and
-;; variable gnuplot-info-hook to handle various versions of the
-;; gnuplot info file.
-;; 0.4e Dec 12 1998 <BR> Split up gnuplot-insertions-menu for ease of
-;; custimization, put menubar initialization in a function.
-;; 0.4f Dec 14 1998 <BR> defcustom the insertions submenus, add
-;; gnuplot-insertion-menu-flag, intelligent Makefile knows
-;; which info-look to compile
-;; 0.5 Dec 27 1998 <BR> wrote initial draft of gnuplot-gui.el,
-;; included it in insertions menu and in `gnuplot-insert'.
-;; Negate option function, bound to C-c C-n. Dec 29 1998 <BR>
-;; C-c C-h with no response goes to Commands menu. Transparent
-;; toolbar icons. Replace kw-compl with a simple completion
-;; function. Put gnuplot-toolbar code in gnuplot.el.
-;; 0.5a Jan 23 1999 <BR> send file uses the load command. add
-;; gnuplot-plot-from-comint and
-;; gnuplot-save-and-plot-from-comint and keybindings in the
-;; comint buffer. do (process-kill-without-query
-;; gnuplot-process nil). `gnuplot-negate-option' checks if set
-;; option has a negated form.
-;; 0.5b `gnuplot-kill-gnuplot-buffer' made more robust. fixed a bug
-;; in `gnuplot-plot-from-comint'. fixed description of
-;; gnuplot-faces group.
-;; 0.5c update copyright information, update gpelcard
-;; 0.5d Mar 20 1999 <BR> adopt installation materials from <LH>. Add
-;; some support for hidden3d. Use constants in types alists in
-;; gui. Various other minor improvements to the types alists.
-;; 0.5e Apr 6 1999 <BR> at the suggestion of <SE> I did away with the
-;; gnuplot-which-highlight variable and revamped how
-;; colorization gets turned on. This is a bit tricky since I
-;; want it to work with font-lock under emacs and xemacs and
-;; with hilit19. Apr 11 1999 <BR> insert space at end of
-;; unique completion. add a few GUI types, rewrite some stuff
-;; in the GUI interface. primitive support for plot, splot,
-;; and fit. Fixed completion in file widget.
-;; 0.5f May 15 1999 <BR> Add pgnuplot.c and Win9x install instructions
-;; to the distribution. Fixed a defface bug. Added
-;; `gnuplot-keywords-when' allowing deferral of parsing the
-;; info file.
-;; 0.5g May 27 1999 <BR> Fixed font-locking of strings and
-;; comments. Figure out gnuplot-version number from startup
-;; message and set `gnuplot-echo-command-line-flag'
-;; accordingly. Added `gnuplot-program-version' variable.
-;; Check that font-lock is actually a feature, as suggested by
-;; <KL>
-;; 0.5h Aug 15 1999 <BR> Added `gnuplot-determine-gnuplot-version' so
-;; that the gnuplot version number and `comint-process-echos'
-;; actually get set correctly. Actually, the first time
-;; something is plotted, the echoing might not work, but the
-;; second time it will.
-;; 0.5i Sep 2 1999 <BR> Once again changed how
-;; `comint-process-echos' gets set. Maybe I got it right this
-;; time? Also fixed certain situations where the info file
-;; did notget properly loaded (insertion with info toggle on
-;; and info button in GUI).
-;; 0.5j Sep 9 1999 <BR> Do a more robust check for the gnuplot
-;; process before killing the gnuplot buffer, as suggested by
-;; <SE>.
-;; 0.5k Sep 22 1999 <BR> make `gnuplot-send-line-and-forward' skip
-;; over blank and comment lines as suggested by <SE>. Jan 10
-;; 2000 Bound C-c C-j to `gnuplot-forward-script-line'.
-;; 0.5l Nov 16 2000 <BR> support for pm3d in gnuplot-gui and in plot
-;; options insertions menu. mentioned pm3d in gpelcard. gui
-;; support for x11 pm3d and vgagl terms.
-;; `gnuplot-negate-option' works with new syntax.
-;; 0.5m Nov 17 2000 <BR> add colorization and gui support for new
-;; commands in 3.8. gui support for emf term. gui support for
-;; new "set style" syntax. much better scheme for determining
-;; gnuplot version number + make better use of it.
-;; 0.5n Jan 4 2001 <BR> corrected a serious problem interacting with
-;; speedbar
-;; 0.5o skipped
-;; 0.5p Mar 14 2001 <BR> fixed problem with toolbar creation and
-;; speedbar clicking
-;; 0.5q May 30 2001 <BR> added font-lock bindings for words associated
-;; with plotting
-;; 0.5r Oct 17 2001 <BR> Incorporate two suggestions by <RF>, bind
-;; C-c C-c to comment-region and C-c C-o to the GUI, also make
-;; C-c C-l respect continuation lines
-;; April 12, 2002 <BR> added feature to trim length of gnuplot
-;; process buffer
-;; 0.5s Jun 7 2002 <BR> Yet again changed how `comint-process-echos'
-;; gets set. It really needs to be nil on NTEmacs 21.1 or
-;; comint gets stuck in an infinate loop.
-;; 0.5t Sep 16 2002 <BR> Fixed a problem with C-c C-v jumping
-;; forward 2 lines at a time
-;; 0.6.0 Dec 13 2002 <BR> Changed numbering scheme to accommodate
-;; gnuplot packaging requirements
-;; 0.6.1 Sep 13 2011 <BR> Moved to github, updated contact info
-;; 0.7.0 Oct 20 2012 <jjo> Contextual completion & help, inline plots,
-;; some other stuff
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Acknowledgements:
-;; David Batty <DB> (numerous corrections)
-;; Laurent Bonnaud <LB> (suggestions regarding font-lock rules)
-;; Markus Dickebohm <MD> (suggested `gnuplot-send-line-and-forward')
-;; Stephen Eglan <SE> (suggested the use of info-look,
-;; contributed a bug fix regarding shutting
-;; down the gnuplot process, improvement to
-;; `gnuplot-send-line-and-forward')
-;; Robert Fenk <RF> (suggested respecting continuation lines)
-;; Michael Karbach <MK> (suggested trimming the gnuplot process buffer)
-;; Alex Chan Libchen <AL> (suggested font-lock for plotting words)
-;; Kuang-Yu Liu <KL> (pointed out buggy dependence on font-lock)
-;; Hrvoje Niksic <HN> (help with defcustom arguments for insertions)
-;; Andreas Rechtsteiner <AR> (pointed out problem with C-c C-v)
-;; Michael Sanders <MS> (help with the info-look interface)
-;; Jinwei Shen <JS> (suggested functionality in comint buffer)
-;; Michael M. Tung <MT> (prompted me to add pm3d support)
-;; Holger Wenzel <HW> (suggested using `gnuplot-keywords-when')
-;; Wolfgang Zocher <WZ> (pointed out problem with gnuplot-mode + speedbar)
-;; Jon Oddie <jjo> (indentation, inline images, context mode)
-;;
-;; and especially to Lars Hecking <LH> for including gnuplot-mode
-;; with the gnuplot 3.7-beta distribution and for providing me with
-;; installation materials
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; To Do:
-;;
-;; 1. Since `gnuplot-display-process' can be nil, it would be
-;; handy to have a function to put on
-;; `gnuplot-after-plot-buffer-hook' to check and see if the script
-;; executed properly. Alas I am not sure how gnuplot signals its
-;; errors.
-;; 2. improve plot, splot, fit in GUI
-;; 3. interface to setting bind command using `read-key-sequence'.
-;; this is a pain because the nomenclature is really different in
-;; gnuplot than in `read-key-sequence'
-;;
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;; Code:
-
-(require 'comint)
-(require 'easymenu)
-(eval-when-compile (require 'cl))
-
-(declare-function 'eldoc-add-command "eldoc")
-
-
-;;; --- variable definitions + eval-and-compile clauses
-
-;; We no longer hack around ancient versions of Customize with macros
-(require 'custom)
-
-(eval-and-compile ;; <DB>
- (require 'info))
-
-(eval-and-compile
- (condition-case ()
- (require 'info-look)
- (error nil)))
-
-;; Workaround missing `completion-at-point' in (X)Emacs < 22
-(if (not (fboundp 'completion-at-point))
- (defun gnuplot-xemacs-completion-at-point ()
- "Perform completion on keyword preceding point.
-
-This binds `comint-dynamic-complete-functions' to
-`gnuplot-comint-complete' and uses `comint-dynamic-complete' to do the
-real work."
- (interactive)
- (let ((comint-dynamic-complete-functions
- '(gnuplot-comint-complete)))
- (completion-at-point))))
-
-;; Work around missing `window-full-height-p'
-(if (fboundp 'window-full-height-p)
- (defalias 'gnuplot-window-full-height-p 'window-full-height-p)
- ;; The below is taken from window.el in GNU Emacs
- (defun gnuplot-window-full-height-p (&optional window)
- (unless window
- (setq window (selected-window)))
- (= (window-height window)
- (window-height (frame-root-window (window-frame window))))))
-
-;; Workaround obsolete `process-kill-without-query'
-(if (fboundp 'set-process-query-on-exit-flag)
- (defalias 'gnuplot-set-process-query-on-exit-flag 'set-process-query-on-exit-flag)
- (defalias 'gnuplot-set-process-query-on-exit-flag 'process-kill-without-query))
-
-;; Workaround for missing syntax-ppss in XEmacs
-(if (fboundp 'syntax-ppss)
- (defalias 'gnuplot-syntax-ppss 'syntax-ppss)
- (defun gnuplot-syntax-ppss (&optional pos)
- (save-excursion
- (unless pos (setq pos (point)))
- (let ((begin
- (save-excursion
- (goto-char pos)
- (gnuplot-point-at-beginning-of-continuation))))
- (parse-partial-sexp begin pos)))))
-
-
-;;;;
-(defconst gnuplot-xemacs-p (string-match "XEmacs" (emacs-version)))
-(defconst gnuplot-ntemacs-p (string-match "msvc" (emacs-version)))
-(defvar gnuplot-three-eight-p "")
-
-(defconst gnuplot-maintainer "Jon Oddie")
-(defconst gnuplot-maintainer-url
- "https://github.com/emacsorphanage/gnuplot/")
-(defconst gnuplot-version "0.7-beta")
-
-(defgroup gnuplot nil
- "Gnuplot-mode for Emacs."
- :prefix "gnuplot-"
- :group 'processes
- :group 'applications
- :group 'local
- :link '(emacs-library-link :tag "Lisp File" "gnuplot.el")
- :link '(url-link :tag "Homepage"
- "https://github.com/emacsorphanage/gnuplot/")
- :link '(custom-manual "(gnuplot)Top")
- :link '(emacs-commentary-link :tag "Commentary" "gnuplot.el"))
-(defgroup gnuplot-insertions nil
- "Insert commands into gnuplot-scripts from a pull-down menu."
- :prefix "gnuplot-insertions-"
- :group 'gnuplot)
-(defgroup gnuplot-hooks nil
- "Hook variables used by `gnuplot-mode'."
- :prefix "gnuplot-"
- :group 'gnuplot)
-
-(defcustom gnuplot-mode-hook nil
- "Hook run when `gnuplot-mode' is entered."
- :group 'gnuplot-hooks
- :type 'hook)
-(defcustom gnuplot-load-hook nil
- "Hook run when gnuplot.el is first loaded."
- :group 'gnuplot-hooks
- :type 'hook)
-(defcustom gnuplot-after-plot-hook nil
- "Hook run after gnuplot plots something.
-This is the last thing done by the functions for plotting a line, a
-region, a buffer, or a file."
- :group 'gnuplot-hooks
- :type 'hook)
-
-
-(defcustom gnuplot-info-hook nil
- "Hook run before setting up the info-look interface.
-This hook is necessary to handle inconsistencies in versions of and
-sources of the gnuplot info file. If Gnuplot-mode can find the info
-file generated from the 3.6beta patchlevel 347 (or later) release of
-Gnuplot, then this hook probably is not necessary. Some versions of
-the info file may have a General Index session, which can be used by
-info-look. In that case the following (or something similar with the
-value of `info-lookup-symbol-alist' altered appropriately) should be
-placed in the .emacs file.
-
-Emacs version 20.2 ships with a different version of info-look that
-does 20.3. If you use any version of Emacs 19, you must use the
-version from 20.2. Any version of XEmacs 20 or 21 should use the
-version from 20.3 but can use either. XEmacs 19 should use the
-version 20.2.
-
-For the newer version of info-look, do this:
-
- (add-hook \'gnuplot-info-hook
- \'(lambda ()
- (let ((elem (assoc \'gnuplot-mode info-lookup-alist)))
- (delete elem info-lookup-alist)
- (info-lookup-maybe-add-help
- :mode 'gnuplot-mode :topic 'symbol
- :regexp \"[a-zA-Z][_a-zA-Z0-9]*\"
- :doc-spec '((\"(gnuplot)General Index\" nil
- \"[_a-zA-Z0-9]+\"))))))
-
-For the older version of info-look, do this:
-
- (add-hook \'gnuplot-info-hook
- \'(lambda ()
- (let ((elem (assoc \'gnuplot-mode info-lookup-alist)))
- (delete elem info-lookup-alist)
- (setq info-lookup-alist
- (append info-lookup-alist
- \'((gnuplot-mode
- \"[a-zA-Z][_a-zA-Z0-9]*\" nil
- ((\"(gnuplot)General Index\" nil
- \"[_a-zA-Z0-9]+\" )))))))))"
- :group 'gnuplot-hooks
- :type 'hook)
-
-;; comint hook suggested by <DB>
-(defcustom gnuplot-comint-setup-hook nil
- "Hook run after setting up the gnuplot buffer in comint mode.
-So the configuration can be customised by the user."
- :group 'gnuplot-hooks
- :type 'hook)
-
-(defcustom gnuplot-comint-mode-hook nil
- "Hook run after setting up the gnuplot buffer in gnuplot-comint-mode.
-By default this runs the hook named `gnuplot-comint-setup-hook',
-for backward compatibility."
- :group 'gnuplot-hooks
- :type 'hook)
-
-(defvar gnuplot-recently-sent nil
- "This is a record of the most recent kind of text sent to gnuplot.
-It takes as its value nil, 'line, 'region, 'buffer, or 'file. It is
-useful for functions included in `gnuplot-after-plot-hook'.")
-(make-variable-buffer-local 'gnuplot-recently-sent)
-
-(defcustom gnuplot-program "gnuplot"
- "The name of the gnuplot executable."
- :group 'gnuplot
- :type 'string)
-(defvar gnuplot-program-version nil
- "Version number of gnuplot.
-This is using `gnuplot-fetch-version-number'.")
-(defvar gnuplot-program-major-version nil
- "Major version number of gnuplot.
-This is found using `gnuplot-fetch-version-number'.")
-(defvar gnuplot-program-minor-version nil
- "Minor version number of gnuplot.
-This is found using `gnuplot-fetch-version-number'.")
-
-(defcustom gnuplot-process-name "gnuplot"
- "Name given to the gnuplot buffer and process."
- :group 'gnuplot
- :type 'string)
-(defvar gnuplot-buffer nil
- "The name of the buffer displaying the gnuplot process.")
-(defvar gnuplot-process nil
- "Variable holding the process handle.")
-(defvar gnuplot-process-frame nil
- "The frame for displaying the gnuplot process.
-This is used when `gnuplot-display-process' is equal to 'frame.")
-(defvar gnuplot-comint-recent-buffer nil
- "The most recently plotted gnuplot script buffer.
-This is used by the function that plot from the comint buffer. It is
-reset every time something is plotted from a script buffer.")
-
-(defcustom gnuplot-gnuplot-buffer "plot.gp"
- "The name of the gnuplot scratch buffer opened by 'gnuplot-make-buffer'."
- :group 'gnuplot
- :type 'string)
-
-(defcustom gnuplot-display-process 'window
- "This controls how the gnuplot process buffer is displayed.
-The values are
- 'frame display gnuplot process in a separate frame
- 'window display gnuplot process in this frame but in another window
- nil `gnuplot-process' is in the current frame but not displayed"
- :group 'gnuplot
- :type '(radio (const :tag "Separate frame" frame)
- (const :tag "Separate window" window)
- (const :tag "Not displayed" nil)))
-(defcustom gnuplot-info-display 'window
- "Determines how `gnuplot-info-lookup-symbol' displays the info file.
-The values are
- 'frame display info file in a separate frame
- 'window display info file in another window
- nil display info file in the current window"
- :group 'gnuplot
- :type '(radio (const :tag "Separate frame" frame)
- (const :tag "Separate window" window)
- (const :tag "This window" nil)))
-
-(defcustom gnuplot-echo-command-line-flag (not gnuplot-ntemacs-p)
- "Non-nil means the gnuplot subprocess echoes any input.
-This sets the fall-back value of `comint-process-echoes'.
-If `gnuplot-mode' cannot figure out what version number of gnuplot
-this is, then the value of this variable will be used for
-`comint-process-echos'. It seems that gnuplot 3.5 wants this to be
-nil and 3.7 wants it to be t. If lines that you send to gnuplot from
-the `gnuplot-mode' buffer are not appearing at the gnuplot prompt in
-the process buffer, try toggling it. Also see the document string for
-`comint-process-echos'. If you change this, kill the gnuplot process
-and start it again."
- :group 'gnuplot
- :type 'boolean)
-(defcustom gnuplot-insertions-show-help-flag nil
- "Non-nil means to display certain help messages automatically.
-These messages are shown after menu insertion of gnuplot commands."
- :group 'gnuplot-insertions
- :type 'boolean)
-
-(defcustom gnuplot-delay 0.01
- "Amount of time to delay before sending a new line to gnuplot.
-This is needed so that the the line is not written in the gnuplot
-buffer in advance of its prompt. Increase this number if the
-prompts and lines are displayed out of order."
- :group 'gnuplot
- :type 'number)
-(defcustom gnuplot-buffer-max-size 1000
- "The maximum size in lines of the gnuplot process buffer.
-Each time text is written in the gnuplot process buffer, lines are
-trimmed from the beginning of the buffer so that the buffer is this
-many lines long. The lines are deleted after the most recent lines
-were interpretted by gnuplot. Setting to 0 turns off this feature."
- :group 'gnuplot
- :type 'integer)
-(defcustom gnuplot-quote-character "\'"
- "Quotation character used for inserting quoted strings.
-Gnuplot can use single or double quotes. If you prefer to have the
-filename insertion function never insert quotes for you, set this
-to the empty string."
- :group 'gnuplot
- :type '(radio (const :tag "double quote" "\"")
- (const :tag "single quote" "\'")
- (const :tag "none" "" )))
-(defcustom gnuplot-basic-offset 4
- "Number of columns to indent lines inside a do- or if-else-block.
-
-This applies only to new-style do- and if-statements using
-braces. Commands continued over a linebreak using a backslash
-are always indented to line up with the second word on the line
-beginning the continued command."
- :group 'gnuplot
- :type 'integer)
-
-;; (defcustom gnuplot-gnuplot-version nil
-;; "Force gnuplot-mode to behave for this version of gnuplot."
-;; :group 'gnuplot
-;; :type '(radio (const :tag "unspecified" nil)
-;; (const :tag "3.8 or newer" "3.8")
-;; (const :tag "3.7 or older" "3.7")))
-
-(defvar gnuplot-info-frame nil)
-(defvar gnuplot-info-nodes '())
-
-(defvar gnuplot-first-call t)
-
-;; with info-look, there is no need to carry this list around -- it
-;; can be generated on the fly appropriate to the currently installed
-;; version of gnuplot.info
-(defvar gnuplot-keywords nil
- "A list of keywords used in GNUPLOT.
-These are set by `gnuplot-set-keywords-list' from the values in
-`info-lookup-cache'.")
-(defvar gnuplot-keywords-alist nil) ;; For all-completions
-(defvar gnuplot-keywords-pending t ;; <HW>
- "A boolean which gets toggled when the info file is probed.")
-(defcustom gnuplot-keywords-when 'deferred ;; 'immediately
- "This variable controls when the info file is parsed.
-The choices are immediately upon starting gnuplot-mode or the first
-time that data is needed."
- :group 'gnuplot
- :type
- '(radio (const :tag "Parse info file when gnuplot-mode starts" immediately)
- (const :tag "Parse info file the first time it is needed" deferred)))
-
-(defcustom gnuplot-use-context-sensitive-completion t
- "Non-nil if `gnuplot-context-sensitive-mode' should be enabled by default.
-
-In context-sensitive mode, gnuplot-mode parses the current
-command line to provide smarter completion and documentation
-suggestions."
- :group 'gnuplot
- :type 'boolean
- :initialize 'custom-set-default
- :set (lambda (sym value)
- (dolist (buffer (buffer-list))
- (with-current-buffer buffer
- (when (derived-mode-p 'gnuplot-mode 'gnuplot-comint-mode)
- (gnuplot-context-sensitive-mode
- (if value 1 0))))))
- :link '(emacs-commentary-link "gnuplot-context"))
-
-(defcustom gnuplot-eldoc-mode nil
- "Non-nil if ElDoc mode should be enabled by default in Gnuplot buffers.
-ElDoc support requires `gnuplot-context-sensitive-mode' to be
-on."
- :group 'gnuplot
- :type 'boolean)
-
-(defcustom gnuplot-tab-completion nil
- "Non-nil if TAB should perform completion in gnuplot-mode buffers.
-
-Setting this to non-nil sets the `tab-always-indent' variable to the
-symbol `complete' in gnuplot-mode buffers."
- :group 'gnuplot
- :type 'boolean)
-
-(defun gnuplot-set-display-mode (variable value &rest args)
- "Customize :set function for `gnuplot-inline-image-mode'.
-Set VARIABLE to VALUE. ARGS is optional args."
- (if (and (eq variable 'gnuplot-inline-image-mode)
- value
- (not (gnuplot-display-images-p)))
- (progn
- (message "Displaying images is not supported.")
- (set variable nil))
- (set variable value))
- (gnuplot-setup-comint-for-image-mode))
-
-(defcustom gnuplot-inline-image-mode nil
- "Whether to display Gnuplot output in Emacs.
-
-Possible values are nil, `inline' and `dedicated'.
-
-When this is nil, Gnuplot output is handled outside of Emacs in
-the normal way. Otherwise, Emacs attempts to capture Gnuplot's
-output and display it in a buffer. Output is inserted inline in
-the Gnuplot interaction buffer it this is `inline', in a
-separate dedicated buffer if it is `dedicated'.
-
-Use Customize to set this variable, or the commands
-`gnuplot-external-display-mode', `gnuplot-inline-display-mode',
-and `gnuplot-dedicated-display-mode'."
- :group 'gnuplot
- :type '(radio
- (const :tag "No" nil)
- (const :tag "In Comint buffer" inline)
- (const :tag "In dedicated buffer" dedicated))
- :initialize 'custom-initialize-default
- :set 'gnuplot-set-display-mode)
-
-(defcustom gnuplot-image-format "png"
- "Image format to use for displaying images within Emacs.
-
-This will be sent directly to Gnuplot as a command of the form
-\"set terminal <FORMAT>\". Common values are \"png\" and
-\"svg\".
-
-This only has an effect when `gnuplot-inline-image-mode' is
-non-nil."
- :group 'gnuplot
- :type 'string
- :initialize 'custom-initialize-default
- :set 'gnuplot-set-display-mode)
-
-(defgroup gnuplot-faces nil
- "Text faces used by gnuplot-mode."
- :prefix "gnuplot-"
- :group 'gnuplot)
-
-(defface gnuplot-prompt-face '((((class color))
- (:foreground "firebrick"))
- (t
- (:bold t :underline t)))
- "Face used for the prompt in the gnuplot process buffer."
- :group 'gnuplot-faces)
-
-
-;;; --- key bindings and menus
-
-(defvar gnuplot-mode-map
- (let ((map (make-sparse-keymap))
- (completion-function
- (if (fboundp 'completion-at-point)
- 'completion-at-point
- 'gnuplot-xemacs-completion-at-point)))
- (define-key map "\C-c\C-b" 'gnuplot-send-buffer-to-gnuplot)
- (define-key map "\C-c\C-c" 'comment-region) ; <RF>
- (define-key map "\C-c\C-o" 'gnuplot-gui-set-options-and-insert)
- (define-key map "\C-c\C-w" 'gnuplot-show-version)
- (define-key map "\C-c\C-e" 'gnuplot-show-gnuplot-buffer)
- (define-key map "\C-c\C-f" 'gnuplot-send-file-to-gnuplot)
- (define-key map "\C-c\C-d" 'gnuplot-info-lookup-symbol)
- (define-key map "\C-c\C-i" 'gnuplot-insert-filename)
- (define-key map "\C-c\C-j" 'gnuplot-forward-script-line)
- (define-key map "\C-c\C-k" 'gnuplot-kill-gnuplot-buffer)
- (define-key map "\C-c\C-l" 'gnuplot-send-line-to-gnuplot)
- (define-key map "\C-c\C-n" 'gnuplot-negate-option)
- (define-key map "\C-c\C-p" 'gnuplot-show-gnuplot-version)
- (define-key map "\C-c\C-r" 'gnuplot-send-region-to-gnuplot)
- (define-key map (kbd "C-M-x") 'gnuplot-send-line-to-gnuplot)
- (define-key map "\C-c\C-v" 'gnuplot-send-line-and-forward)
- (define-key map "\C-c\C-z" 'gnuplot-customize)
- (define-key map "\C-i" 'indent-for-tab-command)
- (define-key map "\C-m" 'newline-and-indent)
- (define-key map "\C-c\M-i" 'gnuplot-inline-image-mode)
- (define-key map (kbd "}") 'gnuplot-electric-insert)
- (define-key map "\M-\r" completion-function)
- (define-key map "\M-\t" completion-function)
-
- (if gnuplot-xemacs-p
- (define-key map '(shift button2) 'gnuplot-gui-mouse-set)
- (define-key map [S-mouse-2] 'gnuplot-gui-mouse-set))
-
- map))
-
-(defvar gnuplot-mode-menu nil)
-
-(defvar gnuplot-display-options-menu
- (flet ((make-image-setter (type)
- `[,(concat (upcase type) " images")
- (lambda () (interactive) (gnuplot-set-image-format ,type))
- :style toggle
- :selected (eq gnuplot-image-format ,type)]))
- `("Display plot output"
- ["Externally" gnuplot-external-display-mode
- :style toggle
- :selected (null gnuplot-inline-image-mode)]
- ["In Comint buffer" gnuplot-inline-display-mode
- :active (gnuplot-display-images-p)
- :style toggle
- :selected (eq gnuplot-inline-image-mode 'comint)]
- ["In dedicated buffer" gnuplot-dedicated-display-mode
- :style toggle
- :selected (eq gnuplot-inline-image-mode 'dedicated)]
- "---"
- ,@(mapcar #'make-image-setter (list "png" "jpeg" "svg"))
- ["Other image type..." gnuplot-set-image-format])))
-
-(defvar gnuplot-menu
- `("Gnuplot"
- ["Send line to gnuplot" gnuplot-send-line-to-gnuplot t]
- ["Send line & move forward" gnuplot-send-line-and-forward (not (eobp))]
- ["Send region to gnuplot" gnuplot-send-region-to-gnuplot
- (gnuplot-mark-active)]
- ["Send buffer to gnuplot" gnuplot-send-buffer-to-gnuplot t]
- ["Send file to gnuplot" gnuplot-send-file-to-gnuplot t]
- "---"
- ,gnuplot-display-options-menu
- ["Contextual completion and help" gnuplot-context-sensitive-mode
- :style toggle
- :selected gnuplot-context-sensitive-mode]
- ["Echo area help (eldoc-mode)" eldoc-mode
- :active gnuplot-context-sensitive-mode
- :style toggle
- :selected eldoc-mode]
- "---"
- ["Insert filename at point" gnuplot-insert-filename t]
- ["Negate set option" gnuplot-negate-option t]
- ;;["Set key binding" gnuplot-set-binding gnuplot-three-eight-p]
- ["Keyword help" gnuplot-info-lookup-symbol
- (or gnuplot-keywords gnuplot-keywords-pending)]
- ["Quick help for thing at point" gnuplot-help-function
- gnuplot-context-sensitive-mode]
- ["Info documentation on thing at point"
- gnuplot-info-at-point
- gnuplot-context-sensitive-mode]
- ["Show gnuplot process buffer" gnuplot-show-gnuplot-buffer t]
- ["Set arguments at point" gnuplot-gui-set-options-and-insert
- (fboundp 'gnuplot-gui-set-options-and-insert)]
- ["Swap plot/splot/fit lists in GUI" gnuplot-gui-swap-simple-complete
- (fboundp 'gnuplot-gui-swap-simple-complete)]
- "---"
- ["Customize gnuplot" gnuplot-customize t]
- ["Show gnuplot-mode version" gnuplot-show-version t]
- ["Show gnuplot version" gnuplot-show-gnuplot-version t]
- "---"
- ["Kill gnuplot" gnuplot-kill-gnuplot-buffer t])
- "Menu for `gnuplot-mode'.")
-
-
-
-;;; --- insertions variables and menus
-
-;;(load-library "gnuplot-insertions")
-(defvar gnuplot-mode-insertions-menu nil)
-(defvar gnuplot-insertions-menu nil
- "Menu for insertions in `gnuplot-mode'.
-
-The insertions menu is composed of several sub-menus. The variables
-describing the sub-menus are:
- `gnuplot-insertions-adornments'
- `gnuplot-insertions-plot-options'
- `gnuplot-insertions-terminal'
- `gnuplot-insertions-x-axis'
- `gnuplot-insertions-y-axis'
- `gnuplot-insertions-z-axis'
- `gnuplot-insertions-x2-axis'
- `gnuplot-insertions-y2-axis'
- `gnuplot-insertions-parametric-plots'
- `gnuplot-insertions-polar-plots'
- `gnuplot-insertions-surface-plots'
-These variables can be customized by the user. For example, there are
-many terminal types which are not in the terminal submenu but which
-may be compiled into a user's copy of gnuplot.
-
-Each of these variables is a list whose first element is a string and
-all the rest are vectors as described in the document string for
-`easy-menu-define'. The callback used throughout these menus is
-`gnuplot-insert' which inserts the appropriate set expression and,
-optionally, looks up that item in the gnuplot info file.
-
-The easiest way to customize the submenus is to use the custom
-package. Just type \\[gnuplot-customize] and follow your nose.
-
-You can also add new items to any of these sub-menus by adding to the
-`gnuplot-load-hook' in your .emacs file. Here is an example of adding
-the \"regis\" terminal type to the terminal sub-menu:
-
- (add-hook
- 'gnuplot-load-hook
- '(lambda ()
- (setq gnuplot-insertions-terminal
- (append gnuplot-insertions-terminal
- (list
- [\"regis\"
- (gnuplot-insert \"set terminal regis\")
- t])))))")
-
-(defvar gnuplot-insertions-top ()
- "Top part of insertions menu.
-See the document string for `gnuplot-insertions-menu'")
-
-(defcustom gnuplot-insertions-menu-flag t
- "Non-nil means to place the insertion menu in the menubar.
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type 'boolean)
-
-(defcustom gnuplot-insertions-adornments ; this is icky...
- (if gnuplot-three-eight-p
- '("adornments"
- ["arrow" (gnuplot-insert "set arrow ") t]
- ["bar" (gnuplot-insert "set bar") t]
- ["border" (gnuplot-insert "set border") t]
- ["boxwidth" (gnuplot-insert "set boxwidth ") t]
- ["format" (gnuplot-insert "set format ") t]
- ["grid" (gnuplot-insert "set grid") t]
- ["key" (gnuplot-insert "set key ") t]
- ["label" (gnuplot-insert "set label ") t]
- ["pointsize" (gnuplot-insert "set pointsize ") t]
- ["samples" (gnuplot-insert "set samples ") t]
- ["size" (gnuplot-insert "set size ") t]
- ["style" (gnuplot-insert "set style ") t]
- ["tics" (gnuplot-insert "set tics ") t]
- ["timefmt" (gnuplot-insert "set timefmt ") t]
- ["timestamp" (gnuplot-insert "set timestamp ") t]
- ["title" (gnuplot-insert "set title ") t]
- ["zeroaxis" (gnuplot-insert "set zeroaxis") t])
- '("adornments"
- ["data style" (gnuplot-insert "set data style ") t]
- ["function style" (gnuplot-insert "set function style ") t]
- ["arrow" (gnuplot-insert "set arrow ") t]
- ["bar" (gnuplot-insert "set bar") t]
- ["border" (gnuplot-insert "set border") t]
- ["boxwidth" (gnuplot-insert "set boxwidth ") t]
- ["format" (gnuplot-insert "set format ") t]
- ["grid" (gnuplot-insert "set grid") t]
- ["key" (gnuplot-insert "set key ") t]
- ["label" (gnuplot-insert "set label ") t]
- ["pointsize" (gnuplot-insert "set pointsize ") t]
- ["samples" (gnuplot-insert "set samples ") t]
- ["size" (gnuplot-insert "set size ") t]
- ["tics" (gnuplot-insert "set tics ") t]
- ["timefmt" (gnuplot-insert "set timefmt ") t]
- ["timestamp" (gnuplot-insert "set timestamp ") t]
- ["title" (gnuplot-insert "set title ") t]
- ["zeroaxis" (gnuplot-insert "set zeroaxis") t]))
- "Adornments submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-
-(defcustom gnuplot-insertions-plot-options
- '("plot options"
- ["autoscale" (gnuplot-insert "set autoscale ") t]
- ["clip" (gnuplot-insert "set clip ") t]
- ["encoding" (gnuplot-insert "set encoding ") t]
- ["locale" (gnuplot-insert "set locale ") t]
- ["logscale" (gnuplot-insert "set logscale ") t]
- ["multiplot" (gnuplot-insert "set multiplot") t]
- ["missing" (gnuplot-insert "set missing \"\"") t]
- ["palette" (gnuplot-insert "set palette ") t] ; <MT>
- ["pm3d" (gnuplot-insert "set pm3d ") t]
- ["offsets" (gnuplot-insert "set offsets ") t]
- ["output" (gnuplot-insert "set output ") t]
- ["zero" (gnuplot-insert "set zero ") t])
- "Plot options submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-(defcustom gnuplot-insertions-terminal
- '("terminal"
- ["eepic" (gnuplot-insert "set terminal eepic") t]
- ["fig" (gnuplot-insert "set terminal fig") t]
- ["gpic" (gnuplot-insert "set terminal gpic") t]
- ["latex" (gnuplot-insert "set terminal latex") t]
- ["linux" (gnuplot-insert "set terminal linux") t]
- ["pbm" (gnuplot-insert "set terminal pbm") t]
- ["png" (gnuplot-insert "set terminal png") t]
- ["postscript" (gnuplot-insert "set terminal postscript") t]
- ["pslatex" (gnuplot-insert "set terminal pslatex") t]
- ["table" (gnuplot-insert "set terminal table") t]
- ["tek40xx" (gnuplot-insert "set terminal tek40xx") t]
- ["tkcanvas" (gnuplot-insert "set terminal tkcanvas") t]
- ["tpic" (gnuplot-insert "set terminal tpic") t]
- ["vgagl" (gnuplot-insert "set terminal vgagl") t] ; for pm3d patch
- ["vttek" (gnuplot-insert "set terminal vttek") t]
- ["x11" (gnuplot-insert "set terminal x11") t])
- "Terminal submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-(defcustom gnuplot-insertions-x-axis
- '("x-axis"
- ["xdata" (gnuplot-insert "set xdata ") t]
- ["xlabel" (gnuplot-insert "set xlabel ") t]
- ["xrange" (gnuplot-insert "set xrange [:]") t]
- ["xtics" (gnuplot-insert "set xtics ") t]
- ["mxtics" (gnuplot-insert "set mxtics ") t]
- ["xzeroaxis" (gnuplot-insert "set xzeroaxis ") t]
- ["xdtics" (gnuplot-insert "set xdtics ") t]
- ["xmtics" (gnuplot-insert "set xmtics ") t])
- "X-axis submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-(defcustom gnuplot-insertions-x2-axis
- '("x2-axis"
- ["x2data" (gnuplot-insert "set xdata ") t]
- ["x2label" (gnuplot-insert "set xlabel ") t]
- ["x2range" (gnuplot-insert "set xrange [:]") t]
- ["x2tics" (gnuplot-insert "set xtics ") t]
- ["mx2tics" (gnuplot-insert "set mxtics ") t]
- ["x2zeroaxis" (gnuplot-insert "set xzeroaxis ") t]
- ["x2dtics" (gnuplot-insert "set xdtics ") t]
- ["x2mtics" (gnuplot-insert "set xmtics ") t])
- "X2-axis submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-(defcustom gnuplot-insertions-y-axis
- '("y-axis"
- ["ydata" (gnuplot-insert "set ydata ") t]
- ["ylabel" (gnuplot-insert "set ylabel ") t]
- ["ymtics" (gnuplot-insert "set ymtics ") t]
- ["yrange" (gnuplot-insert "set yrange [:]") t]
- ["ytics" (gnuplot-insert "set ytics ") t]
- ["yzeroaxis" (gnuplot-insert "set yzeroaxis ") t]
- ["ydtics" (gnuplot-insert "set ydtics ") t]
- ["mytics" (gnuplot-insert "set mytics ") t])
- "Y-axis submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-(defcustom gnuplot-insertions-y2-axis
- '("y2-axis"
- ["y2data" (gnuplot-insert "set ydata ") t]
- ["y2label" (gnuplot-insert "set ylabel ") t]
- ["y2range" (gnuplot-insert "set yrange [:]") t]
- ["y2tics" (gnuplot-insert "set ytics ") t]
- ["my2tics" (gnuplot-insert "set mytics ") t]
- ["y2zeroaxis" (gnuplot-insert "set yzeroaxis ") t]
- ["y2mtics" (gnuplot-insert "set ymtics ") t]
- ["y2dtics" (gnuplot-insert "set ydtics ") t])
- "Y2-axis submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-
-(defcustom gnuplot-insertions-z-axis
- '("z-axis"
- ["zdata" (gnuplot-insert "set zdata ") t]
- ["zlabel" (gnuplot-insert "set zlabel ") t]
- ["zrange" (gnuplot-insert "set zrange [:]") t]
- ["ztics" (gnuplot-insert "set ztics ") t]
- ["mztics" (gnuplot-insert "set mztics ") t]
- ["zdtics" (gnuplot-insert "set zdtics ") t]
- ["zmtics" (gnuplot-insert "set zmtics ") t])
- "Z-axis submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-(defcustom gnuplot-insertions-parametric-plots
- '("parametric plots"
- ["parametric" (gnuplot-insert "set parametric") t]
- ["isosamples" (gnuplot-insert "set isosamples ") t]
- ["dummy" (gnuplot-insert "set dummy ") t]
- ["trange" (gnuplot-insert "set trange [:]") t]
- ["urange" (gnuplot-insert "set urange [:]") t]
- ["vrange" (gnuplot-insert "set vrange [:]") t])
- "Parametric plots submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-(defcustom gnuplot-insertions-polar-plots
- '("polar plots"
- ["polar" (gnuplot-insert "set polar") t]
- ["angles" (gnuplot-insert "set angles ") t]
- ["rrange" (gnuplot-insert "set rrange [:]") t])
- "Polar plots submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-(defcustom gnuplot-insertions-surface-plots
- '("surface plots"
- ["clabel" (gnuplot-insert "set clabel ") t]
- ["cntrparam" (gnuplot-insert "set cntrparam ") t]
- ["contour" (gnuplot-insert "set contour") t]
- ["dgrid3d" (gnuplot-insert "set dgrid3d ") t]
- ["hidden3d" (gnuplot-insert "set hidden3d ") t]
- ["mapping" (gnuplot-insert "set mapping ") t]
- ["surface" (gnuplot-insert "set surface ") t]
- ["view" (gnuplot-insert "set view ") t])
- "Surface plots submenu in the insertions menu.
-See the document string for `gnuplot-insertions-menu'
-Changing this will not effect a change in any currently existing
-`gnuplot-mode' buffer. You will see the change the next time you
-create a `gnuplot-mode' buffer."
- :group 'gnuplot-insertions
- :type '(list (string :tag "Title")
- (repeat :inline t
- (vector (string :tag "Name")
- (function :tag "Callback")
- (boolean :tag "Enabled" t)))))
-
-
-(defvar gnuplot-gui-popup-flag)
-(defvar gnuplot-insertions-bottom ()
- "Bottom part of the insertions menu.
-This part contains the toggle buttons for displaying info or
-opening an argument-setting popup.")
-(setq gnuplot-insertions-bottom
- '("---"
- ["Display of info with insertion" gnuplot-toggle-info-display
- :style toggle :selected gnuplot-insertions-show-help-flag]
- ["Display GUI popup with insertion" gnuplot-gui-toggle-popup
- :active (fboundp 'gnuplot-gui-toggle-popup)
- :style toggle :selected (and (fboundp 'gnuplot-gui-toggle-popup)
- gnuplot-gui-popup-flag)]))
-
-
-;; Regarding a comment by <DB>:
-;;
-;; This is from the header in easymenu.el distributed with XEmacs:
-;;
-;; ;; - Function: easy-menu-add MENU [ MAP ]
-;; ;; Add MENU to the current menubar in MAP.
-;; ;;
-;; ;; - Function: easy-menu-remove MENU
-;; ;; Remove MENU from the current menubar.
-;; ;;
-;; ;; Emacs 19 never uses `easy-menu-add' or `easy-menu-remove', menus
-;; ;; automatically appear and disappear when the keymaps specified by
-;; ;; the MAPS argument to `easy-menu-define' are activated.
-;; ;;
-;; ;; XEmacs will bind the map to button3 in each MAPS, but you must
-;; ;; explicitly call `easy-menu-add' and `easy-menu-remove' to add and
-;; ;; remove menus from the menu bar.
-;;
-;; in Emacs, easy-menu-add is defined like this:
-;; (defun easy-menu-add (menu &optional map))
-
-(defun gnuplot-setup-menubar ()
- "Initial setup of gnuplot and insertions menus."
- (if gnuplot-insertions-menu-flag ; set up insertions menu
- (progn
- (if gnuplot-xemacs-p
- (setq gnuplot-insertions-top
- '("insert set expression" "--:doubleLine"))
- (setq gnuplot-insertions-top
- '("insert set expression" "---")))
- (setq gnuplot-insertions-menu
- (append (list "Insertions")
- gnuplot-insertions-top
- (list gnuplot-insertions-adornments)
- (list gnuplot-insertions-plot-options)
- (list gnuplot-insertions-terminal)
- (list gnuplot-insertions-x-axis)
- (list gnuplot-insertions-y-axis)
- (list gnuplot-insertions-z-axis)
- (list gnuplot-insertions-x2-axis)
- (list gnuplot-insertions-y2-axis)
- (list gnuplot-insertions-parametric-plots)
- (list gnuplot-insertions-polar-plots)
- (list gnuplot-insertions-surface-plots)
- gnuplot-insertions-bottom))
- (easy-menu-define gnuplot-mode-insertions-menu gnuplot-mode-map
- "Insertions menu used in Gnuplot-mode"
- gnuplot-insertions-menu)
- (easy-menu-add gnuplot-mode-insertions-menu gnuplot-mode-map)))
- (easy-menu-define ; set up gnuplot menu
- gnuplot-mode-menu gnuplot-mode-map "Menu used in gnuplot-mode"
- gnuplot-menu)
- (easy-menu-add gnuplot-mode-menu gnuplot-mode-map))
-
-;; There is no `mark-active' variable in XEmacs. Hassle! This is not
-;; only replicates mark-active, but it only returns true if the region
-;; is of non-zero width.
-;; Error checking suggested by <DB>
-(defun gnuplot-mark-active ()
- "Return non-nil if the mark is active and it is not equal to point."
- (condition-case nil
- (and (mark) (/= (mark) (point)))
- (error nil)))
-
-
-;;; --- XEmacs toolbar
-
-(defgroup gnuplot-toolbar nil
- "Toolbar used by XEmacs."
- :prefix "gnuplot-toolbar-"
- :group 'gnuplot)
-
-(defcustom gnuplot-toolbar-display-flag gnuplot-xemacs-p
- "Non-nil means to display display a toolbar in XEmacs."
- :group 'gnuplot-toolbar
- :type 'boolean)
-
-(defcustom gnuplot-toolbar-use-toolbar (if (featurep 'toolbar) 'left-toolbar nil)
- "If nil, do not use a toolbar.
-If it is non-nil, it must be a toolbar. The five legal values are
-`default-toolbar', `top-toolbar', `bottom-toolbar', `right-toolbar',
-and `left-toolbar', although choosing `default-toolbar' or
-`top-toolbar' may be a bad idea since either will make the GNUPLOT
-toolbar replace the standard toolbar. Changing this will not change
-the toolbar in a currently existing buffer, but it will take effect
-the next time you use `gnuplot-mode' and Emacs.
-
-This is only used if a toolbar can be displayed, thus this is used in
-XEmacs and ignored in FSF Emacs."
- :type '(choice (const default-toolbar)
- (const top-toolbar)
- (const bottom-toolbar)
- (const left-toolbar)
- (const right-toolbar)
- (const :tag "No toolbar" nil))
- :group 'gnuplot-toolbar)
-
-(defvar gnuplot-toolbar-location "")
-
-(defun gnuplot-toolbar-setup-toolbar (toolbar)
- "Setup function for the `gnuplot-mode' toolbar.
-TOOLBAR contains the toolbar specification.
-This is basically swiped from VM."
- (let ((width 46) (height 46)
- (buffer (current-buffer))
- (frame (selected-frame))
- (tag-set '(win)))
- (cond
- ((eq (symbol-value gnuplot-toolbar-use-toolbar) right-toolbar)
- (setq gnuplot-toolbar-location "right")
- (set-specifier right-toolbar toolbar buffer)
- (set-specifier right-toolbar-width width frame tag-set))
- ((eq (symbol-value gnuplot-toolbar-use-toolbar) left-toolbar)
- (setq gnuplot-toolbar-location "left")
- (set-specifier left-toolbar toolbar buffer)
- (set-specifier left-toolbar-width width frame tag-set))
- ((eq (symbol-value gnuplot-toolbar-use-toolbar) bottom-toolbar)
- (setq gnuplot-toolbar-location "bottom")
- (set-specifier bottom-toolbar toolbar buffer)
- (set-specifier bottom-toolbar-height height frame tag-set))
- ((eq (symbol-value gnuplot-toolbar-use-toolbar) top-toolbar)
- (setq gnuplot-toolbar-location "top")
- (set-specifier top-toolbar toolbar buffer)
- (set-specifier top-toolbar-height height frame tag-set)))))
-
-(defvar gnuplot-line-xpm
- (if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
- (toolbar-make-button-list
- "/* XPM */
-static char *line[] = {
-/* width height num_colors chars_per_pixel */
-\" 40 40 5 1\",
-/* colors */
-\". c #000000\",
-\"a c #bebebe s backgroundToolBarColor\",
-\"b c #2f4f4f\",
-\"c c #ff6347\",
-\"d c #0000ff\",
-/* pixels */
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaa..a..aaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaa..a..a....aaa...aaaaaaaaaaaa\",
-\"aaaaaaaaaaaa..a..a..a..a..a..aaaaaaaaaaa\",
-\"aaaaaaaaaaaa..a..a.aa..a.....aaaaaaaaaaa\",
-\"aaaaaaaaaaa..a..a..a..a..aaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaa..a..a..a..a..a..aaaaaaaaaaaa\",
-\"aaaaaaaaaaa..a..a..a..aa...aaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaadaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaadaaaaaaaaa\",
-\"aaaaaaa..aaaaaaaaaaaaaaaaaaaadaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaadaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaacaaaadaadaaaaaaaaaaaa\",
-\"aaaaaaaa.caaadaaaccaccadaddaaaaaccaaaaaa\",
-\"aaaaaaa..accdaddcaaaaaccaaaaaaccaaaaaaaa\",
-\"aaaaaaaa.aadcaccdaaaadaaccaaccaaaaaaaaaa\",
-\"aaaaaaaa.adaacaaaddadaaaaaccaaaaaaaaaaaa\",
-\"aaaaaaaa.daaaaaaaaadaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaa............................aaaaaa\",
-\"aaaaaaaa.aaaa.aaaa.aaaa.aaaa.aaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"plot line\" button"))
-
-(defvar gnuplot-region-xpm
- (if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
- (toolbar-make-button-list
- "/* XPM */
-static char *region[] = {
-/* width height num_colors chars_per_pixel */
-\" 40 40 5 1\",
-/* colors */
-\". c #000000\",
-\"a c #bebebe s backgroundToolBarColor\",
-\"b c #2f4f4f\",
-\"c c #ff6347\",
-\"d c #0000ff\",
-/* pixels */
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaa.a..a...aaa....a..aa...aa....aaaaa\",
-\"aaaaaa...a..a..a..a..a..a..a..a..a..aaaa\",
-\"aaaaaa..aa.....a.aa..a....aa..a.aa..aaaa\",
-\"aaaaa..a...aaaa..aa.a..a..aa....a..aaaaa\",
-\"aaaaa..a...a..a..a..a..a..a..a..a..aaaaa\",
-\"aaaa..aaaa...aaa....a..aa...aa..a..aaaaa\",
-\"aaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaadaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaadaaaaaaaaa\",
-\"aaaaaaa..aaaaaaaaaaaaaaaaaaaadaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaadaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaacaaaadaadaaaaaaaaaaaa\",
-\"aaaaaaaa.caaadaaaccaccadaddaaaaaccaaaaaa\",
-\"aaaaaaa..accdaddcaaaaaccaaaaaaccaaaaaaaa\",
-\"aaaaaaaa.aadcaccdaaaadaaccaaccaaaaaaaaaa\",
-\"aaaaaaaa.adaacaaaddadaaaaaccaaaaaaaaaaaa\",
-\"aaaaaaaa.daaaaaaaaadaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaa............................aaaaaa\",
-\"aaaaaaaa.aaaa.aaaa.aaaa.aaaa.aaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"plot region\" button"))
-
-(defvar gnuplot-buffer-xpm
- (if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
- (toolbar-make-button-list
- "/* XPM */
-static char *buffer[] = {
-/* width height num_colors chars_per_pixel */
-\" 40 40 5 1\",
-/* colors */
-\". c #000000\",
-\"a c #bebebe s backgroundToolBarColor\",
-\"b c #2f4f4f\",
-\"c c #ff6347\",
-\"d c #0000ff\",
-/* pixels */
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa..aaaaaaaaaa......aaaaaaaaaaaaaa\",
-\"aaaaaaaa..aaaaaaaaa..a..aaaaaaaaaaaaaaaa\",
-\"aaaaaaa....aa..a.........a...aa.a.aaaaaa\",
-\"aaaaaaa..a..a..a..a..a..a..a..a...aaaaaa\",
-\"aaaaaaa.aa....aa..a..a..a.....a..aaaaaaa\",
-\"aaaaaa...a.a..a..a..a..a..aaaa..aaaaaaaa\",
-\"aaaaaa.....a..a..a..a..a..a..a..aaaaaaaa\",
-\"aaaaaa....aaa..a.a..a..aa...aa..aaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaadaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaadaaaaaaaaa\",
-\"aaaaaaa..aaaaaaaaaaaaaaaaaaaadaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaadaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaacaaaadaadaaaaaaaaaaaa\",
-\"aaaaaaaa.caaadaaaccaccadaddaaaaaccaaaaaa\",
-\"aaaaaaa..accdaddcaaaaaccaaaaaaccaaaaaaaa\",
-\"aaaaaaaa.aadcaccdaaaadaaccaaccaaaaaaaaaa\",
-\"aaaaaaaa.adaacaaaddadaaaaaccaaaaaaaaaaaa\",
-\"aaaaaaaa.daaaaaaaaadaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaa............................aaaaaa\",
-\"aaaaaaaa.aaaa.aaaa.aaaa.aaaa.aaaaaaaaaaa\",
-\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"plot buffer\" button"))
-
-(defvar gnuplot-doc-xpm
- (if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
- (toolbar-make-button-list
- "/* XPM */
-static char *book_index[] = {
-/* width height num_colors chars_per_pixel */
-\" 40 40 6 1\",
-/* colors */
-\". c #000000\",
-\"a c #bebebe s backgroundToolBarColor\",
-\"b c #2f4f4f\",
-\"c c #ff0000\",
-\"d c #ffffff\",
-\"e c #708090\",
-/* pixels */
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaa.........bbeaaaebb..........aaaaaa\",
-\"aaaaaa.ddddddddaaebebeaaddddddddd.aaaaaa\",
-\"aaaa...dab.bddeebadbdaeebedeeeeed...aaaa\",
-\"aaaa.c.dbaddddebeedbdeebeedebebed.c.aaaa\",
-\"aaaa.c.d.de.edeebeabdbbeeddebbbed.c.aaaa\",
-\"aaaa.c.dbad.ddebeadbdeeebeddeeeed.c.aaaa\",
-\"aaaa.c.dab..ddeeeedbdebeeedebebed.c.aaaa\",
-\"aaaa.c.dddddddeebeabdebebedeebedd.c.aaaa\",
-\"aaaa.c.debebedebeedbdbebeedbeeeeb.c.aaaa\",
-\"aaaa.c.debeeedeeeaabdaaddddebedbb.c.aaaa\",
-\"aaaa.c.deebeddbebedbdbaa.adeeedeb.c.aaaa\",
-\"aaaa.c.ddeebedeeebaba.dd.dddeeedd.c.aaaa\",
-\"aaaa.c.debeebdbeeedbd....ddeebeed.c.aaaa\",
-\"aaaa.c.deebeedeebadbd.dd.ddeeeedd.c.aaaa\",
-\"aaaa.c.dbbebddeeeeabd.aa.adebebbd.c.aaaa\",
-\"aaaa.c.deeeeedeebeabaedddddeeeedd.c.aaaa\",
-\"aaaa.c.dbebbbdebeadbdaeeeedebeeed.c.aaaa\",
-\"aaaa.c.deeebddeeebdbdeebeedeebeed.c.aaaa\",
-\"aaaa.c.debeeedebeeabdebebedebeebd.c.aaaa\",
-\"aaaa.c.deebbedeeeedbdeeeeddeeeeed.c.aaaa\",
-\"aaaa.c.dddddddddaadbdaddddddddddd.c.aaaa\",
-\"aaaa.c..........beabaeb...........c.aaaa\",
-\"aaaa.c.bbbbbbbbbb.bbbbbbbbbbbbbbb.c.aaaa\",
-\"aaaa.c.bbbbbbbbbb..e.bbbbbbbbbbbb.c.aaaa\",
-\"aaaa.c.bbbbbbbbbb.b.bbbbbbbbbbbbb.c.aaaa\",
-\"aaaa.c............e.e.............c.aaaa\",
-\"aaaa.cccccccccccc.a.a.ccccccccccccc.aaaa\",
-\"aaaa................................aaaa\",
-\"aaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"document\" button"))
-
-(defvar gnuplot-help-xpm
- (if (and (featurep 'xpm) (fboundp 'toolbar-make-button-list))
- (toolbar-make-button-list
- "/* XPM */
-static char *help_btn[] = {
-/* width height num_colors chars_per_pixel */
-\" 40 40 3 1\",
-/* colors */
-\"a c #bebebe s backgroundToolBarColor\",
-\"b c #000000\",
-\"c c #ff0000\",
-/* pixels */
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabbbbbbbbaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaabbbccccccccbbbaaaaaaaaaaaaa\",
-\"aaaaaaaaaaabbccccccccccccccbbaaaaaaaaaaa\",
-\"aaaaaaaaaabccccccccccccccccccbaaaaaaaaaa\",
-\"aaaaaaaaabccccccccccccccccccccbaaaaaaaaa\",
-\"aaaaaaaabcccccccbbbbbbbbcccccccbaaaaaaaa\",
-\"aaaaaaaabccccbbbaaaaaaaabbbccccbaaaaaaaa\",
-\"aaaaaaabccccbaaaaaaaaaaaaaabccccbaaaaaaa\",
-\"aaaaaaabcccbaaaaaaaaaaaaaaaabcccbaaaaaaa\",
-\"aaaaaaabcccbaaaaaaaaaaaaaaaabcccbaaaaaaa\",
-\"aaaaaaabcccbaaaaaaaaaaaaaaaabcccbaaaaaaa\",
-\"aaaaaaabbbbbaaaaaaaaaaaaaaabccccbaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaabbbccccbaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabbbbbbbbcccccccbaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabcccccccccccccbaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabccccccccccccbaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabccccccccccbbaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabccccbbbbbbaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabbbbbbaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabbbbbbaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaabbbbbbaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
-\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
- "XPM format image used for the \"help\" button"))
-
-(defvar gnuplot-toolbar
- '([gnuplot-line-xpm
- gnuplot-line-fn t "Plot the line under point"]
- [gnuplot-region-xpm
- gnuplot-region-fn t "Plot the selected region"]
- [gnuplot-buffer-xpm
- gnuplot-buffer-fn t "Plot the entire buffer"]
- [:style 3d :size 8]
- [gnuplot-help-xpm
- gnuplot-help-fn t "Look at the gnuplot process buffer"]
- [gnuplot-doc-xpm
- gnuplot-doc-fn t "Look at the gnuplot document"])
- "The gnuplot toolbar.")
-
-(fset 'gnuplot-line-fn 'gnuplot-send-line-and-forward)
-(fset 'gnuplot-region-fn 'gnuplot-send-region-to-gnuplot)
-(fset 'gnuplot-buffer-fn 'gnuplot-send-buffer-to-gnuplot)
-(fset 'gnuplot-help-fn 'gnuplot-show-gnuplot-buffer)
-(fset 'gnuplot-doc-fn 'gnuplot-info-lookup-symbol)
-
-(defvar gnuplot-all-buttons-defined
- (and (listp gnuplot-line-xpm) (listp gnuplot-region-xpm)
- (listp gnuplot-buffer-xpm) (listp gnuplot-doc-xpm)
- (listp gnuplot-help-xpm)))
-
-
-(defun gnuplot-make-toolbar-function ()
- "Make toolbar."
- (if (and gnuplot-xemacs-p gnuplot-all-buttons-defined)
- (progn
- ;;(remove-specifier gnuplot-toolbar-use-toolbar (current-buffer))
- (gnuplot-toolbar-setup-toolbar gnuplot-toolbar)
- (add-spec-to-specifier (symbol-value gnuplot-toolbar-use-toolbar)
- gnuplot-toolbar
- (current-buffer)))))
-
-;;(defalias 'gnuplot-make-toolbar 'gnuplot-make-toolbar-function)
-
-
-
-;;; --- syntax colorization, syntax table
-
-(defvar gnuplot-mode-syntax-table
- (let ((table (make-syntax-table)))
- (modify-syntax-entry ?* "." table)
- (modify-syntax-entry ?+ "." table)
- (modify-syntax-entry ?- "." table)
- (modify-syntax-entry ?/ "." table)
- (modify-syntax-entry ?% "." table)
- (modify-syntax-entry ?= "." table)
- (modify-syntax-entry ?: "." table)
- (modify-syntax-entry ?& "." table ) ; rarely used
- (modify-syntax-entry ?^ "." table ) ; operators
- (modify-syntax-entry ?| "." table ) ; in gnuplot,
- (modify-syntax-entry ?& "." table ) ; (by me,
- (modify-syntax-entry ?? "." table ) ; anyway...)
- (modify-syntax-entry ?~ "." table ) ;
-
- (modify-syntax-entry ?_ "w" table )
-
- ;; In GNU Emacs >=24 we can use `syntax-propertize-function' to
- ;; accurately scan for strings and comments (see
- ;; `gnuplot-syntax-propertize'). If there's no
- ;; `syntax-propertize', fall back to using the built-in parser and
- ;; making ", ', and # string or comment delimiters as normal.
- (if (not (boundp 'syntax-propertize-function))
- (progn
- (modify-syntax-entry ?\' "\"" table)
- (modify-syntax-entry ?# "<" table)
- (modify-syntax-entry ?\n ">" table)
- (modify-syntax-entry ?\\ "\\" table))
-
- ;; When syntax-propertize is available, ", ', and # should be
- ;; punctuation so that the built-in parser doesn't interfere
- ;; with the syntax-propertize search.
- (modify-syntax-entry ?\" "." table)
- (modify-syntax-entry ?\' "." table)
- (modify-syntax-entry ?` "." table)
- (modify-syntax-entry ?\\ "." table))
-
- table)
-
- "Syntax table in use in `gnuplot-mode' buffers.
-This is the same as the standard syntax table except that ` and _
-are word characters, and math operators are punctuation
-characters.")
-
-;; Macro to generate efficient regexps for keyword matching
-;;
-;; These regular expressions treat the gnuplot vocabulary as complete
-;; words. Although gnuplot will recognise unique abbreviations, these
-;; regular expressions will not.
-(defmacro gnuplot-make-regexp (list)
- "Macro to generate efficient regexps for keyword matching from LIST."
- `(regexp-opt ,list 'words))
-
-;; Lists of gnuplot keywords for syntax coloring etc.
-(defvar gnuplot-keywords-builtin-functions
- '("abs" "acosh" "acos" "arg" "asinh" "asin" "atan" "atanh" "atan2" "besj1"
- "besj0" "besy1" "besy0" "ceil" "column" "cosh" "cos" "erfc" "erf" "exp"
- "floor" "gamma" "ibeta" "igamma" "imag" "int" "inverf" "invnorm" "lgamma"
- "log" "log10" "norm" "rand" "real" "sgn" "sinh" "sin" "sqrt" "tanh" "tan"
- "tm_hour" "tm_mday" "tm_min" "tm_mon" "tm_sec" "tm_wday" "tm_yday" "tm_year"
- "valid" "EllipticPi" "EllipticE" "EllipticK" "words" "word" "value"
- "timecolumn" "substr" "strstrt" "strptime" "strlen" "stringcolumn"
- "strftime" "sprintf" "lambertw" "gprintf" "exists" "defined" "columnhead")
-
- "List of GNUPLOT built-in functions, as strings.
-
-These are highlighted using `font-lock-function-name-face'.")
-
-(defvar gnuplot-keywords-plotting
- '("axes" "every" "index" "lw" "lt" "ls" "linestyle" "linetype" "linewidth"
- "notitle" "pt" "ps" "pointsize" "pointtype" "smooth" "thru" "title" "using"
- "with" "noautoscale" "volatile" "matrix" "nonuniform" "binary" "fillstyle"
- "linecolor" "pointinterval" "nosurface" "nocontours" "nohidden3d")
- "List of GNUPLOT keywords associated with plotting, as strings.
-
-These are highlighted using `font-lock-type-face'.
-This list does not include plotting styles -- for that, see
-`gnuplot-keywords-plotting-styles'")
-
-(defvar gnuplot-keywords-plotting-styles
- '("boxerrorbars" "boxes" "boxxyerrorbars" "candlesticks" "dots" "errorbars"
- "financebars" "fsteps" "histeps" "impulses" "lines" "linespoints" "points"
- "steps" "vector" "xerrorbars" "xyerrorbars" "yerrorbars" "vectors"
- "filledcurves" "labels" "rgbalpha" "rgbimage" "image" "circles" "pm3d"
- "histograms" "xyerrorlines" "xerrorlines" "errorlines" "yerrorlines")
-
- "List of GNUPLOT plotting styles, as strings.
-
-These are highlighted using `font-lock-function-name-face'.")
-
-(defvar gnuplot-keywords-misc
- '("bind" "cd" "clear" "exit" "fit" "help" "history" "load" "pause" "print"
- "pwd" "quit" "replot" "save" "set" "show" "unset" "if" "else" "do" "update"
- "undefine" "test" "system" "raise" "lower" "eval" "shell" "reset" "reread"
- "refresh" "call")
- "List of GNUPLOT miscellaneous commands, as strings.
-
-These are highlighted using `font-lock-constant-face'.")
-
-(defvar gnuplot-keywords-negatable-options
- '("arrow" "autoscale" "border" "clabel" "clip" "contour" "dgrid3d" "grid"
- "hidden3d" "historysize" "key" "label" "linestyle" "logscale" "mouse"
- "multiplot" "mx2tics" "mxtics" "my2tics" "mytics" "mztics" "offsets" "polar"
- "surface" "timestamp" "title" "x2dtics" "x2mtics" "x2tics" "x2zeroaxis"
- "xdtics" "xmtics" "xtics" "xzeroaxis" "y2dtics" "y2mtics" "y2tics"
- "y2zeroaxis" "ydtics" "ymtics" "ytics" "yzeroaxis" "zdtics" "zmtics" "ztics"
- "zzeroaxis")
-
- "List of gnuplot options which can be negated using `gnuplot-negate-option'.")
-
-(defvar gnuplot-negatable-options-regexp
- (gnuplot-make-regexp gnuplot-keywords-negatable-options))
-
-;; Set up colorization for gnuplot.
-;; This handles font-lock for emacs and xemacs.
-(defvar gnuplot-font-lock-keywords nil)
-(defvar gnuplot-font-lock-syntactic-keywords nil)
-(defvar gnuplot-font-lock-defaults nil)
-
-(when (featurep 'font-lock) ; <KL>
- (setq gnuplot-font-lock-keywords
- (list
- ;; stuff in brackets, sugg. by <LB>
- '("\\[\\([^]]+\\)\\]" 1 font-lock-constant-face)
-
- ;; variable/function definitions
- '("\\(\\(\\sw\\|\\s_\\)+\\s-*\\((\\s-*\\(\\sw\\|\\s_\\)*\\s-*\\(,\\s-*\\sw*\\)*\\s-*)\\)?\\s-*=\\)[^=]"
- 1 font-lock-variable-name-face)
-
- ;; built-in function names
- (cons (gnuplot-make-regexp gnuplot-keywords-builtin-functions)
- font-lock-function-name-face)
-
- ;; reserved words associated with plotting <AL>
- (cons (gnuplot-make-regexp gnuplot-keywords-plotting)
- font-lock-type-face)
- (cons (gnuplot-make-regexp gnuplot-keywords-plotting-styles)
- font-lock-function-name-face)
-
- ;; (s)plot -- also thing (s)plotted
- '("\\<s?plot\\>" . font-lock-keyword-face)
- ;; '("\\<s?plot\\s-+\\([^'\" ]+\\)[) \n,\\\\]"
- ;; 1 font-lock-variable-name-face)
-
- ;; other common commands
- (cons (gnuplot-make-regexp gnuplot-keywords-misc)
- font-lock-constant-face)
- (cons "!.*$" font-lock-constant-face))) ; what is this for? jjo
-
- (setq gnuplot-font-lock-defaults
- '(gnuplot-font-lock-keywords
- nil ; Use syntactic fontification
- t ; Use case folding
- nil ; No extra syntax
- ;; calls `gnuplot-beginning-of-continuation'
- ;; to find a safe place to begin syntactic highlighting
- beginning-of-defun))
-
- ;; Set up font-lock for Xemacs
- ;; For GNU Emacs, this is done in `gnuplot-mode'
- (if gnuplot-xemacs-p
- (put 'gnuplot-mode 'font-lock-defaults
- gnuplot-font-lock-defaults)))
-
-;; Some corner cases in Gnuplot's comment and string syntax are
-;; difficult to handle accurately using Emacs's built-in syntax tables
-;; and parser:
-;;
-;; - strings can continue over several lines, but only by using a
-;; backslash to escape the newline
-;;
-;; - double-quoted strings can contain escaped quotes, \", and escaped
-;; backslashes, \\; but in single-quoted strings the quote is
-;; escaped by doubling it, '', and backslash is only special at
-;; end-of-line
-;;
-;; - either type of string can end at newline without needing a
-;; - closing delimiter
-;;
-;; - comments continue over continuation lines
-;;
-;; The following syntax-propertize rules should accurately mark string
-;; and comment boundaries using the "generic string fence" and
-;; "generic comment fence" syntax properties. When syntax-propertize
-;; is unavailable (on Emacs versions <24), we fall back to using the
-;; normal syntax-table parser, which is accurate enough for most
-;; normal cases. (See the definition of `gnuplot-mode-syntax-table'.)
-(defalias 'gnuplot-syntax-propertize
- (when (fboundp 'syntax-propertize-rules)
- (syntax-propertize-rules
- ;; Double quoted strings
- ((rx
- (group "\"")
- (* (or (seq "\\" anything)
- (not (any "\"" "\n"))))
- (group (or "\"" "\n" buffer-end)))
- (1 "|") (2 "|"))
-
- ;; Single quoted strings
- ((rx
- (group "'")
- (* (or (seq "\\" "\n")
- "''"
- (not (any "'" "\n"))))
- (group (or "'" "\n" buffer-end)))
- (1 "|") (2 "|"))
-
- ;; Comments
- ((rx
- (group "#")
- (* (or (seq "\\" "\n")
- any))
- (or (group "\n") buffer-end))
- (1 "!") (2 "!")))))
-
-(defun gnuplot-syntax-propertize-extend-region (start end)
- "Expand the region to `syntax-propertize' for strings and comments.
-
-Region range is START to END.
-Ensures that the region being searched begins and ends outside of
-any lines continued with a backslash.
-
-This function is added to `syntax-propertize-extend-region-functions'
-in gnuplot-mode buffers."
- (let ((continuation-start
- (min start
- (gnuplot-point-at-beginning-of-continuation start)))
- (continuation-end
- (max end
- (gnuplot-point-at-end-of-continuation end))))
- (if (and (= continuation-start start)
- (= continuation-end end))
- nil
- (cons continuation-start continuation-end))))
-
-;; Parsing utilities to tell if we are inside a string or comment
-(defun gnuplot-in-string (&optional where)
- "Return non-nil if the text at WHERE is within a string.
-
-If WHERE is omitted, defaults to text at point.
-This is a simple wrapper for `syntax-ppss'."
- (save-excursion
- (let ((parse-state (gnuplot-syntax-ppss where)))
- (nth 3 parse-state))))
-
-(defun gnuplot-in-comment (&optional where)
- "Return non-nil if the text at WHERE is within a comment.
-
-If WHERE is omitted, defaults to text at point.
-This is a simple wrapper for `syntax-ppss'."
- (save-excursion
- (let ((parse-state (gnuplot-syntax-ppss where)))
- (nth 4 parse-state))))
-
-(defun gnuplot-in-string-or-comment (&optional where)
- "Return non-nil if the text at WHERE is within a string or comment.
-
-If WHERE is omitted, defaults to text at point.
-This is a simple wrapper for `syntax-ppss'."
-
- (save-excursion
- (let ((parse-state (gnuplot-syntax-ppss where)))
- (or (nth 3 parse-state)
- (nth 4 parse-state)))))
-
-;; these two lines get rid of an annoying compile time error
-;; message. that function gets non-trivially defalias-ed in
-;; gnuplot-toolbar.el
-;; (defun gnuplot-make-toolbar-dummy ())
-;; (defalias 'gnuplot-make-toolbar 'gnuplot-make-toolbar-dummy)
-
-
-;;; --- functions for sending commands to gnuplot
-
-(defun gnuplot-split-string (string)
- "Break STRING at each carriage return, returning a list of lines."
- (let ((list ()) (line "") (index 0))
- (while (< index (length string))
- (if (char-equal (elt string index) ?\n)
- (setq list (append list (list line))
- line "")
- (setq line (concat line (char-to-string (elt string index)))))
- (setq index (1+ index)))
- list))
-
-;; -- the calls to `sleep-for' are to allow enough time for gnuplot
-;; to write to the buffer before the next line is inserted
-;; -- note that the input string is split into lines and each line is
-;; sent to gnuplot individually. this is a bit slow, but it puts
-;; each line on the comint history.
-(defun gnuplot-send-string-to-gnuplot (string text)
- "Sends STRING to the gnuplot program.
-If no gnuplot process exists, a new one is created. TEXT indicates
-the type of text being sent to gnuplot and is typically one of
-nil, 'line, 'region, 'buffer, or 'file. TEXT may be useful for
-functions in `gnuplot-after-plot-hook'. `gnuplot-after-plot-hook' is
-called by this function after all of STRING is sent to gnuplot."
- (gnuplot-make-gnuplot-buffer) ; make sure a gnuplot buffer exists
- (gnuplot-fetch-version-number)
- (setq gnuplot-comint-recent-buffer (current-buffer))
-
- ;; Create a gnuplot frame if needed
- (if (equal gnuplot-display-process 'frame)
- (or (and gnuplot-process-frame
- (frame-live-p gnuplot-process-frame))
- (let ((frame (selected-frame)))
- (setq gnuplot-process-frame (make-frame))
- (select-frame gnuplot-process-frame)
- (switch-to-buffer gnuplot-buffer)
- (delete-other-windows)
- (select-frame frame))))
-
- (let ((list (gnuplot-split-string string)))
- (with-current-buffer (get-buffer gnuplot-buffer)
- (goto-char (point-max))
- ;; bruce asks: what is this next line for?
- (set-marker (process-mark gnuplot-process) (point-marker))
- (sleep-for (* 20 gnuplot-delay))
- (while list
- (insert (car list))
- (comint-send-input)
- (sleep-for gnuplot-delay)
- (setq list (cdr list))
- (goto-char (point-max))))
-
- (cond ((equal gnuplot-display-process 'window)
- (gnuplot-display-and-recenter-gnuplot-buffer))
- ((equal gnuplot-display-process 'frame)
- ;;(raise-frame gnuplot-process-frame)
- (with-selected-frame gnuplot-process-frame
- (gnuplot-display-and-recenter-gnuplot-buffer))))
-
- (setq gnuplot-recently-sent text)
- (run-hooks 'gnuplot-after-plot-hook)))
-
-(defun gnuplot-display-and-recenter-gnuplot-buffer ()
- "Make sure the gnuplot comint buffer is displayed.
-Move point to the end if necessary."
- (save-selected-window
- (select-window (display-buffer (get-buffer gnuplot-buffer)))
- (goto-char (point-max))
- (unless (pos-visible-in-window-p (point) (selected-window)) (recenter 5))))
-
-(defun gnuplot-send-region-to-gnuplot (&optional begin end text)
- "Sends a selected region to the gnuplot program.
-If BEGIN and END are not specified, point and mark are used. TEXT
-indicates the type of text being sent to gnuplot. This will be
-'region unless explicitly set by a function calling this one. Other
-typical values are of nil, 'line, 'buffer, or 'file. TEXT may be
-useful for function in `gnuplot-after-plot-hook'."
- (interactive "r")
- (let (string (txt (or text 'region)))
- (cond ((equal major-mode 'gnuplot-mode)
- (setq string (buffer-substring-no-properties begin end))
- (if (string= (substring string -1) "\n") ()
- (setq string (concat string "\n")))
- (gnuplot-send-string-to-gnuplot string txt))
- (t
- (message (concat "You can only send regions from "
- "gnuplot-mode buffers to gnuplot."))))))
-
-(defun gnuplot-send-line-to-gnuplot ()
- "Sends the current line to the gnuplot program.
-Respects continuation lines.
-This sets `gnuplot-recently-sent' to 'line."
- (interactive)
- (cond ((equal major-mode 'gnuplot-mode)
- (let (start end)
- (save-excursion
- ;; go to start of continued command, or beginning of line
- ;; if this is not a continuation of a previous line <JJO>
- (gnuplot-beginning-of-continuation)
- (setq start (point))
- (end-of-line)
- (while (save-excursion
- (backward-char)
- (looking-at "\\\\")) ; go to end of last continuation line
- (end-of-line 2))
- (beginning-of-line 2)
- (setq end (point)))
- (if (not (string-match "\\`\\s-*\\'"
- (buffer-substring-no-properties start end)))
- (gnuplot-send-region-to-gnuplot start end 'line))
- end))
- (t
- (message "You can only send lines in gnuplot-mode buffers to gnuplot.")
- nil)))
-
-;; I chose a very easy to type but slightly non-mnemonic key-binding
-;; for this (C-c C-v). It seems like the kind of thing one would want
-;; to do repeatedly without incurring RSI. 8^)
-(defun gnuplot-send-line-and-forward (&optional num)
- "Call `gnuplot-send-line-to-gnuplot' and move forward 1 line.
-You can use a numeric prefix to send more than one line. Blank lines and
-lines with only comments are skipped when moving forward.
-NUM is optional arg."
- (interactive "p")
- (let (end)
- (while (> num 0)
- (setq end (gnuplot-send-line-to-gnuplot))
- (goto-char end)
- (backward-char 1) ; <AR>
- (gnuplot-forward-script-line 1)
- (setq num (1- num)))))
-
-(defun gnuplot-send-line-and-newline ()
- "Call `gnuplot-send-line-to-gnuplot' and insert a new line."
- (interactive)
- (end-of-line)
- (gnuplot-send-line-to-gnuplot)
- (insert "\n"))
-
-(defun gnuplot-forward-script-line (&optional num) ; <SE>
- "Move forward my NUM script lines.
-Blank lines and commented lines are not included in the NUM count."
- (interactive "p")
- (while (> num 0)
- (and (not (eobp)) (forward-line 1))
- (while (and (not (eobp))
- (or (looking-at "^\\s-*$")
- (looking-at "^\\s-*#")))
- (forward-line 1))
- (setq num (1- num))))
-
-(defun gnuplot-send-buffer-to-gnuplot ()
- "Sends the entire buffer to the gnuplot program.
-This sets `gnuplot-recently-sent' to 'buffer."
- (interactive)
- (if (equal major-mode 'gnuplot-mode)
- (gnuplot-send-region-to-gnuplot (point-min) (point-max) 'buffer)
- (message "You can only send gnuplot-mode buffers to gnuplot.")))
-
-(defun gnuplot-send-file-to-gnuplot ()
- "Sends a selected file to the gnuplot program using the \"load\" command.
-This sets `gnuplot-recently-sent' to 'file."
- (interactive)
- (let ((string (read-file-name "Name of file to send to gnuplot > " nil nil t)))
- (setq string (concat "load '" (expand-file-name string) "'\n"))
- (message "%S" string)
- (gnuplot-make-gnuplot-buffer) ; make sure a gnuplot buffer exists
- (gnuplot-send-string-to-gnuplot string 'file)))
-
-;; suggested by <JS>
-(defun gnuplot-plot-from-comint ()
- "Send the contents of a script to gnuplot from the process buffer.
-This inserts the contents of the most recently used gnuplot script
-into the process buffer and sends those lines to gnuplot. It does
-this by copying the script line by line."
- (interactive)
- (if (not (buffer-live-p gnuplot-comint-recent-buffer))
- (message "Script buffer has been deleted.")
- (let (string list (buffer (current-buffer)))
- (set-buffer gnuplot-comint-recent-buffer)
- (setq string (buffer-substring-no-properties (point-min) (point-max))
- string (concat string "\n")
- list (gnuplot-split-string string))
- (set-buffer buffer)
- (while list
- (insert (car list))
- (comint-send-input)
- (sleep-for gnuplot-delay)
- (setq list (cdr list)))
- (comint-send-input))))
-
-(defun gnuplot-save-and-plot-from-comint ()
- "Send a current script to gnuplot from the process buffer.
-This sends the most recently used gnuplot script to gnuplot using the
-\"load\" command. This function first saves the script buffer to a
-file, prompting for a filename if one is not associated with the script
-buffer. Then it sends a load command to gnuplot using the name of the
-file visited by the script buffer."
- (interactive)
- (if (not (buffer-live-p gnuplot-comint-recent-buffer))
- (message "Script buffer has been deleted.")
- (let (fname)
- (with-current-buffer gnuplot-comint-recent-buffer
- (save-buffer)
- (setq fname (buffer-file-name)))
- (goto-char (point-max))
- (insert (format "load '%s'" fname))
- (comint-send-input))))
-
-(defun gnuplot-pop-to-recent-buffer ()
- "Switch to the most recently-plotted gnuplot script buffer."
- (interactive)
- (when (buffer-live-p gnuplot-comint-recent-buffer)
- (pop-to-buffer gnuplot-comint-recent-buffer)))
-
-(defun gnuplot-trim-gnuplot-buffer ()
- "Trim lines from the beginning of the *gnuplot* buffer.
-This keeps that buffer from growing excessively in size. Normally,
-this function is attached to `gnuplot-after-plot-hook'"
- (if (> gnuplot-buffer-max-size 0)
- (with-current-buffer gnuplot-buffer
- (let ((nlines (count-lines (point-min) (point-max)))
- (kill-whole-line t))
- (while (> nlines gnuplot-buffer-max-size)
- (goto-char (point-min))
- (kill-line)
- (setq nlines (1- nlines)))
- (goto-char (point-max))))))
-(add-hook 'gnuplot-after-plot-hook 'gnuplot-trim-gnuplot-buffer nil nil)
-
-
-;;; --- functions controlling the gnuplot process
-
-;; Menu for the comint-mode buffer
-(defvar gnuplot-comint-menu
- `("Gnuplot"
- ["Plot most recent gnuplot buffer" gnuplot-plot-from-comint
- (buffer-live-p gnuplot-comint-recent-buffer)]
- ["Save and plot most recent gnuplot buffer" gnuplot-save-and-plot-from-comint
- (buffer-live-p gnuplot-comint-recent-buffer)]
- "---"
- ,gnuplot-display-options-menu
- ["Contextual completion and help" gnuplot-context-sensitive-mode
- :style toggle
- :selected gnuplot-context-sensitive-mode]
- ["Echo area help (eldoc-mode)" eldoc-mode
- :active gnuplot-context-sensitive-mode
- :style toggle
- :selected eldoc-mode]
- "---"
- ["Insert filename at point" gnuplot-insert-filename t]
- ["Negate set option" gnuplot-negate-option t]
- ["Keyword help" gnuplot-info-lookup-symbol
- (or gnuplot-keywords gnuplot-keywords-pending)]
- ["Quick help for thing at point" gnuplot-help-function
- gnuplot-context-sensitive-mode]
- ["Info documentation on thing at point"
- gnuplot-info-at-point
- gnuplot-context-sensitive-mode]
- ["Switch to recent gnuplot script buffer" gnuplot-pop-to-recent-buffer
- (buffer-live-p gnuplot-comint-recent-buffer)]
- "---"
- ["Customize gnuplot" gnuplot-customize t]
- ["Show gnuplot-mode version" gnuplot-show-version t]
- ["Show gnuplot version" gnuplot-show-gnuplot-version t]
- "---"
- ["Kill gnuplot" gnuplot-kill-gnuplot-buffer t]))
-
-;; Major mode `gnuplot-comint-mode' for the interaction buffer
-(define-derived-mode gnuplot-comint-mode comint-mode "Gnuplot interaction"
- "Major mode for interacting with a gnuplot process in a buffer.
-
-This sets font-lock and keyword completion in the comint/gnuplot
-buffer."
-
- (set-syntax-table gnuplot-mode-syntax-table)
-
- (if gnuplot-xemacs-p ; deal with font-lock
- (if (fboundp 'turn-on-font-lock) (turn-on-font-lock))
- (progn
- (setq font-lock-defaults gnuplot-font-lock-defaults)
- (set (make-local-variable 'parse-sexp-lookup-properties) t)
- (set (make-local-variable 'syntax-propertize-function)
- #'gnuplot-syntax-propertize)))
-
- ;; XEmacs needs the call to make-local-hook
- (when (and (featurep 'xemacs)
- (fboundp 'make-local-hook))
- (make-local-hook 'kill-buffer-hook))
- (add-hook 'kill-buffer-hook 'gnuplot-close-down nil t)
-
- (add-hook 'comint-output-filter-functions
- 'comint-postoutput-scroll-to-bottom
- nil t)
- (add-hook 'comint-output-filter-functions
- 'gnuplot-protect-prompt-fn
- nil t)
-
- ;; Set up completion, using completion-at-point in recent Emacs,
- ;; comint-dynamic-complete in older Emacs
- (if (and (>= emacs-major-version 24)
- (>= emacs-minor-version 1))
- (add-hook 'completion-at-point-functions #'gnuplot-completion-at-point nil t)
- (add-hook 'comint-dynamic-complete-functions 'gnuplot-comint-complete nil t))
-
- ;; Set up menu (see below)
- (easy-menu-define
- gnuplot-comint-mode-menu gnuplot-comint-mode-map "Menu used in gnuplot-comint-mode"
- gnuplot-comint-menu)
- (easy-menu-add gnuplot-comint-mode-menu gnuplot-comint-mode-map))
-
-;; Key bindings for gnuplot-comint-mode
-(define-key gnuplot-comint-mode-map "\M-\C-p" 'gnuplot-plot-from-comint)
-(define-key gnuplot-comint-mode-map "\M-\C-f" 'gnuplot-save-and-plot-from-comint)
-(define-key gnuplot-comint-mode-map "\C-d" 'gnuplot-delchar-or-maybe-eof)
-(let ((completion-function
- (if (and (>= emacs-major-version 24)
- (>= emacs-minor-version 1))
- 'completion-at-point
- 'comint-dynamic-complete)))
- (define-key gnuplot-comint-mode-map "\M-\r" completion-function)
- (define-key gnuplot-comint-mode-map "\M-\t" completion-function))
-(define-key gnuplot-comint-mode-map "\C-c\C-d" 'gnuplot-info-lookup-symbol)
-(define-key gnuplot-comint-mode-map "\C-c\C-w" 'gnuplot-show-version)
-(define-key gnuplot-comint-mode-map "\C-c\C-i" 'gnuplot-insert-filename)
-(define-key gnuplot-comint-mode-map "\C-c\C-n" 'gnuplot-negate-option)
-(define-key gnuplot-comint-mode-map "\C-c\C-p" 'gnuplot-show-gnuplot-version)
-(define-key gnuplot-comint-mode-map "\C-c\C-z" 'gnuplot-customize)
-(define-key gnuplot-comint-mode-map "\C-c\C-e" 'gnuplot-pop-to-recent-buffer)
-(define-key gnuplot-comint-mode-map "\C-c\M-i" 'gnuplot-inline-image-mode)
-
-;; Menu for gnuplot-comint-mode
-(defvar gnuplot-comint-mode-menu nil
- "Menu for `gnuplot-comint-mode'.")
-
-;; Switch to the gnuplot program buffer
-(defun gnuplot-make-gnuplot-buffer ()
- "Switch to the gnuplot program buffer or create one if none exists."
- (unless (and gnuplot-process (eq (process-status gnuplot-process) 'run)
- gnuplot-buffer (buffer-live-p gnuplot-buffer))
- (message "Starting gnuplot plotting program...")
- (setq gnuplot-buffer (make-comint gnuplot-process-name gnuplot-program)
- gnuplot-process (get-buffer-process gnuplot-buffer))
- (gnuplot-set-process-query-on-exit-flag gnuplot-process nil)
- (with-current-buffer gnuplot-buffer
- (gnuplot-comint-mode)
- (when gnuplot-inline-image-mode
- (sleep-for gnuplot-delay)
- (gnuplot-setup-comint-for-image-mode)))
- (message "Starting gnuplot plotting program...Done")))
-
-
-(defun gnuplot-fetch-version-number ()
- "Determine the installed version of the gnuplot program.
-
-If `gnuplot-program-version' is already set, does nothing.
-Otherwise, runs `gnuplot-program' and searches the text printed
-at startup for a string like \"Version N.N\".
-
-Sets the variables `gnuplot-program-version',
-`gnuplot-program-major-version', `gnuplot-program-minor-version',
-and `gnuplot-three-eight-p'.
-
-If the version number cannot be determined by this method, it
-defaults to 3.7."
- (unless gnuplot-program-version
- (message "gnuplot-mode %s -- determining gnuplot version ......"
- gnuplot-version)
- (with-temp-buffer
- (insert "show version")
- (call-process-region (point-min) (point-max)
- gnuplot-program t (current-buffer))
- (goto-char (point-min))
- (if (and (re-search-forward "[Vv]ersion\\s-+" (point-max) t)
- (looking-at "\\([0-9]\\)\\.\\([0-9]+\\)"))
- (progn
- (setq gnuplot-program-version (match-string 0)
- gnuplot-program-major-version (string-to-number
- (match-string 1))
- gnuplot-program-minor-version (string-to-number
- (match-string 2))
- gnuplot-three-eight-p
- (>= (string-to-number gnuplot-program-version) 3.8)))
-
- ;; Guess v3.7 if something went wrong
- (message "Warning: could not determine gnuplot version, guessing 3.7")
- (setq gnuplot-program-version "3.7"
- gnuplot-program-major-version 3
- gnuplot-program-minor-version 7
- gnuplot-three-eight-p nil)))
-
- ;; Setup stuff that depends on version number
- (gnuplot-setup-menu-and-toolbar)))
-
-(defun gnuplot-setup-menu-and-toolbar ()
- "Setup stuff that depends on version number."
- ;; set up the menubar (possibly dependent on version number)
- (gnuplot-setup-menubar)
- ;; set up the toolbar (possibly dependent on version number)
- (if (and gnuplot-xemacs-p gnuplot-toolbar-display-flag)
- (condition-case () ; deal with the toolbar
- (and (require 'toolbar)
- (require 'xpm)
- (gnuplot-make-toolbar-function))
- (error nil)))
- (message "gnuplot-mode %s (gnuplot %s) -- report bugs as issues at %s"
- gnuplot-version gnuplot-program-version
- gnuplot-maintainer-url))
-
-(defvar gnuplot-prompt-regexp
- (regexp-opt '("gnuplot> " "multiplot> "))
- "Regexp for recognizing the GNUPLOT prompt.")
-
-(defun gnuplot-protect-prompt-fn (string)
- "Prevent the Gnuplot prompt from being deleted or overwritten.
-STRING is the text as originally inserted in the comint buffer."
- (save-excursion
- (let ((b (progn
- (goto-char (point-max))
- (beginning-of-line)
- (point)))
- e)
- (if (re-search-forward gnuplot-prompt-regexp (point-max) t)
- (progn
- (setq e (point))
- (put-text-property b e 'rear-nonsticky '(read-only intangible face))
- (put-text-property b e 'intangible t)
- (put-text-property b e 'face 'gnuplot-prompt-face)
- ;;(put-text-property b e 'read-only t)
- )))))
-
-(defun gnuplot-close-down ()
- "Tidy up when deleting the gnuplot buffer."
- (if (and gnuplot-process
- (eq (process-status gnuplot-process) 'run)) ; <SE>
- (kill-process gnuplot-process))
- (setq gnuplot-process nil
- gnuplot-buffer nil))
-
-(defun gnuplot-delchar-or-maybe-eof (arg)
- "Delete ARG characters forward, or (if at eob) send an EOF to subprocess.
-This is very similar to `comint-delchar-or-maybe-eof'."
- (interactive "p")
- (if (eobp)
- (gnuplot-kill-gnuplot-buffer)
- (delete-char arg)))
-
-(defun gnuplot-kill-gnuplot-buffer ()
- "Kill the gnuplot process and its display buffers."
- (interactive)
- (if (and gnuplot-process
- (eq (process-status gnuplot-process) 'run)) ;; <SE>
- (kill-process gnuplot-process))
- (if (and gnuplot-buffer (get-buffer gnuplot-buffer))
- (progn
- (if (one-window-p) ()
- (delete-window (get-buffer-window gnuplot-buffer)))
- (kill-buffer gnuplot-buffer)))
- (setq gnuplot-process nil
- gnuplot-buffer nil))
-
-
-(defun gnuplot-show-gnuplot-buffer ()
- "Switch to the buffer containing the gnuplot process.
-When `gnuplot-display-process' is nil this will switch to
-the gnuplot process buffer. When that variable is non-nil, the
-gnuplot process buffer will be displayed in a window."
- (interactive)
- (unless (and gnuplot-buffer (get-buffer gnuplot-buffer))
- (gnuplot-make-gnuplot-buffer))
- (cond ((equal gnuplot-display-process 'window)
- (switch-to-buffer-other-window gnuplot-buffer))
- ((equal gnuplot-display-process 'frame)
- (or (and gnuplot-process-frame
- (frame-live-p gnuplot-process-frame))
- (setq gnuplot-process-frame (make-frame)))
- (raise-frame gnuplot-process-frame)
- (select-frame gnuplot-process-frame)
- (switch-to-buffer gnuplot-buffer))
- (t
- (switch-to-buffer gnuplot-buffer))))
-
-
-;;; Support for displaying plotted images within Emacs
-
-(defvar gnuplot-inline-image-filename nil
- "Name of the current Gnuplot output file.")
-
-(defvar gnuplot-image-buffer-name "*gnuplot output*")
-
-(defun gnuplot-display-images-p ()
- "Inline images require GNU Emacs."
- (and (not (featurep 'xemacs))
- (fboundp 'display-images-p)
- (display-images-p)))
-
-(defun gnuplot-external-display-mode ()
- "Display image in external."
- (interactive)
- (gnuplot-set-display-mode 'gnuplot-inline-image-mode nil))
-
-(defun gnuplot-inline-display-mode ()
- "Display image in inline."
- (interactive)
- (gnuplot-set-display-mode 'gnuplot-inline-image-mode 'inline))
-
-(defun gnuplot-dedicated-display-mode ()
- "Display image in dedicated."
- (interactive)
- (gnuplot-set-display-mode 'gnuplot-inline-image-mode 'dedicated))
-
-(defun gnuplot-set-image-format (format)
- "Display image in FORMAT."
- (interactive "sGnuplot image format: ")
- (gnuplot-set-display-mode 'gnuplot-image-format format)
- (unless gnuplot-inline-image-mode
- (message "Setting will take effect when plots are displayed in Emacs")))
-
-(defun gnuplot-setup-comint-for-image-mode ()
- "Setup comint for image."
- (when (and gnuplot-buffer (buffer-live-p gnuplot-buffer)
- (get-buffer-process gnuplot-buffer))
- (with-current-buffer gnuplot-buffer
- (if gnuplot-inline-image-mode
- (progn
- (gnuplot-send-hiding-output
- (format "set terminal %s\n" gnuplot-image-format))
- (gnuplot-inline-image-set-output)
- (add-hook 'comint-output-filter-functions
- 'gnuplot-insert-inline-image-output nil t))
- (gnuplot-send-hiding-output "set terminal pop\n")
- (remove-hook 'comint-output-filter-functions
- 'gnuplot-insert-inline-image-output t)))))
-
-(defun gnuplot-inline-image-set-output ()
- "Set Gnuplot's output file to `gnuplot-inline-image-filename'."
- (let ((tmp (make-temp-file "gnuplot")))
- (setq gnuplot-inline-image-filename tmp)
- (gnuplot-send-hiding-output (format "set output '%s'\n" tmp))))
-
-(defvar gnuplot-inhibit-filter nil)
-
-(defun gnuplot-insert-inline-image-output (string)
- "Insert Gnuplot graphical output STRING in the gnuplot-comint buffer.
-
-Called via `comint-preoutput-filter-functions' hook when
-`gnuplot-inline-image-mode' is enabled. Checks the status of the
-file `gnuplot-inline-image-filename'; if it exists and has
-nonzero size, inserts it as an inline image, stores a new
-temporary filename in `gnuplot-inline-image-filename', and
-updates Gnuplot with the appropriate 'set output' command."
- (unless gnuplot-inhibit-filter ; Prevent recursively entering this filter
- (let ((gnuplot-inhibit-filter t)) ; (causing an infinite loop)
- (save-excursion
- (goto-char (point-max))
- (beginning-of-line)
- (when (looking-at gnuplot-prompt-regexp)
- (let* ((filename gnuplot-inline-image-filename)
- (size (nth 7 (file-attributes filename))))
- (when (and size (> size 0))
- (gnuplot-send-hiding-output "set output\n") ; Flush output file
- (sit-for 0.1) ; Hack: wait for Gnuplot IO to finish
- (ecase gnuplot-inline-image-mode
- (nil nil)
- (inline
- (ignore-errors
- (let ((image (create-image filename)))
- (beginning-of-line)
- (insert-image image)
- (insert "\n")
- (gnuplot-inline-image-set-output))))
- (dedicated
- (with-current-buffer
- (get-buffer-create gnuplot-image-buffer-name)
- (let ((inhibit-read-only t))
- (erase-buffer)
- (insert-file-contents filename)
- (ignore-errors (normal-mode))
- (display-buffer (current-buffer))
- (gnuplot-inline-image-set-output))))))))))))
-
-;;; Send commands to GNUPLOT silently & without generating an extra prompt
-(defvar gnuplot-hidden-output-buffer " *gnuplot output*")
-
-(defun gnuplot-send-hiding-output (string)
- "Send STRING to the running Gnuplot process invisibly."
- (with-current-buffer gnuplot-buffer
- (add-hook 'comint-preoutput-filter-functions
- 'gnuplot-discard-output nil t))
- (with-current-buffer (get-buffer-create gnuplot-hidden-output-buffer)
- (erase-buffer))
- (comint-send-string (get-buffer-process gnuplot-buffer) string))
-
-(defun gnuplot-discard-output (string)
- "Temporary preoutput filter for hiding Gnuplot output & prompt.
-Accumulates output STRING in a buffer until it finds the next prompt,
-then removes itself from `comint-preoutput-filter-functions'."
- (with-current-buffer
- (get-buffer-create gnuplot-hidden-output-buffer)
- (insert string)
- (when (looking-back gnuplot-prompt-regexp (point-min))
- (with-current-buffer gnuplot-buffer
- (remove-hook 'comint-preoutput-filter-functions
- 'gnuplot-discard-output t))))
- "")
-
-
-
-;;; --- miscellaneous functions: insert file name, indentation, negation
-
-(defun gnuplot-insert-filename ()
- "Insert a filename at point, prompting for name in the minibuffer.
-This inserts a filename relative to the buffer's default directory.
-Uses completion and the value of `gnuplot-quote-character'.
-Bound to \\[gnuplot-insert-filename]"
- (interactive)
- (insert gnuplot-quote-character
- (file-relative-name (read-file-name "Filename > " "")
- default-directory)
- gnuplot-quote-character))
-
-
-;; Adjust indentation for the line containing point
-(defun gnuplot-indent-line ()
- "Set indentation in gnuplot buffer.
-For most lines, set indentation to previous level of indentation.
-Add additional indentation for continuation lines."
- (interactive)
- (let (indent)
- (if (gnuplot-in-string (point-at-bol))
- ;; Continued strings begin at left margin
- (setq indent 0)
- (save-excursion
- (if (gnuplot-continuation-line-p)
- ;; This is a continuation line. Indent to the same level as
- ;; the second word on the line beginning this command (i.e.,
- ;; the first non-whitespace character after whitespace)
- (progn
- (gnuplot-beginning-of-continuation)
- (back-to-indentation)
- (re-search-forward "\\S-+\\s-+" (point-at-eol) 'end-at-limit)
- (setq indent (current-column)))
-
- ;; Not a continuation line; indent according to block
- ;; nesting depth
- (save-excursion
- (condition-case nil
- (progn
- (beginning-of-line)
- (skip-syntax-forward "-" (point-at-eol))
- (if (looking-at "\\s)") (forward-char))
- (backward-up-list)
- (gnuplot-beginning-of-continuation)
- (setq indent (+ gnuplot-basic-offset (current-indentation))))
- (error
- (setq indent 0)))))))
-
- ;; Set indentation
- (save-excursion
- (indent-line-to indent))
-
- ;; Move point after indentation when at beginning of line
- (when (< (current-column) indent)
- (move-to-column indent))))
-
-(defun gnuplot-electric-insert (BRACE)
- "Adjust indentation on inserting a close BRACE.
-The blink-paren fix is stolen from cc-mode"
- (interactive "*p")
- (let ((old-blink-paren blink-paren-function)
- (blink-paren-function nil))
- (self-insert-command BRACE)
- (gnuplot-indent-line)
- (when old-blink-paren (funcall old-blink-paren))))
-
-;;
-;; Functions for finding the start and end of continuation blocks
-;;
-
-;; Check if line containing point is a continuation
-(defun gnuplot-continuation-line-p ()
- "Return t if the line containing point is a continuation of the previous line."
- (save-excursion
- (condition-case ()
- (progn
- (end-of-line 0)
- (backward-char)
- (looking-at "\\\\"))
- (error nil))))
-
-;; Move point to start of continuation block
-(defun gnuplot-beginning-of-continuation ()
- "Move point to the beginning of the continuation lines containing point.
-
-If not in a continuation line, move point to beginning of line."
- (beginning-of-line)
- (while (gnuplot-continuation-line-p)
- (beginning-of-line 0)))
-
-;; Move point to end of continuation block
-(defun gnuplot-end-of-continuation ()
- "Move point to the end of the continuation lines containing point.
-
-If there are no continuation lines, move point to `end-of-line'."
- (end-of-line)
- (unless (bobp)
- (catch 'eob
- (while (save-excursion (backward-char)
- (looking-at "\\\\"))
- (end-of-line 2)
- (if (eobp) (throw 'eob nil))))))
-
-;; Save-excursion wrappers for the above to return point at beginning
-;; or end of continuation
-(defun gnuplot-point-at-beginning-of-continuation (&optional pos)
- "Return value of point at beginning of the continued block containing point.
-
-If there are no continuation lines, returns `point-at-bol'.
-If specify POS, move POS befere execution."
- (save-excursion
- (when pos (goto-char pos))
- (gnuplot-beginning-of-continuation)
- (point)))
-
-(defun gnuplot-point-at-end-of-continuation (&optional pos)
- "Return value of point at the end of the continued block containing point.
-
-If there are no continuation lines, returns `point-at-eol'.
-If specify POS, move POS before execution."
- (save-excursion
- (when pos (goto-char pos))
- (gnuplot-end-of-continuation)
- (point)))
-
-(defun gnuplot-beginning-of-defun (&optional arg)
- "We also treat a block of continuation lines as a `defun'.
-ARG is optional arg."
- (if (not arg) (setq arg 1))
- (if (> arg 0)
- (catch 'bob ; go to beginning of ARGth prev. defun
- (dotimes (n arg)
- (when (= (point)
- (gnuplot-point-at-beginning-of-continuation))
- (forward-line -1)
- (if (bobp) (throw 'bob t))
- (while (looking-at "^\\s-*$")
- (forward-line -1)
- (if (bobp) (throw 'bob t))))
- (gnuplot-beginning-of-continuation))
- t)
-
- (catch 'eob ; find beginning of (-ARG)th following defun
- (dotimes (n (- arg))
- (gnuplot-end-of-continuation)
- (forward-line)
- (if (eobp) (throw 'eob t))
- (while (looking-at "^\\s-*$")
- (forward-line)
- (if (eobp) (throw 'eob t)))))))
-
-;; Movement to start or end of command, including multiple commands
-;; separated by semicolons
-(defun gnuplot-beginning-of-command ()
- "Move point to beginning of command containing point."
- (let ((limit (gnuplot-point-at-beginning-of-continuation)))
- (while
- (and
- (search-backward ";" limit 'lim)
- (gnuplot-in-string-or-comment)))
- (skip-chars-forward ";")
- (skip-syntax-forward "-")))
-
-(defun gnuplot-end-of-command ()
- "Move point to end of command containing point."
- (let ((limit (gnuplot-point-at-end-of-continuation)))
- (while
- (and
- (search-forward ";" limit 'lim)
- (gnuplot-in-string-or-comment)))
- (skip-chars-backward ";")
- (skip-syntax-backward "-")))
-
-(defun gnuplot-point-at-beginning-of-command ()
- "Return position at the beginning of command containing point."
- (save-excursion (gnuplot-beginning-of-command) (point)))
-
-(defun gnuplot-point-at-end-of-command ()
- "Return position at the end of command containing point."
- (save-excursion (gnuplot-end-of-command) (point)))
-
-(defun gnuplot-negate-option ()
- "Append \"no\" to or remove \"no\" from the set option on the current line.
-This checks if the set option is one which has a negated form.
-
-Negatable options are defined in `gnuplot-keywords-negatable-options'."
- (interactive)
- (gnuplot-fetch-version-number)
- (let ((begin (gnuplot-point-at-beginning-of-command))
- (end (gnuplot-point-at-end-of-command))
- (regex gnuplot-negatable-options-regexp))
- (save-excursion
- (goto-char begin)
- (skip-syntax-forward "-" end)
- (if (looking-at "\\(un\\)?set\\s-+")
- (cond ((> (string-to-number gnuplot-program-version) 3.7)
- (cond ((looking-at "unset")
- (delete-char 2))
- ((looking-at (concat "set\\s-+\\(" regex "\\)"))
- (insert "un"))
- (t
- (message "There is not a negatable set option on this line"))))
- (t
- (goto-char (match-end 0))
- (if (> (point) end) (goto-char end))
- (cond ((looking-at "no")
- (delete-char 2))
- ((looking-at regex)
- (insert "no"))
- (t
- (message "There is not a negatable set option on this line")))))
- (message "There is not a set option on this line")))))
-
-;; (defun gnuplot-set-binding ()
-;; "Interactively select a key sequence for binding to a plot function.
-;; This is only useful in gnuplot 3.8 and for plot terminals which support
-;; key bindings (i.e. those covered by pm3d)."
-;; (interactive)
-;; (let ((keyseq (read-key-sequence "Choose a key sequence now"))
-;; (command (read-string "Bind to this command > ")))
-;; (setq keyseq (format "%S" keyseq))
-;; (string-match "keypress-event\\s-+" keyseq)
-;; (setq keyseq (substring keyseq (match-end 0) -2))
-;; ;; need to convert from emacs nomenclature to gnuplot. what a pain.
-;; (let* ((alist '(("backspace" . "Backspace") ("tab" . "Tab") ("linefeed" . "Linefeed")
-;; ("clear" . "Clear") ("return" . "Return") ("pause" . "Pause")
-;; ("scroll-lock" . "Scroll_Lock") ("SysReq" . "sys-req")
-;; ("escape" . "Escape") ("delete" . "Delete") ("home" . "Home")
-;; ("left" . "Left") ("right" . "Right") ("up" . "Up") ("down" . "Down")
-;; ("prior" . "PageUp") ("next" . "PageDown") ("end" . "End")
-;; ("begin". "Begin")))
-;; (match (assoc keyseq alist)))
-;; (if match (setq keyseq (cdr match)))
-;;
-;; (insert (format "bind \"%s\" \"%s\"" keyseq command)))))
-
-
-(defun gnuplot-customize ()
- "Customize `gnuplot-mode'."
- (interactive)
- (if (fboundp 'customize-group)
- (customize-group "gnuplot")
- (message "The Custom library is not installed.")))
-
-
-
-;;; --- help from the info file, keyword list + completion, insert function
-
-
-;; set up stuff for info-look (as suggested by <SE>)
-;; modified with suggestion from <MS>
-(defun gnuplot-setup-info-look ()
- "Setup info-look in the gnuplot buffer.
-
-Also set the variable `gnuplot-keywords' and do something sensible if
-info-look was not available.
-See the comments in `gnuplot-info-hook'."
- (interactive)
- (setq gnuplot-keywords-pending nil)
- (if (featurep 'info-look)
- (progn
- (gnuplot-fetch-version-number)
-
- ;; In the absence of evidence to the contrary, I'm guessing
- ;; the info file layout changed with gnuplot version 4 <jjo>
- (let ((doc-spec
- (if (>= (string-to-number gnuplot-program-version) 4.0)
- ;; New info-file layout - works with gnuplot 4.4
- '(("(gnuplot)Command_Index" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Options_Index" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Function_Index" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Terminal_Index" nil "[_a-zA-Z0-9]+"))
-
- ;; Old info-file layout
- '(("(gnuplot)Top" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Commands" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)Functions" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)plot" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)set-show" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)data-file" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)smooth" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)style" nil "[_a-zA-Z0-9]+")
- ("(gnuplot)terminal" nil "[_a-zA-Z0-9]+")))))
- (cond ((boundp 'info-lookup-symbol-alist) ; older info-lookup version
- (setq info-lookup-symbol-alist
- (append
- info-lookup-symbol-alist
- `((gnuplot-mode
- "[a-zA-Z][_a-zA-Z0-9]*" nil
- ,doc-spec "[_a-zA-Z0-9]+" )))))
- (t ; newer version
- (info-lookup-add-help
- :mode 'gnuplot-mode :topic 'symbol
- :regexp "[a-zA-Z][_a-zA-Z0-9]*"
- :doc-spec doc-spec)
- ;; allow help lookup from the comint buffer as well <jjo>
- (info-lookup-add-help
- :mode 'gnuplot-comint-mode :topic 'symbol
- :regexp "[a-zA-Z][_a-zA-Z0-9]*"
- :doc-spec doc-spec))))
-
- ;; this hook is my best way of working with info-look and
- ;; allowing multiple versions of the gnuplot-info file.
- ;; yes, this is a hassle.
- (run-hooks 'gnuplot-info-hook)
- (let ((there (bufferp (get-buffer "*info*"))))
- (info-lookup-setup-mode 'symbol 'gnuplot-mode)
- (or there (and (get-buffer "*info*") (kill-buffer "*info*")))
- ;; why are these buffers here? I think that the general
- ;; user will not want them lying around
- (and (get-buffer "info dir") (kill-buffer "info dir"))
- (and (get-buffer "info dir<2>") (kill-buffer "info dir<2>")))
- (setq gnuplot-keywords (gnuplot-set-keywords-list))
- (setq gnuplot-keywords-alist ; needed for all-completions
- (mapcar 'list gnuplot-keywords)))
-
- ;; or do something sensible if info-look is not installed
- (defun info-lookup-interactive-arguments (symbol)
- (message
- "Help is not available. info-look.el is not installed.")
- (list nil nil))))
-
-
-(defun gnuplot-set-keywords-list ()
- "Set `gnuplot-keywords' from `info-lookup-cache'.
-Return a list of keywords."
- (let* ((list (cdr (assoc 'symbol info-lookup-cache)))
- (list (cdr (cdr (assoc 'gnuplot-mode list))))
- (list (car list))
- (store ()) item)
- (while list
- (setq item (car (car list))
- item (format "%s" item) ; keep this line for the sake of
- store (append (list item) store) ; info-look.el w/o my patch
- list (cdr list)))
- (delete "nil" store)
- store ))
-
-
-;;;; Completion at point and Eldoc.
-
-;; There are two alternative completion-at-point mechanisms: the old
-;; one using info-look and the new one (enabled by default) which
-;; parses the command line to provide smarter completions.
-
-;; `gnuplot-completion-at-point-function' defines which one is
-;; used. `gnuplot-context-sensitive-mode' toggles between the two.
-
-(defvar gnuplot-completion-at-point-function #'gnuplot-completion-at-point-info-look
- "Function to call to perform completion in Gnuplot buffers.")
-
-(defun gnuplot-completion-at-point ()
- "Perform completion in Gnuplot buffers."
- (funcall gnuplot-completion-at-point-function))
-
-(defvar gnuplot-eldoc-hash nil
- "ElDoc strings for gnuplot-mode.
-
-These have to be compiled from the Gnuplot source tree using
-`doc2texi.el'.")
-
-;; Enable and disable context-sensitive completion
-(define-minor-mode gnuplot-context-sensitive-mode
- "Use context-sensitive completion and help in gnuplot-mode.
-
-When context-sensitive mode is enabled, gnuplot-mode tries to
-provide more useful completions and help suggestions for built-in
-keywords and functions by parsing each command as you type. It
-attempts to take into account Gnuplot's many abbreviated
-keywords. For example, with point at the end of a line reading
-\"plot 'datafile' w \", typing \\[completion-at-point] will pop
-up a list of plotting styles.
-
-Key bindings:
-
-\\[completion-at-point] will complete the keyword at point based
-on its context in the command. To make keyword completion work on
-pressing TAB, set `tab-always-indent' to `complete', or customize
-`gnuplot-tab-completion' to make this automatic in gnuplot-mode
-buffers.
-
-\\[gnuplot-info-at-point] will try to find the most relevant
-Gnuplot info node for the construction at point, prompting for a
-node name if nothing is found.
-
-\\[gnuplot-help-function] will pop up a brief summary of the
-syntax at point in the minibuffer. To have one-line syntax
-summaries appear in the echo area as you type, toggle
-`eldoc-mode' or customize `gnuplot-eldoc-mode'.
-
-To choose whether to use this mode by default in Gnuplot buffers,
-customize the variable
-`gnuplot-use-context-sensitive-completion'.
-
-Note: help strings for eldoc-mode and \\[gnuplot-help-function]
-need to be provided in an Emacs-readable form by the Gnuplot
-distribution. See gnuplot-context.el for details."
- :keymap
- `((,(kbd "C-c C-/") . gnuplot-help-function)
- (,(kbd "C-c C-d") . gnuplot-info-at-point))
- (unless (derived-mode-p 'gnuplot-mode 'gnuplot-comint-mode)
- (message "Gnuplot context-sensitive mode works only in Gnuplot-mode buffers")
- (setq gnuplot-context-sensitive-mode nil))
- (if gnuplot-context-sensitive-mode
- ;; Turn on
- (progn
- (load-library "gnuplot-context")
- (load-library "eldoc")
- (setq gnuplot-completion-at-point-function #'gnuplot-context-completion-at-point)
-
- ;; Setup Eldoc
- (set (make-local-variable 'eldoc-documentation-function)
- 'gnuplot-eldoc-function)
- (eldoc-add-command 'completion-at-point) ; Check for eldoc after completion
- (when (fboundp 'comint-dynamic-complete)
- (eldoc-add-command 'comint-dynamic-complete))
-
- ;; Try to load Eldoc strings
- (when gnuplot-eldoc-mode
- (unless gnuplot-eldoc-hash
- (condition-case nil
- (load-library "gnuplot-eldoc")
- (error
- (message "gnuplot-eldoc.el not found. Install it from the Gnuplot distribution.")
- (setq gnuplot-eldoc-hash nil
- gnuplot-eldoc-mode nil))))
-
- (if gnuplot-eldoc-hash
- (eldoc-mode 1)
- (eldoc-mode 0)))
-
- ;; Set up tab-to-complete
- (when gnuplot-tab-completion
- (set (make-local-variable 'tab-always-indent) 'complete))
-
- (message "Gnuplot context-sensitive help & completion enabled."))
-
- ;; Turn off
- (setq gnuplot-completion-at-point-function #'gnuplot-completion-at-point-info-look)
- (setq eldoc-documentation-function nil)
- (eldoc-mode 0)
- (message "Gnuplot context-sensitive help & completion disabled.")))
-
-;; Older completion method using info-look
-(defun gnuplot-completion-at-point-info-look ()
- "Return completions of keyword preceding point.
-
-Uses the cache of keywords generated by info-lookup. See
-`gnuplot-setup-info-look'. If non-nil, the return value is in the form
-\(BEGIN END COMPLETIONS) where BEGIN and END are buffer
-positions and COMPLETIONS is a list."
-
- (if gnuplot-keywords-pending ; <HW>
- (gnuplot-setup-info-look))
- (let* ((end (point))
- (beg (condition-case _err
- (save-excursion (backward-sexp 1) (point))
- (error (point))))
- (patt (buffer-substring beg end))
- (pattern (if (string-match "\\([^ \t]*\\)\\s-+$" patt)
- (match-string 1 patt) patt))
- (completions (all-completions pattern gnuplot-keywords-alist)))
- (if completions
- (list beg end completions)
- (message "No gnuplot keywords complete '%s'" pattern)
- nil)))
-
-(defun gnuplot-comint-complete ()
- "Complete the keyword preceding point in the gnuplot comint buffer.
-
-This is only used in Emacs versions before 24.1."
- (let ((completions (gnuplot-completion-at-point)))
- (if completions
- (let* ((beg (nth 0 completions))
- (end (nth 1 completions))
- (candidates (nth 2 completions))
- (completion-base-position (list beg end)))
- (comint-dynamic-simple-complete
- (buffer-substring-no-properties beg end)
- candidates))
- nil)))
-
-
-(defun gnuplot-info-lookup-symbol (symbol &optional mode)
- "Wrapper for `info-lookup-symbol'.
-Takes SYMBOL and MODE as arguments exactly as
-`info-lookup-symbol'. After doing the info lookup, calls
-`gnuplot--adjust-info-display' to display the info buffer
-according to the value of `gnuplot-info-display'."
- (interactive
- (cond (gnuplot-keywords
- (info-lookup-interactive-arguments 'symbol))
- (gnuplot-keywords-pending ; <HW>
- (gnuplot-setup-info-look)
- (info-lookup-interactive-arguments 'symbol))
- (t
- (list nil (message
- "Help is not available. The gnuplot info file could not be found.")))))
-
- (when (and (featurep 'info-look) gnuplot-keywords)
- (unless symbol (setq symbol "Commands"))
- (save-window-excursion
- (info-lookup-symbol symbol mode))
- (gnuplot--adjust-info-display)))
-
-(defun gnuplot--adjust-info-display ()
- "Displays the *info* buffer in a window or frame.
-Specified by the value of `gnuplot-info-display'.
-If `gnuplot-info-display' is 'window, then the window will be
-shrunk to the size of the info entry if it is smaller than half
-the height of the frame.
-
-The *info* buffer should already exist when this function is
-called."
- (case gnuplot-info-display
- (window
- (switch-to-buffer-other-window "*info*")
- ;; Adjust window height only if the frame is split
- ;; horizontally, so as not to mess up the minibuffer <jjo>
- ;; we can't use shrink-window-if-larger-than-buffer here
- ;; because it doesn't work with Info mode's narrowing
- (with-selected-window (get-buffer-window "*info*")
- (unless (gnuplot-window-full-height-p)
- (enlarge-window
- (min (- (count-lines (point-min) (point-max)) (window-height) -1)
- (- (/ (frame-height) 2) (window-height)))))))
-
- (frame
- (unless (and gnuplot-info-frame
- (frame-live-p gnuplot-info-frame))
- (setq gnuplot-info-frame (make-frame)))
- (select-frame gnuplot-info-frame)
- (raise-frame gnuplot-info-frame)
- (if gnuplot-xemacs-p (setq toolbar-info-frame gnuplot-info-frame))
- (switch-to-buffer "*info*"))
-
- (t
- (switch-to-buffer "*info*"))))
-
-(defun gnuplot-insert (string)
- "Insert STRING at point and display help for for STRING.
-Help is not shown if `gnuplot-insertions-show-help-flag' is nil. The
-help shown is for STRING unless STRING begins with the word \"set\" or
-\"show\", in which case help is shown for the thing being set or
-shown."
- (interactive)
- (cond ((and (not gnuplot-three-eight-p)
- (string-match "\\(emf\\|p\\(alette\\|m3d\\)\\|vgagl\\)" string))
- (message "%S is an option introduced in gnuplot 3.8 (You are using %s)"
- string gnuplot-program-version))
- (t
- (insert string)
- (let ((topic string) term)
- (if (string-match
- "\\(set\\|show\\)[ \t]+\\([^ \t]+\\)\\(\\s-+\\([^ \t]+\\)\\)?"
- string)
- (progn
- (setq topic (downcase (match-string 2 string))
- term (match-string 4 string))
- (if (string= topic "terminal") (setq topic (downcase term)))))
- (cond ((and (fboundp 'gnuplot-gui-set-options-and-insert)
- gnuplot-gui-popup-flag)
- (gnuplot-gui-set-options-and-insert))
- (gnuplot-insertions-show-help-flag
- (if gnuplot-keywords-pending ; <HW>
- (gnuplot-setup-info-look))
- (gnuplot-info-lookup-symbol topic)))))))
-
-(defun gnuplot-toggle-info-display ()
- "Toggle info display."
- (interactive)
- (setq gnuplot-insertions-show-help-flag (not gnuplot-insertions-show-help-flag))
- (message (if gnuplot-insertions-show-help-flag
- "Help will be displayed after insertions."
- "Help no longer displayed after insertions.")))
-
-
-;;; --- autoloaded functions: gnuplot-mode and gnuplot-make-buffer
-
-;;;###autoload
-(defun gnuplot-mode ()
- "Major mode for editing and executing GNUPLOT scripts.
-This was written with version 4.6 of gnuplot in mind, but should
-work with newer and older versions.
-
-Report bugs at https://github.com/emacsorphanage/gnuplot/issues
-
- ------O------
-
-Gnuplot-mode includes two different systems for keyword
-completion and documentation lookup: a newer one,
-`gnuplot-context-sensitive-mode' (enabled by default), and a
-older one which extracts keywords from gnuplot's Info file. Both
-systems allow looking up documentation in the Info file. The
-older system also depends having the info file properly installed
-to make a list of keywords.
-
-The info file should be installed by default with the Gnuplot
-distribution, or is available at the `gnuplot-mode' web page:
-https://github.com/emacsorphanage/gnuplot/
-
-With the new context-sensitive mode active, gnuplot-mode can also
-provide function/`eldoc-mode' syntax hints as you type. This requires a
-separate file of strings, `gnuplot-eldoc.el', which is also
-provided by recent Gnuplot distributions.
-
- ------O------
-
-There are several known shortcomings of `gnuplot-mode', version 0.5g
-and up. Many of the shortcomings involve the graphical interface
-\(refered to as the GUI) to setting arguments to plot options. Here is
-a list:
-
- 1. Currently there is no way for `gnuplot-mode' to know if information
- sent to gnuplot was correctly plotted.
- 2. \"plot\", \"splot\", and \"fit\" are handled in the GUI, but are
- a bit flaky. Their arguments may not be read correctly from
- existing text, and continuation lines (common for plot and splot)
- are not supported.
- 3. The GUI does not know how to read from continuation lines.
- 4. Comma separated position arguments to plot options are
- unsupported in the GUI. Colon separated datafile modifiers (used
- for plot, splot, and fit) are not supported either. Arguments
- not yet supported by the GUI generate messages printed in grey
- text.
- 5. The GUI handling of \"hidden3d\" is flaky and \"cntrparam\" is
- unsupported.
-
- ------O------
-
- Key bindings:
- \\{gnuplot-mode-map}"
- (interactive)
- (kill-all-local-variables)
- (use-local-map gnuplot-mode-map)
- (setq major-mode 'gnuplot-mode
- mode-name "Gnuplot")
- (set (make-local-variable 'comment-start) "# ")
- (set (make-local-variable 'comment-end) "")
- (set (make-local-variable 'comment-column) 32)
- (set (make-local-variable 'comment-start-skip) "#[ \t]*")
- (set (make-local-variable 'indent-line-function) 'gnuplot-indent-line)
-
- (set (make-local-variable 'beginning-of-defun-function) 'gnuplot-beginning-of-defun)
- (set (make-local-variable 'end-of-defun-function) 'gnuplot-end-of-continuation)
-
- (unless (featurep 'xemacs)
- (add-hook 'completion-at-point-functions 'gnuplot-completion-at-point nil t))
-
- (set-syntax-table gnuplot-mode-syntax-table)
-
- (when (eq gnuplot-keywords-when 'immediately) ; <HW>
- (gnuplot-setup-info-look)) ;; <SE>
-
- (if gnuplot-xemacs-p ; deal with font-lock
- (when (fboundp 'turn-on-font-lock)
- (turn-on-font-lock))
- (progn
- ;; Add syntax-propertizing functions to search for strings and comments
- (set (make-local-variable 'syntax-propertize-function)
- #'gnuplot-syntax-propertize)
- (add-hook 'syntax-propertize-extend-region-functions
- #'gnuplot-syntax-propertize-extend-region nil t)
-
- ;; Set up font-lock
- (setq font-lock-defaults gnuplot-font-lock-defaults)
- (set (make-local-variable 'font-lock-multiline) t)
- (set (make-local-variable 'parse-sexp-lookup-properties) t)))
-
- (if (fboundp 'widget-create) ; gnuplot-gui
- (condition-case ()
- (require 'gnuplot-gui)
- (error nil)))
- (setq gnuplot-first-call nil ; a few more details ...
- gnuplot-comint-recent-buffer (current-buffer)
- comint-process-echoes gnuplot-echo-command-line-flag)
- (run-hooks 'gnuplot-mode-hook)
- ;; the first time we need to figure out which gnuplot we are running
- (if gnuplot-program-version
- (gnuplot-setup-menu-and-toolbar)
- (gnuplot-fetch-version-number)))
-
-;;;###autoload
-(defun gnuplot-make-buffer ()
- "Open a new buffer in `gnuplot-mode'.
-When invoked, it switches to a new, empty buffer visiting no file
-and then starts `gnuplot-mode'.
-
-It is convenient to bind this function to a global key sequence. For
-example, to make the F10 key open a gnuplot script buffer, put the
-following in your .emacs file:
- (autoload 'gnuplot-make-buffer \"gnuplot\"
- \"open a buffer in gnuplot mode\" t)
- (global-set-key [(f10)] 'gnuplot-make-buffer)"
- (interactive)
- (switch-to-buffer gnuplot-gnuplot-buffer)
- (gnuplot-mode))
-
-;;;###autoload
-(defun run-gnuplot ()
- "Run an inferior Gnuplot process."
- (interactive)
- (gnuplot-make-gnuplot-buffer)
- (pop-to-buffer gnuplot-buffer))
-
-(defun gnuplot-show-version ()
- "Show version number in echo area."
- (interactive)
- (message "gnuplot-mode %s -- URL: %s" gnuplot-version gnuplot-maintainer-url))
-
-(defun gnuplot-show-gnuplot-version ()
- "Show gnuplot program and version number in echo area."
- (interactive)
- (gnuplot-fetch-version-number)
- (message "You are calling gnuplot %s as %s" gnuplot-program-version gnuplot-program))
-
-
-;;; That's it! ----------------------------------------------------------------
-
-
-;;; --- final chores: provide 'gnuplot and run load-hook
-;; provide before run-hooks suggested by <DB>
-(provide 'gnuplot)
-(run-hooks 'gnuplot-load-hook)
-
-;; Local Variables:
-;; indent-tabs-mode: nil
-;; End:
-
-;;; gnuplot.el ends here
Copyright 2019--2024 Marius PETER