gnuplot
- Description
- Major-mode and interactive frontend for gnuplot
- Latest
- gnuplot-0.8.1.0.20240914.153054.tar (.sig), 2024-Sep-14, 310 KiB
- Maintainer
- Maxime Tréca <maxime@gmail.com>, Daniel Mendler <mail@daniel-mendler.de>
- Website
- https://github.com/emacs-gnuplot/gnuplot
- Browse ELPA's repository
- CGit or Gitweb
- Badge
To install this package from Emacs, use package-install
or list-packages
.
Full description
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.
1. Installation
1.1. Using MELPA
The easiest way to install gnuplot-mode
is to directly get it from
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.
1.2. Using el-get
The el-get package includes a gnuplot-mode recipe. So to install simply call
M-x el-get-install RET gnuplot-mode
Alternatively, you can directly place the following in your init file so that
el-get
can install and load gnuplot-mode at Emacs start up:
(el-get 'sync 'gnuplot-mode)
1.3. From source
After fetching the package's source from the homepage, byte-compile
the package's files using the make
command and move the compiled
.elc
files to your chosen target directory.
2. Configuration
2.1. Load Path
First of all, make sure that gnuplot.el
is in your load-path (this is automatic if using a package helper like use-package). To do so manually, add the following snippet in your emacs configuration file
(add-to-list 'load-path "/path/to/gnuplot")
2.2. Info File
The function gnuplot-info-lookup-symbol
looks at the Gnuplot info
file. For that function to work, a gnuplot.info
file must be placed
somewhere where info can find it. The following snippet allows you
to put the gnuplot.info
any place convenient:
(add-to-list 'Info-default-directory-list "/path/to/info/file")
2.3. Enable Mode
You can automatically enable gnuplot-mode
using the snippet below:
(autoload 'gnuplot-mode "gnuplot" "Gnuplot major mode" t) (autoload 'gnuplot-make-buffer "gnuplot" "open a buffer in gnuplot-mode" t) (setq auto-mode-alist (append '(("\\.gp$" . gnuplot-mode)) auto-mode-alist))
3. Usage
Apart from enabling gnuplot-mode
automatically (see above), these
two functions are useful for starting up gnuplot-mode:
M-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
3.1. Bindings
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 or M-ret | complete keyword before point |
ret | newline and indent |
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 |
3.2. Context-sensitive keyword completion
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, provided you
have the right version of gnuplot.info
installed (see the
Installation section for isntructions).
If the context-sensitivity annoys you, you can get simple
non-context-sensitive completion back by toggling
gnuplot-context-sensitive-mode
. See also the variable
gnuplot-tab-completion
.
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.
3.3. Eldoc mode
If you install the file gnuplot-eldoc.el
from a recent Gnuplot
distribution, gnuplot-mode can show syntax hints in the modeline when
eldoc-mode
is turned on and context sensitivity is enabled.
3.4. Inline Images
You can optionally 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. Call
gnuplot-inline-display-mode
in a gnuplot-mode buffer to try it out. This
feature is implemented using temporary png
files, and is also somewhat
experimental. It requires Gnuplot to have png
support and a GNU Emacs
with image support. Please report bugs.
4. FAQ / Remarks
4.1. Usage on Windows
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-program
andgnuplot-program-args
variables. 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
comint
is involved, it should function correctly, but you lose most features of thegnuplot.el
package. 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
4.2. Pause Command
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.
4.3. Issue with Unicode Character Display
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.
Old versions
gnuplot-0.8.1.0.20230727.75810.tar.lz | 2024-Mar-31 | 60.3 KiB |
gnuplot-0.8.1.0.20230323.140041.tar.lz | 2023-Mar-23 | 60.2 KiB |
gnuplot-0.8.1.0.20230224.92635.tar.lz | 2023-Feb-24 | 60.2 KiB |
gnuplot-0.8.1.0.20230218.171711.tar.lz | 2023-Feb-18 | 60.3 KiB |
gnuplot-0.8.0.0.20230101.135402.tar.lz | 2023-Jan-01 | 60.2 KiB |
gnuplot-0.8.0.0.20221112.204939.tar.lz | 2022-Nov-12 | 60.3 KiB |
gnuplot-0.8.0.0.20221111.82118.tar.lz | 2022-Nov-11 | 60.9 KiB |
gnuplot-0.8.0.0.20220913.115439.tar.lz | 2022-Sep-13 | 60.7 KiB |
gnuplot-0.8.0.0.20211229.133354.tar.lz | 2021-Dec-29 | 271 KiB |
gnuplot-0.8.0.0.20210609.83415.tar.lz | 2021-Aug-29 | 272 KiB |
News
1. Version 8.1 (Feb 18th 2023)
List of changes for gnuplot.el
version 0.8.0 ranging from January 2021
to February 2023.
- Fixed the
completion-at-point
function - Improve lazy loading of the gnuplot-gui library
- Remove legacy code
- Lexical scoping and linting
2. Version 8.0 (Jan 3rd 2021)
List of changes for gnuplot.el
version 0.8.0 ranging from March 2014
to January 2021.
- Changed project license to GPLv3.
- Greatly simplify the compilation process.
- Fix deprecated calls to the
cl
library. - Deprecated XEmacs support. Bump minimal GNU Emacs version to 24.3.
- Add a
gnuplot-program-args
variable for passing additional arguments to the gnuplot program binary. - The
gnuplot-inline-image-mode
can now take three values:nil
,
inline
, dedicated
.
- Add the
gnuplot-use-context-sensitive-completion
configuration option. - Removed the
gnuplot-bug-report
function. - The provided
gnuplot.info
manual file has been updated for gnuplot version 5.2.6. - Add the
gnuplot-program-args
customization option to pass additional arguments to the gnuplot process. - Use
syntax-proprietize-rules
in gnuplot buffers. gnuplot-context-sensitive-mode
is now a normal minor mode.- Enable
completion-at-point
in gnuplotcomint
buffers. - Remove the unused
dotemacs.el
file. comint-process-echoes
is now buffer-local.
3. Version 7.0 (Oct 20th 2012)
- Contextual completion & help, inline plots, some other stuff.
4. Version 6.0 (Dec 13th 2011)
- Changed numbering scheme to accommodate gnuplot packaging requirements.
- Moved to github, updated contact info.
5. Version 5.0 (Sep 16th 2002)
- Wrote initial draft of gnuplot-gui.el, included it in insertions
menu and in
gnuplot-insert
. Negate option function, bound toC-c C-n
. 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.- Send file uses the load command. add
gnuplot-plot-from-comint
andgnuplot-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. gnuplot-kill-gnuplot-buffer
made more robust. fixed a bug ingnuplot-plot-from-comint
. fixed description of gnuplot-faces group.- Update copyright information, update gpelcard
- Change installation materials. Add some support for hidden3d. Use constants in types alists in gui. Various other minor improvements to the types alists.
- Removed
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. - 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.
- Add
pgnuplot.c
and Win9x install instructions to the distribution. Fixed a defface bug. Addedgnuplot-keywords-when
allowing deferral of parsing the info file. - Fixed font-locking of strings and comments. Figure out
gnuplot-version
number from startup message and setgnuplot-echo-command-line-flag
accordingly. Addedgnuplot-program-version
variable. Check that font-lock is actually a feature. - Added
gnuplot-determine-gnuplot-version
so that the gnuplot version number andcomint-process-echos
actually get set correctly. Actually, the first time something is plotted, the echoing might not work, but the second time it will. - 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). - Do a more robust check for the gnuplot process before killing the gnuplot buffer.
… …