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