Emacs has facilities for running programs in other Lisp systems. You can run a Lisp process as an inferior of Emacs, and pass expressions to it to be evaluated. You can also pass changed function definitions directly from the Emacs buffers in which you edit the Lisp programs to the inferior Lisp process.
To run an inferior Lisp process, type M-x run-lisp. This runs
the program named lisp
, the same program you would run by typing
lisp
as a shell command, with both input and output going through
an Emacs buffer named `*lisp*
'. That is to say, any ``terminal
output'' from Lisp will go into the buffer, advancing point, and any
``terminal input'' for Lisp comes from text in the buffer. (You can
change the name of the Lisp executable file by setting the variable
inferior-lisp-program
.)
To give input to Lisp, go to the end of the buffer and type the input,
terminated by RET
. The `*lisp*
' buffer is in Inferior Lisp
mode, which combines the special characteristics of Lisp mode with most
of the features of Shell mode (see Shell Mode). The definition of
RET
to send a line to a subprocess is one of the features of Shell
mode.
For the source files of programs to run in external Lisps, use Lisp
mode. This mode can be selected with M-x lisp-mode, and is used
automatically for files whose names end in `.l
', `.lsp
', or
`.lisp
', as most Lisp systems usually expect.
When you edit a function in a Lisp program you are running, the easiest
way to send the changed definition to the inferior Lisp process is the key
C-M-x. In Lisp mode, this runs the function lisp-eval-defun
,
which finds the defun around or following point and sends it as input to
the Lisp process. (Emacs can send input to any inferior process regardless
of what buffer is current.)
Contrast the meanings of C-M-x in Lisp mode (for editing programs to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp programs to be run in Emacs): in both modes it has the effect of installing the function definition that point is in, but the way of doing so is different according to where the relevant Lisp environment is found. See Executing Lisp. Lisp Interaction Building