This manual documents the GNU Emacs Integrated Development Environment (IDE) for REDUCE, which comprises a primary major mode for syntax-directed editing of REDUCE source code (REDUCE mode) and a subsidiary major mode for running REDUCE as an inferior process with input and output via a buffer (REDUCE Run mode). REDUCE is a system and language for algebraic computing developed originally by Anthony C. Hearn, which is now Open Source and available from SourceForge. It therefore shares the GNU spirit of collaborative software development, which provided part of my motivation to begin this project. Also, REDUCE is written in Lisp, as is (most of) Emacs. However, the REDUCE user language is similar to Algol 60, an ancestor of most current programming languages.
I began development of REDUCE mode tentatively in late 1992 and seriously in early 1994, and I began adding REDUCE Run mode in late 1998. I have continued development sporadically. Comments, suggestions, bug reports, etc. are welcome; Feedback: bug reports, suggestions, comments, ….
REDUCE IDE is released as an Emacs package; Installation of REDUCE IDE. The latest development source code
(which may not work!) is available from
GitHub, where package
release versions are tagged (e.g. v1.7
) and are available as
releases (e.g. reduce-ide-1.7.tar
). The source code (only)
for the latest package release is also available from
SourceForge.
The current version of REDUCE IDE is intended for use with GNU Emacs version 28 or later, which I will endeavour to support under recent versions of Microsoft Windows and Linux. It should also run under closely related versions of GNU Emacs and on other platforms, but I may not be able to provide support.
This manual assumes that you are familiar in general with both Emacs and REDUCE.
The purpose of REDUCE mode is to provide editing commands that are aware of the syntax of the REDUCE language, and therefore allow operations to be performed on the major syntactic elements, namely statements, procedures and comments. To the reader who has never used a syntax-directed editor, I can only say that it is surprisingly useful! In particular, the automatic indentation code provides valuable clues to potential REDUCE programming errors by showing how the REDUCE parser is likely to interpret the code; Indenting REDUCE code automatically.
The purpose of REDUCE Run mode is to provide a friendly interface to a command-line version of REDUCE running as an inferior process in an Emacs buffer. REDUCE Run mode inherits much of its functionality from REDUCE mode and cannot be run alone. The assumption is that normal use will involve editing one or more REDUCE source files and running REDUCE simultaneously, and this is what REDUCE Run mode aims to support. REDUCE Run mode is described in its own chapter; Running REDUCE in a buffer.
All REDUCE IDE commands are self-documenting as usual in Emacs,
including in particular the modes themselves. Hence, for an overview
of REDUCE mode, select it in some buffer and then give the command
C-h m (describe-mode
) or use the Help menu option
Describe.