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