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