(image-library-alist): Add additional name for Xpm library.
[emacs.git] / man / programs.texi
blob98e60d0385c6c2523df5fcf415e82bed136472cc
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
3 @c               2001, 2005  Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Programs, Building, Text, Top
6 @chapter Editing Programs
7 @cindex Lisp editing
8 @cindex C editing
9 @cindex program editing
11   Emacs provides many features to facilitate editing programs.  Some
12 of these features can
14 @itemize @bullet
15 @item
16 Find or move over top-level definitions (@pxref{Defuns}).
17 @item
18 Apply the usual indentation conventions of the language
19 (@pxref{Program Indent}).
20 @item
21 Balance parentheses (@pxref{Parentheses}).
22 @item
23 Insert, kill or align comments (@pxref{Comments}).
24 @item
25 Highlight program syntax (@pxref{Font Lock}).
26 @end itemize
28   This chapter describes these features and many more.
30 @menu
31 * Program Modes::       Major modes for editing programs.
32 * Defuns::              Commands to operate on major top-level parts
33                           of a program.
34 * Program Indent::      Adjusting indentation to show the nesting.
35 * Parentheses::         Commands that operate on parentheses.
36 * Comments::            Inserting, killing, and aligning comments.
37 * Documentation::       Getting documentation of functions you plan to call.
38 * Hideshow::            Displaying blocks selectively.
39 * Symbol Completion::   Completion on symbol names of your program or language.
40 * Glasses::             Making identifiersLikeThis more readable.
41 * Misc for Programs::   Other Emacs features useful for editing programs.
42 * C Modes::             Special commands of C, C++, Objective-C,
43                           Java, and Pike modes.
44 * Fortran::             Fortran mode and its special features.
45 * Asm Mode::            Asm mode and its special features.
46 @end menu
48 @node Program Modes
49 @section Major Modes for Programming Languages
50 @cindex modes for programming languages
52   Emacs has specialized major modes for various programming languages.
53 @xref{Major Modes}.  A programming language major mode typically
54 specifies the syntax of expressions, the customary rules for
55 indentation, how to do syntax highlighting for the language, and how
56 to find the beginning of a function definition.  It often customizes
57 or provides facilities for compiling and debugging programs as well.
59   Ideally, Emacs should provide a major mode for each programming
60 language that you might want to edit; if it doesn't have a mode for
61 your favorite language, you can contribute one.  But often the mode
62 for one language can serve for other syntactically similar languages.
63 The major mode for language @var{l} is called @code{@var{l}-mode},
64 and you can select it by typing @kbd{M-x @var{l}-mode @key{RET}}.
65 @xref{Choosing Modes}.
67 @cindex Perl mode
68 @cindex Icon mode
69 @cindex Makefile mode
70 @cindex Tcl mode
71 @cindex CPerl mode
72 @cindex DSSSL mode
73 @cindex Octave mode
74 @cindex Metafont mode
75 @cindex Modula2 mode
76 @cindex Prolog mode
77 @cindex Python mode
78 @cindex Simula mode
79 @cindex VHDL mode
80 @cindex M4 mode
81 @cindex Shell-script mode
82 @cindex Delphi mode
83 @cindex PostScript mode
84 @cindex Conf mode
85 @cindex DNS mode
86   The existing programming language major modes include Lisp, Scheme (a
87 variant of Lisp) and the Scheme-based DSSSL expression language, Ada,
88 ASM, AWK, C, C++, Delphi (Object Pascal), Fortran (free format and fixed
89 format), Icon, IDL (CORBA), IDLWAVE, Java, Metafont (@TeX{}'s
90 companion for font creation), Modula2, Objective-C, Octave, Pascal,
91 Perl, Pike, PostScript, Prolog, Python, Simula, Tcl, and VHDL.  An
92 alternative mode for Perl is called CPerl mode.  Modes are available for
93 the scripting languages of the common GNU and Unix shells, VMS DCL, and
94 MS-DOS/MS-Windows @samp{BAT} files.  There are also major modes for
95 editing makefiles, DNS master files, and various sorts of configuration
96 files.
98 @kindex DEL @r{(programming modes)}
99 @findex c-electric-backspace
100   In most programming languages, indentation should vary from line to
101 line to illustrate the structure of the program.  So the major modes
102 for programming languages arrange for @key{TAB} to update the
103 indentation of the current line.  They also rebind @key{DEL} to treat
104 a tab as if it were the equivalent number of spaces; this lets you
105 delete one column of indentation without worrying whether the
106 whitespace consists of spaces or tabs.  Use @kbd{C-b C-d} to delete a
107 tab character before point, in these modes.
109   Separate manuals are available for the modes for Ada (@pxref{Top, , Ada
110 Mode, ada-mode, Ada Mode}), C/C++/Objective C/Java/Corba IDL/Pike/AWK
111 (@pxref{Top, , CC Mode, ccmode, CC Mode}) and the IDLWAVE modes
112 (@pxref{Top, , IDLWAVE, idlwave, IDLWAVE User Manual}).
114 @cindex mode hook
115 @vindex c-mode-hook
116 @vindex lisp-mode-hook
117 @vindex emacs-lisp-mode-hook
118 @vindex lisp-interaction-mode-hook
119 @vindex scheme-mode-hook
120   Turning on a major mode runs a normal hook called the @dfn{mode
121 hook}, which is the value of a Lisp variable.  Each major mode has a
122 mode hook, and the hook's name is always made from the mode command's
123 name by adding @samp{-hook}.  For example, turning on C mode runs the
124 hook @code{c-mode-hook}, while turning on Lisp mode runs the hook
125 @code{lisp-mode-hook}.  The purpose of the mode hook is to give you a
126 place to set up customizations for that major mode.  @xref{Hooks}.
128 @node Defuns
129 @section Top-Level Definitions, or Defuns
131   In Emacs, a major definition at the top level in the buffer is
132 called a @dfn{defun}.  The name comes from Lisp, but in Emacs we use
133 it for all languages.
135   In most programming language modes, Emacs assumes that a defun is
136 any pair of parentheses (or braces, if the language uses braces this
137 way) that starts at the left margin.  For example, in C, the body of a
138 function definition is normally a defun, because the open-brace that
139 begins it is normally at the left margin.  A variable's initializer
140 can also count as a defun, if the open-brace that begins the
141 initializer is at the left margin.
143   However, some language modes provide their own code for recognizing
144 defuns in a way that suits the language syntax and conventions better.
146 @menu
147 * Left Margin Paren::   An open-paren or similar opening delimiter
148                           starts a defun if it is at the left margin.
149 * Moving by Defuns::    Commands to move over or mark a major definition.
150 * Imenu::               Making buffer indexes as menus.
151 * Which Function::      Which Function mode shows which function you are in.
152 @end menu
154 @node Left Margin Paren
155 @subsection Left Margin Convention
157 @cindex open-parenthesis in leftmost column
158 @cindex ( in leftmost column
159   In most major modes, Emacs assumes that any opening delimiter found
160 at the left margin is the start of a top-level definition, or defun.
161 Therefore, @strong{never put an opening delimiter at the left margin
162 unless it should have that significance.}  For instance, never put an
163 open-parenthesis at the left margin in a Lisp file unless it is the
164 start of a top-level list.  Never put an open-brace or other opening
165 delimiter at the beginning of a line of C code unless it is at top
166 level.
168   If you don't follow this convention, not only will you have trouble
169 when you explicitly use the commands for motion by defuns; other
170 features that use them will also give you trouble.  This includes
171 the indentation commands (@pxref{Program Indent}) and Font Lock
172 mode (@pxref{Font Lock}).
174   The most likely problem case is when you want an opening delimiter
175 at the start of a line inside a string.  To avoid trouble, put an
176 escape character (@samp{\}, in C and Emacs Lisp, @samp{/} in some
177 other Lisp dialects) before the opening delimiter.  This will not
178 affect the contents of the string, but will prevent that opening
179 delimiter from starting a defun.  Here's an example:
181 @example
182   (insert "Foo:
183 \(bar)
185 @end example
187   To help you catch violations of this convention, Font Lock mode
188 highlights confusing opening delimiters (those that ought to be
189 quoted) in bold red.
191   In the earliest days, the original Emacs found defuns by moving
192 upward a level of parentheses or braces until there were no more
193 levels to go up.  This always required scanning all the way back to
194 the beginning of the buffer, even for a small function.  To speed up
195 the operation, we changed Emacs to assume that any opening delimiter
196 at the left margin is the start of a defun.  This heuristic is nearly
197 always right, and avoids the need to scan back to the beginning of the
198 buffer.  However, it mandates following the convention described
199 above.
201 @node Moving by Defuns
202 @subsection Moving by Defuns
203 @cindex defuns
205   These commands move point or set up the region based on top-level
206 major definitions, also called @dfn{defuns}.
208 @table @kbd
209 @item C-M-a
210 Move to beginning of current or preceding defun
211 (@code{beginning-of-defun}).
212 @item C-M-e
213 Move to end of current or following defun (@code{end-of-defun}).
214 @item C-M-h
215 Put region around whole current or following defun (@code{mark-defun}).
216 @end table
218 @cindex move to beginning or end of function
219 @cindex function, move to beginning or end
220 @kindex C-M-a
221 @kindex C-M-e
222 @kindex C-M-h
223 @findex beginning-of-defun
224 @findex end-of-defun
225 @findex mark-defun
226   The commands to move to the beginning and end of the current defun
227 are @kbd{C-M-a} (@code{beginning-of-defun}) and @kbd{C-M-e}
228 (@code{end-of-defun}).  If you repeat one of these commands, or use a
229 positive numeric argument, each repetition moves to the next defun in
230 the direction of motion.
232   @kbd{C-M-a} with a negative argument @minus{}@var{n} moves forward
233 @var{n} times to the next beginning of a defun.  This is not exactly
234 the same place that @kbd{C-M-e} with argument @var{n} would move to;
235 the end of this defun is not usually exactly the same place as the
236 beginning of the following defun.  (Whitespace, comments, and perhaps
237 declarations can separate them.)  Likewise, @kbd{C-M-e} with a
238 negative argument moves back to an end of a defun, which is not quite
239 the same as @kbd{C-M-a} with a positive argument.
241 @kindex C-M-h @r{(C mode)}
242 @findex c-mark-function
243   To operate on the current defun, use @kbd{C-M-h} (@code{mark-defun})
244 which puts point at the beginning and mark at the end of the current
245 defun.  This is the easiest way to get ready to kill the defun in
246 order to move it to a different place in the file.  If you use the
247 command while point is between defuns, it uses the following defun.
248 Successive uses of @kbd{C-M-h}, or using it in Transient Mark mode
249 when the mark is active, includes an additional defun in the region
250 each time.
252   In C mode, @kbd{C-M-h} runs the function @code{c-mark-function},
253 which is almost the same as @code{mark-defun}; the difference is that
254 it backs up over the argument declarations, function name and returned
255 data type so that the entire C function is inside the region.  This is
256 an example of how major modes adjust the standard key bindings so that
257 they do their standard jobs in a way better fitting a particular
258 language.  Other major modes may replace any or all of these key
259 bindings for that purpose.
261 @node Imenu
262 @subsection Imenu
263 @cindex index of buffer definitions
264 @cindex buffer definitions index
265 @cindex tags
267   The Imenu facility offers a way to find the major definitions in
268 a file by name.  It is also useful in text formatter major modes,
269 where it treats each chapter, section, etc., as a definition.
270 (@xref{Tags}, for a more powerful feature that handles multiple files
271 together.)
273 @findex imenu
274   If you type @kbd{M-x imenu}, it reads the name of a definition using
275 the minibuffer, then moves point to that definition.  You can use
276 completion to specify the name; the command always displays the whole
277 list of valid names.
279 @findex imenu-add-menubar-index
280   Alternatively, you can bind the command @code{imenu} to a mouse
281 click.  Then it displays mouse menus for you to select a definition
282 name.  You can also add the buffer's index to the menu bar by calling
283 @code{imenu-add-menubar-index}.  If you want to have this menu bar
284 item available for all buffers in a certain major mode, you can do
285 this by adding @code{imenu-add-menubar-index} to its mode hook.  But
286 if you have done that, you will have to wait each time you visit a
287 file in that mode, while Emacs finds all the definitions in that
288 buffer.
290 @vindex imenu-auto-rescan
291   When you change the contents of a buffer, if you add or delete
292 definitions, you can update the buffer's index based on the
293 new contents by invoking the @samp{*Rescan*} item in the menu.
294 Rescanning happens automatically if you set @code{imenu-auto-rescan} to
295 a non-@code{nil} value.  There is no need to rescan because of small
296 changes in the text.
298 @vindex imenu-sort-function
299   You can customize the way the menus are sorted by setting the
300 variable @code{imenu-sort-function}.  By default, names are ordered as
301 they occur in the buffer; if you want alphabetic sorting, use the
302 symbol @code{imenu--sort-by-name} as the value.  You can also
303 define your own comparison function by writing Lisp code.
305   Imenu provides the information to guide Which Function mode
306 @ifnottex
307 (@pxref{Which Function}).
308 @end ifnottex
309 @iftex
310 (see below).
311 @end iftex
312 The Speedbar can also use it (@pxref{Speedbar}).
314 @node Which Function
315 @subsection Which Function Mode
316 @cindex current function name in mode line
318   Which Function mode is a minor mode that displays the current
319 function name in the mode line, updating it as you move around in a
320 buffer.
322 @findex which-function-mode
323 @vindex which-func-modes
324   To enable (or disable) Which Function mode, use the command @kbd{M-x
325 which-function-mode}.  This command is global; it applies to all
326 buffers, both existing ones and those yet to be created.  However, it
327 takes effect only in certain major modes, those listed in the value of
328 @code{which-func-modes}.  If the value is @code{t}, then Which Function
329 mode applies to all major modes that know how to support it---in other
330 words, all the major modes that support Imenu.
332 @node Program Indent
333 @section Indentation for Programs
334 @cindex indentation for programs
336   The best way to keep a program properly indented is to use Emacs to
337 reindent it as you change it.  Emacs has commands to indent properly
338 either a single line, a specified number of lines, or all of the lines
339 inside a single parenthetical grouping.
341 @menu
342 * Basic Indent::        Indenting a single line.
343 * Multi-line Indent::   Commands to reindent many lines at once.
344 * Lisp Indent::         Specifying how each Lisp function should be indented.
345 * C Indent::            Extra features for indenting C and related modes.
346 * Custom C Indent::     Controlling indentation style for C and related modes.
347 @end menu
349 @cindex pretty-printer
350   Emacs also provides a Lisp pretty-printer in the library @code{pp}.
351 This program reformats a Lisp object with indentation chosen to look nice.
353 @node Basic Indent
354 @subsection Basic Program Indentation Commands
356   The basic indentation commands indent a single line according to the
357 usual conventions of the language you are editing.
359 @table @kbd
360 @item @key{TAB}
361 Adjust indentation of current line.
362 @item C-j
363 Equivalent to @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
364 @item @key{LINEFEED}
365 This key, if the keyboard has it, is another way to enter @kbd{C-j}.
366 @end table
368 @kindex TAB @r{(programming modes)}
369 @findex c-indent-command
370 @findex indent-line-function
371 @findex indent-for-tab-command
372   The basic indentation command is @key{TAB}, which gives the current line
373 the correct indentation as determined from the previous lines.  The
374 function that @key{TAB} runs depends on the major mode; it is
375 @code{lisp-indent-line}
376 in Lisp mode, @code{c-indent-command} in C mode, etc.  These functions
377 understand the syntax and conventions of different languages, but they all do
378 conceptually the same job: @key{TAB} in any programming-language major mode
379 inserts or deletes whitespace at the beginning of the current line,
380 independent of where point is in the line.  If point was inside the
381 whitespace at the beginning of the line, @key{TAB} puts it at the end of
382 that whitespace; otherwise, @key{TAB} keeps point fixed with respect to
383 the characters around it.
385   Use @kbd{C-q @key{TAB}} to insert a tab character at point.
387 @kindex C-j
388 @findex newline-and-indent
389   When entering lines of new code, use @kbd{C-j}
390 (@code{newline-and-indent}), which is equivalent to a @key{RET}
391 followed by a @key{TAB}.  @kbd{C-j} at the end of a line creates a
392 blank line and then gives it the appropriate indentation.
394   @key{TAB} indents a line that starts within a parenthetical grouping
395 under the preceding line within the grouping, or the text after the
396 parenthesis.  Therefore, if you manually give one of these lines a
397 nonstandard indentation, the lines below will tend to follow it.  This
398 behavior is convenient in cases where you have overridden the standard
399 result of @key{TAB} because you find it unaesthetic for a particular
400 line.
402   Remember that an open-parenthesis, open-brace or other opening delimiter
403 at the left margin is assumed by Emacs (including the indentation routines)
404 to be the start of a function.  Therefore, you must never have an opening
405 delimiter in column zero that is not the beginning of a function, not even
406 inside a string.  This restriction is vital for making the indentation
407 commands fast; you must simply accept it.  @xref{Left Margin Paren},
408 for more information on this.
410   Normally, lines are indented with tabs and spaces.  If you want Emacs
411 to use spaces only, see @ref{Just Spaces}.
413 @node Multi-line Indent
414 @subsection Indenting Several Lines
416   When you wish to reindent several lines of code which have been
417 altered or moved to a different level in the parenthesis structure,
418 you have several commands available.
420 @table @kbd
421 @item C-M-q
422 Reindent all the lines within one parenthetical grouping (@code{indent-pp-sexp}).
423 @item C-M-\
424 Reindent all lines in the region (@code{indent-region}).
425 @item C-u @key{TAB}
426 Shift an entire parenthetical grouping rigidly sideways so that its
427 first line is properly indented.
428 @item M-x indent-code-rigidly
429 Shift all the lines in the region rigidly sideways, but do not alter
430 lines that start inside comments and strings.
431 @end table
433 @kindex C-M-q
434 @findex indent-pp-sexp
435   You can reindent the contents of a single parenthetical grouping by
436 positioning point before the beginning of it and typing @kbd{C-M-q}
437 (@code{indent-pp-sexp} in Lisp mode, @code{c-indent-exp} in C mode; also
438 bound to other suitable commands in other modes).  The indentation of
439 the line where the grouping starts is not changed; therefore this
440 changes only the relative indentation within the grouping, not its
441 overall indentation.  To correct that as well, type @key{TAB} first.
443   Another way to specify the range to be reindented is with the
444 region.  The command @kbd{C-M-\} (@code{indent-region}) applies
445 @key{TAB} to every line whose first character is between point and
446 mark.
448 @kindex C-u TAB
449   If you like the relative indentation within a grouping, but not the
450 indentation of its first line, you can type @kbd{C-u @key{TAB}} to
451 reindent the whole grouping as a rigid unit.  (This works in Lisp
452 modes and C and related modes.)  @key{TAB} with a numeric argument
453 reindents the current line as usual, then reindents by the same amount
454 all the lines in the parenthetical grouping starting on the current
455 line.  It is clever, though, and does not alter lines that start
456 inside strings.  Neither does it alter C preprocessor lines when in C
457 mode, but it does reindent any continuation lines that may be attached
458 to them.
460 @findex indent-code-rigidly
461   You can also perform this operation on the region, using the command
462 @kbd{M-x indent-code-rigidly}.  It rigidly shifts all the lines in the
463 region sideways, like @code{indent-rigidly} does (@pxref{Indentation
464 Commands}).  It doesn't alter the indentation of lines that start
465 inside a string, unless the region also starts inside that string.
466 The prefix arg specifies the number of columns to indent.
468 @node Lisp Indent
469 @subsection Customizing Lisp Indentation
470 @cindex customizing Lisp indentation
472   The indentation pattern for a Lisp expression can depend on the function
473 called by the expression.  For each Lisp function, you can choose among
474 several predefined patterns of indentation, or define an arbitrary one with
475 a Lisp program.
477   The standard pattern of indentation is as follows: the second line of the
478 expression is indented under the first argument, if that is on the same
479 line as the beginning of the expression; otherwise, the second line is
480 indented underneath the function name.  Each following line is indented
481 under the previous line whose nesting depth is the same.
483 @vindex lisp-indent-offset
484   If the variable @code{lisp-indent-offset} is non-@code{nil}, it overrides
485 the usual indentation pattern for the second line of an expression, so that
486 such lines are always indented @code{lisp-indent-offset} more columns than
487 the containing list.
489 @vindex lisp-body-indent
490   Certain functions override the standard pattern.  Functions whose
491 names start with @code{def} treat the second lines as the start of
492 a @dfn{body}, by indenting the second line @code{lisp-body-indent}
493 additional columns beyond the open-parenthesis that starts the
494 expression.
496 @cindex @code{lisp-indent-function} property
497   You can override the standard pattern in various ways for individual
498 functions, according to the @code{lisp-indent-function} property of
499 the function name.  Normally you would use this for macro definitions
500 and specify it using the @code{declare} construct (@pxref{Defining
501 Macros,,, elisp, the Emacs Lisp Reference Manual}).
503 @node C Indent
504 @subsection Commands for C Indentation
506   Here are special features for indentation in C mode and related modes:
508 @table @code
509 @item C-c C-q
510 @kindex C-c C-q @r{(C mode)}
511 @findex c-indent-defun
512 Reindent the current top-level function definition or aggregate type
513 declaration (@code{c-indent-defun}).
515 @item C-M-q
516 @kindex C-M-q @r{(C mode)}
517 @findex c-indent-exp
518 Reindent each line in the balanced expression that follows point
519 (@code{c-indent-exp}).  A prefix argument inhibits warning messages
520 about invalid syntax.
522 @item @key{TAB}
523 @findex c-indent-command
524 Reindent the current line, and/or in some cases insert a tab character
525 (@code{c-indent-command}).
527 @vindex c-tab-always-indent
528 If @code{c-tab-always-indent} is @code{t}, this command always reindents
529 the current line and does nothing else.  This is the default.
531 If that variable is @code{nil}, this command reindents the current line
532 only if point is at the left margin or in the line's indentation;
533 otherwise, it inserts a tab (or the equivalent number of spaces,
534 if @code{indent-tabs-mode} is @code{nil}).
536 Any other value (not @code{nil} or @code{t}) means always reindent the
537 line, and also insert a tab if within a comment or a string.
538 @end table
540   To reindent the whole current buffer, type @kbd{C-x h C-M-\}.  This
541 first selects the whole buffer as the region, then reindents that
542 region.
544   To reindent the current block, use @kbd{C-M-u C-M-q}.  This moves
545 to the front of the block and then reindents it all.
547 @node Custom C Indent
548 @subsection Customizing C Indentation
549 @cindex style (for indentation)
551   C mode and related modes use a flexible mechanism for customizing
552 indentation.  C mode indents a source line in two steps: first it
553 classifies the line syntactically according to its contents and
554 context; second, it determines the indentation offset associated by
555 your selected @dfn{style} with the syntactic construct and adds this
556 onto the indentation of the @dfn{anchor statement}.
558 @table @kbd
559 @item C-c . @key{RET} @var{style} @key{RET}
560 Select a predefined style @var{style} (@code{c-set-style}).
561 @end table
563   A @dfn{style} is a named collection of customizations that can
564 be used in C mode and the related modes.  Emacs comes with several
565 predefined styles, including @code{gnu}, @code{k&r}, @code{bsd},
566 @code{stroustrup}, @code{linux}, @code{python}, @code{java},
567 @code{whitesmith}, @code{ellemtel}, @code{cc-mode}, and @code{user}.
568 Some of these styles are primarily intended for one language, but any
569 of them can be used with any of the languages supported by these
570 modes.  To find out what a style looks like, select it and reindent
571 some code, e.g., by typing @key{C-M-q} at the start of a function
572 definition.
574 @kindex C-c . @r{(C mode)}
575 @findex c-set-style
576   To choose a style for the current buffer, use the command @kbd{C-c
577 .}.  Specify a style name as an argument (case is not significant).
578 This command affects the current buffer only, and it affects only
579 future invocations of the indentation commands; it does not reindent
580 the code in the buffer.  To reindent the whole buffer in the new
581 style, you can type @kbd{C-x h C-M-\}.
583 @vindex c-default-style
584   You can also set the variable @code{c-default-style} to specify the
585 default style for various major modes.  Its value should be either the
586 style's name (a string) or an alist, in which each element specifies
587 one major mode and which indentation style to use for it.  For
588 example,
590 @example
591 (setq c-default-style
592       '((java-mode . "java") (other . "gnu")))
593 @end example
595 @noindent
596 specifies an explicit choice for Java mode, and the default @samp{gnu}
597 style for the other C-like modes.  (These settings are actually the
598 defaults.)  This variable takes effect when you select one of the
599 C-like major modes; thus, if you specify a new default style for Java
600 mode, you can make it take effect in an existing Java mode buffer by
601 typing @kbd{M-x java-mode} there.
603   The @code{gnu} style specifies the formatting recommended by the GNU
604 Project for C; it is the default, so as to encourage use of our
605 recommended style.
607   @xref{Customizing Indentation,,, ccmode, the CC Mode Manual}, for
608 more information on customizing indentation for C and related modes,
609 including how to override parts of an existing style and how to define
610 your own styles.
612 @node Parentheses
613 @section Commands for Editing with Parentheses
615 @findex check-parens
616 @cindex unbalanced parentheses and quotes
617   This section describes the commands and features that take advantage
618 of the parenthesis structure in a program, or help you keep it
619 balanced.
621   When talking about these facilities, the term ``parenthesis'' also
622 includes braces, brackets, or whatever delimiters are defined to match
623 in pairs.  The major mode controls which delimiters are significant,
624 through the syntax table (@pxref{Syntax}).  In Lisp, only parentheses
625 count; in C, these commands apply to braces and brackets too.
627   You can use @kbd{M-x check-parens} to find any unbalanced
628 parentheses and unbalanced string quotes in the buffer.
630 @menu
631 * Expressions::         Expressions with balanced parentheses.
632 * Moving by Parens::    Commands for moving up, down and across
633                           in the structure of parentheses.
634 * Matching::            Insertion of a close-delimiter flashes matching open.
635 @end menu
637 @node Expressions
638 @subsection Expressions with Balanced Parentheses
640 @cindex sexp
641 @cindex expression
642 @cindex balanced expression
643   These commands deal with balanced expressions, also called
644 @dfn{sexps}@footnote{The word ``sexp'' is used to refer to an
645 expression in Lisp.}.
647 @table @kbd
648 @item C-M-f
649 Move forward over a balanced expression (@code{forward-sexp}).
650 @item C-M-b
651 Move backward over a balanced expression (@code{backward-sexp}).
652 @item C-M-k
653 Kill balanced expression forward (@code{kill-sexp}).
654 @item C-M-t
655 Transpose expressions (@code{transpose-sexps}).
656 @item C-M-@@
657 @itemx C-M-@key{SPC}
658 Put mark after following expression (@code{mark-sexp}).
659 @end table
661   Each programming language major mode customizes the definition of
662 balanced expressions to suit that language.  Balanced expressions
663 typically include symbols, numbers, and string constants, as well as
664 any pair of matching delimiters and their contents.  Some languages
665 have obscure forms of expression syntax that nobody has bothered to
666 implement in Emacs.
668 @cindex Control-Meta
669   By convention, the keys for these commands are all Control-Meta
670 characters.  They usually act on expressions just as the corresponding
671 Meta characters act on words.  For instance, the command @kbd{C-M-b}
672 moves backward over a balanced expression, just as @kbd{M-b} moves
673 back over a word.
675 @kindex C-M-f
676 @kindex C-M-b
677 @findex forward-sexp
678 @findex backward-sexp
679   To move forward over a balanced expression, use @kbd{C-M-f}
680 (@code{forward-sexp}).  If the first significant character after point
681 is an opening delimiter (@samp{(} in Lisp; @samp{(}, @samp{[} or
682 @samp{@{} in C), @kbd{C-M-f} moves past the matching closing
683 delimiter.  If the character begins a symbol, string, or number,
684 @kbd{C-M-f} moves over that.
686   The command @kbd{C-M-b} (@code{backward-sexp}) moves backward over a
687 balanced expression.  The detailed rules are like those above for
688 @kbd{C-M-f}, but with directions reversed.  If there are prefix
689 characters (single-quote, backquote and comma, in Lisp) preceding the
690 expression, @kbd{C-M-b} moves back over them as well.  The balanced
691 expression commands move across comments as if they were whitespace,
692 in most modes.
694   @kbd{C-M-f} or @kbd{C-M-b} with an argument repeats that operation the
695 specified number of times; with a negative argument, it moves in the
696 opposite direction.
698 @cindex killing expressions
699 @kindex C-M-k
700 @findex kill-sexp
701   Killing a whole balanced expression can be done with @kbd{C-M-k}
702 (@code{kill-sexp}).  @kbd{C-M-k} kills the characters that @kbd{C-M-f}
703 would move over.
705 @cindex transposition of expressions
706 @kindex C-M-t
707 @findex transpose-sexps
708   A somewhat random-sounding command which is nevertheless handy is
709 @kbd{C-M-t} (@code{transpose-sexps}), which drags the previous
710 balanced expression across the next one.  An argument serves as a
711 repeat count, and a negative argument drags the previous balanced
712 expression backwards across those before it (thus canceling out the
713 effect of @kbd{C-M-t} with a positive argument).  An argument of zero,
714 rather than doing nothing, transposes the balanced expressions ending
715 at or after point and the mark.
717 @kindex C-M-@@
718 @kindex C-M-@key{SPC}
719 @findex mark-sexp
720   To set the region around the next balanced expression in the buffer,
721 use @kbd{C-M-@@} (@code{mark-sexp}), which sets mark at the same place
722 that @kbd{C-M-f} would move to.  @kbd{C-M-@@} takes arguments like
723 @kbd{C-M-f}.  In particular, a negative argument is useful for putting
724 the mark at the beginning of the previous balanced expression.  The
725 alias @kbd{C-M-@key{SPC}} is equivalent to @kbd{C-M-@@}.  If you use
726 this command repeatedly, or in Transient Mark mode whenever the mark
727 is active, it extends the region by one sexp each time.
729   In languages that use infix operators, such as C, it is not possible
730 to recognize all balanced expressions as such because there can be
731 multiple possibilities at a given position.  For example, C mode does
732 not treat @samp{foo + bar} as a single expression, even though it
733 @emph{is} one C expression; instead, it recognizes @samp{foo} as one
734 expression and @samp{bar} as another, with the @samp{+} as punctuation
735 between them.  Both @samp{foo + bar} and @samp{foo} are legitimate
736 choices for ``the expression following point'' when point is at the
737 @samp{f}, so the expression commands must perforce choose one or the
738 other to operate on.  Note that @samp{(foo + bar)} is recognized as a
739 single expression in C mode, because of the parentheses.
741 @node Moving by Parens
742 @subsection Moving in the Parenthesis Structure
744 @cindex parenthetical groupings
745 @cindex parentheses, moving across
746 @cindex matching parenthesis and braces, moving to
747 @cindex braces, moving across
748 @cindex list commands
749   The Emacs commands for handling parenthetical groupings see nothing
750 except parentheses (or whatever characters must balance in the
751 language you are working with), and the escape characters that might
752 be used to quote those.  They are mainly intended for editing
753 programs, but can be useful for editing any text that has parentheses.
754 They are sometimes called ``list'' commands because in Lisp these
755 groupings are lists.
757 @table @kbd
758 @item C-M-n
759 Move forward over a parenthetical group (@code{forward-list}).
760 @item C-M-p
761 Move backward over a parenthetical group (@code{backward-list}).
762 @item C-M-u
763 Move up in parenthesis structure (@code{backward-up-list}).
764 @item C-M-d
765 Move down in parenthesis structure (@code{down-list}).
766 @end table
768 @kindex C-M-n
769 @kindex C-M-p
770 @findex forward-list
771 @findex backward-list
772   The ``list'' commands @kbd{C-M-n} (@code{forward-list}) and
773 @kbd{C-M-p} (@code{backward-list}) move over one (or @var{n})
774 parenthetical groupings, skipping blithely over any amount of text
775 that doesn't include meaningful parentheses (symbols, strings, etc.).
777 @kindex C-M-u
778 @kindex C-M-d
779 @findex backward-up-list
780 @findex down-list
781   @kbd{C-M-n} and @kbd{C-M-p} try to stay at the same level in the
782 parenthesis structure.  To move @emph{up} one (or @var{n}) levels, use
783 @kbd{C-M-u} (@code{backward-up-list}).  @kbd{C-M-u} moves backward up
784 past one unmatched opening delimiter.  A positive argument serves as a
785 repeat count; a negative argument reverses the direction of motion, so
786 that the command moves forward and up one or more levels.
788   To move @emph{down} in the parenthesis structure, use @kbd{C-M-d}
789 (@code{down-list}).  In Lisp mode, where @samp{(} is the only opening
790 delimiter, this is nearly the same as searching for a @samp{(}.  An
791 argument specifies the number of levels to go down.
793 @node Matching
794 @subsection Automatic Display Of Matching Parentheses
795 @cindex matching parentheses
796 @cindex parentheses, displaying matches
798   The Emacs parenthesis-matching feature is designed to show
799 automatically how parentheses (and other matching delimiters) match in
800 the text.  Whenever you type a self-inserting character that is a
801 closing delimiter, the cursor moves momentarily to the location of the
802 matching opening delimiter, provided that is on the screen.  If it is
803 not on the screen, Emacs displays some of the text near it in the echo
804 area.  Either way, you can tell which grouping you are closing off.
806   If the opening delimiter and closing delimiter are mismatched---such
807 as in @samp{[x)}---a warning message is displayed in the echo area.
809 @vindex blink-matching-paren
810 @vindex blink-matching-paren-distance
811 @vindex blink-matching-delay
812   Three variables control parenthesis match display:
814   @code{blink-matching-paren} turns the feature on or off: @code{nil}
815 disables it, but the default is @code{t} to enable match display.
817   @code{blink-matching-delay} says how many seconds to leave the
818 cursor on the matching opening delimiter, before bringing it back to
819 the real location of point; the default is 1, but on some systems it
820 is useful to specify a fraction of a second.
822   @code{blink-matching-paren-distance} specifies how many characters
823 back to search to find the matching opening delimiter.  If the match
824 is not found in that distance, scanning stops, and nothing is displayed.
825 This is to prevent the scan for the matching delimiter from wasting
826 lots of time when there is no match.  The default is 25600.
828 @cindex Show Paren mode
829 @cindex highlighting matching parentheses
830 @findex show-paren-mode
831   Show Paren mode provides a more powerful kind of automatic matching.
832 Whenever point is after a closing delimiter, that delimiter and its
833 matching opening delimiter are both highlighted; otherwise, if point
834 is before an opening delimiter, the matching closing delimiter is
835 highlighted.  (There is no need to highlight the opening delimiter in
836 that case, because the cursor appears on top of that character.)  Use
837 the command @kbd{M-x show-paren-mode} to enable or disable this mode.
839   By default, @code{show-paren-mode} uses colors to highlight the
840 parentheses.  However, if your display doesn't support colors, you can
841 customize the faces @code{show-paren-match-face} and
842 @code{show-paren-mismatch-face} to use other attributes, such as bold or
843 underline.  @xref{Face Customization}.
845 @node Comments
846 @section Manipulating Comments
847 @cindex comments
849   Because comments are such an important part of programming, Emacs
850 provides special commands for editing and inserting comments.  It can
851 also do spell checking on comments with Flyspell Prog mode
852 (@pxref{Spelling}).
854 @menu
855 * Comment Commands::    Inserting, killing, and indenting comments.
856 * Multi-Line Comments:: Commands for adding and editing multi-line comments.
857 * Options for Comments::Customizing the comment features.
858 @end menu
860 @node Comment Commands
861 @subsection Comment Commands
862 @cindex indentation for comments
864   The comment commands in this table insert, kill and align comments.
865 They are described in this section and following sections.
867 @table @asis
868 @item @kbd{M-;}
869 Insert or realign comment on current line; alternatively, comment or
870 uncomment the region (@code{comment-dwim}).
871 @item @kbd{C-u M-;}
872 Kill comment on current line (@code{comment-kill}).
873 @item @kbd{C-x ;}
874 Set comment column (@code{comment-set-column}).
875 @item @kbd{C-M-j}
876 @itemx @kbd{M-j}
877 Like @key{RET} followed by inserting and aligning a comment
878 (@code{comment-indent-new-line}).
879 @item @kbd{M-x comment-region}
880 @itemx @kbd{C-c C-c} (in C-like modes)
881 Add or remove comment delimiters on all the lines in the region.
882 @end table
884 @kindex M-;
885 @findex comment-dwim
886   The command to create or align a comment is @kbd{M-;}
887 (@code{comment-dwim}).  The word ``dwim'' is an acronym for ``Do What
888 I Mean''; it indicates that this command can be used for many
889 different jobs relating to comments, depending on the situation where
890 you use it.
892   If there is no comment already on the line, @kbd{M-;} inserts a new
893 comment, aligned at a specific column called the @dfn{comment column}.
894 The new comment begins with the string Emacs thinks comments should
895 start with (the value of @code{comment-start}; see below).  Point is
896 after that string, so you can insert the text of the comment right
897 away.  If the major mode has specified a string to terminate comments,
898 @kbd{M-;} inserts that too, to keep the syntax valid.
900   If the text of the line extends past the comment column, then the
901 comment start string is indented to a suitable boundary (usually, at
902 least one space is inserted).
904   You can also use @kbd{M-;} to align an existing comment.  If a line
905 already contains the comment-start string, @kbd{M-;} reindents it to
906 the conventional alignment and moves point after it.  (Exception:
907 comments starting in column 0 are not moved.)  Even when an existing
908 comment is properly aligned, @kbd{M-;} is still useful for moving
909 directly to the start of the text inside the comment.
911 @findex comment-kill
912 @kindex C-u M-;
913   @kbd{C-u M-;} kills any comment on the current line, along with the
914 whitespace before it.  To reinsert the comment on another line, move
915 to the end of that line, do @kbd{C-y}, and then do @kbd{M-;} to
916 realign it.
918   Note that @kbd{C-u M-;} is not a distinct key; it is @kbd{M-;}
919 (@code{comment-dwim}) with a prefix argument.  That command is
920 programmed so that when it receives a prefix argument it calls
921 @code{comment-kill}.  However, @code{comment-kill} is a valid command
922 in its own right, and you can bind it directly to a key if you wish.
924   @kbd{M-;} does two other jobs when used with an active region in
925 Transient Mark mode (@pxref{Transient Mark}).  Then it either adds or
926 removes comment delimiters on each line of the region.  (If every line
927 is a comment, it removes comment delimiters from each; otherwise, it
928 adds comment delimiters to each.)  If you are not using Transient Mark
929 mode, then you should use the commands @code{comment-region} and
930 @code{uncomment-region} to do these jobs (@pxref{Multi-Line Comments}).
931 A prefix argument used in these circumstances specifies how many
932 comment delimiters to add or how many to delete.
934   Some major modes have special rules for indenting certain kinds of
935 comments in certain contexts.  For example, in Lisp code, comments which
936 start with two semicolons are indented as if they were lines of code,
937 instead of at the comment column.  Comments which start with three
938 semicolons are supposed to start at the left margin.  Emacs understands
939 these conventions by indenting a double-semicolon comment using @key{TAB},
940 and by not changing the indentation of a triple-semicolon comment at all.
942 @example
943 ;; This function is just an example
944 ;;; Here either two or three semicolons are appropriate.
945 (defun foo (x)
946 ;;; And now, the first part of the function:
947   ;; The following line adds one.
948   (1+ x))           ; This line adds one.
949 @end example
951   In C code, a comment preceded on its line by nothing but whitespace
952 is indented like a line of code.
954 @node Multi-Line Comments
955 @subsection Multiple Lines of Comments
957 @kindex C-M-j
958 @kindex M-j
959 @cindex blank lines in programs
960 @findex comment-indent-new-line
961   If you are typing a comment and wish to continue it on another line,
962 you can use the command @kbd{C-M-j} or @kbd{M-j}
963 (@code{comment-indent-new-line}).  This terminates the comment you are
964 typing, creates a new blank line afterward, and begins a new comment
965 indented under the old one.  When Auto Fill mode is on, going past the
966 fill column while typing a comment causes the comment to be continued
967 in just this fashion.  If point is not at the end of the line when you
968 type the command, the text on the rest of the line becomes part of the
969 new comment line.
971 @kindex C-c C-c (C mode)
972 @findex comment-region
973   To turn existing lines into comment lines, use the @kbd{M-x
974 comment-region} command.  It adds comment delimiters to the lines that start
975 in the region, thus commenting them out.  With a negative argument, it
976 does the opposite---it deletes comment delimiters from the lines in the
977 region.
979   With a positive argument, @code{comment-region} duplicates the last
980 character of the comment start sequence it adds; the argument specifies
981 how many copies of the character to insert.  Thus, in Lisp mode,
982 @kbd{C-u 2 M-x comment-region} adds @samp{;;} to each line.  Duplicating
983 the comment delimiter is a way of calling attention to the comment.  It
984 can also affect how the comment is indented.  In Lisp, for proper
985 indentation, you should use an argument of two or three, if between defuns;
986 if within a defun, it must be three.
988 @node Options for Comments
989 @subsection Options Controlling Comments
991 @vindex comment-column
992 @kindex C-x ;
993 @findex comment-set-column
994   The @dfn{comment column}, the column at which Emacs tries to place
995 comments, is stored in the variable @code{comment-column}.  You can
996 set it to a number explicitly.  Alternatively, the command @kbd{C-x ;}
997 (@code{comment-set-column}) sets the comment column to the column
998 point is at.  @kbd{C-u C-x ;} sets the comment column to match the
999 last comment before point in the buffer, and then does a @kbd{M-;} to
1000 align the current line's comment under the previous one.
1002   The variable @code{comment-column} is per-buffer: setting the variable
1003 in the normal fashion affects only the current buffer, but there is a
1004 default value which you can change with @code{setq-default}.
1005 @xref{Locals}.  Many major modes initialize this variable for the
1006 current buffer.
1008 @vindex comment-start-skip
1009   The comment commands recognize comments based on the regular
1010 expression that is the value of the variable @code{comment-start-skip}.
1011 Make sure this regexp does not match the null string.  It may match more
1012 than the comment starting delimiter in the strictest sense of the word;
1013 for example, in C mode the value of the variable is
1014 @c This stops M-q from breaking the line inside that @code.
1015 @code{@w{"/\\*+ *\\|//+ *"}}, which matches extra stars and spaces
1016 after the @samp{/*} itself, and accepts C++ style comments also.
1017 (Note that @samp{\\} is needed in Lisp syntax to include a @samp{\} in
1018 the string, which is needed to deny the first star its special meaning
1019 in regexp syntax.  @xref{Regexps}.)
1021 @vindex comment-start
1022 @vindex comment-end
1023   When a comment command makes a new comment, it inserts the value of
1024 @code{comment-start} to begin it.  The value of @code{comment-end} is
1025 inserted after point, so that it will follow the text that you will insert
1026 into the comment.  In C mode, @code{comment-start} has the value
1027 @w{@code{"/* "}} and @code{comment-end} has the value @w{@code{" */"}}.
1029 @vindex comment-padding
1030   The variable @code{comment-padding} specifies how many spaces
1031 @code{comment-region} should insert on each line between the comment
1032 delimiter and the line's original text.  The default is 1, to insert
1033 one space.  @code{nil} means 0.  Alternatively, @code{comment-padding}
1034 can hold the actual string to insert.
1036 @vindex comment-multi-line
1037   The variable @code{comment-multi-line} controls how @kbd{C-M-j}
1038 (@code{indent-new-comment-line}) behaves when used inside a comment.
1039 Specifically, when @code{comment-multi-line} is @code{nil} (the
1040 default value), the command inserts a comment terminator, begins a new
1041 line, and finally inserts a comment starter.  Otherwise it does not
1042 insert the terminator and starter, so it effectively continues the
1043 current comment across multiple lines.  In languages that allow
1044 multi-line comments, the choice of value for this variable is a matter
1045 of taste.
1047 @vindex comment-indent-function
1048   The variable @code{comment-indent-function} should contain a function
1049 that will be called to compute the indentation for a newly inserted
1050 comment or for aligning an existing comment.  It is set differently by
1051 various major modes.  The function is called with no arguments, but with
1052 point at the beginning of the comment, or at the end of a line if a new
1053 comment is to be inserted.  It should return the column in which the
1054 comment ought to start.  For example, in Lisp mode, the indent hook
1055 function bases its decision on how many semicolons begin an existing
1056 comment, and on the code in the preceding lines.
1058 @node Documentation
1059 @section Documentation Lookup
1061   Emacs provides several features you can use to look up the
1062 documentation of functions, variables and commands that you plan to
1063 use in your program.
1065 @menu
1066 * Info Lookup::         Looking up library functions and commands
1067                           in Info files.
1068 * Man Page::            Looking up man pages of library functions and commands.
1069 * Lisp Doc::            Looking up Emacs Lisp functions, etc.
1070 @end menu
1072 @node Info Lookup
1073 @subsection Info Documentation Lookup
1075 @findex info-lookup-symbol
1076 @findex info-lookup-file
1077 @kindex C-h S
1078   For C, Lisp, and other languages that have documentation in Info,
1079 you can use @kbd{C-h S} (@code{info-lookup-symbol}) to view the Info
1080 documentation for a symbol used in the program.  You specify the
1081 symbol with the minibuffer; the default is the symbol appearing in the
1082 buffer at point.  For example, in C mode this looks for the symbol in
1083 the C Library Manual.
1085   The major mode determines where to look for documentation for the
1086 symbol---which Info files to look in, and which indices to search.
1087 You can also use @kbd{M-x info-lookup-file} to look for documentation
1088 for a file name.
1090   This feature currently supports the modes AWK, Autoconf, Bison, C,
1091 Emacs Lisp, LaTeX, M4, Makefile, Octave, Perl, Scheme, and Texinfo,
1092 provided you have installed the relevant Info files, which are
1093 typically available with the appropriate GNU package.
1095 @node Man Page
1096 @subsection Man Page Lookup
1098 @cindex manual page
1099   On Unix, the main form of on-line documentation was the @dfn{manual
1100 page} or @dfn{man page}.  In the GNU operating system, we hope to
1101 replace man pages with better-organized manuals that you can browse
1102 with Info (@pxref{Misc Help}).  This process is not finished, so it is
1103 still useful to read manual pages.
1105 @findex manual-entry
1106   You can read the man page for an operating system command, library
1107 function, or system call, with the @kbd{M-x man} command.  It
1108 runs the @code{man} program to format the man page; if the system
1109 permits, it runs @code{man} asynchronously, so that you can keep on
1110 editing while the page is being formatted.  (On MS-DOS and MS-Windows
1111 3, you cannot edit while Emacs waits for @code{man} to finish.)  The
1112 result goes in a buffer named @samp{*Man @var{topic}*}.  These buffers
1113 use a special major mode, Man mode, that facilitates scrolling and
1114 jumping to other manual pages.  For details, type @kbd{C-h m} while in
1115 a man page buffer.
1117 @cindex sections of manual pages
1118   Each man page belongs to one of ten or more @dfn{sections}, each
1119 named by a digit or by a digit and a letter.  Sometimes there are
1120 multiple man pages with the same name in different sections.  To read
1121 a man page from a specific section, type
1122 @samp{@var{topic}(@var{section})} or @samp{@var{section} @var{topic}}
1123 when @kbd{M-x manual-entry} prompts for the topic.  For example, to
1124 read the man page for the C library function @code{chmod} (as opposed
1125 to a command of the same name), type @kbd{M-x manual-entry @key{RET}
1126 chmod(2) @key{RET}} (@code{chmod} is a system call, so it is in
1127 section @samp{2}).
1129 @vindex Man-switches
1130   If you do not specify a section, the results depend on how the
1131 @code{man} program works on your system.  Some of them display only
1132 the first man page they find.  Others display all man pages that have
1133 the specified name, so you can move between them with the @kbd{M-n}
1134 and @kbd{M-p} keys@footnote{On some systems, the @code{man} program
1135 accepts a @samp{-a} command-line option which tells it to display all
1136 the man pages for the specified topic.  If you want this behavior, you
1137 can add this option to the value of the variable @code{Man-switches}.}.
1138 The mode line shows how many manual pages are present in the Man buffer.
1140 @vindex Man-fontify-manpage-flag
1141   By default, Emacs highlights the text in man pages.  For a long man
1142 page, highlighting can take substantial time.  You can turn off
1143 highlighting of man pages by setting the variable
1144 @code{Man-fontify-manpage-flag} to @code{nil}.
1146 @findex Man-fontify-manpage
1147   If you insert the text of a man page into an Emacs buffer in some
1148 other fashion, you can use the command @kbd{M-x Man-fontify-manpage} to
1149 perform the same conversions that @kbd{M-x manual-entry} does.
1151 @findex woman
1152 @cindex manual pages, on MS-DOS/MS-Windows
1153   An alternative way of reading manual pages is the @kbd{M-x woman}
1154 command@footnote{The name of the command, @code{woman}, is an acronym
1155 for ``w/o (without) man,'' since it doesn't use the @code{man}
1156 program.}.  Unlike @kbd{M-x man}, it does not run any external
1157 programs to format and display the man pages; instead it does the job
1158 in Emacs Lisp, so it works on systems such as MS-Windows, where the
1159 @code{man} program (and other programs it uses) are not generally
1160 available.
1162   @kbd{M-x woman} prompts for a name of a manual page, and provides
1163 completion based on the list of manual pages that are installed on
1164 your machine; the list of available manual pages is computed
1165 automatically the first time you invoke @code{woman}.  The word at
1166 point in the current buffer is used to suggest the default for the
1167 name the manual page.
1169   With a numeric argument, @kbd{M-x woman} recomputes the list of the
1170 manual pages used for completion.  This is useful if you add or delete
1171 manual pages.
1173   If you type a name of a manual page and @kbd{M-x woman} finds that
1174 several manual pages by the same name exist in different sections, it
1175 pops up a window with possible candidates asking you to choose one of
1176 them.
1178 @vindex woman-manpath
1179   By default, @kbd{M-x woman} looks for manual pages in the
1180 directories specified in the @code{MANPATH} environment variable.  (If
1181 @code{MANPATH} is not set, @code{woman} uses a suitable default value,
1182 which can be customized.)  More precisely, @code{woman} looks for
1183 subdirectories that match the shell wildcard pattern @file{man*} in each one
1184 of these directories, and tries to find the manual pages in those
1185 subdirectories.  When first invoked, @kbd{M-x woman} converts the
1186 value of @code{MANPATH} to a list of directory names and stores that
1187 list in the @code{woman-manpath} variable.  Changing the value of this
1188 variable is another way to control the list of directories used.
1190 @vindex woman-path
1191   You can also augment the list of directories searched by
1192 @code{woman} by setting the value of the @code{woman-path} variable.
1193 This variable should hold a list of specific directories which
1194 @code{woman} should search, in addition to those in
1195 @code{woman-manpath}.  Unlike @code{woman-manpath}, the directories in
1196 @code{woman-path} are searched for the manual pages, not for
1197 @file{man*} subdirectories.
1199 @findex woman-find-file
1200   Occasionally, you might need to display manual pages that are not in
1201 any of the directories listed by @code{woman-manpath} and
1202 @code{woman-path}.  The @kbd{M-x woman-find-file} command prompts for a
1203 name of a manual page file, with completion, and then formats and
1204 displays that file like @kbd{M-x woman} does.
1206 @vindex woman-dired-keys
1207   The first time you invoke @kbd{M-x woman}, it defines the Dired
1208 @kbd{W} key to run the @code{woman-find-file} command on the current
1209 line's file.  You can disable this by setting the variable
1210 @code{woman-dired-keys} to @code{nil}.  @xref{Dired}.  In addition,
1211 the Tar-mode @kbd{w} key is define to invoke @code{woman-find-file} on
1212 the current line's archive member.
1214   For more information about setting up and using @kbd{M-x woman}, see
1215 @ref{Top, WoMan, Browse UN*X Manual Pages WithOut Man, woman, The WoMan
1216 Manual}.
1218 @node Lisp Doc
1219 @subsection Emacs Lisp Documentation Lookup
1221   As you edit Lisp code to be run in Emacs, you can use the commands
1222 @kbd{C-h f} (@code{describe-function}) and @kbd{C-h v}
1223 (@code{describe-variable}) to view documentation of functions and
1224 variables that you want to use.  These commands use the minibuffer to
1225 read the name of a function or variable to document, and display the
1226 documentation in a window.  Their default arguments are based on the
1227 code in the neighborhood of point.  For @kbd{C-h f}, the default is
1228 the function called in the innermost list containing point.  @kbd{C-h
1229 v} uses the symbol name around or adjacent to point as its default.
1231 @cindex Eldoc mode
1232 @findex eldoc-mode
1233   A more automatic but less powerful method is Eldoc mode.  This minor
1234 mode constantly displays in the echo area the argument list for the
1235 function being called at point.  (In other words, it finds the
1236 function call that point is contained in, and displays the argument
1237 list of that function.)  If point is over a documented variable, it
1238 shows the variable's docstring.  Eldoc mode applies in Emacs Lisp and
1239 Lisp Interaction modes only.  Use the command @kbd{M-x eldoc-mode} to
1240 enable or disable this feature.
1242 @node Hideshow
1243 @section Hideshow minor mode
1245 @findex hs-minor-mode
1246   Hideshow minor mode provides selective display of portions of a
1247 program, known as @dfn{blocks}.  You can use @kbd{M-x hs-minor-mode}
1248 to enable or disable this mode, or add @code{hs-minor-mode} to the
1249 mode hook for certain major modes in order to enable it automatically
1250 for those modes.
1252   Just what constitutes a block depends on the major mode.  In C mode
1253 or C++ mode, they are delimited by braces, while in Lisp mode and
1254 similar modes they are delimited by parentheses.  Multi-line comments
1255 also count as blocks.
1257 @findex hs-hide-all
1258 @findex hs-hide-block
1259 @findex hs-show-all
1260 @findex hs-show-block
1261 @findex hs-show-region
1262 @findex hs-hide-level
1263 @findex hs-minor-mode
1264 @kindex C-c @@ C-h
1265 @kindex C-c @@ C-s
1266 @kindex C-c @@ C-M-h
1267 @kindex C-c @@ C-M-s
1268 @kindex C-c @@ C-r
1269 @kindex C-c @@ C-l
1270 @kindex S-Mouse-2
1271 @table @kbd
1272 @item C-c @@ C-h
1273 Hide the current block (@code{hs-hide-block}).
1274 @item C-c @@ C-s
1275 Show the current block (@code{hs-show-block}).
1276 @item C-c @@ C-c
1277 Either hide or show the current block (@code{hs-toggle-hiding}).
1278 @item S-Mouse-2
1279 Either hide or show the block you click on (@code{hs-mouse-toggle-hiding}).
1280 @item C-c @@ C-M-h
1281 Hide all top-level blocks (@code{hs-hide-all}).
1282 @item C-c @@ C-M-s
1283 Show everything in the buffer (@code{hs-show-all}).
1284 @item C-c @@ C-l
1285 Hide all blocks @var{n} levels below this block
1286 (@code{hs-hide-level}).
1287 @end table
1289 @vindex hs-hide-comments-when-hiding-all
1290 @vindex hs-isearch-open
1291 @vindex hs-special-modes-alist
1292   These variables exist for customizing Hideshow mode.
1294 @table @code
1295 @item hs-hide-comments-when-hiding-all
1296 Non-@code{nil} says that @kbd{hs-hide-all} should hide comments too.
1298 @item hs-isearch-open
1299 Specifies what kind of hidden blocks to open in Isearch mode.
1300 The value should be one of these four symbols:
1302 @table @code
1303 @item code
1304 Open only code blocks.
1305 @item comment
1306 Open only comments.
1307 @item t
1308 Open both code blocks and comments.
1309 @item nil
1310 Open neither code blocks nor comments.
1311 @end table
1313 @item hs-special-modes-alist
1314 A list of elements, each specifying how to initialize Hideshow
1315 variables for one major mode.  See the variable's documentation string
1316 for more information.
1317 @end table
1319 @node Symbol Completion
1320 @section Completion for Symbol Names
1321 @cindex completion (symbol names)
1323   In Emacs, completion is something you normally do in the minibuffer.
1324 But one kind of completion is available in all buffers: completion for
1325 symbol names.
1327 @kindex M-TAB
1328   The character @kbd{M-@key{TAB}} runs a command to complete the
1329 partial symbol before point against the set of meaningful symbol
1330 names.  This command inserts at point any additional characters that
1331 it can determine from the partial name.  (If your window manager
1332 defines @kbd{M-@key{TAB}} to switch windows, you can type
1333 @kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.)
1335   If the partial name in the buffer has multiple possible completions
1336 that differ in the very next character, so that it is impossible to
1337 complete even one more character, @kbd{M-@key{TAB}} displays a list of
1338 all possible completions in another window.
1340 @cindex tags-based completion
1341 @cindex Info index completion
1342 @findex complete-symbol
1343   In most programming language major modes, @kbd{M-@key{TAB}} runs the
1344 command @code{complete-symbol}, which provides two kinds of completion.
1345 Normally it does completion based on a tags table (@pxref{Tags}); with a
1346 numeric argument (regardless of the value), it does completion based on
1347 the names listed in the Info file indexes for your language.  Thus, to
1348 complete the name of a symbol defined in your own program, use
1349 @kbd{M-@key{TAB}} with no argument; to complete the name of a standard
1350 library function, use @kbd{C-u M-@key{TAB}}.  Of course, Info-based
1351 completion works only if there is an Info file for the standard library
1352 functions of your language, and only if it is installed at your site.
1354 @cindex Lisp symbol completion
1355 @cindex completion (Lisp symbols)
1356 @findex lisp-complete-symbol
1357   In Emacs-Lisp mode, the name space for completion normally consists of
1358 nontrivial symbols present in Emacs---those that have function
1359 definitions, values or properties.  However, if there is an
1360 open-parenthesis immediately before the beginning of the partial symbol,
1361 only symbols with function definitions are considered as completions.
1362 The command which implements this is @code{lisp-complete-symbol}.
1364   In Text mode and related modes, @kbd{M-@key{TAB}} completes words
1365 based on the spell-checker's dictionary.  @xref{Spelling}.
1367 @node Glasses
1368 @section Glasses minor mode
1369 @cindex Glasses mode
1370 @cindex identifiers, making long ones readable
1371 @cindex StudlyCaps, making them readable
1372 @findex glasses-mode
1374   Glasses minor mode makes @samp{unreadableIdentifiersLikeThis}
1375 readable by altering the way they display.  It knows two different
1376 ways to do this: by displaying underscores between a lower-case letter
1377 and the following capital letter, and by emboldening the capital
1378 letters.  It does not alter the buffer text, only the way they
1379 display, so you can use it even on read-only buffers.  You can use the
1380 command @kbd{M-x glasses-mode} to enable or disable the mode in the
1381 current buffer; you can also add @code{glasses-mode} to the mode hook
1382 of the programming language major modes in which you normally want
1383 to use Glasses mode.
1385 @node Misc for Programs
1386 @section Other Features Useful for Editing Programs
1388   A number of Emacs commands that aren't designed specifically for
1389 editing programs are useful for that nonetheless.
1391   The Emacs commands that operate on words, sentences and paragraphs
1392 are useful for editing code.  Most symbols names contain words
1393 (@pxref{Words}); sentences can be found in strings and comments
1394 (@pxref{Sentences}).  Paragraphs in the strict sense can be found in
1395 program code (in long comments), but the paragraph commands are useful
1396 in other places too, because programming language major modes define
1397 paragraphs to begin and end at blank lines (@pxref{Paragraphs}).
1398 Judicious use of blank lines to make the program clearer will also
1399 provide useful chunks of text for the paragraph commands to work on.
1400 Auto Fill mode, if enabled in a programming language major mode,
1401 indents the new lines which it creates.
1403   The selective display feature is useful for looking at the overall
1404 structure of a function (@pxref{Selective Display}).  This feature
1405 hides the lines that are indented more than a specified amount.
1406 Programming modes often support Outline minor mode (@pxref{Outline
1407 Mode}).  The Foldout package provides folding-editor features
1408 (@pxref{Foldout}).
1410   The ``automatic typing'' features may be useful for writing programs.
1411 @xref{Top,,Autotyping, autotype, Autotyping}.
1413 @node C Modes
1414 @section C and Related Modes
1415 @cindex C mode
1416 @cindex Java mode
1417 @cindex Pike mode
1418 @cindex IDL mode
1419 @cindex CORBA IDL mode
1420 @cindex Objective C mode
1421 @cindex C++ mode
1422 @cindex AWK mode
1423 @cindex mode, Java
1424 @cindex mode, C
1425 @cindex mode, C++
1426 @cindex mode, Objective C
1427 @cindex mode, CORBA IDL
1428 @cindex mode, Pike
1429 @cindex mode, AWK
1431   This section gives a brief description of the special features
1432 available in C, C++, Objective-C, Java, CORBA IDL, Pike and AWK modes.
1433 (These are called ``C mode and related modes.'')  @xref{Top, , CC Mode,
1434 ccmode, CC Mode}, for a more extensive description of these modes
1435 and their special features.
1437 @menu
1438 * Motion in C::                 Commands to move by C statements, etc.
1439 * Electric C::                  Colon and other chars can automatically reindent.
1440 * Hungry Delete::               A more powerful DEL command.
1441 * Other C Commands::            Filling comments, viewing expansion of macros,
1442                                 and other neat features.
1443 @end menu
1445 @node Motion in C
1446 @subsection C Mode Motion Commands
1448   This section describes commands for moving point, in C mode and
1449 related modes.
1451 @table @code
1452 @item M-x c-beginning-of-defun
1453 @itemx M-x c-end-of-defun
1454 @findex c-beginning-of-defun
1455 @findex c-end-of-defun
1456 Move point to the beginning or end of the current function or
1457 top-level definition.  These are found by searching for the least
1458 enclosing braces.  (By contrast, @code{beginning-of-defun} and
1459 @code{end-of-defun} search for braces in column zero.)  If you are
1460 editing code where the opening brace of a function isn't placed in
1461 column zero, you may wish to bind @code{C-M-a} and @code{C-M-e} to
1462 these commands.  @xref{Moving by Defuns}.
1464 @item C-c C-u
1465 @kindex C-c C-u @r{(C mode)}
1466 @findex c-up-conditional
1467 Move point back to the containing preprocessor conditional, leaving the
1468 mark behind.  A prefix argument acts as a repeat count.  With a negative
1469 argument, move point forward to the end of the containing
1470 preprocessor conditional.
1472 @samp{#elif} is equivalent to @samp{#else} followed by @samp{#if}, so
1473 the function will stop at a @samp{#elif} when going backward, but not
1474 when going forward.
1476 @item C-c C-p
1477 @kindex C-c C-p @r{(C mode)}
1478 @findex c-backward-conditional
1479 Move point back over a preprocessor conditional, leaving the mark
1480 behind.  A prefix argument acts as a repeat count.  With a negative
1481 argument, move forward.
1483 @item C-c C-n
1484 @kindex C-c C-n @r{(C mode)}
1485 @findex c-forward-conditional
1486 Move point forward across a preprocessor conditional, leaving the mark
1487 behind.  A prefix argument acts as a repeat count.  With a negative
1488 argument, move backward.
1490 @item M-a
1491 @kindex M-a (C mode)
1492 @findex c-beginning-of-statement
1493 Move point to the beginning of the innermost C statement
1494 (@code{c-beginning-of-statement}).  If point is already at the beginning
1495 of a statement, move to the beginning of the preceding statement.  With
1496 prefix argument @var{n}, move back @var{n} @minus{} 1 statements.
1498 In comments or in strings which span more than one line, this command
1499 moves by sentences instead of statements.
1501 @item M-e
1502 @kindex M-e (C mode)
1503 @findex c-end-of-statement
1504 Move point to the end of the innermost C statement or sentence; like
1505 @kbd{M-a} except that it moves in the other direction
1506 (@code{c-end-of-statement}).
1508 @item M-x c-backward-into-nomenclature
1509 @findex c-backward-into-nomenclature
1510 Move point backward to beginning of a C++ nomenclature section or word.
1511 With prefix argument @var{n}, move @var{n} times.  If @var{n} is
1512 negative, move forward.  C++ nomenclature means a symbol name in the
1513 style of NamingSymbolsWithMixedCaseAndNoUnderlines; each capital letter
1514 begins a section or word.
1516 In the GNU project, we recommend using underscores to separate words
1517 within an identifier in C or C++, rather than using case distinctions.
1519 @item M-x c-forward-into-nomenclature
1520 @findex c-forward-into-nomenclature
1521 Move point forward to end of a C++ nomenclature section or word.
1522 With prefix argument @var{n}, move @var{n} times.
1523 @end table
1525 @node Electric C
1526 @subsection Electric C Characters
1528   In C mode and related modes, certain printing characters are
1529 ``electric''---in addition to inserting themselves, they also reindent
1530 the current line, and optionally also insert newlines.  The
1531 ``electric'' characters are @kbd{@{}, @kbd{@}}, @kbd{:}, @kbd{#},
1532 @kbd{;}, @kbd{,}, @kbd{<}, @kbd{>}, @kbd{/}, @kbd{*}, @kbd{(}, and
1533 @kbd{)}.
1535   Electric characters insert newlines only when the @dfn{auto-newline}
1536 feature is enabled (indicated by @samp{/a} in the mode line after the
1537 mode name).  This feature is controlled by the variable
1538 @code{c-auto-newline}.  You can turn this feature on or off with the
1539 command @kbd{C-c C-a}:
1541 @table @kbd
1542 @item C-c C-a
1543 @kindex C-c C-a @r{(C mode)}
1544 @findex c-toggle-auto-state
1545 Toggle the auto-newline feature (@code{c-toggle-auto-state}).  With a
1546 prefix argument, this command turns the auto-newline feature on if the
1547 argument is positive, and off if it is negative.
1548 @end table
1550   The colon character is electric because that is appropriate for a
1551 single colon.  But when you want to insert a double colon in C++, the
1552 electric behavior of colon is inconvenient.  You can insert a double
1553 colon with no reindentation or newlines by typing @kbd{C-c :}:
1555 @table @kbd
1556 @item C-c :
1557 @ifinfo
1558 @c This uses ``colon'' instead of a literal `:' because Info cannot
1559 @c cope with a `:' in a menu
1560 @kindex C-c @key{colon} @r{(C mode)}
1561 @end ifinfo
1562 @ifnotinfo
1563 @kindex C-c : @r{(C mode)}
1564 @end ifnotinfo
1565 @findex c-scope-operator
1566 Insert a double colon scope operator at point, without reindenting the
1567 line or adding any newlines (@code{c-scope-operator}).
1568 @end table
1570 @vindex c-electric-pound-behavior
1571   The electric @kbd{#} key reindents the line if it appears to be the
1572 beginning of a preprocessor directive.  This happens when the value of
1573 @code{c-electric-pound-behavior} is @code{(alignleft)}.  You can turn
1574 this feature off by setting @code{c-electric-pound-behavior} to
1575 @code{nil}.
1577 @vindex c-hanging-braces-alist
1578    The variable @code{c-hanging-braces-alist} controls the insertion of
1579 newlines before and after inserted braces.  It is an association list
1580 with elements of the following form: @code{(@var{syntactic-symbol}
1581 . @var{nl-list})}.  Most of the syntactic symbols that appear in
1582 @code{c-offsets-alist} are meaningful here as well.
1584    The list @var{nl-list} may contain either of the symbols
1585 @code{before} or @code{after}, or both; or it may be @code{nil}.  When a
1586 brace is inserted, the syntactic context it defines is looked up in
1587 @code{c-hanging-braces-alist}; if it is found, the @var{nl-list} is used
1588 to determine where newlines are inserted: either before the brace,
1589 after, or both.  If not found, the default is to insert a newline both
1590 before and after braces.
1592 @vindex c-hanging-colons-alist
1593    The variable @code{c-hanging-colons-alist} controls the insertion of
1594 newlines before and after inserted colons.  It is an association list
1595 with elements of the following form: @code{(@var{syntactic-symbol}
1596 . @var{nl-list})}.  The list @var{nl-list} may contain either of the
1597 symbols @code{before} or @code{after}, or both; or it may be @code{nil}.
1599    When a colon is inserted, the syntactic symbol it defines is looked
1600 up in this list, and if found, the @var{nl-list} is used to determine
1601 where newlines are inserted: either before the brace, after, or both.
1602 If the syntactic symbol is not found in this list, no newlines are
1603 inserted.
1605 @vindex c-cleanup-list
1606    Electric characters can also delete newlines automatically when the
1607 auto-newline feature is enabled.  This feature makes auto-newline more
1608 acceptable, by deleting the newlines in the most common cases where you
1609 do not want them.  Emacs can recognize several cases in which deleting a
1610 newline might be desirable; by setting the variable
1611 @code{c-cleanup-list}, you can specify @emph{which} of these cases that
1612 should happen.  The variable's value is a list of symbols, each
1613 describing one case for possible deletion of a newline.  Here are the
1614 meaningful symbols, and their meanings:
1616 @table @code
1617 @item brace-catch-brace
1618 Clean up @samp{@} catch (@var{condition}) @{} constructs by placing the
1619 entire construct on a single line.  The clean-up occurs when you type
1620 the @samp{@{}, if there is nothing between the braces aside from
1621 @code{catch} and @var{condition}.
1623 @item brace-else-brace
1624 Clean up @samp{@} else @{} constructs by placing the entire construct on
1625 a single line.  The clean-up occurs when you type the @samp{@{} after
1626 the @code{else}, but only if there is nothing but white space between
1627 the braces and the @code{else}.
1629 @item brace-elseif-brace
1630 Clean up @samp{@} else if (@dots{}) @{} constructs by placing the entire
1631 construct on a single line.  The clean-up occurs when you type the
1632 @samp{@{}, if there is nothing but white space between the @samp{@}} and
1633 @samp{@{} aside from the keywords and the @code{if}-condition.
1635 @item empty-defun-braces
1636 Clean up empty defun braces by placing the braces on the same
1637 line.  Clean-up occurs when you type the closing brace.
1639 @item defun-close-semi
1640 Clean up the semicolon after a @code{struct} or similar type
1641 declaration, by placing the semicolon on the same line as the closing
1642 brace.  Clean-up occurs when you type the semicolon.
1644 @item list-close-comma
1645 Clean up commas following braces in array and aggregate
1646 initializers.  Clean-up occurs when you type the comma.
1648 @item scope-operator
1649 Clean up double colons which may designate a C++ scope operator, by
1650 placing the colons together.  Clean-up occurs when you type the second
1651 colon, but only when the two colons are separated by nothing but
1652 whitespace.
1653 @end table
1655 @node Hungry Delete
1656 @subsection Hungry Delete Feature in C
1657 @cindex hungry deletion (C Mode)
1659   When the @dfn{hungry-delete} feature is enabled (indicated by
1660 @samp{/h} or @samp{/ah} in the mode line after the mode name), a single
1661 @key{DEL} command deletes all preceding whitespace, not just one space.
1662 To turn this feature on or off, use @kbd{C-c C-d}:
1664 @table @kbd
1665 @item C-c C-d
1666 @kindex C-c C-d @r{(C mode)}
1667 @findex c-toggle-hungry-state
1668 Toggle the hungry-delete feature (@code{c-toggle-hungry-state}).  With a
1669 prefix argument, this command turns the hungry-delete feature on if the
1670 argument is positive, and off if it is negative.
1672 @item C-c C-t
1673 @kindex C-c C-t @r{(C mode)}
1674 @findex c-toggle-auto-hungry-state
1675 Toggle the auto-newline and hungry-delete features, both at once
1676 (@code{c-toggle-auto-hungry-state}).
1677 @end table
1679 @vindex c-hungry-delete-key
1680    The variable @code{c-hungry-delete-key} controls whether the
1681 hungry-delete feature is enabled.
1683 @node Other C Commands
1684 @subsection Other Commands for C Mode
1686 @table @kbd
1687 @item M-x c-context-line-break
1688 @findex c-context-line-break
1689 This command inserts a line break and indents the new line in a manner
1690 appropriate to the context.  In normal code, it does the work of
1691 @kbd{C-j} (@code{newline-and-indent}), in a C preprocessor line it
1692 additionally inserts a @samp{\} at the line break, and within comments
1693 it's like @kbd{M-j} (@code{c-indent-new-comment-line}).
1695 @code{c-context-line-break} isn't bound to a key by default, but it
1696 needs a binding to be useful.  The following code will bind it to
1697 @kbd{C-j}.
1698 @example
1699 (define-key c-mode-base-map "\C-j" 'c-context-line-break)
1700 @end example
1702 @item C-M-h
1703 Put mark at the end of a function definition, and put point at the
1704 beginning (@code{c-mark-function}).
1706 @item M-q
1707 @kindex M-q @r{(C mode)}
1708 @findex c-fill-paragraph
1709 Fill a paragraph, handling C and C++ comments (@code{c-fill-paragraph}).
1710 If any part of the current line is a comment or within a comment, this
1711 command fills the comment or the paragraph of it that point is in,
1712 preserving the comment indentation and comment delimiters.
1714 @item C-c C-e
1715 @cindex macro expansion in C
1716 @cindex expansion of C macros
1717 @findex c-macro-expand
1718 @kindex C-c C-e @r{(C mode)}
1719 Run the C preprocessor on the text in the region, and show the result,
1720 which includes the expansion of all the macro calls
1721 (@code{c-macro-expand}).  The buffer text before the region is also
1722 included in preprocessing, for the sake of macros defined there, but the
1723 output from this part isn't shown.
1725 When you are debugging C code that uses macros, sometimes it is hard to
1726 figure out precisely how the macros expand.  With this command, you
1727 don't have to figure it out; you can see the expansions.
1729 @item C-c C-\
1730 @findex c-backslash-region
1731 @kindex C-c C-\ @r{(C mode)}
1732 Insert or align @samp{\} characters at the ends of the lines of the
1733 region (@code{c-backslash-region}).  This is useful after writing or
1734 editing a C macro definition.
1736 If a line already ends in @samp{\}, this command adjusts the amount of
1737 whitespace before it.  Otherwise, it inserts a new @samp{\}.  However,
1738 the last line in the region is treated specially; no @samp{\} is
1739 inserted on that line, and any @samp{\} there is deleted.
1741 @item M-x cpp-highlight-buffer
1742 @cindex preprocessor highlighting
1743 @findex cpp-highlight-buffer
1744 Highlight parts of the text according to its preprocessor conditionals.
1745 This command displays another buffer named @samp{*CPP Edit*}, which
1746 serves as a graphic menu for selecting how to display particular kinds
1747 of conditionals and their contents.  After changing various settings,
1748 click on @samp{[A]pply these settings} (or go to that buffer and type
1749 @kbd{a}) to rehighlight the C mode buffer accordingly.
1751 @item C-c C-s
1752 @findex c-show-syntactic-information
1753 @kindex C-c C-s @r{(C mode)}
1754 Display the syntactic information about the current source line
1755 (@code{c-show-syntactic-information}).  This information directs how
1756 the line is indented.
1758 @item M-x cwarn-mode
1759 @itemx M-x global-cwarn-mode
1760 @findex cwarn-mode
1761 @findex global-cwarn-mode
1762 @vindex global-cwarn-mode
1763 @cindex CWarn mode
1764 @cindex suspicious constructions in C, C++
1765 CWarn minor mode highlights certain suspicious C and C++ constructions:
1767 @itemize @bullet{}
1768 @item
1769 Assignments inside expressions.
1770 @item
1771 Semicolon following immediately after @samp{if}, @samp{for}, and @samp{while}
1772 (except after a @samp{do @dots{} while} statement);
1773 @item
1774 C++ functions with reference parameters.
1775 @end itemize
1777 @noindent
1778 You can enable the mode for one buffer with the command @kbd{M-x
1779 cwarn-mode}, or for all suitable buffers with the command @kbd{M-x
1780 global-cwarn-mode} or by customizing the variable
1781 @code{global-cwarn-mode}.  You must also enable Font Lock mode to make
1782 it work.
1784 @item M-x hide-ifdef-mode
1785 @findex hide-ifdef-mode
1786 @cindex Hide-ifdef mode
1787 Hide-ifdef minor mode hides selected code within @samp{#if} and
1788 @samp{#ifdef} preprocessor blocks.  See the documentation string of
1789 @code{hide-ifdef-mode} for more information.
1791 @item M-x ff-find-related-file
1792 @cindex related files
1793 @findex ff-find-related-file
1794 @vindex ff-related-file-alist
1795 Find a file ``related'' in a special way to the file visited by the
1796 current buffer.  Typically this will be the header file corresponding
1797 to a C/C++ source file, or vice versa.  The variable
1798 @code{ff-related-file-alist} specifies how to compute related file
1799 names.
1800 @end table
1802 @node Fortran
1803 @section Fortran Mode
1804 @cindex Fortran mode
1805 @cindex mode, Fortran
1807   Fortran mode provides special motion commands for Fortran statements
1808 and subprograms, and indentation commands that understand Fortran
1809 conventions of nesting, line numbers and continuation statements.
1810 Fortran mode has support for Auto Fill mode that breaks long lines into
1811 proper Fortran continuation lines.
1813   Special commands for comments are provided because Fortran comments
1814 are unlike those of other languages.  Built-in abbrevs optionally save
1815 typing when you insert Fortran keywords.
1817   Use @kbd{M-x fortran-mode} to switch to this major mode.  This command
1818 runs the hook @code{fortran-mode-hook} (@pxref{Hooks}).
1820 @cindex Fortran77 and Fortran90
1821 @findex f90-mode
1822 @findex fortran-mode
1823   Fortran mode is meant for editing Fortran77 ``fixed format'' (and also
1824 ``tab format'') source code.  For editing the modern Fortran90 or
1825 Fortran95 ``free format'' source code, use F90 mode (@code{f90-mode}).
1826 Emacs normally uses Fortran mode for files with extension @samp{.f},
1827 @samp{.F} or @samp{.for}, and F90 mode for the extension @samp{.f90} and
1828 @samp{.f95}.  GNU Fortran supports both kinds of format.
1830 @menu
1831 * Motion: Fortran Motion.        Moving point by statements or subprograms.
1832 * Indent: Fortran Indent.        Indentation commands for Fortran.
1833 * Comments: Fortran Comments.    Inserting and aligning comments.
1834 * Autofill: Fortran Autofill.    Auto fill support for Fortran.
1835 * Columns: Fortran Columns.      Measuring columns for valid Fortran.
1836 * Abbrev: Fortran Abbrev.        Built-in abbrevs for Fortran keywords.
1837 @end menu
1839 @node Fortran Motion
1840 @subsection Motion Commands
1842   In addition to the normal commands for moving by and operating on
1843 ``defuns'' (Fortran subprograms---functions and subroutines, as well as
1844 modules for F90 mode), Fortran mode provides special commands to move by
1845 statements and other program units.
1847 @table @kbd
1848 @kindex C-c C-n @r{(Fortran mode)}
1849 @findex fortran-next-statement
1850 @findex f90-next-statement
1851 @item C-c C-n
1852 Move to the beginning of the next statement
1853 (@code{fortran-next-statement}/@code{f90-next-statement}).
1855 @kindex C-c C-p @r{(Fortran mode)}
1856 @findex fortran-previous-statement
1857 @findex f90-previous-statement
1858 @item C-c C-p
1859 Move to the beginning of the previous statement
1860 (@code{fortran-previous-statement}/@code{f90-previous-statement}).
1861 If there is no previous statement (i.e. if called from the first
1862 statement in the buffer), move to the start of the buffer.
1864 @kindex C-c C-e @r{(F90 mode)}
1865 @findex f90-next-block
1866 @item C-c C-e
1867 Move point forward to the start of the next code block
1868 (@code{f90-next-block}).  A code block is a subroutine,
1869 @code{if}--@code{endif} statement, and so forth.  This command exists
1870 for F90 mode only, not Fortran mode.  With a numeric argument, this
1871 moves forward that many blocks.
1873 @kindex C-c C-a @r{(F90 mode)}
1874 @findex f90-previous-block
1875 @item C-c C-a
1876 Move point backward to the previous code block
1877 (@code{f90-previous-block}).  This is like @code{f90-next-block}, but
1878 moves backwards.
1880 @kindex C-M-n @r{(Fortran mode)}
1881 @findex fortran-end-of-block
1882 @findex f90-end-of-block
1883 @item C-M-n
1884 Move to the end of the current code block
1885 (@code{fortran-end-of-block}/@code{f90-end-of-block}).  With a numeric
1886 agument, move forward that number of blocks.  The mark is set before
1887 moving point.  The F90 mode version of this command checks for
1888 consistency of block types and labels (if present), but it does not
1889 check the outermost block since that may be incomplete.
1891 @kindex C-M-p @r{(Fortran mode)}
1892 @findex fortran-beginning-of-block
1893 @findex f90-beginning-of-block
1894 @item C-M-p
1895 Move to the start of the current code block
1896 (@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This
1897 is like @code{fortran-end-of-block}, but moves backwards.
1898 @end table
1900 @node Fortran Indent
1901 @subsection Fortran Indentation
1903   Special commands and features are needed for indenting Fortran code in
1904 order to make sure various syntactic entities (line numbers, comment line
1905 indicators and continuation line flags) appear in the columns that are
1906 required for standard, fixed (or tab) format Fortran.
1908 @menu
1909 * Commands: ForIndent Commands.  Commands for indenting and filling Fortran.
1910 * Contline: ForIndent Cont.      How continuation lines indent.
1911 * Numbers:  ForIndent Num.       How line numbers auto-indent.
1912 * Conv:     ForIndent Conv.      Conventions you must obey to avoid trouble.
1913 * Vars:     ForIndent Vars.      Variables controlling Fortran indent style.
1914 @end menu
1916 @node ForIndent Commands
1917 @subsubsection Fortran Indentation and Filling Commands
1919 @table @kbd
1920 @item C-M-j
1921 Break the current line at point and set up a continuation line
1922 (@code{fortran-split-line}).
1923 @item M-^
1924 Join this line to the previous line (@code{fortran-join-line}).
1925 @item C-M-q
1926 Indent all the lines of the subprogram point is in
1927 (@code{fortran-indent-subprogram}).
1928 @item M-q
1929 Fill a comment block or statement.
1930 @end table
1932 @kindex C-M-q @r{(Fortran mode)}
1933 @findex fortran-indent-subprogram
1934   The key @kbd{C-M-q} runs @code{fortran-indent-subprogram}, a command
1935 to reindent all the lines of the Fortran subprogram (function or
1936 subroutine) containing point.
1938 @kindex C-M-j @r{(Fortran mode)}
1939 @findex fortran-split-line
1940   The key @kbd{C-M-j} runs @code{fortran-split-line}, which splits
1941 a line in the appropriate fashion for Fortran.  In a non-comment line,
1942 the second half becomes a continuation line and is indented
1943 accordingly.  In a comment line, both halves become separate comment
1944 lines.
1946 @kindex M-^ @r{(Fortran mode)}
1947 @kindex C-c C-d @r{(Fortran mode)}
1948 @findex fortran-join-line
1949   @kbd{M-^} or @kbd{C-c C-d} runs the command @code{fortran-join-line},
1950 which joins a continuation line back to the previous line, roughly as
1951 the inverse of @code{fortran-split-line}.  The point must be on a
1952 continuation line when this command is invoked.
1954 @kindex M-q @r{(Fortran mode)}
1955 @kbd{M-q} in Fortran mode fills the comment block or statement that
1956 point is in.  This removes any excess statement continuations.
1958 @node ForIndent Cont
1959 @subsubsection Continuation Lines
1960 @cindex Fortran continuation lines
1962 @vindex fortran-continuation-string
1963   Most Fortran77 compilers allow two ways of writing continuation lines.
1964 If the first non-space character on a line is in column 5, then that
1965 line is a continuation of the previous line.  We call this @dfn{fixed
1966 format}.  (In GNU Emacs we always count columns from 0; but note that
1967 the Fortran standard counts from 1.)  The variable
1968 @code{fortran-continuation-string} specifies what character to put in
1969 column 5.  A line that starts with a tab character followed by any digit
1970 except @samp{0} is also a continuation line.  We call this style of
1971 continuation @dfn{tab format}.  (Fortran90 introduced ``free format'',
1972 with another style of continuation lines).
1974 @vindex indent-tabs-mode @r{(Fortran mode)}
1975 @vindex fortran-analyze-depth
1976 @vindex fortran-tab-mode-default
1977   Fortran mode can use either style of continuation line.  When you
1978 enter Fortran mode, it tries to deduce the proper continuation style
1979 automatically from the buffer contents.  It does this by scanning up to
1980 @code{fortran-analyze-depth} (default 100) lines from the start of the
1981 buffer.  The first line that begins with either a tab character or six
1982 spaces determines the choice.  If the scan fails (for example, if the
1983 buffer is new and therefore empty), the value of
1984 @code{fortran-tab-mode-default} (@code{nil} for fixed format, and
1985 non-@code{nil} for tab format) is used.  @samp{/t} in the mode line
1986 indicates tab format is selected.  Fortran mode sets the value of
1987 @code{indent-tabs-mode} accordingly (@pxref{Just Spaces}).
1989   If the text on a line starts with the Fortran continuation marker
1990 @samp{$}, or if it begins with any non-whitespace character in column
1991 5, Fortran mode treats it as a continuation line.  When you indent a
1992 continuation line with @key{TAB}, it converts the line to the current
1993 continuation style.  When you split a Fortran statement with
1994 @kbd{C-M-j}, the continuation marker on the newline is created according
1995 to the continuation style.
1997   The setting of continuation style affects several other aspects of
1998 editing in Fortran mode.  In fixed format mode, the minimum column
1999 number for the body of a statement is 6.  Lines inside of Fortran
2000 blocks that are indented to larger column numbers always use only the
2001 space character for whitespace.  In tab format mode, the minimum
2002 column number for the statement body is 8, and the whitespace before
2003 column 8 must always consist of one tab character.
2005 @node ForIndent Num
2006 @subsubsection Line Numbers
2008   If a number is the first non-whitespace in the line, Fortran
2009 indentation assumes it is a line number and moves it to columns 0
2010 through 4.  (Columns always count from 0 in GNU Emacs.)
2012 @vindex fortran-line-number-indent
2013   Line numbers of four digits or less are normally indented one space.
2014 The variable @code{fortran-line-number-indent} controls this; it
2015 specifies the maximum indentation a line number can have.  The default
2016 value of the variable is 1.  Fortran mode tries to prevent line number
2017 digits passing column 4, reducing the indentation below the specified
2018 maximum if necessary.  If @code{fortran-line-number-indent} has the
2019 value 5, line numbers are right-justified to end in column 4.
2021 @vindex fortran-electric-line-number
2022   Simply inserting a line number is enough to indent it according to
2023 these rules.  As each digit is inserted, the indentation is recomputed.
2024 To turn off this feature, set the variable
2025 @code{fortran-electric-line-number} to @code{nil}.  
2028 @node ForIndent Conv
2029 @subsubsection Syntactic Conventions
2031   Fortran mode assumes that you follow certain conventions that simplify
2032 the task of understanding a Fortran program well enough to indent it
2033 properly:
2035 @itemize @bullet
2036 @item
2037 Two nested @samp{do} loops never share a @samp{continue} statement.
2039 @item
2040 Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do}
2041 and others are written without embedded whitespace or line breaks.
2043 Fortran compilers generally ignore whitespace outside of string
2044 constants, but Fortran mode does not recognize these keywords if they
2045 are not contiguous.  Constructs such as @samp{else if} or @samp{end do}
2046 are acceptable, but the second word should be on the same line as the
2047 first and not on a continuation line.
2048 @end itemize
2050 @noindent
2051 If you fail to follow these conventions, the indentation commands may
2052 indent some lines unaesthetically.  However, a correct Fortran program
2053 retains its meaning when reindented even if the conventions are not
2054 followed.
2056 @node ForIndent Vars
2057 @subsubsection Variables for Fortran Indentation
2059 @vindex fortran-do-indent
2060 @vindex fortran-if-indent
2061 @vindex fortran-structure-indent
2062 @vindex fortran-continuation-indent
2063 @vindex fortran-check-all-num@dots{}
2064 @vindex fortran-minimum-statement-indent@dots{}
2065   Several additional variables control how Fortran indentation works:
2067 @table @code
2068 @item fortran-do-indent
2069 Extra indentation within each level of @samp{do} statement (default 3).
2071 @item fortran-if-indent
2072 Extra indentation within each level of @samp{if}, @samp{select case}, or
2073 @samp{where} statements (default 3).
2075 @item fortran-structure-indent
2076 Extra indentation within each level of @samp{structure}, @samp{union},
2077 @samp{map}, or @samp{interface} statements (default 3).
2079 @item fortran-continuation-indent
2080 Extra indentation for bodies of continuation lines (default 5).
2082 @item fortran-check-all-num-for-matching-do
2083 In Fortran77, a numbered @samp{do} statement is ended by any statement
2084 with a matching line number.  It is common (but not compulsory) to use a
2085 @samp{continue} statement for this purpose.  If this variable has a
2086 non-@code{nil} value, indenting any numbered statement must check for a
2087 @samp{do} that ends there.  If you always end @samp{do} statements with
2088 a @samp{continue} line (or if you use the more modern @samp{enddo}),
2089 then you can speed up indentation by setting this variable to
2090 @code{nil}.  The default is @code{nil}.
2092 @item fortran-blink-matching-if
2093 If this is @code{t}, indenting an @samp{endif} (or @samp{enddo}
2094 statement moves the cursor momentarily to the matching @samp{if} (or
2095 @samp{do}) statement to show where it is.  The default is @code{nil}.
2097 @item fortran-minimum-statement-indent-fixed
2098 Minimum indentation for Fortran statements when using fixed format
2099 continuation line style.  Statement bodies are never indented less than
2100 this much.  The default is 6.
2102 @item fortran-minimum-statement-indent-tab
2103 Minimum indentation for Fortran statements for tab format continuation line
2104 style.  Statement bodies are never indented less than this much.  The
2105 default is 8.
2106 @end table
2108 The variables controlling the indentation of comments are described in
2109 the following section.
2111 @node Fortran Comments
2112 @subsection Fortran Comments
2114   The usual Emacs comment commands assume that a comment can follow a
2115 line of code.  In Fortran77, the standard comment syntax requires an
2116 entire line to be just a comment.  Therefore, Fortran mode replaces the
2117 standard Emacs comment commands and defines some new variables.
2119 @vindex fortran-comment-line-start
2120   Fortran mode can also handle the Fortran90 comment syntax where comments
2121 start with @samp{!} and can follow other text.  Because only some Fortran77
2122 compilers accept this syntax, Fortran mode will not insert such comments
2123 unless you have said in advance to do so.  To do this, set the variable
2124 @code{fortran-comment-line-start} to @samp{"!"}.
2126 @table @kbd
2127 @item M-;
2128 Align comment or insert new comment (@code{fortran-indent-comment}).
2130 @item C-x ;
2131 Applies to nonstandard @samp{!} comments only.
2133 @item C-c ;
2134 Turn all lines of the region into comments, or (with argument) turn them back
2135 into real code (@code{fortran-comment-region}).
2136 @end table
2138 @findex fortran-indent-comment
2139   @kbd{M-;} in Fortran mode is redefined as the command
2140 @code{fortran-indent-comment}.  Like the usual @kbd{M-;} command, this
2141 recognizes any kind of existing comment and aligns its text appropriately;
2142 if there is no existing comment, a comment is inserted and aligned.  But
2143 inserting and aligning comments are not the same in Fortran mode as in
2144 other modes.
2146   When a new comment must be inserted, if the current line is blank, a
2147 full-line comment is inserted.  On a non-blank line, a nonstandard @samp{!}
2148 comment is inserted if you have said you want to use them.  Otherwise a
2149 full-line comment is inserted on a new line before the current line.
2151   Nonstandard @samp{!} comments are aligned like comments in other
2152 languages, but full-line comments are different.  In a standard full-line
2153 comment, the comment delimiter itself must always appear in column zero.
2154 What can be aligned is the text within the comment.  You can choose from
2155 three styles of alignment by setting the variable
2156 @code{fortran-comment-indent-style} to one of these values:
2158 @vindex fortran-comment-indent-style
2159 @vindex fortran-comment-line-extra-indent
2160 @table @code
2161 @item fixed
2162 Align the text at a fixed column, which is the sum of
2163 @code{fortran-comment-line-extra-indent} and the minimum statement
2164 indentation.  This is the default.
2166 The minimum statement indentation is
2167 @code{fortran-minimum-statement-indent-fixed} for fixed format
2168 continuation line style and @code{fortran-minimum-statement-indent-tab}
2169 for tab format style.
2171 @item relative
2172 Align the text as if it were a line of code, but with an additional
2173 @code{fortran-comment-line-extra-indent} columns of indentation.
2175 @item nil
2176 Don't move text in full-line comments automatically.
2177 @end table
2179 @vindex fortran-comment-indent-char
2180   In addition, you can specify the character to be used to indent within
2181 full-line comments by setting the variable
2182 @code{fortran-comment-indent-char} to the single-character string you want
2183 to use.
2185 @vindex fortran-directive-re
2186   Compiler directive lines, or preprocessor lines, have much the same
2187 appearance as comment lines.  It is important, though, that such lines
2188 never be indented at all, no matter what the value of
2189 @code{fortran-comment-indent-style}.  The variable
2190 @code{fortran-directive-re} is a regular expression that specifies which
2191 lines are directives.  Matching lines are never indented, and receive
2192 distinctive font-locking.
2194   The normal Emacs comment command @kbd{C-x ;} has not been redefined.  If
2195 you use @samp{!} comments, this command can be used with them.  Otherwise
2196 it is useless in Fortran mode.
2198 @kindex C-c ; @r{(Fortran mode)}
2199 @findex fortran-comment-region
2200 @vindex fortran-comment-region
2201   The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
2202 lines of the region into comments by inserting the string @samp{C$$$} at
2203 the front of each one.  With a numeric argument, it turns the region
2204 back into live code by deleting @samp{C$$$} from the front of each line
2205 in it.  The string used for these comments can be controlled by setting
2206 the variable @code{fortran-comment-region}.  Note that here we have an
2207 example of a command and a variable with the same name; these two uses
2208 of the name never conflict because in Lisp and in Emacs it is always
2209 clear from the context which one is meant.
2211 @node Fortran Autofill
2212 @subsection Auto Fill in Fortran Mode
2214   Fortran mode has specialized support for Auto Fill mode, which is a
2215 minor mode that automatically splits statements as you insert them when
2216 they become too wide.  Splitting a statement involves making
2217 continuation lines using @code{fortran-continuation-string}
2218 (@pxref{ForIndent Cont}).  This splitting happens when you type
2219 @key{SPC}, @key{RET}, or @key{TAB}, and also in the Fortran indentation
2220 commands.  You activate Auto Fill in Fortran mode in the normal way
2221 (@pxref{Auto Fill}).
2223 @vindex fortran-break-before-delimiters
2224    Auto Fill breaks lines at spaces or delimiters when the lines get
2225 longer than the desired width (the value of @code{fill-column}).  The
2226 delimiters (besides whitespace) that Auto Fill can break at are
2227 @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>},
2228 and @samp{,}.  The line break comes after the delimiter if the
2229 variable @code{fortran-break-before-delimiters} is @code{nil}.
2230 Otherwise (and by default), the break comes before the delimiter.
2232   To enable Auto Fill in all Fortran buffers, add
2233 @code{turn-on-auto-fill} to @code{fortran-mode-hook}.  @xref{Hooks}.
2235 @node Fortran Columns
2236 @subsection Checking Columns in Fortran
2238 @table @kbd
2239 @item C-c C-r
2240 Display a ``column ruler'' momentarily above the current line
2241 (@code{fortran-column-ruler}).
2242 @item C-c C-w
2243 Split the current window horizontally temporarily so that it is 72
2244 columns wide (@code{fortran-window-create-momentarily}).  This may
2245 help you avoid making lines longer than the 72-character limit that
2246 some Fortran compilers impose.
2247 @item C-u C-c C-w
2248 Split the current window horizontally so that it is 72 columns wide
2249 (@code{fortran-window-create}).  You can then continue editing.
2250 @item M-x fortran-strip-sequence-nos
2251 Delete all text in column 72 and beyond.
2252 @end table
2254 @kindex C-c C-r @r{(Fortran mode)}
2255 @findex fortran-column-ruler
2256   The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
2257 ruler momentarily above the current line.  The comment ruler is two lines
2258 of text that show you the locations of columns with special significance in
2259 Fortran programs.  Square brackets show the limits of the columns for line
2260 numbers, and curly brackets show the limits of the columns for the
2261 statement body.  Column numbers appear above them.
2263   Note that the column numbers count from zero, as always in GNU Emacs.
2264 As a result, the numbers may be one less than those you are familiar
2265 with; but the positions they indicate in the line are standard for
2266 Fortran.
2268 @vindex fortran-column-ruler-fixed
2269 @vindex fortran-column-ruler-tabs
2270   The text used to display the column ruler depends on the value of the
2271 variable @code{indent-tabs-mode}.  If @code{indent-tabs-mode} is
2272 @code{nil}, then the value of the variable
2273 @code{fortran-column-ruler-fixed} is used as the column ruler.
2274 Otherwise, the value of the variable @code{fortran-column-ruler-tab} is
2275 displayed.  By changing these variables, you can change the column ruler
2276 display.
2278 @kindex C-c C-w @r{(Fortran mode)}
2279 @findex fortran-window-create-momentarily
2280   @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily
2281 splits the current window horizontally, making a window 72 columns
2282 wide, so you can see any lines that are too long.  Type a space to
2283 restore the normal width.
2285 @kindex C-u C-c C-w @r{(Fortran mode)}
2286 @findex fortran-window-create
2287   You can also split the window horizontally and continue editing with
2288 the split in place.  To do this, use @kbd{C-u C-c C-w} (@code{M-x
2289 fortran-window-create}).  By editing in this window you can
2290 immediately see when you make a line too wide to be correct Fortran.
2292 @findex fortran-strip-sequence-nos
2293   The command @kbd{M-x fortran-strip-sequence-nos} deletes all text in
2294 column 72 and beyond, on all lines in the current buffer.  This is the
2295 easiest way to get rid of old sequence numbers.
2297 @node Fortran Abbrev
2298 @subsection Fortran Keyword Abbrevs
2300   Fortran mode provides many built-in abbrevs for common keywords and
2301 declarations.  These are the same sort of abbrev that you can define
2302 yourself.  To use them, you must turn on Abbrev mode.  @xref{Abbrevs}.
2304   The built-in abbrevs are unusual in one way: they all start with a
2305 semicolon.  You cannot normally use semicolon in an abbrev, but Fortran
2306 mode makes this possible by changing the syntax of semicolon to ``word
2307 constituent.''
2309   For example, one built-in Fortran abbrev is @samp{;c} for
2310 @samp{continue}.  If you insert @samp{;c} and then insert a punctuation
2311 character such as a space or a newline, the @samp{;c} expands automatically
2312 to @samp{continue}, provided Abbrev mode is enabled.@refill
2314   Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
2315 Fortran abbrevs and what they stand for.
2317 @node Asm Mode
2318 @section Asm Mode
2320 @cindex Asm mode
2321 @cindex assembler mode
2322 Asm mode is a major mode for editing files of assembler code.  It
2323 defines these commands:
2325 @table @kbd
2326 @item @key{TAB}
2327 @code{tab-to-tab-stop}.
2328 @item C-j
2329 Insert a newline and then indent using @code{tab-to-tab-stop}.
2330 @item :
2331 Insert a colon and then remove the indentation from before the label
2332 preceding colon.  Then do @code{tab-to-tab-stop}.
2333 @item ;
2334 Insert or align a comment.
2335 @end table
2337   The variable @code{asm-comment-char} specifies which character
2338 starts comments in assembler syntax.
2340 @ignore
2341    arch-tag: c7ee7409-40a4-45c7-bfb7-ae7f2c74d0c0
2342 @end ignore