git-for-steve tweaks.
[sxemacs] / info / sxemacs / building.texi
1 @node Running, Abbrevs, Programs, Top
2 @chapter Compiling and Testing Programs
3
4   The previous chapter discusses the Emacs commands that are useful for
5 making changes in programs.  This chapter deals with commands that assist
6 in the larger process of developing and maintaining programs.
7
8 @menu
9 * Compilation::        Compiling programs in languages other than Lisp
10                         (C, Pascal, etc.)
11 * Modes: Lisp Modes.   Various modes for editing Lisp programs, with
12                        different facilities for running the Lisp programs.
13 * Libraries: Lisp Libraries.      Creating Lisp programs to run in Emacs.
14 * Eval: Lisp Eval.     Executing a single Lisp expression in Emacs.
15 * Debug: Lisp Debug.   Debugging Lisp programs running in Emacs.
16 * Interaction: Lisp Interaction.  Executing Lisp in an Emacs buffer.
17 * External Lisp::      Communicating through Emacs with a separate Lisp.
18 @end menu
19
20 @node Compilation, Lisp Modes, Running, Running
21 @section Running ``make'', or Compilers Generally
22 @cindex inferior process
23 @cindex make
24 @cindex compilation errors
25 @cindex error log
26
27   Emacs can run compilers for non-interactive languages like C and
28 Fortran as inferior processes, feeding the error log into an Emacs buffer.
29 It can also parse the error messages and visit the files in which errors
30 are found, moving point to the line where the error occurred.
31
32 @table @kbd
33 @item M-x compile
34 Run a compiler asynchronously under Emacs, with error messages to
35 @samp{*compilation*} buffer.
36 @item M-x grep
37 Run @code{grep} asynchronously under Emacs, with matching lines
38 listed in the buffer named @samp{*compilation*}.
39 @item M-x kill-compilation
40 Kill the process made by the @code{M-x compile} command.
41 @item M-x kill-grep
42 Kill the running compilation or @code{grep} subprocess.
43 @item C-x `
44 Visit the next compiler error message or @code{grep} match.
45 @end table
46
47 @findex compile
48   To run @code{make} or another compiler, type @kbd{M-x compile}.  This
49 command reads a shell command line using the minibuffer, then executes
50 the specified command line in an inferior shell with output going to the
51 buffer named @samp{*compilation*}.  By default, the current buffer's
52 default directory is used as the working directory for the execution of
53 the command; therefore, the makefile comes from this directory.
54
55 @vindex compile-command
56   When the shell command line is read, the minibuffer appears containing a
57 default command line (the command you used the last time you typed
58 @kbd{M-x compile}).  If you type just @key{RET}, the same command line is used
59 again.  The first @kbd{M-x compile} provides @code{make -k} as the default.
60 The default is taken from the variable @code{compile-command}; if the
61 appropriate compilation command for a file is something other than
62 @code{make -k}, it can be useful to have the file specify a local value for
63 @code{compile-command} (@pxref{File Variables}).
64
65 @cindex compiling files
66   When you start a compilation, the buffer @samp{*compilation*} is
67 displayed in another window but not selected.  Its mode line displays
68 the word @samp{run} or @samp{exit} in the parentheses to tell you whether
69 compilation is finished.  You do not have to keep this buffer visible;
70 compilation continues in any case.
71
72 @findex kill-compilation
73   To kill the compilation process, type @kbd{M-x kill-compilation}.  The mode
74 line of the @samp{*compilation*} buffer changes to say @samp{signal}
75 instead of @samp{run}.  Starting a new compilation also kills any
76 running compilation, as only one can occur at any time.  Starting a new
77 compilation prompts for confirmation before actually killing a
78 compilation that is running.@refill
79
80 @kindex C-x `
81 @findex next-error
82   To parse the compiler error messages, type @kbd{C-x `}
83 (@code{next-error}).  The character following @kbd{C-x} is the grave
84 accent, not the single quote.  The command displays the buffer
85 @samp{*compilation*} in one window and the buffer in which the next
86 error occurred in another window.  Point in that buffer is moved to the
87 line where the error was found.  The corresponding error message is
88 scrolled to the top of the window in which @samp{*compilation*} is
89 displayed.
90
91   The first time you use @kbd{C-x `} after the start of a compilation, it
92 parses all the error messages, visits all the files that have error
93 messages, and creates markers pointing at the lines the error messages
94 refer to.  It then moves to the first error message location.  Subsequent
95 uses of @kbd{C-x `} advance down the data set up by the first use.  When
96 the preparsed error messages are exhausted, the next @kbd{C-x `} checks for
97 any more error messages that have come in; this is useful if you start
98 editing compiler errors while compilation is still going on.  If no
99 additional error messages have come in, @kbd{C-x `} reports an error.
100
101   @kbd{C-u C-x `} discards the preparsed error message data and parses the
102 @samp{*compilation*} buffer again, then displays the first error.
103 This way, you can process the same set of errors again.
104
105   Instead of running a compiler, you can run @code{grep} and see the
106 lines on which matches were found.  To do this, type @kbd{M-x grep} with
107 an argument line that contains the same arguments you would give to
108 @code{grep}: a @code{grep}-style regexp (usually in single quotes to
109 quote the shell's special characters) followed by filenames, which may
110 use wildcard characters.  The output from @code{grep} goes in the
111 @samp{*compilation*} buffer.  You can use @kbd{C-x `} to find the lines that
112 match as if they were compilation errors.
113
114   Note: a shell is used to run the compile command, but the shell is not
115 run in interactive mode.  In particular, this means that the shell starts
116 up with no prompt.  If you find your usual shell prompt making an
117 unsightly appearance in the @samp{*compilation*} buffer, it means you
118 have made a mistake in your shell's initialization file (@file{.cshrc}
119 or @file{.shrc} or @dots{}) by setting the prompt unconditionally.  The
120 shell initialization file should set the prompt only if there already is
121 a prompt.  Here's how to do it in @code{csh}:
122
123 @example
124 if ($?prompt) set prompt = ...
125 @end example
126
127 @node Lisp Modes, Lisp Libraries, Compilation, Running
128 @section Major Modes for Lisp
129
130   Emacs has four different major modes for Lisp.  They are the same in
131 terms of editing commands, but differ in the commands for executing Lisp
132 expressions.
133
134 @table @asis
135 @item Emacs-Lisp mode
136 The mode for editing source files of programs to run in Emacs Lisp.
137 This mode defines @kbd{C-M-x} to evaluate the current defun.
138 @xref{Lisp Libraries}.
139 @item Lisp Interaction mode
140 The mode for an interactive session with Emacs Lisp.  It defines
141 @key{LFD} to evaluate the sexp before point and insert its value in the
142 buffer.  @xref{Lisp Interaction}.
143 @item Lisp mode
144 The mode for editing source files of programs that run in other dialects
145 of Lisp than Emacs Lisp.  This mode defines @kbd{C-M-x} to send the
146 current defun to an inferior Lisp process.  @xref{External Lisp}.
147 @item Inferior Lisp mode
148 The mode for an interactive session with an inferior Lisp process.
149 This mode combines the special features of Lisp mode and Shell mode
150 (@pxref{Shell Mode}).
151 @item Scheme mode
152 Like Lisp mode but for Scheme programs.
153 @item Inferior Scheme mode
154 The mode for an interactive session with an inferior Scheme process.
155 @end table
156
157 @node Lisp Libraries, Lisp Eval, Lisp Modes, Running
158 @section Libraries of Lisp Code for Emacs
159 @cindex libraries
160 @cindex loading Lisp code
161
162   Lisp code for Emacs editing commands is stored in files whose names
163 conventionally end in @file{.el}.  This ending tells Emacs to edit them in
164 Emacs-Lisp mode (@pxref{Lisp Modes}).
165
166 @menu
167 * Loading::             Loading libraries of Lisp code into Emacs for use.
168 * Compiling Libraries:: Compiling a library makes it load and run faster.
169 * Mocklisp::            Converting Mocklisp to Lisp so SXEmacs can run it.
170 @end menu
171
172 @node Loading, Compiling Libraries, Lisp Libraries, Lisp Libraries
173 @subsection Loading Libraries
174
175 @table @kbd
176 @item M-x load-file @var{file}
177 Load the file @var{file} of Lisp code.
178 @item M-x load-library @var{library}
179 Load the library named @var{library}.
180 @item M-x locate-library @var{library} &optional @var{nosuffix}
181 Show the full path name of Emacs library @var{library}.
182 @end table
183
184 @findex load-file
185   To execute a file of Emacs Lisp, use @kbd{M-x load-file}.  This
186 command reads the file name you provide in the minibuffer, then executes
187 the contents of that file as Lisp code.  It is not necessary to visit
188 the file first; in fact, this command reads the file as found on
189 disk, not the text in an Emacs buffer.
190
191 @findex load
192 @findex load-library
193   Once a file of Lisp code is installed in the Emacs Lisp library
194 directories, users can load it using @kbd{M-x load-library}.  Programs can
195 load it by calling @code{load-library}, or with @code{load}, a more primitive
196 function that is similar but accepts some additional arguments.
197
198   @kbd{M-x load-library} differs from @kbd{M-x load-file} in that it
199 searches a sequence of directories and tries three file names in each
200 directory.  The three names are: first, the specified name with @file{.elc}
201 appended; second, the name with @file{.el} appended; third, the specified
202 name alone.  A @file{.elc} file would be the result of compiling the Lisp
203 file into byte code;  if possible, it is loaded in preference to the Lisp
204 file itself because the compiled file loads and runs faster.
205
206 @cindex loading libraries
207   Because the argument to @code{load-library} is usually not in itself
208 a valid file name, file name completion is not available.  In fact, when
209 using this command, you usually do not know exactly what file name
210 will be used.
211
212 @vindex load-path
213   The sequence of directories searched by @kbd{M-x load-library} is
214 specified by the variable @code{load-path}, a list of strings that are
215 directory names.  The elements of this list may not begin with "@samp{~}",
216 so you must call @code{expand-file-name} on them before adding them to
217 the list.  The default value of the list contains the directory where
218 the Lisp code for Emacs itself is stored.  If you have libraries of your
219 own, put them in a single directory and add that directory to
220 @code{load-path}.  @code{nil} in this list stands for the current
221 default directory, but it is probably not a good idea to put @code{nil}
222 in the list.  If you start wishing that @code{nil} were in the list, you
223 should probably use @kbd{M-x load-file} for this case.
224
225 The variable is initialized by the @b{EMACSLOADPATH} environment
226 variable. If no value is specified, the variable takes the default value
227 specified in the file @file{paths.h} when Emacs was built. If a path
228 isn't specified in @file{paths.h}, a default value is obtained from the
229 file system, near the directory in which the Emacs executable resides.
230
231 @findex locate-library
232  Like @kbd{M-x load-library}, @kbd{M-x locate-library} searches the
233 directories in @code{load-path} to find the file that @kbd{M-x load-library}
234 would load.  If the optional second argument @var{nosuffix} is
235 non-@code{nil}, the suffixes @file{.elc} or @file{.el} are not added to
236 the specified name @var{library} (like calling @code{load} instead of
237 @code{load-library}).
238
239 @cindex autoload
240    You often do not have to give any command to load a library, because the
241 commands defined in the library are set up to @dfn{autoload} that library.
242 Running any of those commands causes @code{load} to be called to load the
243 library; this replaces the autoload definitions with the real ones from the
244 library.
245
246   If autoloading a file does not finish, either because of an error or
247 because of a @kbd{C-g} quit, all function definitions made by the file
248 are undone automatically.  So are any calls to @code{provide}.  As a
249 consequence, the entire file is loaded a second time if you use one of
250 the autoloadable commands again.  This prevents problems when the
251 command is no longer autoloading but is working incorrectly because the file
252 was only partially loaded.  Function definitions are undone only for
253 autoloading; explicit calls to @code{load} do not undo anything if
254 loading is not completed.
255
256 @vindex after-load-alist
257 The variable @code{after-load-alist} takes an alist of expressions to be
258 evaluated when particular files are loaded.  Each element has the form
259 @code{(@var{filename} forms...)}.  When @code{load} is run and the filename
260 argument is @var{filename}, the forms in the corresponding element are
261 executed at the end of loading.
262
263 @var{filename} must match exactly.  Normally @var{filename} is the
264 name of a library, with no directory specified, since that is how load
265 is normally called.  An error in @code{forms} does not undo the load, but
266 it does prevent execution of the rest of the @code{forms}.
267
268 @node Compiling Libraries, Mocklisp, Loading, Lisp Libraries
269 @subsection Compiling Libraries
270
271 @cindex byte code
272   Emacs Lisp code can be compiled into byte-code which loads faster,
273 takes up less space when loaded, and executes faster.
274
275 @table @kbd
276 @item M-x batch-byte-compile
277 Run byte-compile-file on the files remaining on the command line.
278 @item M-x byte-compile-buffer &optional @var{buffer}
279 Byte-compile and evaluate contents of @var{buffer} (default is current
280 buffer).
281 @item M-x byte-compile-file
282 Compile a file of Lisp code named @var{filename} into a file of byte code.
283 @item M-x byte-compile-and-load-file @var{filename}
284 Compile a file of Lisp code named @var{filename} into a file of byte
285 code and load it.
286 @item M-x byte-recompile-directory @var{directory}
287 Recompile every @file{.el} file in @var{directory} that needs recompilation.
288 @item M-x disassemble
289 Print disassembled code for @var{object} on (optional) @var{stream}.
290 @findex make-obsolete
291 @item M-x make-obsolete @var{function new}
292 Make the byte-compiler warn that @var{function} is obsolete and @var{new}
293 should be used instead.
294 @end table
295
296 @findex byte-compile-file
297 @findex byte-compile-and-load-file
298 @findex byte-compile-buffer
299  @kbd{byte-compile-file} creates a byte-code compiled file from an
300 Emacs-Lisp source file.  The default argument for this function is the
301 file visited in the current buffer.  The function reads the specified
302 file, compiles it into byte code, and writes an output file whose name
303 is made by appending @file{c} to the input file name.  Thus, the file
304 @file{rmail.el} would be compiled into @file{rmail.elc}. To compile a
305 file of Lisp code named @var{filename} into a file of byte code and
306 then load it, use @code{byte-compile-and-load-file}. To compile and
307 evaluate Lisp code in a given buffer, use @code{byte-compile-buffer}.
308
309 @findex byte-recompile-directory
310   To recompile all changed Lisp files in a directory, use @kbd{M-x
311 byte-recompile-directory}.  Specify just the directory name as an argument.
312 Each @file{.el} file that has been byte-compiled before is byte-compiled
313 again if it has changed since the previous compilation.  A numeric argument
314 to this command tells it to offer to compile each @file{.el} file that has
315 not been compiled yet.  You must answer @kbd{y} or @kbd{n} to each
316 offer.
317
318 @findex batch-byte-compile
319   You can use the function @code{batch-byte-compile} to invoke Emacs
320 non-interactively from the shell to do byte compilation.  When you use
321 this function, the files to be compiled are specified with command-line
322 arguments.  Use a shell command of the form:
323
324 @example
325 emacs -batch -f batch-byte-compile @var{files}...
326 @end example
327
328   Directory names may also be given as arguments; in that case,
329 @code{byte-recompile-directory} is invoked on each such directory.
330 @code{batch-byte-compile} uses all remaining command-line arguments as
331 file or directory names, then kills the Emacs process.
332
333 @findex disassemble
334   @kbd{M-x disassemble} explains the result of byte compilation.  Its
335 argument is a function name.  It displays the byte-compiled code in a help
336 window in symbolic form, one instruction per line.  If the instruction
337 refers to a variable or constant, that is shown, too.
338
339 @node Mocklisp,,Compiling Libraries,Lisp Libraries
340 @subsection Converting Mocklisp to Lisp
341
342 @cindex mocklisp
343 @findex convert-mocklisp-buffer
344   SXEmacs can run Mocklisp files by converting them to Emacs Lisp first.
345 To convert a Mocklisp file, visit it and then type @kbd{M-x
346 convert-mocklisp-buffer}.  Then save the resulting buffer of Lisp file in a
347 file whose name ends in @file{.el} and use the new file as a Lisp library.
348
349   You cannot currently byte-compile converted Mocklisp code.
350 The reason is that converted Mocklisp code uses some special Lisp features
351 to deal with Mocklisp's incompatible ideas of how arguments are evaluated
352 and which values signify ``true'' or ``false''.
353
354 @node Lisp Eval, Lisp Debug, Lisp Libraries, Running
355 @section Evaluating Emacs-Lisp Expressions
356 @cindex Emacs-Lisp mode
357
358 @findex emacs-lisp-mode
359   Lisp programs intended to be run in Emacs should be edited in
360 Emacs-Lisp mode; this will happen automatically for file names ending in
361 @file{.el}.  By contrast, Lisp mode itself should be used for editing
362 Lisp programs intended for other Lisp systems.  Emacs-Lisp mode can be
363 selected with the command @kbd{M-x emacs-lisp-mode}.
364
365   For testing of Lisp programs to run in Emacs, it is useful to be able
366 to evaluate part of the program as it is found in the Emacs buffer.  For
367 example, if you change the text of a Lisp function definition and then
368 evaluate the definition, Emacs installs the change for future calls to the
369 function.  Evaluation of Lisp expressions is also useful in any kind of
370 editing task for invoking non-interactive functions (functions that are
371 not commands).
372
373 @table @kbd
374 @item M-:
375 Read a Lisp expression in the minibuffer, evaluate it, and print the
376 value in the minibuffer (@code{eval-expression}).
377 @item C-x C-e
378 Evaluate the Lisp expression before point, and print the value in the
379 minibuffer (@code{eval-last-sexp}).
380 @item C-M-x
381 Evaluate the defun containing point or after point, and print the value in
382 the minibuffer (@code{eval-defun}).
383 @item M-x eval-region
384 Evaluate all the Lisp expressions in the region.
385 @item M-x eval-current-buffer
386 Evaluate all the Lisp expressions in the buffer.
387 @end table
388
389 @kindex M-:
390 @findex eval-expression
391   @kbd{M-:} (@code{eval-expression}) is the most basic command
392 for evaluating a Lisp expression interactively.  It reads the expression
393 using the minibuffer, so you can execute any expression on a buffer
394 regardless of what the buffer contains.  When evaluation is complete,
395 the current buffer is once again the buffer that was current when
396 @kbd{M-:} was typed.
397
398 @kindex C-M-x
399 @findex eval-defun
400   In Emacs-Lisp mode, the key @kbd{C-M-x} is bound to the function
401 @code{eval-defun}, which parses the defun containing point or following point
402 as a Lisp expression and evaluates it.  The value is printed in the echo
403 area.  This command is convenient for installing in the Lisp environment
404 changes that you have just made in the text of a function definition.
405
406 @kindex C-x C-e
407 @findex eval-last-sexp
408   The command @kbd{C-x C-e} (@code{eval-last-sexp}) performs a similar job
409 but is available in all major modes, not just Emacs-Lisp mode.  It finds
410 the sexp before point, reads it as a Lisp expression, evaluates it, and
411 prints the value in the echo area.  It is sometimes useful to type in an
412 expression and then, with point still after it, type @kbd{C-x C-e}.
413
414   If @kbd{C-M-x} or @kbd{C-x C-e} are given a numeric argument, they
415 print the value by inserting it into the current buffer at point, rather
416 than in the echo area.  The argument value does not matter.
417
418 @findex eval-region
419 @findex eval-current-buffer
420   The most general command for evaluating Lisp expressions from a buffer
421 is @code{eval-region}.  @kbd{M-x eval-region} parses the text of the
422 region as one or more Lisp expressions, evaluating them one by one.
423 @kbd{M-x eval-current-buffer} is similar, but it evaluates the entire
424 buffer.  This is a reasonable way to install the contents of a file of
425 Lisp code that you are just ready to test.  After finding and fixing a
426 bug, use @kbd{C-M-x} on each function that you change, to keep the Lisp
427 world in step with the source file.
428
429 @node Lisp Debug, Lisp Interaction, Lisp Eval, Running
430 @section The Emacs-Lisp Debugger
431 @cindex debugger
432
433 @vindex debug-on-error
434 @vindex debug-on-quit
435   SXEmacs contains a debugger for Lisp programs executing inside it.
436 This debugger is normally not used; many commands frequently get Lisp
437 errors when invoked in inappropriate contexts (such as @kbd{C-f} at the
438 end of the buffer) and it would be unpleasant to enter a special
439 debugging mode in this case.  When you want to make Lisp errors invoke
440 the debugger, you must set the variable @code{debug-on-error} to
441 non-@code{nil}.  Quitting with @kbd{C-g} is not considered an error, and
442 @code{debug-on-error} has no effect on the handling of @kbd{C-g}.
443 However, if you set @code{debug-on-quit} to be non-@code{nil}, @kbd{C-g} will
444 invoke the debugger.  This can be useful for debugging an infinite loop;
445 type @kbd{C-g} once the loop has had time to reach its steady state.
446 @code{debug-on-quit} has no effect on errors.@refill
447
448 @findex debug-on-entry
449 @findex cancel-debug-on-entry
450 @findex debug
451   You can make Emacs enter the debugger when a specified function
452 is called or at a particular place in Lisp code.  Use @kbd{M-x
453 debug-on-entry} with argument @var{fun-name} to have Emacs enter the
454 debugger as soon as @var{fun-name} is called. Use
455 @kbd{M-x cancel-debug-on-entry} to make the function stop entering the
456 debugger when called.  (Redefining the function also does this.)  To enter
457 the debugger from some other place in Lisp code, you must insert the
458 expression @code{(debug)} there and install the changed code with
459 @kbd{C-M-x}.  @xref{Lisp Eval}.@refill
460
461   When the debugger is entered, it displays the previously selected buffer
462 in one window and a buffer named @samp{*Backtrace*} in another window.  The
463 backtrace buffer contains one line for each level of Lisp function
464 execution currently going on.  At the beginning of the buffer is a message
465 describing the reason that the debugger was invoked, for example, an
466 error message if it was invoked due to an error.
467
468   The backtrace buffer is read-only and is in Backtrace mode, a special
469 major mode in which letters are defined as debugger commands.  The
470 usual Emacs editing commands are available; you can switch windows to
471 examine the buffer that was being edited at the time of the error, and
472 you can switch buffers, visit files, and perform any other editing
473 operations.  However, the debugger is a recursive editing level
474 (@pxref{Recursive Edit}); it is a good idea to return to the backtrace
475 buffer and explicitly exit the debugger when you don't want to use it any
476 more.  Exiting the debugger kills the backtrace buffer.
477
478 @cindex current stack frame
479   The contents of the backtrace buffer show you the functions that are
480 executing and the arguments that were given to them.  It also allows you
481 to specify a stack frame by moving point to the line describing that
482 frame.  The frame whose line point is on is considered the @dfn{current
483 frame}.  Some of the debugger commands operate on the current frame.
484 Debugger commands are mainly used for stepping through code one
485 expression at a time.  Here is a list of them:
486
487 @table @kbd
488 @item c
489 Exit the debugger and continue execution.  In most cases, execution of
490 the program continues as if the debugger had never been entered (aside
491 from the effect of any variables or data structures you may have changed
492 while inside the debugger).  This includes entry to the debugger due to
493 function entry or exit, explicit invocation, and quitting or certain
494 errors.  Most errors cannot be continued; trying to continue an error usually
495 causes the same error to occur again.
496 @item d
497 Continue execution, but enter the debugger the next time a Lisp
498 function is called.  This allows you to step through the
499 subexpressions of an expression, and see what the subexpressions do and
500 what values they compute.
501
502 When you enter the debugger this way, Emacs flags the stack frame for the
503 function call from which you entered.  The same function is then called
504 when you exit the frame.  To cancel this flag, use @kbd{u}.
505 @item b
506 Set up to enter the debugger when the current frame is exited.  Frames
507 that invoke the debugger on exit are flagged with stars.
508 @item u
509 Don't enter the debugger when the current frame is exited.  This
510 cancels a @kbd{b} command on a frame.
511 @item e
512 Read a Lisp expression in the minibuffer, evaluate it, and print the
513 value in the echo area.  This is equivalent to the command @kbd{M-:}.
514 @item q
515 Terminate the program being debugged; return to top-level Emacs
516 command execution.
517
518 If the debugger was entered due to a @kbd{C-g} but you really want
519 to quit, not to debug, use the @kbd{q} command.
520 @item r
521 Return a value from the debugger.  The value is computed by reading an
522 expression with the minibuffer and evaluating it.
523
524 The value returned by the debugger makes a difference when the debugger
525 was invoked due to exit from a Lisp call frame (as requested with @kbd{b});
526 then the value specified in the @kbd{r} command is used as the value of
527 that frame.
528
529 The debugger's return value also matters with many errors.  For example,
530 @code{wrong-type-argument} errors will use the debugger's return value
531 instead of the invalid argument; @code{no-catch} errors will use the
532 debugger value as a throw tag instead of the tag that was not found.
533 If an error was signaled by calling the Lisp function @code{signal},
534 the debugger's return value is returned as the value of @code{signal}.
535 @end table
536
537 @node Lisp Interaction, External Lisp, Lisp Debug, Running
538 @section Lisp Interaction Buffers
539
540   The buffer @samp{*scratch*}, which is selected when Emacs starts up, is
541 provided for evaluating Lisp expressions interactively inside Emacs.  Both
542 the expressions you evaluate and their output goes in the buffer.
543
544   The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which
545 is the same as Emacs-Lisp mode except for one command, @key{LFD}.  In
546 Emacs-Lisp mode, @key{LFD} is an indentation command.  In Lisp
547 Interaction mode, @key{LFD} is bound to @code{eval-print-last-sexp}.  This
548 function reads the Lisp expression before point, evaluates it, and inserts
549 the value in printed representation before point.
550
551  The way to use the @samp{*scratch*} buffer is to insert Lisp
552 expressions at the end, ending each one with @key{LFD} so that it will
553 be evaluated.  The result is a complete typescript of the expressions
554 you have evaluated and their values.
555
556 @findex lisp-interaction-mode
557   The rationale for this feature is that Emacs must have a buffer when it
558 starts up, but that buffer is not useful for editing files since a new
559 buffer is made for every file that you visit.  The Lisp interpreter
560 typescript is the most useful thing I can think of for the initial buffer
561 to do.  @kbd{M-x lisp-interaction-mode} will put any buffer in Lisp
562 Interaction mode.
563
564 @node External Lisp,, Lisp Interaction, Running
565 @section Running an External Lisp
566
567   Emacs has facilities for running programs in other Lisp systems.  You can
568 run a Lisp process as an inferior of Emacs, and pass expressions to it to
569 be evaluated.  You can also pass changed function definitions directly from
570 the Emacs buffers in which you edit the Lisp programs to the inferior Lisp
571 process.
572
573 @findex run-lisp
574   To run an inferior Lisp process, type @kbd{M-x run-lisp}.  This runs the
575 program named @code{lisp}, the same program you would run by typing
576 @code{lisp} as a shell command, with both input and output going through an
577 Emacs buffer named @samp{*lisp*}.  In other words, any ``terminal output''
578 from Lisp will go into the buffer, advancing point, and any ``terminal
579 input'' for Lisp comes from text in the buffer.  To give input to Lisp, go
580 to the end of the buffer and type the input, terminated by @key{RET}.  The
581 @samp{*lisp*} buffer is in Inferior Lisp mode, which has all the
582 special characteristics of Lisp mode and Shell mode (@pxref{Shell Mode}).
583
584 @findex lisp-mode
585   Use Lisp mode to run the source files of programs in external Lisps.
586 You can select this mode with @kbd{M-x lisp-mode}.  It is used automatically
587 for files whose names end in @file{.l} or @file{.lisp}, as most Lisp
588 systems usually expect.
589
590 @kindex C-M-x
591 @findex lisp-send-defun
592   When you edit a function in a Lisp program you are running, the easiest
593 way to send the changed definition to the inferior Lisp process is the key
594 @kbd{C-M-x}.  In Lisp mode, this key runs the function @code{lisp-send-defun},
595 which finds the defun around or following point and sends it as input to
596 the Lisp process.  (Emacs can send input to any inferior process regardless
597 of what buffer is current.)
598
599   Contrast the meanings of @kbd{C-M-x} in Lisp mode (for editing programs
600 to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp
601 programs to be run in Emacs): in both modes it has the effect of installing
602 the function definition that point is in, but the way of doing so is
603 different according to where the relevant Lisp environment is found.
604 @xref{Lisp Modes}.