(calc-full-help): Update the copyright year.
[bpt/emacs.git] / man / building.texi
CommitLineData
6bf7aab6 1@c This is part of the Emacs manual.
b65d8176
TTN
2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
3@c 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
6bf7aab6 4@c See file emacs.texi for copying conditions.
ffb1af2b 5@node Building, Maintaining, Programs, Top
6bf7aab6
DL
6@chapter Compiling and Testing Programs
7@cindex building programs
8@cindex program building
9@cindex running Lisp functions
10
11 The previous chapter discusses the Emacs commands that are useful for
12making changes in programs. This chapter deals with commands that assist
13in the larger process of developing and maintaining programs.
14
15@menu
16* Compilation:: Compiling programs in languages other
17 than Lisp (C, Pascal, etc.).
6bf7aab6
DL
18* Compilation Mode:: The mode for visiting compiler errors.
19* Compilation Shell:: Customizing your shell properly
20 for use in the compilation buffer.
ed4389af 21* Grep Searching:: Searching with grep.
ff994d96 22* Flymake:: Finding syntax errors on the fly.
177c0ea7
JB
23* Debuggers:: Running symbolic debuggers for non-Lisp programs.
24* Executing Lisp:: Various modes for editing Lisp programs,
6bf7aab6 25 with different facilities for running
177c0ea7 26 the Lisp programs.
6bf7aab6 27* Libraries: Lisp Libraries. Creating Lisp programs to run in Emacs.
6bf7aab6 28* Eval: Lisp Eval. Executing a single Lisp expression in Emacs.
254196f5 29* Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer.
177c0ea7 30* External Lisp:: Communicating through Emacs with a separate Lisp.
6bf7aab6
DL
31@end menu
32
33@node Compilation
34@section Running Compilations under Emacs
35@cindex inferior process
36@cindex make
37@cindex compilation errors
38@cindex error log
39
40 Emacs can run compilers for noninteractive languages such as C and
41Fortran as inferior processes, feeding the error log into an Emacs buffer.
42It can also parse the error messages and show you the source lines where
43compilation errors occurred.
44
45@table @kbd
46@item M-x compile
74b1aac1 47Run a compiler asynchronously under Emacs, with error messages going to
58fa012d 48the @samp{*compilation*} buffer.
9ee31341
EZ
49@item M-x recompile
50Invoke a compiler with the same command as in the last invocation of
51@kbd{M-x compile}.
6bf7aab6 52@item M-x kill-compilation
b00d98ed 53Kill the running compilation subprocess.
6bf7aab6
DL
54@end table
55
56@findex compile
57 To run @code{make} or another compilation command, do @kbd{M-x
58compile}. This command reads a shell command line using the minibuffer,
59and then executes the command in an inferior shell, putting output in
60the buffer named @samp{*compilation*}. The current buffer's default
61directory is used as the working directory for the execution of the
62command; normally, therefore, the compilation happens in this
63directory.
64
65@vindex compile-command
7d6596b8
RS
66 The default for the compilation command is normally @samp{make -k},
67which is correct most of the time for nontrivial programs.
68(@xref{Top,, Make, make, GNU Make Manual}.) If you have done @kbd{M-x
69compile} before, the default each time is the command you used the
70previous time. @code{compile} stores this command in the variable
71@code{compile-command}, so setting that variable specifies the default
72for the next use of @kbd{M-x compile}. If a file specifies a file
73local value for @code{compile-command}, that provides the default when
74you type @kbd{M-x compile} in that file's buffer. @xref{File
75Variables}.
6bf7aab6
DL
76
77 Starting a compilation displays the buffer @samp{*compilation*} in
91f1fd02
RS
78another window but does not select it. The buffer's mode line tells
79you whether compilation is finished, with the word @samp{run},
80@samp{signal} or @samp{exit} inside the parentheses. You do not have
81to keep this buffer visible; compilation continues in any case. While
82a compilation is going on, the string @samp{Compiling} appears in the
83mode lines of all windows. When this string disappears, the
84compilation is finished.
6bf7aab6
DL
85
86 If you want to watch the compilation transcript as it appears, switch
87to the @samp{*compilation*} buffer and move point to the end of the
88buffer. When point is at the end, new compilation output is inserted
89above point, which remains at the end. If point is not at the end of
90the buffer, it remains fixed while more compilation output is added at
91the end of the buffer.
92
09e58ba6 93@cindex compilation buffer, keeping current position at the end
6bf7aab6
DL
94@vindex compilation-scroll-output
95 If you set the variable @code{compilation-scroll-output} to a
96non-@code{nil} value, then the compilation buffer always scrolls to
97follow output as it comes in.
98
99@findex kill-compilation
43b4d3c0 100 When the compiler process terminates, for whatever reason, the mode
91f1fd02
RS
101line of the @samp{*compilation*} buffer changes to say @samp{exit}
102(followed by the exit code, @samp{[0]} for a normal exit), or
103@samp{signal} (if a signal terminated the process), instead of
104@samp{run}. Starting a new compilation also kills any running
105compilation, as only one can exist at any time. However, @kbd{M-x
106compile} asks for confirmation before actually killing a compilation
107that is running. You can also kill the compilation process with
108@kbd{M-x kill-compilation}.
6bf7aab6 109
9ee31341
EZ
110@findex recompile
111 To rerun the last compilation with the same command, type @kbd{M-x
3fce19f1
RS
112recompile}. This automatically reuses the compilation command from
113the last invocation of @kbd{M-x compile}. It also reuses the
114@samp{*compilation*} buffer and starts the compilation in its default
115directory, which is the directory in which the previous compilation
116was started.
9ee31341 117
43b4d3c0 118 Emacs does not expect a compiler process to launch asynchronous
266e712e 119subprocesses; if it does, and they keep running after the main
43b4d3c0
RS
120compiler process has terminated, Emacs may kill them or their output
121may not arrive in Emacs. To avoid this problem, make the main process
122wait for its subprocesses to finish. In a shell script, you can do this
123using @samp{$!} and @samp{wait}, like this:
124
125@example
126(sleep 10; echo 2nd)& pid=$! # @r{Record pid of subprocess}
127echo first message
128wait $pid # @r{Wait for subprocess}
129@end example
266e712e 130
9cad1898
RS
131 If the background process does not output to the compilation buffer,
132so you only need to prevent it from being killed when the main
133compilation process terminates, this is sufficient:
134
135@example
136nohup @var{command}; sleep 1
137@end example
138
139@vindex compilation-environment
140 You can control the environment passed to the compilation command
141with the variable @code{compilation-environment}. Its value is a list
142of environment variable settings; each element should be a string of
143the form @code{"@var{envvarname}=@var{value}"}. These environment
144variable settings override the usual ones.
145
6bf7aab6
DL
146@node Compilation Mode
147@section Compilation Mode
148
149@findex compile-goto-error
150@cindex Compilation mode
151@cindex mode, Compilation
152 The @samp{*compilation*} buffer uses a special major mode, Compilation
153mode, whose main feature is to provide a convenient way to look at the
154source line where the error happened.
155
156@table @kbd
089ed565
KS
157@item M-g M-n
158@itemx M-g n
159@itemx C-x `
6bf7aab6 160Visit the locus of the next compiler error message or @code{grep} match.
089ed565
KS
161@item M-g M-p
162@itemx M-g p
163Visit the locus of the previous compiler error message or @code{grep} match.
6bf7aab6
DL
164@item @key{RET}
165Visit the locus of the error message that point is on.
166This command is used in the compilation buffer.
167@item Mouse-2
168Visit the locus of the error message that you click on.
ed4389af
RS
169@item M-n
170Find and highlight the locus of the next error message, without
171selecting the source buffer.
172@item M-p
173Find and highlight the locus of the previous error message, without
174selecting the source buffer.
175@item M-@}
176Move point to the next error for a different file than the current
177one.
178@item M-@{
179Move point to the previous error for a different file than the current
180one.
181@item C-c C-f
182Toggle Next Error Follow minor mode, which makes cursor motion in the
183compilation buffer produce automatic source display.
6bf7aab6
DL
184@end table
185
089ed565
KS
186@kindex M-g M-n
187@kindex M-g n
6bf7aab6
DL
188@kindex C-x `
189@findex next-error
190 You can visit the source for any particular error message by moving
58fa012d
EZ
191point in the @samp{*compilation*} buffer to that error message and
192typing @key{RET} (@code{compile-goto-error}). Alternatively, you can
193click @kbd{Mouse-2} on the error message; you need not switch to the
194@samp{*compilation*} buffer first.
6bf7aab6 195
ed4389af 196@vindex next-error-highlight
6bf7aab6
DL
197 To parse the compiler error messages sequentially, type @kbd{C-x `}
198(@code{next-error}). The character following the @kbd{C-x} is the
199backquote or ``grave accent,'' not the single-quote. This command is
ed4389af
RS
200available in all buffers, not just in @samp{*compilation*}; it
201displays the next error message at the top of one window and source
202location of the error in another window. It also momentarily
203highlights the relevant source line. You can change the behavior of
204this highlighting with the variable @code{next-error-highlight}.
6bf7aab6
DL
205
206 The first time @kbd{C-x `} is used after the start of a compilation,
207it moves to the first error's location. Subsequent uses of @kbd{C-x `}
208advance down to subsequent errors. If you visit a specific error
209message with @key{RET} or @kbd{Mouse-2}, subsequent @kbd{C-x `}
210commands advance from there. When @kbd{C-x `} gets to the end of the
211buffer and finds no more error messages to visit, it fails and signals
212an Emacs error.
213
d938fad2
JL
214@vindex compilation-skip-threshold
215 By default, @kbd{C-x `} skips less important messages. The variable
216@code{compilation-skip-threshold} controls this. If its value is 2,
217@kbd{C-x `} skips anything less than error, 1 skips anything less
218than warning, and 0 doesn't skip any messages.
219
cb7b02c7
NR
220When the left fringe is displayed, an arrow points to the
221current message in the compilation buffer. The variable
222@code{compilation-context-lines} controls the number of lines of
223leading context in the window before the current message. If it is
224@code{nil} and the left fringe is displayed, the window doesn't
225scroll. If there is no left fringe, no arrow is displayed and a value
226of @code{nil} means display the message at the top of the window.
227
7d6596b8
RS
228 If you're not in the compilation buffer when you run
229@code{next-error}, Emacs will look for a buffer that contains error
230messages. First, it looks for one displayed in the selected frame,
231then for one that previously had @code{next-error} called on it, and
232then at the current buffer. Finally, Emacs looks at all the remaining
233buffers. @code{next-error} signals an error if it can't find any such
234buffer.
235
6bf7aab6
DL
236 @kbd{C-u C-x `} starts scanning from the beginning of the compilation
237buffer. This is one way to process the same set of errors again.
238
0825052e
EZ
239@vindex compilation-error-regexp-alist
240@vindex grep-regexp-alist
241 To parse messages from the compiler, Compilation mode uses the
242variable @code{compilation-error-regexp-alist} which lists various
243formats of error messages and tells Emacs how to extract the source file
244and the line number from the text of a message. If your compiler isn't
245supported, you can tailor Compilation mode to it by adding elements to
246that list. A similar variable @code{grep-regexp-alist} tells Emacs how
247to parse output of a @code{grep} command.
248
ed4389af
RS
249@findex compilation-next-error
250@findex compilation-previous-error
251@findex compilation-next-file
252@findex compilation-previous-file
6bf7aab6 253 Compilation mode also redefines the keys @key{SPC} and @key{DEL} to
ed4389af
RS
254scroll by screenfuls, and @kbd{M-n} (@code{compilation-next-error})
255and @kbd{M-p} (@code{compilation-previous-error}) to move to the next
256or previous error message. You can also use @kbd{M-@{}
257(@code{compilation-next-file} and @kbd{M-@}}
258(@code{compilation-previous-file}) to move up or down to an error
259message for a different source file.
260
261@cindex Next Error Follow mode
262@findex next-error-follow-minor-mode
263 You can type @kbd{C-c C-f} to toggle Next Error Follow mode. In
264this minor mode, ordinary cursor motion in the compilation buffer
265automatically updates the source buffer. For instance, moving the
266cursor to the next error message causes the location of that error to
267be displayed immediately.
6bf7aab6
DL
268
269 The features of Compilation mode are also available in a minor mode
270called Compilation Minor mode. This lets you parse error messages in
271any buffer, not just a normal compilation output buffer. Type @kbd{M-x
272compilation-minor-mode} to enable the minor mode. This defines the keys
273@key{RET} and @kbd{Mouse-2}, as in the Compilation major mode.
274
275 Compilation minor mode works in any buffer, as long as the contents
276are in a format that it understands. In an Rlogin buffer (@pxref{Remote
277Host}), Compilation minor mode automatically accesses remote source
278files by FTP (@pxref{File Names}).
279
280@node Compilation Shell
281@section Subshells for Compilation
282
283 Emacs uses a shell to run the compilation command, but specifies
284the option for a noninteractive shell. This means, in particular, that
285the shell should start with no prompt. If you find your usual shell
286prompt making an unsightly appearance in the @samp{*compilation*}
287buffer, it means you have made a mistake in your shell's init file by
288setting the prompt unconditionally. (This init file's name may be
289@file{.bashrc}, @file{.profile}, @file{.cshrc}, @file{.shrc}, or various
290other things, depending on the shell you use.) The shell init file
291should set the prompt only if there already is a prompt. In csh, here
292is how to do it:
293
294@example
295if ($?prompt) set prompt = @dots{}
296@end example
297
298@noindent
299And here's how to do it in bash:
300
301@example
302if [ "$@{PS1+set@}" = set ]
303then PS1=@dots{}
304fi
305@end example
306
307 There may well be other things that your shell's init file
308ought to do only for an interactive shell. You can use the same
309method to conditionalize them.
310
311 The MS-DOS ``operating system'' does not support asynchronous
312subprocesses; to work around this lack, @kbd{M-x compile} runs the
313compilation command synchronously on MS-DOS. As a consequence, you must
314wait until the command finishes before you can do anything else in
315Emacs. @xref{MS-DOS}.
316
ed4389af
RS
317@node Grep Searching
318@section Searching with Grep under Emacs
319
ed4389af 320 Just as you can run a compiler from Emacs and then visit the lines
869d986e 321with compilation errors, you can also run @code{grep} and
ed4389af
RS
322then visit the lines on which matches were found. This works by
323treating the matches reported by @code{grep} as if they were ``errors.''
324
b00d98ed
JL
325@table @kbd
326@item M-x grep
327Run @code{grep} asynchronously under Emacs, with matching lines
328listed in the buffer named @samp{*grep*}.
329@item M-x grep-find
330@itemx M-x find-grep
331Run @code{grep} via @code{find}, with user-specified arguments, and
332collect output in the buffer named @samp{*grep*}.
333@item M-x kill-grep
334Kill the running @code{grep} subprocess.
335@end table
336
337@findex grep
338 To run @code{grep}, type @kbd{M-x grep}, then enter a command line that
ed4389af
RS
339specifies how to run @code{grep}. Use the same arguments you would give
340@code{grep} when running it normally: a @code{grep}-style regexp
341(usually in single-quotes to quote the shell's special characters)
342followed by file names, which may use wildcards. If you specify a
343prefix argument for @kbd{M-x grep}, it figures out the tag
344(@pxref{Tags}) around point, and puts that into the default
345@code{grep} command.
346
347 The output from @code{grep} goes in the @samp{*grep*} buffer. You
348can find the corresponding lines in the original files using @kbd{C-x
349`}, @key{RET}, and so forth, just like compilation errors.
350
351 Some grep programs accept a @samp{--color} option to output special
352markers around matches for the purpose of highlighting. You can make
d81dbd54
JB
353use of this feature by setting @code{grep-highlight-matches} to
354@code{t}. When displaying a match in the source buffer, the exact
355match will be highlighted, instead of the entire source line.
ed4389af
RS
356
357@findex grep-find
358@findex find-grep
359 The command @kbd{M-x grep-find} (also available as @kbd{M-x
360find-grep}) is similar to @kbd{M-x grep}, but it supplies a different
361initial default for the command---one that runs both @code{find} and
362@code{grep}, so as to search every file in a directory tree. See also
363the @code{find-grep-dired} command, in @ref{Dired and Find}.
364
ff994d96
RS
365@node Flymake
366@section Finding Syntax Errors On The Fly
367@cindex checking syntax
368
369 Flymake mode is a minor mode that performs on-the-fly syntax
370checking for many programming and markup languages, including C, C++,
371Perl, HTML, and @TeX{}/La@TeX{}. It is somewhat analogous to Flyspell
372mode, which performs spell checking for ordinary human languages in a
373similar fashion (@pxref{Spelling}). As you edit a file, Flymake mode
374runs an appropriate syntax checking tool in the background, using a
375temporary copy of the buffer. It then parses the error and warning
376messages, and highlights the erroneous lines in the buffer. The
377syntax checking tool used depends on the language; for example, for
378C/C++ files this is usually the C compiler. Flymake can also use
379build tools such as @code{make} for checking complicated projects.
380
381 To activate Flymake mode, type @kbd{M-x flymake-mode}. You can move
382to the errors spotted by Flymake mode with @kbd{M-x
383flymake-goto-next-error} and @kbd{M-x flymake-goto-prev-error}. To
384display any error messages associated with the current line, use
385@kbd{M-x flymake-display-err-menu-for-current-line}.
386
387 For more details about using Flymake, see @ref{Top, Flymake,
388Flymake, flymake, The Flymake Manual}.
389
6bf7aab6
DL
390@node Debuggers
391@section Running Debuggers Under Emacs
392@cindex debuggers
393@cindex GUD library
394@cindex GDB
395@cindex DBX
396@cindex SDB
397@cindex XDB
398@cindex Perldb
ed4389af 399@cindex bashdb
6bf7aab6
DL
400@cindex JDB
401@cindex PDB
402
403@c Do you believe in GUD?
404The GUD (Grand Unified Debugger) library provides an interface to
31b4c1b7
NR
405various symbolic debuggers from within Emacs. We recommend the
406debugger GDB, which is free software, but you can also run DBX, SDB or
407XDB if you have them. GUD can also serve as an interface to Perl's
408debugging mode, the Python debugger PDB, the bash debugger, and to
409JDB, the Java Debugger. @xref{Debugging,, The Lisp Debugger, elisp,
410the Emacs Lisp Reference Manual}, for information on debugging Emacs
411Lisp programs.
6bf7aab6
DL
412
413@menu
414* Starting GUD:: How to start a debugger subprocess.
415* Debugger Operation:: Connection between the debugger and source buffers.
416* Commands of GUD:: Key bindings for common commands.
417* GUD Customization:: Defining your own commands for GUD.
f9ad161b
RS
418* GDB Graphical Interface:: An enhanced mode that uses GDB features to
419 implement a graphical debugging environment through
420 Emacs.
6bf7aab6
DL
421@end menu
422
423@node Starting GUD
424@subsection Starting GUD
425
426 There are several commands for starting a debugger, each corresponding
427to a particular debugger program.
428
429@table @kbd
430@item M-x gdb @key{RET} @var{file} @key{RET}
431@findex gdb
499de9ba
RS
432Run GDB as a subprocess of Emacs. By default, this operates in
433graphical mode; @xref{GDB Graphical Interface}. Graphical mode
434does not support any other debuggers.
f9ad161b 435
6bf7aab6
DL
436@item M-x dbx @key{RET} @var{file} @key{RET}
437@findex dbx
4125ceb0 438Similar, but run DBX instead of GDB.
6bf7aab6
DL
439
440@item M-x xdb @key{RET} @var{file} @key{RET}
441@findex xdb
442@vindex gud-xdb-directories
4125ceb0 443Similar, but run XDB instead of GDB. Use the variable
6bf7aab6
DL
444@code{gud-xdb-directories} to specify directories to search for source
445files.
446
447@item M-x sdb @key{RET} @var{file} @key{RET}
448@findex sdb
4125ceb0 449Similar, but run SDB instead of GDB.
6bf7aab6
DL
450
451 Some versions of SDB do not mention source file names in their
452messages. When you use them, you need to have a valid tags table
453(@pxref{Tags}) in order for GUD to find functions in the source code.
454If you have not visited a tags table or the tags table doesn't list one
455of the functions, you get a message saying @samp{The sdb support
456requires a valid tags table to work}. If this happens, generate a valid
457tags table in the working directory and try again.
458
ed4389af
RS
459@item M-x bashdb @key{RET} @var{file} @key{RET}
460@findex bashdb
461Run the bash debugger to debug @var{file}, a shell script.
462
6bf7aab6
DL
463@item M-x perldb @key{RET} @var{file} @key{RET}
464@findex perldb
465Run the Perl interpreter in debug mode to debug @var{file}, a Perl program.
466
467@item M-x jdb @key{RET} @var{file} @key{RET}
468@findex jdb
469Run the Java debugger to debug @var{file}.
470
471@item M-x pdb @key{RET} @var{file} @key{RET}
472@findex pdb
473Run the Python debugger to debug @var{file}.
474@end table
475
476 Each of these commands takes one argument: a command line to invoke
477the debugger. In the simplest case, specify just the name of the
478executable file you want to debug. You may also use options that the
479debugger supports. However, shell wildcards and variables are not
480allowed. GUD assumes that the first argument not starting with a
481@samp{-} is the executable file name.
482
6bf7aab6
DL
483@node Debugger Operation
484@subsection Debugger Operation
485
3605e23f 486@cindex fringes, and current execution line in GUD
6bf7aab6
DL
487 When you run a debugger with GUD, the debugger uses an Emacs buffer
488for its ordinary input and output. This is called the GUD buffer. The
489debugger displays the source files of the program by visiting them in
490Emacs buffers. An arrow (@samp{=>}) in one of these buffers indicates
8643647c
RS
491the current execution line.@footnote{Under a window system, the arrow
492appears in the left fringe of the Emacs window.} Moving point in this
493buffer does not move the arrow.
6bf7aab6
DL
494
495 You can start editing these source files at any time in the buffers
58fa012d 496that display them. The arrow is not part of the file's
6bf7aab6
DL
497text; it appears only on the screen. If you do modify a source file,
498keep in mind that inserting or deleting lines will throw off the arrow's
499positioning; GUD has no way of figuring out which line corresponded
500before your changes to the line number in a debugger message. Also,
501you'll typically have to recompile and restart the program for your
502changes to be reflected in the debugger's tables.
503
504 If you wish, you can control your debugger process entirely through the
505debugger buffer, which uses a variant of Shell mode. All the usual
506commands for your debugger are available, and you can use the Shell mode
507history commands to repeat them. @xref{Shell Mode}.
508
499de9ba
RS
509@cindex tooltips with GUD
510@vindex tooltip-gud-modes
c2332b4f
NR
511@vindex gud-tooltip-mode
512@vindex gud-tooltip-echo-area
499de9ba 513 The Tooltip facility (@pxref{Tooltips}) provides support for GUD@.
8a25d51a
NR
514You activate this feature by turning on the minor mode
515@code{gud-tooltip-mode}. Then you can display a variable's value in a
516tooltip simply by pointing at it with the mouse. In graphical mode,
517with a C program, you can also display the @code{#define} directive
518associated with an identifier when the program is not executing. This
519operates in the GUD buffer and in source buffers with major modes in
c2332b4f 520the list @code{gud-tooltip-modes}. If the variable
cb7b02c7
NR
521@code{gud-tooltip-echo-area} is non-@code{nil} then the variable's
522value is displayed in the echo area.
499de9ba 523
b376642d
NR
524With GDB in text command mode (@pxref{GDB Graphical Interface}),
525it is possible that use of GUD tooltips can cause a function to be
526called with harmful side-effects. In this case, Emacs disables
dd6700eb 527them.
b376642d 528
6bf7aab6
DL
529@node Commands of GUD
530@subsection Commands of GUD
531
532 The GUD interaction buffer uses a variant of Shell mode, so the
533commands of Shell mode are available (@pxref{Shell Mode}). GUD mode
534also provides commands for setting and clearing breakpoints, for
535selecting stack frames, and for stepping through the program. These
536commands are available both in the GUD buffer and globally, but with
cb7b02c7 537different key bindings. It also has its own tool bar from which you
8d66c08b
NR
538can invoke the more common commands by clicking on the appropriate
539icon. This is particularly useful for repetitive commands like
540gud-next and gud-step and allows the user to hide the GUD buffer.
6bf7aab6 541
58fa012d
EZ
542 The breakpoint commands are normally used in source file buffers,
543because that is the easiest way to specify where to set or clear the
544breakpoint. Here's the global command to set a breakpoint:
6bf7aab6
DL
545
546@table @kbd
547@item C-x @key{SPC}
548@kindex C-x SPC
549Set a breakpoint on the source line that point is on.
550@end table
551
552@kindex C-x C-a @r{(GUD)}
553 Here are the other special commands provided by GUD. The keys
554starting with @kbd{C-c} are available only in the GUD interaction
555buffer. The key bindings that start with @kbd{C-x C-a} are available in
556the GUD interaction buffer and also in source files.
557
558@table @kbd
559@item C-c C-l
560@kindex C-c C-l @r{(GUD)}
561@itemx C-x C-a C-l
562@findex gud-refresh
563Display in another window the last line referred to in the GUD
564buffer (that is, the line indicated in the last location message).
565This runs the command @code{gud-refresh}.
566
567@item C-c C-s
568@kindex C-c C-s @r{(GUD)}
569@itemx C-x C-a C-s
570@findex gud-step
571Execute a single line of code (@code{gud-step}). If the line contains
572a function call, execution stops after entering the called function.
573
574@item C-c C-n
575@kindex C-c C-n @r{(GUD)}
576@itemx C-x C-a C-n
577@findex gud-next
578Execute a single line of code, stepping across entire function calls
579at full speed (@code{gud-next}).
580
581@item C-c C-i
582@kindex C-c C-i @r{(GUD)}
583@itemx C-x C-a C-i
584@findex gud-stepi
585Execute a single machine instruction (@code{gud-stepi}).
586
587@need 3000
588@item C-c C-r
589@kindex C-c C-r @r{(GUD)}
590@itemx C-x C-a C-r
591@findex gud-cont
592Continue execution without specifying any stopping point. The program
593will run until it hits a breakpoint, terminates, or gets a signal that
594the debugger is checking for (@code{gud-cont}).
595
596@need 1000
597@item C-c C-d
598@kindex C-c C-d @r{(GUD)}
599@itemx C-x C-a C-d
600@findex gud-remove
601Delete the breakpoint(s) on the current source line, if any
602(@code{gud-remove}). If you use this command in the GUD interaction
603buffer, it applies to the line where the program last stopped.
604
605@item C-c C-t
606@kindex C-c C-t @r{(GUD)}
607@itemx C-x C-a C-t
608@findex gud-tbreak
609Set a temporary breakpoint on the current source line, if any.
610If you use this command in the GUD interaction buffer,
611it applies to the line where the program last stopped.
612@end table
613
614 The above commands are common to all supported debuggers. If you are
615using GDB or (some versions of) DBX, these additional commands are available:
616
617@table @kbd
618@item C-c <
619@kindex C-c < @r{(GUD)}
620@itemx C-x C-a <
621@findex gud-up
622Select the next enclosing stack frame (@code{gud-up}). This is
623equivalent to the @samp{up} command.
624
625@item C-c >
626@kindex C-c > @r{(GUD)}
627@itemx C-x C-a >
628@findex gud-down
629Select the next inner stack frame (@code{gud-down}). This is
630equivalent to the @samp{down} command.
631@end table
632
633 If you are using GDB, these additional key bindings are available:
634
635@table @kbd
f9ad161b
RS
636@item C-c C-r
637@kindex C-c C-r @r{(GUD)}
638@itemx C-x C-a C-r
639@findex gud-run
640Start execution of the program (@code{gud-run}).
641
642@item C-c C-u
643@kindex C-c C-u @r{(GUD)}
644@itemx C-x C-a C-u
645@findex gud-until
646Continue execution to the current line. The program will run until
647it hits a breakpoint, terminates, gets a signal that the debugger is
648checking for, or reaches the line on which the cursor currently sits
649(@code{gud-until}).
650
6bf7aab6
DL
651@item @key{TAB}
652@kindex TAB @r{(GUD)}
653@findex gud-gdb-complete-command
654With GDB, complete a symbol name (@code{gud-gdb-complete-command}).
655This key is available only in the GUD interaction buffer, and requires
656GDB versions 4.13 and later.
657
658@item C-c C-f
659@kindex C-c C-f @r{(GUD)}
660@itemx C-x C-a C-f
661@findex gud-finish
662Run the program until the selected stack frame returns (or until it
663stops for some other reason).
5b7fc395 664
44fa0ae8
RS
665@item C-x C-a C-j
666@kindex C-x C-a C-j @r{(GUD)}
5b7fc395 667@findex gud-jump
44fa0ae8
RS
668Only useful in a source buffer, (@code{gud-jump}) transfers the
669program's execution point to the current line. In other words, the
670next line that the program executes will be the one where you gave the
671command. If the new execution line is in a different function from
672the previously one, GDB prompts for confirmation since the results may
673be bizarre. See the GDB manual entry regarding @code{jump} for
674details.
6bf7aab6
DL
675@end table
676
677 These commands interpret a numeric argument as a repeat count, when
678that makes sense.
679
680 Because @key{TAB} serves as a completion command, you can't use it to
681enter a tab as input to the program you are debugging with GDB.
682Instead, type @kbd{C-q @key{TAB}} to enter a tab.
683
684@node GUD Customization
685@subsection GUD Customization
686
687@vindex gdb-mode-hook
688@vindex dbx-mode-hook
689@vindex sdb-mode-hook
690@vindex xdb-mode-hook
691@vindex perldb-mode-hook
692@vindex pdb-mode-hook
693@vindex jdb-mode-hook
694 On startup, GUD runs one of the following hooks: @code{gdb-mode-hook},
695if you are using GDB; @code{dbx-mode-hook}, if you are using DBX;
696@code{sdb-mode-hook}, if you are using SDB; @code{xdb-mode-hook}, if you
697are using XDB; @code{perldb-mode-hook}, for Perl debugging mode;
74b1aac1 698@code{pdb-mode-hook}, for PDB; @code{jdb-mode-hook}, for JDB. You can
6bf7aab6
DL
699use these hooks to define custom key bindings for the debugger
700interaction buffer. @xref{Hooks}.
701
702 Here is a convenient way to define a command that sends a particular
703command string to the debugger, and set up a key binding for it in the
704debugger interaction buffer:
705
706@findex gud-def
707@example
708(gud-def @var{function} @var{cmdstring} @var{binding} @var{docstring})
709@end example
710
711 This defines a command named @var{function} which sends
712@var{cmdstring} to the debugger process, and gives it the documentation
7fb4961c 713string @var{docstring}. You can then use the command @var{function} in any
6bf7aab6
DL
714buffer. If @var{binding} is non-@code{nil}, @code{gud-def} also binds
715the command to @kbd{C-c @var{binding}} in the GUD buffer's mode and to
716@kbd{C-x C-a @var{binding}} generally.
717
718 The command string @var{cmdstring} may contain certain
719@samp{%}-sequences that stand for data to be filled in at the time
720@var{function} is called:
721
722@table @samp
723@item %f
724The name of the current source file. If the current buffer is the GUD
725buffer, then the ``current source file'' is the file that the program
726stopped in.
727@c This said, ``the name of the file the program counter was in at the last breakpoint.''
728@c But I suspect it is really the last stop file.
729
730@item %l
731The number of the current source line. If the current buffer is the GUD
732buffer, then the ``current source line'' is the line that the program
733stopped in.
734
735@item %e
736The text of the C lvalue or function-call expression at or adjacent to point.
737
738@item %a
739The text of the hexadecimal address at or adjacent to point.
740
741@item %p
742The numeric argument of the called function, as a decimal number. If
743the command is used without a numeric argument, @samp{%p} stands for the
744empty string.
745
746If you don't use @samp{%p} in the command string, the command you define
747ignores any numeric argument.
748@end table
749
f9ad161b
RS
750@node GDB Graphical Interface
751@subsection GDB Graphical Interface
752
e4481965
NR
753@findex gdb-mouse-set-clear-breakpoint
754@findex gdb-mouse-toggle-breakpoint
499de9ba 755 By default, the command @code{gdb} starts GDB using a graphical
31b4c1b7
NR
756interface where you view and control the program's data using Emacs
757windows. You can still interact with GDB through the GUD buffer, but
758the point of this mode is that you can do it through menus and clicks,
6bc7646b
NR
759without needing to know GDB commands. For example, you can click
760@kbd{Mouse-1} in the fringe or display margin of a source buffer to
761set a breakpoint there and, on a graphical display, a red bullet will
762appear. If a breakpoint already exists on that line, this action will
4cf71604
NR
763remove it. You can also enable or disable a breakpoint by clicking
764@kbd{Mouse-3} on the bullet. If you drag the debugger arrow in the
765fringe with @kbd{Mouse-1}, execution will continue to the line where
766you release the button, provided it is still in the same frame
6bc7646b
NR
767(@code{gdb-mouse-until}). Alternatively, you can click @kbd{Mouse-2}
768at some point in the fringe of this buffer and execution will advance
769to there.
31b4c1b7 770
51344076
NR
771This mode requires that GDB think that the screen size is unlimited,
772and sets the height and width accordingly. For correct operation it
773is important that you don't change these values during the session.
774
499de9ba 775@vindex gud-gdb-command-name
f9ad161b 776@findex gdba
499de9ba
RS
777 You can also run GDB in text command mode, which creates a buffer
778for input and output to GDB. To do this, set
779@code{gud-gdb-command-name} to @code{"gdb --fullname"} or edit the
780startup command in the minibuffer to say that. You need to do use
781text command mode to run multiple debugging sessions within one Emacs
3d80e1a2 782session. If you have customized @code{gud-gdb-command-name} in that
499de9ba 783way, then you can use @kbd{M-x gdba} to invoke GDB in graphical mode.
f9ad161b
RS
784
785@menu
3e2546d7
NR
786* GDB User Interface Layout:: Control the number of displayed buffers.
787* Breakpoints Buffer:: A breakpoint control panel.
788* Stack Buffer:: Select a frame from the call stack.
789* Watch Expressions:: Monitor variable values in the speedbar.
f72b052c
LT
790* Other GDB User Interface Buffers:: Input/output, locals, registers,
791 assembler, threads and memory buffers.
f9ad161b
RS
792@end menu
793
3e2546d7
NR
794@node GDB User Interface Layout
795@subsubsection GDB User Interface Layout
96110242
NR
796@cindex GDB User Interface layout
797
798@findex gdb-many-windows
799@vindex gdb-many-windows
800
801If the variable @code{gdb-many-windows} is @code{nil} (the default
802value) then gdb just pops up the GUD buffer unless the variable
803@code{gdb-show-main} is non-@code{nil}. In this case it starts with
804two windows: one displaying the GUD buffer and the other with the
805source file with the main routine of the inferior.
806
807If @code{gdb-many-windows} is non-@code{nil}, regardless of the value of
808@code{gdb-show-main}, the layout below will appear unless
809@code{gdb-use-inferior-io-buffer} is @code{nil}. In this case the
810source buffer occupies the full width of the frame.
811
1a0b66fe
NR
812@example
813+--------------------------------+--------------------------------+
814| | |
815| GUD buffer (I/O of GDB) | Locals buffer |
816| | |
817|--------------------------------+--------------------------------+
818| | |
819| Source buffer | I/O buffer (of inferior) |
820| | |
821|--------------------------------+--------------------------------+
822| | |
823| Stack buffer | Breakpoints buffer |
824| | |
825+--------------------------------+--------------------------------+
826@end example
96110242
NR
827
828To toggle this layout, do @kbd{M-x gdb-many-windows}.
829
830@findex gdb-restore-windows
831If you change the window layout, for example, while editing and
832re-compiling your program, then you can restore it with the command
833@code{gdb-restore-windows}.
834
835You may also choose which additional buffers you want to display,
1a0b66fe
NR
836either in the same frame or a different one. Select them from
837@samp{GUD->GDB-windows} or @samp{GUD->GDB-Frames} sub-menu
838respectively. If the menu-bar is unavailable, type @code{M-x
96110242 839gdb-display-@var{buffertype}-buffer} or @code{M-x
1a0b66fe
NR
840gdb-frame-@var{buffertype}-buffer} respectively, where
841@var{buffertype} is the relevant buffer type e.g breakpoints.
c3287027
NR
842Most of these buffers are read-only and be killed by simply
843pressing @kbd{q} in them.
96110242 844
31b4c1b7
NR
845When you finish debugging then kill the GUD buffer with @kbd{C-x k},
846which will also kill all the buffers associated with the session.
847However you need not do this if, after editing and re-compiling your
848source code within Emacs, you wish continue debugging. When you
849restart execution, GDB will automatically find your new executable.
850Keeping the GUD buffer has the advantage of keeping the shell history
851as well as GDB's breakpoints. You need to check, however, that the
852breakpoints in the recently edited code are still where you want them.
853
f9ad161b
RS
854@node Breakpoints Buffer
855@subsubsection Breakpoints Buffer
856
254196f5 857The breakpoints buffer shows the existing breakpoints and watchpoints
f9ad161b
RS
858(@pxref{Breakpoints,,, gdb, The GNU debugger}). It has three special
859commands:
860
861@table @kbd
254196f5 862@item @key{SPC}
f9ad161b
RS
863@kindex SPC @r{(GDB breakpoints buffer)}
864@findex gdb-toggle-breakpoint
865Enable/disable the breakpoint at the current line
866(@code{gdb-toggle-breakpoint}). On a graphical display, this changes
867the color of a bullet in the margin of the source buffer at the
868relevant line. This is red when the breakpoint is enabled and grey
869when it is disabled. Text-only terminals correspondingly display
870a @samp{B} or @samp{b}.
871
c3287027
NR
872@item D
873@kindex D @r{(GDB breakpoints buffer)}
f9ad161b
RS
874@findex gdb-delete-breakpoint
875Delete the breakpoint at the current line (@code{gdb-delete-breakpoint}).
876
877@item @key{RET}
878@kindex RET @r{(GDB breakpoints buffer)}
879@findex gdb-goto-breakpoint
880Display the file in the source buffer at the breakpoint specified at
90563cb3
NR
881the current line (@code{gdb-goto-breakpoint}). Alternatively, click
882@kbd{Mouse-2} on the breakpoint that you wish to visit.
f9ad161b
RS
883@end table
884
885@node Stack Buffer
886@subsubsection Stack Buffer
887
888The stack buffer displays a @dfn{call stack}, with one line for each
889of the nested subroutine calls (@dfn{stack frames}) now active in the
1a0b66fe 890program. @xref{Backtrace,, Backtraces, gdb, The GNU debugger}.
f9ad161b 891
e4481965
NR
892@findex gdb-frames-select
893The selected frame number is displayed in reverse contrast. Move
894point to any frame in the stack and type @key{RET} to select it
895(@code{gdb-frames-select}) and display the associated source in the
896source buffer. Alternatively, click @kbd{Mouse-2} on a frame to
897select it. If the locals buffer is displayed then its contents update
898to display the variables that are local to the new frame.
f9ad161b 899
9b418429
NR
900@node Watch Expressions
901@subsubsection Watch Expressions
902@cindex Watching expressions in GDB
f9ad161b 903
e4481965 904@findex gud-watch
f9ad161b 905If you want to see how a variable changes each time your program stops
9b418429 906then place the cursor over the variable name and click on the watch
cb7b02c7 907icon in the tool bar (@code{gud-watch}).
f9ad161b 908
8d66c08b
NR
909Each watch expression is displayed in the speedbar. Complex data
910types, such as arrays, structures and unions are represented in a tree
f86711a4 911format. Leaves and simple data types show the name of the expression
c3287027
NR
912and its value, and display the type as a tooltip. Higher levels show
913the name, type and address value for pointers and just the name and
914type otherwise.
bb8c3b15
NR
915
916To expand or contract a complex data type, click @kbd{Mouse-2}
8d66c08b 917on the tag to the left of the expression.
f9ad161b 918
9b418429 919@findex gdb-var-delete
8d66c08b 920With the cursor over the root expression of a complex data type, type
96110242 921@kbd{D} to delete it from the speedbar
8d66c08b
NR
922(@code{gdb-var-delete}).
923
e4481965 924@kindex RET @r{(GDB speedbar)}
8d66c08b
NR
925@findex gdb-edit-value
926With the cursor over a simple data type or an element of a complex
927data type which holds a value, type @key{RET} or click @kbd{Mouse-2} to edit
928its value. A prompt for a new value appears in the mini-buffer
929(@code{gdb-edit-value}).
930
e4481965 931@vindex gdb-show-changed-values
a1a3a37a 932If you set the variable @code{gdb-show-changed-values} to
e4481965 933non-@code{nil} (the default value), Emacs will use
a1a3a37a
NR
934font-lock-warning-face to display values that have recently changed in
935the speedbar.
8d66c08b 936
e4481965 937@vindex gdb-use-colon-colon-notation
8d66c08b 938If you set the variable @code{gdb-use-colon-colon-notation} to a
e4481965
NR
939non-@code{nil} value then, in C, Emacs will use the
940@var{function}::@var{variable} format to display variables in the
941speedbar. Since this does not work for variables defined in compound
942statements, the default value is @code{nil}.
f9ad161b 943
3e2546d7 944@node Other GDB User Interface Buffers
f9ad161b
RS
945@subsubsection Other Buffers
946
947@table @asis
948@item Input/Output Buffer
e4481965 949@vindex gdb-use-inferior-io-buffer
96110242
NR
950If the variable @code{gdb-use-inferior-io-buffer} is non-@code{nil},
951the executable program that is being debugged takes its input and
d08a1c88
NR
952displays its output here, otherwise it uses the GUD buffer. To toggle
953the use of this buffer, do @kbd{M-x gdb-use-inferior-io-buffer}.
954
955Some of the commands from shell mode are available here. @xref{Shell
956Mode}.
f9ad161b
RS
957
958@item Locals Buffer
959The locals buffer displays the values of local variables of the
1a0b66fe
NR
960current frame for simple data types (@pxref{Frame Info, Frame Info,
961Information on a frame, gdb, The GNU debugger}).
f9ad161b 962
51344076
NR
963Arrays and structures display their type only. With GDB 6.4 or later,
964move point to their name and press @key{RET}, or alternatively click
965@kbd{Mouse-2} there, to examine their values. With earlier versions
966of GDB, move point to their type description ([struct/union] or
967[array]). @xref{Watch Expressions}.
f9ad161b
RS
968
969@item Registers Buffer
e4481965 970@findex toggle-gdb-all-registers
f9ad161b 971The registers buffer displays the values held by the registers
c3287027
NR
972(@pxref{Registers,,, gdb, The GNU debugger}). Press @key{RET} or
973click @kbd{Mouse-2} on a register if you want to change its value.
51344076
NR
974With GDB 6.4 or later, recently changed register values display with
975font-lock-warning-face. With earlier versions of GDB, you can press
976@key{SPC} to toggle the display of floating point registers
e4481965 977(@code{toggle-gdb-all-registers}).
f9ad161b
RS
978
979@item Assembler Buffer
980The assembler buffer displays the current frame as machine code. An
981overlay arrow points to the current instruction and you can set and
31b4c1b7
NR
982remove breakpoints as with the source buffer. Breakpoint icons also
983appear in the fringe or margin.
8d66c08b
NR
984
985@item Threads Buffer
e4481965 986@findex gdb-threads-select
8d66c08b 987The threads buffer displays a summary of all threads currently in your
1a0b66fe
NR
988program (@pxref{Threads, Threads, Debugging programs with multiple
989threads, gdb, The GNU debugger}). Move point to any thread in the
990list and press @key{RET} to select it (@code{gdb-threads-select}) and
991display the associated source in the source buffer. Alternatively,
992click @kbd{Mouse-2} on a thread to select it. If the locals buffer is
993displayed then its contents update to display the variables that are
994local to the new thread.
8d66c08b 995
31b4c1b7 996@item Memory Buffer
31b4c1b7 997The memory buffer allows the user to examine sections of program
1a0b66fe
NR
998memory (@pxref{Memory, Memory, Examining memory, gdb, The GNU
999debugger}). Click @kbd{Mouse-1} on the appropriate part of the header
1000line to change the starting address or number of data items that the
1001buffer displays. Click @kbd{Mouse-3} on the header line to select the
1002display format or unit size for these data items.
31b4c1b7 1003
f9ad161b
RS
1004@end table
1005
6bf7aab6
DL
1006@node Executing Lisp
1007@section Executing Lisp Expressions
1008
1009 Emacs has several different major modes for Lisp and Scheme. They are
1010the same in terms of editing commands, but differ in the commands for
1011executing Lisp expressions. Each mode has its own purpose.
1012
1013@table @asis
1014@item Emacs-Lisp mode
1015The mode for editing source files of programs to run in Emacs Lisp.
1016This mode defines @kbd{C-M-x} to evaluate the current defun.
1017@xref{Lisp Libraries}.
1018@item Lisp Interaction mode
1019The mode for an interactive session with Emacs Lisp. It defines
1020@kbd{C-j} to evaluate the sexp before point and insert its value in the
1021buffer. @xref{Lisp Interaction}.
1022@item Lisp mode
1023The mode for editing source files of programs that run in Lisps other
1024than Emacs Lisp. This mode defines @kbd{C-M-x} to send the current defun
1025to an inferior Lisp process. @xref{External Lisp}.
1026@item Inferior Lisp mode
1027The mode for an interactive session with an inferior Lisp process.
1028This mode combines the special features of Lisp mode and Shell mode
1029(@pxref{Shell Mode}).
1030@item Scheme mode
1031Like Lisp mode but for Scheme programs.
1032@item Inferior Scheme mode
1033The mode for an interactive session with an inferior Scheme process.
1034@end table
1035
1036 Most editing commands for working with Lisp programs are in fact
1037available globally. @xref{Programs}.
1038
1039@node Lisp Libraries
1040@section Libraries of Lisp Code for Emacs
1041@cindex libraries
1042@cindex loading Lisp code
1043
1044 Lisp code for Emacs editing commands is stored in files whose names
1045conventionally end in @file{.el}. This ending tells Emacs to edit them in
1046Emacs-Lisp mode (@pxref{Executing Lisp}).
1047
1048@findex load-file
1049 To execute a file of Emacs Lisp code, use @kbd{M-x load-file}. This
1050command reads a file name using the minibuffer and then executes the
1051contents of that file as Lisp code. It is not necessary to visit the
1052file first; in any case, this command reads the file as found on disk,
1053not text in an Emacs buffer.
1054
1055@findex load
1056@findex load-library
1057 Once a file of Lisp code is installed in the Emacs Lisp library
1058directories, users can load it using @kbd{M-x load-library}. Programs can
1059load it by calling @code{load-library}, or with @code{load}, a more primitive
1060function that is similar but accepts some additional arguments.
1061
1062 @kbd{M-x load-library} differs from @kbd{M-x load-file} in that it
1063searches a sequence of directories and tries three file names in each
1064directory. Suppose your argument is @var{lib}; the three names are
1065@file{@var{lib}.elc}, @file{@var{lib}.el}, and lastly just
1066@file{@var{lib}}. If @file{@var{lib}.elc} exists, it is by convention
1067the result of compiling @file{@var{lib}.el}; it is better to load the
1068compiled file, since it will load and run faster.
1069
1070 If @code{load-library} finds that @file{@var{lib}.el} is newer than
48dbca2c 1071@file{@var{lib}.elc} file, it issues a warning, because it's likely that
6bf7aab6
DL
1072somebody made changes to the @file{.el} file and forgot to recompile
1073it.
1074
1075 Because the argument to @code{load-library} is usually not in itself
1076a valid file name, file name completion is not available. Indeed, when
1077using this command, you usually do not know exactly what file name
1078will be used.
1079
1080@vindex load-path
1081 The sequence of directories searched by @kbd{M-x load-library} is
1082specified by the variable @code{load-path}, a list of strings that are
1083directory names. The default value of the list contains the directory where
1084the Lisp code for Emacs itself is stored. If you have libraries of
1085your own, put them in a single directory and add that directory
1086to @code{load-path}. @code{nil} in this list stands for the current default
1087directory, but it is probably not a good idea to put @code{nil} in the
1088list. If you find yourself wishing that @code{nil} were in the list,
1089most likely what you really want to do is use @kbd{M-x load-file}
1090this once.
1091
1092@cindex autoload
1093 Often you do not have to give any command to load a library, because
1094the commands defined in the library are set up to @dfn{autoload} that
1095library. Trying to run any of those commands calls @code{load} to load
1096the library; this replaces the autoload definitions with the real ones
1097from the library.
1098
1099@cindex byte code
1100 Emacs Lisp code can be compiled into byte-code which loads faster,
1101takes up less space when loaded, and executes faster. @xref{Byte
1102Compilation,, Byte Compilation, elisp, the Emacs Lisp Reference Manual}.
1103By convention, the compiled code for a library goes in a separate file
1104whose name consists of the library source file with @samp{c} appended.
1105Thus, the compiled code for @file{foo.el} goes in @file{foo.elc}.
1106That's why @code{load-library} searches for @samp{.elc} files first.
1107
493c59e0
EZ
1108@vindex load-dangerous-libraries
1109@cindex Lisp files byte-compiled by XEmacs
a50c7a80
RS
1110 By default, Emacs refuses to load compiled Lisp files which were
1111compiled with XEmacs, a modified versions of Emacs---they can cause
1112Emacs to crash. Set the variable @code{load-dangerous-libraries} to
1113@code{t} if you want to try loading them.
493c59e0 1114
6bf7aab6 1115@node Lisp Eval
dd525369 1116@section Evaluating Emacs Lisp Expressions
6bf7aab6
DL
1117@cindex Emacs-Lisp mode
1118@cindex mode, Emacs-Lisp
1119
1120@findex emacs-lisp-mode
1121 Lisp programs intended to be run in Emacs should be edited in
1122Emacs-Lisp mode; this happens automatically for file names ending in
1123@file{.el}. By contrast, Lisp mode itself is used for editing Lisp
1124programs intended for other Lisp systems. To switch to Emacs-Lisp mode
1125explicitly, use the command @kbd{M-x emacs-lisp-mode}.
1126
1127 For testing of Lisp programs to run in Emacs, it is often useful to
1128evaluate part of the program as it is found in the Emacs buffer. For
1129example, after changing the text of a Lisp function definition,
1130evaluating the definition installs the change for future calls to the
1131function. Evaluation of Lisp expressions is also useful in any kind of
1132editing, for invoking noninteractive functions (functions that are
1133not commands).
1134
1135@table @kbd
1136@item M-:
1137Read a single Lisp expression in the minibuffer, evaluate it, and print
1138the value in the echo area (@code{eval-expression}).
1139@item C-x C-e
1140Evaluate the Lisp expression before point, and print the value in the
1141echo area (@code{eval-last-sexp}).
1142@item C-M-x
1143Evaluate the defun containing or after point, and print the value in
1144the echo area (@code{eval-defun}).
1145@item M-x eval-region
1146Evaluate all the Lisp expressions in the region.
1147@item M-x eval-current-buffer
1148Evaluate all the Lisp expressions in the buffer.
1149@end table
1150
09041c4b 1151@ifinfo
c668cdd0
EZ
1152@c This uses ``colon'' instead of a literal `:' because Info cannot
1153@c cope with a `:' in a menu
1154@kindex M-@key{colon}
09041c4b
EZ
1155@end ifinfo
1156@ifnotinfo
1157@kindex M-:
1158@end ifnotinfo
6bf7aab6
DL
1159@findex eval-expression
1160 @kbd{M-:} (@code{eval-expression}) is the most basic command for evaluating
1161a Lisp expression interactively. It reads the expression using the
1162minibuffer, so you can execute any expression on a buffer regardless of
1163what the buffer contains. When the expression is evaluated, the current
1164buffer is once again the buffer that was current when @kbd{M-:} was
1165typed.
1166
1167@kindex C-M-x @r{(Emacs-Lisp mode)}
1168@findex eval-defun
1169 In Emacs-Lisp mode, the key @kbd{C-M-x} is bound to the command
1170@code{eval-defun}, which parses the defun containing or following point
1171as a Lisp expression and evaluates it. The value is printed in the echo
1172area. This command is convenient for installing in the Lisp environment
1173changes that you have just made in the text of a function definition.
1174
1175 @kbd{C-M-x} treats @code{defvar} expressions specially. Normally,
1176evaluating a @code{defvar} expression does nothing if the variable it
1177defines already has a value. But @kbd{C-M-x} unconditionally resets the
1178variable to the initial value specified in the @code{defvar} expression.
9c8599ca 1179@code{defcustom} expressions are treated similarly.
6bf7aab6 1180This special feature is convenient for debugging Lisp programs.
dc134342
JL
1181Typing @kbd{C-M-x} on a @code{defface} expression reinitializes
1182the face according to the @code{defface} specification.
6bf7aab6
DL
1183
1184@kindex C-x C-e
1185@findex eval-last-sexp
1186 The command @kbd{C-x C-e} (@code{eval-last-sexp}) evaluates the Lisp
1187expression preceding point in the buffer, and displays the value in the
1188echo area. It is available in all major modes, not just Emacs-Lisp
1189mode. It does not treat @code{defvar} specially.
1190
ed4389af
RS
1191 When the result of an evaluation is an integer, you can type
1192@kbd{C-x C-e} a second time to display the value of the integer result
1193in additional formats (octal, hexadecimal, and character).
1194
c91809b2
RS
1195 If @kbd{C-x C-e}, or @kbd{M-:} is given a numeric argument, it
1196inserts the value into the current buffer at point, rather than
1197displaying it in the echo area. The argument's value does not matter.
1198@kbd{C-M-x} with a numeric argument instruments the function
1199definition for Edebug (@pxref{Instrumenting, Instrumenting for Edebug,, elisp, the Emacs Lisp Reference Manual}).
6bf7aab6
DL
1200
1201@findex eval-region
1202@findex eval-current-buffer
1203 The most general command for evaluating Lisp expressions from a buffer
1204is @code{eval-region}. @kbd{M-x eval-region} parses the text of the
1205region as one or more Lisp expressions, evaluating them one by one.
1206@kbd{M-x eval-current-buffer} is similar but evaluates the entire
1207buffer. This is a reasonable way to install the contents of a file of
58fa012d 1208Lisp code that you are ready to test. Later, as you find bugs and
6bf7aab6
DL
1209change individual functions, use @kbd{C-M-x} on each function that you
1210change. This keeps the Lisp world in step with the source file.
1211
9c8599ca
DL
1212@vindex eval-expression-print-level
1213@vindex eval-expression-print-length
1214@vindex eval-expression-debug-on-error
1215The customizable variables @code{eval-expression-print-level} and
1216@code{eval-expression-print-length} control the maximum depth and length
1217of lists to print in the result of the evaluation commands before
1218abbreviating them. @code{eval-expression-debug-on-error} controls
1219whether evaluation errors invoke the debugger when these commands are
1220used.
1221
6bf7aab6
DL
1222@node Lisp Interaction
1223@section Lisp Interaction Buffers
1224
1225 The buffer @samp{*scratch*} which is selected when Emacs starts up is
1226provided for evaluating Lisp expressions interactively inside Emacs.
1227
1228 The simplest way to use the @samp{*scratch*} buffer is to insert Lisp
1229expressions and type @kbd{C-j} after each expression. This command
1230reads the Lisp expression before point, evaluates it, and inserts the
1231value in printed representation before point. The result is a complete
1232typescript of the expressions you have evaluated and their values.
1233
1234 The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which
1235is the same as Emacs-Lisp mode except for the binding of @kbd{C-j}.
1236
1237@findex lisp-interaction-mode
1238 The rationale for this feature is that Emacs must have a buffer when
1239it starts up, but that buffer is not useful for editing files since a
1240new buffer is made for every file that you visit. The Lisp interpreter
1241typescript is the most useful thing I can think of for the initial
1242buffer to do. Type @kbd{M-x lisp-interaction-mode} to put the current
1243buffer in Lisp Interaction mode.
1244
1245@findex ielm
1246 An alternative way of evaluating Emacs Lisp expressions interactively
1247is to use Inferior Emacs-Lisp mode, which provides an interface rather
1248like Shell mode (@pxref{Shell Mode}) for evaluating Emacs Lisp
1249expressions. Type @kbd{M-x ielm} to create an @samp{*ielm*} buffer
1250which uses this mode.
1251
1252@node External Lisp
1253@section Running an External Lisp
1254
1255 Emacs has facilities for running programs in other Lisp systems. You can
1256run a Lisp process as an inferior of Emacs, and pass expressions to it to
1257be evaluated. You can also pass changed function definitions directly from
1258the Emacs buffers in which you edit the Lisp programs to the inferior Lisp
1259process.
1260
1261@findex run-lisp
1262@vindex inferior-lisp-program
1263@kindex C-x C-z
1264 To run an inferior Lisp process, type @kbd{M-x run-lisp}. This runs
1265the program named @code{lisp}, the same program you would run by typing
1266@code{lisp} as a shell command, with both input and output going through
1267an Emacs buffer named @samp{*lisp*}. That is to say, any ``terminal
1268output'' from Lisp will go into the buffer, advancing point, and any
1269``terminal input'' for Lisp comes from text in the buffer. (You can
1270change the name of the Lisp executable file by setting the variable
1271@code{inferior-lisp-program}.)
1272
1273 To give input to Lisp, go to the end of the buffer and type the input,
1274terminated by @key{RET}. The @samp{*lisp*} buffer is in Inferior Lisp
1275mode, which combines the special characteristics of Lisp mode with most
1276of the features of Shell mode (@pxref{Shell Mode}). The definition of
1277@key{RET} to send a line to a subprocess is one of the features of Shell
1278mode.
1279
1280@findex lisp-mode
1281 For the source files of programs to run in external Lisps, use Lisp
1282mode. This mode can be selected with @kbd{M-x lisp-mode}, and is used
1283automatically for files whose names end in @file{.l}, @file{.lsp}, or
1284@file{.lisp}, as most Lisp systems usually expect.
1285
1286@kindex C-M-x @r{(Lisp mode)}
1287@findex lisp-eval-defun
1288 When you edit a function in a Lisp program you are running, the easiest
1289way to send the changed definition to the inferior Lisp process is the key
1290@kbd{C-M-x}. In Lisp mode, this runs the function @code{lisp-eval-defun},
1291which finds the defun around or following point and sends it as input to
1292the Lisp process. (Emacs can send input to any inferior process regardless
1293of what buffer is current.)
1294
1295 Contrast the meanings of @kbd{C-M-x} in Lisp mode (for editing programs
1296to be run in another Lisp system) and Emacs-Lisp mode (for editing Lisp
1297programs to be run in Emacs): in both modes it has the effect of installing
1298the function definition that point is in, but the way of doing so is
1299different according to where the relevant Lisp environment is found.
1300@xref{Executing Lisp}.
ab5796a9
MB
1301
1302@ignore
1303 arch-tag: 9c3c2f71-b332-4144-8500-3ff9945a50ed
1304@end ignore