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 (edit mode) and a subsidiary major mode for running REDUCE as an inferior process with input and output via a buffer (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. REDUCE is also written in Lisp, as is (most of) Emacs. However, the REDUCE user language is similar to Algol-60 (which looks a bit like a cross between Pascal and FORTRAN-77).
Development of REDUCE edit mode began tentatively in late 1992, and serious development of the current version began in early 1994, and continued sporadically until 2001. Development of REDUCE run mode began in late 1998. The latest released versions of the software and documentation are available from SourceForge. Comments, suggestions, bug reports, etc. are welcome.
The current version of the REDUCE IDE is intended for use with GNU Emacs version 25 and later, which I will endeavour to support under recent versions of Microsoft Windows and Ubuntu Linux; it might run under closely related versions of GNU Emacs but I cannot explicitly support either XEmacs or other platforms.
REDUCE IDE version 1.5 provides two major updates. One is a substantial rewrite of REDUCE run mode to provide explicit support for both CSL and PSL REDUCE, and for easily running multiple copies of REDUCE simultaneously. The other is distribution as a multi-file package via the REDUCE IDE web page, which makes installation and updating very easy via the GNU Emacs package manager (see Emacs Lisp Packages in GNU Emacs Manual).
However, beware that in native Microsoft Windows GNU Emacs (only) PSL REDUCE currently does not run correctly without some additional support, which is explained below. The problem appears to be that it needs to be explicitly run from a shell. I hope to improve this situation in a later version of REDUCE IDE.
This manual assumes that you are familiar in general with both Emacs and REDUCE.
The purpose of REDUCE edit 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 (see 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 edit 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.
All REDUCE IDE commands are self-documenting as usual in Emacs,
including in particular the modes themselves. Hence, for an overview of
the version of a REDUCE mode that is actually installed in your Emacs,
select it in some buffer and then give the command C-h m
describe-mode) or use the Help menu option Describe.