This package allows running gnuplot files from within the GNU Emacs editor. It features:
- Syntax highlighting and indentation for gnuplot scripts.
- Pull-down menus for common gnuplot-related tasks.
- Interactive gnuplot sessions using
comint. - Context-sensitive completion.
- Inline display of gnuplot plots.
It is recommended to run gnuplot-mode on GNU Emacs 25 or above,
using gnuplot version 5.0 or above.
The easiest way to install gnuplot-mode is to directly get it from NonGNU ELPA
or MELPA. After configuring Emacs to use MELPA, you should be able to install
gnuplot-mode by typing
M-x install-package RET gnuplot RET
or do M-x list-packages and search for gnuplot in the list.
gnuplot-mode is enabled automatically for *.gp files. The function
gnuplot-info-lookup-symbol looks at the Gnuplot info file.
Apart from enabling gnuplot-mode automatically for *.gp files, these functions
are useful for starting up gnuplot-mode:
M-x run-gnuplot: start gnuplot replM-x gnuplot-mode: start gnuplot-mode in the current bufferM-x gnuplot-make-buffer: open a new buffer (which is not visiting a file) and start gnuplot-mode in that buffer
When gnuplot-mode is on, the following keybindings are available:
| 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-z | customize gnuplot-mode |
| M-tab | complete keyword before point |
| tab | indent current line |
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 |
By default gnuplot-mode will try to parse your commands as you type and suggest
only relevant completion candidates on typing M-TAB or TAB. For example, with
point after the with of a plot command, tab completion will suggest only
plotting styles. This also enables more specific help topic lookup in the
gnuplot info file.
If the context-sensitivity annoys you, you can get simple non-context-sensitive
completion back by toggling gnuplot-context-sensitive-mode.
By its nature, the completion code has to know a fair bit about the structure of
the gnuplot language. If you use it with an old version of gnuplot (pre
version 4) it will make mistakes. Most of gnuplot 4.6’s command language is
parsed correctly except for the set terminal commands.
gnuplot-mode shows syntax hints in the modeline when eldoc-mode is turned on and
context sensitivity is enabled. Both are enabled by default.
You can have plots displayed inline in the Gnuplot comint process buffer. This
is handy for trying things out without having to switch between Emacs and the
Gnuplot display. It requires Gnuplot to have png support and a GNU Emacs with
image support. Call gnuplot-external-display-mode in a gnuplot-mode buffer to
disable the feature.
Multiple users have reported issues when trying to work with gnuplot.el on
Windows. Most notably, the gnuplot process hangs after sending a first line of
input (this is a common Emacs issue on Windows, see here).
A partial workaround was to use pgnuplot.exe as the gnuplot-program. However,
pgnuplot.exe is not included with gnuplot since version 5.0.
You currently have two solutions:
- Experiment using the
gnuplot-programandgnuplot-program-argsvariables. For instance, setting(setq gnuplot-program "/path/to/cmdproxy.exe") (setq gnuplot-program-args "/C /path/to/gnuplot.exe")
has been reported to work (see here for a reference).
- Use the simpler gnuplot-mode package that sends the entire buffer to gnuplot.
Since no
comintis involved, it should function correctly, but you lose most features of thegnuplot.elpackage. We would like to implement a send-buffer without comint as well eventually.
More information on gnuplot.el and Windows can be found on these threads: 1, 2
Gnuplot’s pause -1 command, which waits for the user to press a key, is
problematic when running under Emacs. Sending pause -1 to the running gnuplot
process will make Emacs appear to freeze. (It isn’t really crashed: typing C-g
will unlock it and let you continue). The workaround for now is to make Gnuplot
output a string before pausing, by doing pause -1 "Hit return" or similar.
Some users have reported issues when trying to display unicode characters. This issue is likely due to your distribution bundling gnuplot with editline instead of readline. Recompiling the source with support for unicode should fix the issue until this issue is fixed upstream. Thanks to rolandog for discovering this fix.
Regenerate gnuplot.texi and gnuplot-eldoc.el from the Gnuplot source.
emacs -batch -l doc2texi.el -f d2t-doc-to-texiinside the gnuplot-*/docs/ directorymakeinfo --no-split gnuplot.texiand ensure that it compiles cleanly