]> code.delx.au - gnu-emacs/blob - man/programs.texi
(ForIndent Vars): `fortran-if-indent' does other constructs as well.
[gnu-emacs] / man / programs.texi
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
10
11 Emacs provides many features to facilitate editing programs. Some
12 of these features can
13
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
27
28 This chapter describes these features and many more.
29
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
47
48 @node Program Modes
49 @section Major Modes for Programming Languages
50 @cindex modes for programming languages
51
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.
58
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}.
66
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.
97
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.
108
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}).
113
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}.
127
128 @node Defuns
129 @section Top-Level Definitions, or Defuns
130
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.
134
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.
142
143 However, some language modes provide their own code for recognizing
144 defuns in a way that suits the language syntax and conventions better.
145
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
153
154 @node Left Margin Paren
155 @subsection Left Margin Convention
156
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.
167
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}).
173
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:
180
181 @example
182 (insert "Foo:
183 \(bar)
184 ")
185 @end example
186
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.
190
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.
200
201 @node Moving by Defuns
202 @subsection Moving by Defuns
203 @cindex defuns
204
205 These commands move point or set up the region based on top-level
206 major definitions, also called @dfn{defuns}.
207
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
217
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.
231
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.
240
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.
251
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.
260
261 @node Imenu
262 @subsection Imenu
263 @cindex index of buffer definitions
264 @cindex buffer definitions index
265 @cindex tags
266
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.)
272
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.
278
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.
289
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.
297
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.
304
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}).
313
314 @node Which Function
315 @subsection Which Function Mode
316 @cindex current function name in mode line
317
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.
321
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.
331
332 @node Program Indent
333 @section Indentation for Programs
334 @cindex indentation for programs
335
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.
340
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
348
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.
352
353 @node Basic Indent
354 @subsection Basic Program Indentation Commands
355
356 The basic indentation commands indent a single line according to the
357 usual conventions of the language you are editing.
358
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
367
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.
384
385 Use @kbd{C-q @key{TAB}} to insert a tab character at point.
386
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.
393
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.
401
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.
409
410 Normally, lines are indented with tabs and spaces. If you want Emacs
411 to use spaces only, see @ref{Just Spaces}.
412
413 @node Multi-line Indent
414 @subsection Indenting Several Lines
415
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.
419
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
432
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.
442
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.
447
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.
459
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.
467
468 @node Lisp Indent
469 @subsection Customizing Lisp Indentation
470 @cindex customizing Lisp indentation
471
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.
476
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.
482
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.
488
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.
495
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}).
502
503 @node C Indent
504 @subsection Commands for C Indentation
505
506 Here are special features for indentation in C mode and related modes:
507
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}).
514
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.
521
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}).
526
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.
530
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}).
535
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
539
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.
543
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.
546
547 @node Custom C Indent
548 @subsection Customizing C Indentation
549 @cindex style (for indentation)
550
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}.
557
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
562
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.
573
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-\}.
582
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,
589
590 @example
591 (setq c-default-style
592 '((java-mode . "java") (other . "gnu")))
593 @end example
594
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.
602
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.
606
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.
611
612 @node Parentheses
613 @section Commands for Editing with Parentheses
614
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.
620
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.
626
627 You can use @kbd{M-x check-parens} to find any unbalanced
628 parentheses and unbalanced string quotes in the buffer.
629
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
636
637 @node Expressions
638 @subsection Expressions with Balanced Parentheses
639
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.}.
646
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
660
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.
667
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.
674
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.
685
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.
693
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.
697
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.
704
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.
716
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.
728
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.
740
741 @node Moving by Parens
742 @subsection Moving in the Parenthesis Structure
743
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.
756
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
767
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.).
776
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.
787
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.
792
793 @node Matching
794 @subsection Automatic Display Of Matching Parentheses
795 @cindex matching parentheses
796 @cindex parentheses, displaying matches
797
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.
805
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.
808
809 @vindex blink-matching-paren
810 @vindex blink-matching-paren-distance
811 @vindex blink-matching-delay
812 Three variables control parenthesis match display:
813
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.
816
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.
821
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.
827
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.
838
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}.
844
845 @node Comments
846 @section Manipulating Comments
847 @cindex comments
848
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}).
853
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
859
860 @node Comment Commands
861 @subsection Comment Commands
862 @cindex indentation for comments
863
864 The comment commands in this table insert, kill and align comments.
865 They are described in this section and following sections.
866
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
883
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.
891
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.
899
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).
903
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.
910
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.
917
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.
923
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.
933
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.
941
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
950
951 In C code, a comment preceded on its line by nothing but whitespace
952 is indented like a line of code.
953
954 @node Multi-Line Comments
955 @subsection Multiple Lines of Comments
956
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.
970
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.
978
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.
987
988 @node Options for Comments
989 @subsection Options Controlling Comments
990
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.
1001
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.
1007
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}.)
1020
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{" */"}}.
1028
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.
1035
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.
1046
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.
1057
1058 @node Documentation
1059 @section Documentation Lookup
1060
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.
1064
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
1071
1072 @node Info Lookup
1073 @subsection Info Documentation Lookup
1074
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.
1084
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.
1089
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.
1094
1095 @node Man Page
1096 @subsection Man Page Lookup
1097
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.
1104
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.
1116
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}).
1128
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.
1139
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}.
1145
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.
1150
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.
1161
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.
1168
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.
1172
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.
1177
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.
1189
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.
1198
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.
1205
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.
1213
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}.
1217
1218 @node Lisp Doc
1219 @subsection Emacs Lisp Documentation Lookup
1220
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.
1230
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.
1241
1242 @node Hideshow
1243 @section Hideshow minor mode
1244
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.
1251
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.
1256
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
1288
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.
1293
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.
1297
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:
1301
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
1312
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
1318
1319 @node Symbol Completion
1320 @section Completion for Symbol Names
1321 @cindex completion (symbol names)
1322
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.
1326
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}.)
1334
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.
1339
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.
1353
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}.
1363
1364 In Text mode and related modes, @kbd{M-@key{TAB}} completes words
1365 based on the spell-checker's dictionary. @xref{Spelling}.
1366
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
1373
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.
1384
1385 @node Misc for Programs
1386 @section Other Features Useful for Editing Programs
1387
1388 A number of Emacs commands that aren't designed specifically for
1389 editing programs are useful for that nonetheless.
1390
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.
1402
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}).
1409
1410 The ``automatic typing'' features may be useful for writing programs.
1411 @xref{Top,,Autotyping, autotype, Autotyping}.
1412
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
1430
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.
1436
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
1444
1445 @node Motion in C
1446 @subsection C Mode Motion Commands
1447
1448 This section describes commands for moving point, in C mode and
1449 related modes.
1450
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}.
1463
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.
1471
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.
1475
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.
1482
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.
1489
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.
1497
1498 In comments or in strings which span more than one line, this command
1499 moves by sentences instead of statements.
1500
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}).
1507
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.
1515
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.
1518
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
1524
1525 @node Electric C
1526 @subsection Electric C Characters
1527
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{)}.
1534
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}:
1540
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
1549
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 :}:
1554
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
1569
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}.
1576
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.
1583
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.
1591
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}.
1598
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.
1604
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:
1615
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}.
1622
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}.
1628
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.
1634
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.
1638
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.
1643
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.
1647
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
1654
1655 @node Hungry Delete
1656 @subsection Hungry Delete Feature in C
1657 @cindex hungry deletion (C Mode)
1658
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}:
1663
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.
1671
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
1678
1679 @vindex c-hungry-delete-key
1680 The variable @code{c-hungry-delete-key} controls whether the
1681 hungry-delete feature is enabled.
1682
1683 @node Other C Commands
1684 @subsection Other Commands for C Mode
1685
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}).
1694
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
1701
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}).
1705
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.
1713
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.
1724
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.
1728
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.
1735
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.
1740
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.
1750
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.
1757
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:
1766
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
1776
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.
1783
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.
1790
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
1801
1802 @node Fortran
1803 @section Fortran Mode
1804 @cindex Fortran mode
1805 @cindex mode, Fortran
1806
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.
1812
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.
1816
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}).
1819
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.
1829
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
1838
1839 @node Fortran Motion
1840 @subsection Motion Commands
1841
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.
1846
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}).
1854
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.
1863
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.
1872
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.
1879
1880 @kindex C-M-n @r{(F90 mode)}
1881 @findex f90-end-of-block
1882 @item C-M-n
1883 Move to the end of the current code block (@code{f90-end-of-block}).
1884 This is for F90 mode only. With a numeric agument, move forward that
1885 number of blocks. This command checks for consistency of block types
1886 and labels (if present), but it does not check the outermost block
1887 since that may be incomplete. The mark is set before moving point.
1888
1889 @kindex C-M-p @r{(F90 mode)}
1890 @findex f90-beginning-of-block
1891 @item C-M-p
1892 Move to the start of the current code block
1893 (@code{f90-beginning-of-block}). This is like @code{f90-end-of-block},
1894 but moves backwards.
1895 @end table
1896
1897 @node Fortran Indent
1898 @subsection Fortran Indentation
1899
1900 Special commands and features are needed for indenting Fortran code in
1901 order to make sure various syntactic entities (line numbers, comment line
1902 indicators and continuation line flags) appear in the columns that are
1903 required for standard, fixed (or tab) format Fortran.
1904
1905 @menu
1906 * Commands: ForIndent Commands. Commands for indenting and filling Fortran.
1907 * Contline: ForIndent Cont. How continuation lines indent.
1908 * Numbers: ForIndent Num. How line numbers auto-indent.
1909 * Conv: ForIndent Conv. Conventions you must obey to avoid trouble.
1910 * Vars: ForIndent Vars. Variables controlling Fortran indent style.
1911 @end menu
1912
1913 @node ForIndent Commands
1914 @subsubsection Fortran Indentation and Filling Commands
1915
1916 @table @kbd
1917 @item C-M-j
1918 Break the current line at point and set up a continuation line
1919 (@code{fortran-split-line}).
1920 @item M-^
1921 Join this line to the previous line (@code{fortran-join-line}).
1922 @item C-M-q
1923 Indent all the lines of the subprogram point is in
1924 (@code{fortran-indent-subprogram}).
1925 @item M-q
1926 Fill a comment block or statement.
1927 @end table
1928
1929 @kindex C-M-q @r{(Fortran mode)}
1930 @findex fortran-indent-subprogram
1931 The key @kbd{C-M-q} runs @code{fortran-indent-subprogram}, a command
1932 to reindent all the lines of the Fortran subprogram (function or
1933 subroutine) containing point.
1934
1935 @kindex C-M-j @r{(Fortran mode)}
1936 @findex fortran-split-line
1937 The key @kbd{C-M-j} runs @code{fortran-split-line}, which splits
1938 a line in the appropriate fashion for Fortran. In a non-comment line,
1939 the second half becomes a continuation line and is indented
1940 accordingly. In a comment line, both halves become separate comment
1941 lines.
1942
1943 @kindex M-^ @r{(Fortran mode)}
1944 @kindex C-c C-d @r{(Fortran mode)}
1945 @findex fortran-join-line
1946 @kbd{M-^} or @kbd{C-c C-d} runs the command @code{fortran-join-line},
1947 which joins a continuation line back to the previous line, roughly as
1948 the inverse of @code{fortran-split-line}. The point must be on a
1949 continuation line when this command is invoked.
1950
1951 @kindex M-q @r{(Fortran mode)}
1952 @kbd{M-q} in Fortran mode fills the comment block or statement that
1953 point is in. This removes any excess statement continuations.
1954
1955 @node ForIndent Cont
1956 @subsubsection Continuation Lines
1957 @cindex Fortran continuation lines
1958
1959 @vindex fortran-continuation-string
1960 Most Fortran77 compilers allow two ways of writing continuation lines.
1961 If the first non-space character on a line is in column 5, then that
1962 line is a continuation of the previous line. We call this @dfn{fixed
1963 format}. (In GNU Emacs we always count columns from 0; but note that
1964 the Fortran standard counts from 1.) The variable
1965 @code{fortran-continuation-string} specifies what character to put in
1966 column 5. A line that starts with a tab character followed by any digit
1967 except @samp{0} is also a continuation line. We call this style of
1968 continuation @dfn{tab format}. (Fortran90 introduced ``free format'',
1969 with another style of continuation lines).
1970
1971 @vindex indent-tabs-mode @r{(Fortran mode)}
1972 @vindex fortran-analyze-depth
1973 @vindex fortran-tab-mode-default
1974 Fortran mode can use either style of continuation line. When you
1975 enter Fortran mode, it tries to deduce the proper continuation style
1976 automatically from the buffer contents. It does this by scanning up to
1977 @code{fortran-analyze-depth} (default 100) lines from the start of the
1978 buffer. The first line that begins with either a tab character or six
1979 spaces determines the choice. If the scan fails (for example, if the
1980 buffer is new and therefore empty), the value of
1981 @code{fortran-tab-mode-default} (@code{nil} for fixed format, and
1982 non-@code{nil} for tab format) is used. @samp{/t} in the mode line
1983 indicates tab format is selected. Fortran mode sets the value of
1984 @code{indent-tabs-mode} accordingly (@pxref{Just Spaces}).
1985
1986 If the text on a line starts with the Fortran continuation marker
1987 @samp{$}, or if it begins with any non-whitespace character in column
1988 5, Fortran mode treats it as a continuation line. When you indent a
1989 continuation line with @key{TAB}, it converts the line to the current
1990 continuation style. When you split a Fortran statement with
1991 @kbd{C-M-j}, the continuation marker on the newline is created according
1992 to the continuation style.
1993
1994 The setting of continuation style affects several other aspects of
1995 editing in Fortran mode. In fixed format mode, the minimum column
1996 number for the body of a statement is 6. Lines inside of Fortran
1997 blocks that are indented to larger column numbers always use only the
1998 space character for whitespace. In tab format mode, the minimum
1999 column number for the statement body is 8, and the whitespace before
2000 column 8 must always consist of one tab character.
2001
2002 @node ForIndent Num
2003 @subsubsection Line Numbers
2004
2005 If a number is the first non-whitespace in the line, Fortran
2006 indentation assumes it is a line number and moves it to columns 0
2007 through 4. (Columns always count from 0 in GNU Emacs.)
2008
2009 @vindex fortran-line-number-indent
2010 Line numbers of four digits or less are normally indented one space.
2011 The variable @code{fortran-line-number-indent} controls this; it
2012 specifies the maximum indentation a line number can have. The default
2013 value of the variable is 1. Fortran mode tries to prevent line number
2014 digits passing column 4, reducing the indentation below the specified
2015 maximum if necessary. If @code{fortran-line-number-indent} has the
2016 value 5, line numbers are right-justified to end in column 4.
2017
2018 @vindex fortran-electric-line-number
2019 Simply inserting a line number is enough to indent it according to
2020 these rules. As each digit is inserted, the indentation is recomputed.
2021 To turn off this feature, set the variable
2022 @code{fortran-electric-line-number} to @code{nil}.
2023
2024
2025 @node ForIndent Conv
2026 @subsubsection Syntactic Conventions
2027
2028 Fortran mode assumes that you follow certain conventions that simplify
2029 the task of understanding a Fortran program well enough to indent it
2030 properly:
2031
2032 @itemize @bullet
2033 @item
2034 Two nested @samp{do} loops never share a @samp{continue} statement.
2035
2036 @item
2037 Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do}
2038 and others are written without embedded whitespace or line breaks.
2039
2040 Fortran compilers generally ignore whitespace outside of string
2041 constants, but Fortran mode does not recognize these keywords if they
2042 are not contiguous. Constructs such as @samp{else if} or @samp{end do}
2043 are acceptable, but the second word should be on the same line as the
2044 first and not on a continuation line.
2045 @end itemize
2046
2047 @noindent
2048 If you fail to follow these conventions, the indentation commands may
2049 indent some lines unaesthetically. However, a correct Fortran program
2050 retains its meaning when reindented even if the conventions are not
2051 followed.
2052
2053 @node ForIndent Vars
2054 @subsubsection Variables for Fortran Indentation
2055
2056 @vindex fortran-do-indent
2057 @vindex fortran-if-indent
2058 @vindex fortran-structure-indent
2059 @vindex fortran-continuation-indent
2060 @vindex fortran-check-all-num@dots{}
2061 @vindex fortran-minimum-statement-indent@dots{}
2062 Several additional variables control how Fortran indentation works:
2063
2064 @table @code
2065 @item fortran-do-indent
2066 Extra indentation within each level of @samp{do} statement (default 3).
2067
2068 @item fortran-if-indent
2069 Extra indentation within each level of @samp{if}, @samp{select case}, or
2070 @samp{where} statements (default 3).
2071
2072 @item fortran-structure-indent
2073 Extra indentation within each level of @samp{structure}, @samp{union},
2074 @samp{map}, or @samp{interface} statements (default 3).
2075
2076 @item fortran-continuation-indent
2077 Extra indentation for bodies of continuation lines (default 5).
2078
2079 @item fortran-check-all-num-for-matching-do
2080 In Fortran77, a numbered @samp{do} statement is ended by any statement
2081 with a matching line number. It is common (but not compulsory) to use a
2082 @samp{continue} statement for this purpose. If this variable has a
2083 non-@code{nil} value, indenting any numbered statement must check for a
2084 @samp{do} that ends there. If you always end @samp{do} statements with
2085 a @samp{continue} line (or if you use the more modern @samp{enddo}),
2086 then you can speed up indentation by setting this variable to
2087 @code{nil}. The default is @code{nil}.
2088
2089 @item fortran-blink-matching-if
2090 If this is @code{t}, indenting an @samp{endif} (or @samp{enddo}
2091 statement moves the cursor momentarily to the matching @samp{if} (or
2092 @samp{do}) statement to show where it is. The default is @code{nil}.
2093
2094 @item fortran-minimum-statement-indent-fixed
2095 Minimum indentation for Fortran statements when using fixed format
2096 continuation line style. Statement bodies are never indented less than
2097 this much. The default is 6.
2098
2099 @item fortran-minimum-statement-indent-tab
2100 Minimum indentation for Fortran statements for tab format continuation line
2101 style. Statement bodies are never indented less than this much. The
2102 default is 8.
2103 @end table
2104
2105 The variables controlling the indentation of comments are described in
2106 the following section.
2107
2108 @node Fortran Comments
2109 @subsection Fortran Comments
2110
2111 The usual Emacs comment commands assume that a comment can follow a
2112 line of code. In Fortran77, the standard comment syntax requires an
2113 entire line to be just a comment. Therefore, Fortran mode replaces the
2114 standard Emacs comment commands and defines some new variables.
2115
2116 @vindex fortran-comment-line-start
2117 Fortran mode can also handle the Fortran90 comment syntax where comments
2118 start with @samp{!} and can follow other text. Because only some Fortran77
2119 compilers accept this syntax, Fortran mode will not insert such comments
2120 unless you have said in advance to do so. To do this, set the variable
2121 @code{fortran-comment-line-start} to @samp{"!"}.
2122
2123 @table @kbd
2124 @item M-;
2125 Align comment or insert new comment (@code{fortran-indent-comment}).
2126
2127 @item C-x ;
2128 Applies to nonstandard @samp{!} comments only.
2129
2130 @item C-c ;
2131 Turn all lines of the region into comments, or (with argument) turn them back
2132 into real code (@code{fortran-comment-region}).
2133 @end table
2134
2135 @findex fortran-indent-comment
2136 @kbd{M-;} in Fortran mode is redefined as the command
2137 @code{fortran-indent-comment}. Like the usual @kbd{M-;} command, this
2138 recognizes any kind of existing comment and aligns its text appropriately;
2139 if there is no existing comment, a comment is inserted and aligned. But
2140 inserting and aligning comments are not the same in Fortran mode as in
2141 other modes.
2142
2143 When a new comment must be inserted, if the current line is blank, a
2144 full-line comment is inserted. On a non-blank line, a nonstandard @samp{!}
2145 comment is inserted if you have said you want to use them. Otherwise a
2146 full-line comment is inserted on a new line before the current line.
2147
2148 Nonstandard @samp{!} comments are aligned like comments in other
2149 languages, but full-line comments are different. In a standard full-line
2150 comment, the comment delimiter itself must always appear in column zero.
2151 What can be aligned is the text within the comment. You can choose from
2152 three styles of alignment by setting the variable
2153 @code{fortran-comment-indent-style} to one of these values:
2154
2155 @vindex fortran-comment-indent-style
2156 @vindex fortran-comment-line-extra-indent
2157 @table @code
2158 @item fixed
2159 Align the text at a fixed column, which is the sum of
2160 @code{fortran-comment-line-extra-indent} and the minimum statement
2161 indentation. This is the default.
2162
2163 The minimum statement indentation is
2164 @code{fortran-minimum-statement-indent-fixed} for fixed format
2165 continuation line style and @code{fortran-minimum-statement-indent-tab}
2166 for tab format style.
2167
2168 @item relative
2169 Align the text as if it were a line of code, but with an additional
2170 @code{fortran-comment-line-extra-indent} columns of indentation.
2171
2172 @item nil
2173 Don't move text in full-line comments automatically.
2174 @end table
2175
2176 @vindex fortran-comment-indent-char
2177 In addition, you can specify the character to be used to indent within
2178 full-line comments by setting the variable
2179 @code{fortran-comment-indent-char} to the single-character string you want
2180 to use.
2181
2182 @vindex fortran-directive-re
2183 Compiler directive lines, or preprocessor lines, have much the same
2184 appearance as comment lines. It is important, though, that such lines
2185 never be indented at all, no matter what the value of
2186 @code{fortran-comment-indent-style}. The variable
2187 @code{fortran-directive-re} is a regular expression that specifies which
2188 lines are directives. Matching lines are never indented, and receive
2189 distinctive font-locking.
2190
2191 The normal Emacs comment command @kbd{C-x ;} has not been redefined. If
2192 you use @samp{!} comments, this command can be used with them. Otherwise
2193 it is useless in Fortran mode.
2194
2195 @kindex C-c ; @r{(Fortran mode)}
2196 @findex fortran-comment-region
2197 @vindex fortran-comment-region
2198 The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
2199 lines of the region into comments by inserting the string @samp{C$$$} at
2200 the front of each one. With a numeric argument, it turns the region
2201 back into live code by deleting @samp{C$$$} from the front of each line
2202 in it. The string used for these comments can be controlled by setting
2203 the variable @code{fortran-comment-region}. Note that here we have an
2204 example of a command and a variable with the same name; these two uses
2205 of the name never conflict because in Lisp and in Emacs it is always
2206 clear from the context which one is meant.
2207
2208 @node Fortran Autofill
2209 @subsection Auto Fill in Fortran Mode
2210
2211 Fortran mode has specialized support for Auto Fill mode, which is a
2212 minor mode that automatically splits statements as you insert them when
2213 they become too wide. Splitting a statement involves making
2214 continuation lines using @code{fortran-continuation-string}
2215 (@pxref{ForIndent Cont}). This splitting happens when you type
2216 @key{SPC}, @key{RET}, or @key{TAB}, and also in the Fortran indentation
2217 commands. You activate Auto Fill in Fortran mode in the normal way
2218 (@pxref{Auto Fill}).
2219
2220 @vindex fortran-break-before-delimiters
2221 Auto Fill breaks lines at spaces or delimiters when the lines get
2222 longer than the desired width (the value of @code{fill-column}). The
2223 delimiters (besides whitespace) that Auto Fill can break at are
2224 @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>},
2225 and @samp{,}. The line break comes after the delimiter if the
2226 variable @code{fortran-break-before-delimiters} is @code{nil}.
2227 Otherwise (and by default), the break comes before the delimiter.
2228
2229 To enable Auto Fill in all Fortran buffers, add
2230 @code{turn-on-auto-fill} to @code{fortran-mode-hook}. @xref{Hooks}.
2231
2232 @node Fortran Columns
2233 @subsection Checking Columns in Fortran
2234
2235 @table @kbd
2236 @item C-c C-r
2237 Display a ``column ruler'' momentarily above the current line
2238 (@code{fortran-column-ruler}).
2239 @item C-c C-w
2240 Split the current window horizontally temporarily so that it is 72
2241 columns wide (@code{fortran-window-create-momentarily}). This may
2242 help you avoid making lines longer than the 72-character limit that
2243 some Fortran compilers impose.
2244 @item C-u C-c C-w
2245 Split the current window horizontally so that it is 72 columns wide
2246 (@code{fortran-window-create}). You can then continue editing.
2247 @item M-x fortran-strip-sequence-nos
2248 Delete all text in column 72 and beyond.
2249 @end table
2250
2251 @kindex C-c C-r @r{(Fortran mode)}
2252 @findex fortran-column-ruler
2253 The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
2254 ruler momentarily above the current line. The comment ruler is two lines
2255 of text that show you the locations of columns with special significance in
2256 Fortran programs. Square brackets show the limits of the columns for line
2257 numbers, and curly brackets show the limits of the columns for the
2258 statement body. Column numbers appear above them.
2259
2260 Note that the column numbers count from zero, as always in GNU Emacs.
2261 As a result, the numbers may be one less than those you are familiar
2262 with; but the positions they indicate in the line are standard for
2263 Fortran.
2264
2265 @vindex fortran-column-ruler-fixed
2266 @vindex fortran-column-ruler-tabs
2267 The text used to display the column ruler depends on the value of the
2268 variable @code{indent-tabs-mode}. If @code{indent-tabs-mode} is
2269 @code{nil}, then the value of the variable
2270 @code{fortran-column-ruler-fixed} is used as the column ruler.
2271 Otherwise, the value of the variable @code{fortran-column-ruler-tab} is
2272 displayed. By changing these variables, you can change the column ruler
2273 display.
2274
2275 @kindex C-c C-w @r{(Fortran mode)}
2276 @findex fortran-window-create-momentarily
2277 @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily
2278 splits the current window horizontally, making a window 72 columns
2279 wide, so you can see any lines that are too long. Type a space to
2280 restore the normal width.
2281
2282 @kindex C-u C-c C-w @r{(Fortran mode)}
2283 @findex fortran-window-create
2284 You can also split the window horizontally and continue editing with
2285 the split in place. To do this, use @kbd{C-u C-c C-w} (@code{M-x
2286 fortran-window-create}). By editing in this window you can
2287 immediately see when you make a line too wide to be correct Fortran.
2288
2289 @findex fortran-strip-sequence-nos
2290 The command @kbd{M-x fortran-strip-sequence-nos} deletes all text in
2291 column 72 and beyond, on all lines in the current buffer. This is the
2292 easiest way to get rid of old sequence numbers.
2293
2294 @node Fortran Abbrev
2295 @subsection Fortran Keyword Abbrevs
2296
2297 Fortran mode provides many built-in abbrevs for common keywords and
2298 declarations. These are the same sort of abbrev that you can define
2299 yourself. To use them, you must turn on Abbrev mode. @xref{Abbrevs}.
2300
2301 The built-in abbrevs are unusual in one way: they all start with a
2302 semicolon. You cannot normally use semicolon in an abbrev, but Fortran
2303 mode makes this possible by changing the syntax of semicolon to ``word
2304 constituent.''
2305
2306 For example, one built-in Fortran abbrev is @samp{;c} for
2307 @samp{continue}. If you insert @samp{;c} and then insert a punctuation
2308 character such as a space or a newline, the @samp{;c} expands automatically
2309 to @samp{continue}, provided Abbrev mode is enabled.@refill
2310
2311 Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
2312 Fortran abbrevs and what they stand for.
2313
2314 @node Asm Mode
2315 @section Asm Mode
2316
2317 @cindex Asm mode
2318 @cindex assembler mode
2319 Asm mode is a major mode for editing files of assembler code. It
2320 defines these commands:
2321
2322 @table @kbd
2323 @item @key{TAB}
2324 @code{tab-to-tab-stop}.
2325 @item C-j
2326 Insert a newline and then indent using @code{tab-to-tab-stop}.
2327 @item :
2328 Insert a colon and then remove the indentation from before the label
2329 preceding colon. Then do @code{tab-to-tab-stop}.
2330 @item ;
2331 Insert or align a comment.
2332 @end table
2333
2334 The variable @code{asm-comment-char} specifies which character
2335 starts comments in assembler syntax.
2336
2337 @ignore
2338 arch-tag: c7ee7409-40a4-45c7-bfb7-ae7f2c74d0c0
2339 @end ignore