]> code.delx.au - gnu-emacs/blob - man/programs.texi
(Lisp Doc): Eldoc mode shows only the first line of a variable's docstring.
[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 first line of the variable's docstring. Eldoc mode applies
1239 in Emacs Lisp and Lisp Interaction modes, and perhaps a few others
1240 that provide special support for looking up doc strings. Use the
1241 command @kbd{M-x eldoc-mode} to enable or disable this feature.
1242
1243 @node Hideshow
1244 @section Hideshow minor mode
1245
1246 @findex hs-minor-mode
1247 Hideshow minor mode provides selective display of portions of a
1248 program, known as @dfn{blocks}. You can use @kbd{M-x hs-minor-mode}
1249 to enable or disable this mode, or add @code{hs-minor-mode} to the
1250 mode hook for certain major modes in order to enable it automatically
1251 for those modes.
1252
1253 Just what constitutes a block depends on the major mode. In C mode
1254 or C++ mode, they are delimited by braces, while in Lisp mode and
1255 similar modes they are delimited by parentheses. Multi-line comments
1256 also count as blocks.
1257
1258 @findex hs-hide-all
1259 @findex hs-hide-block
1260 @findex hs-show-all
1261 @findex hs-show-block
1262 @findex hs-show-region
1263 @findex hs-hide-level
1264 @findex hs-minor-mode
1265 @kindex C-c @@ C-h
1266 @kindex C-c @@ C-s
1267 @kindex C-c @@ C-M-h
1268 @kindex C-c @@ C-M-s
1269 @kindex C-c @@ C-r
1270 @kindex C-c @@ C-l
1271 @kindex S-Mouse-2
1272 @table @kbd
1273 @item C-c @@ C-h
1274 Hide the current block (@code{hs-hide-block}).
1275 @item C-c @@ C-s
1276 Show the current block (@code{hs-show-block}).
1277 @item C-c @@ C-c
1278 Either hide or show the current block (@code{hs-toggle-hiding}).
1279 @item S-Mouse-2
1280 Either hide or show the block you click on (@code{hs-mouse-toggle-hiding}).
1281 @item C-c @@ C-M-h
1282 Hide all top-level blocks (@code{hs-hide-all}).
1283 @item C-c @@ C-M-s
1284 Show everything in the buffer (@code{hs-show-all}).
1285 @item C-c @@ C-l
1286 Hide all blocks @var{n} levels below this block
1287 (@code{hs-hide-level}).
1288 @end table
1289
1290 @vindex hs-hide-comments-when-hiding-all
1291 @vindex hs-isearch-open
1292 @vindex hs-special-modes-alist
1293 These variables exist for customizing Hideshow mode.
1294
1295 @table @code
1296 @item hs-hide-comments-when-hiding-all
1297 Non-@code{nil} says that @kbd{hs-hide-all} should hide comments too.
1298
1299 @item hs-isearch-open
1300 Specifies what kind of hidden blocks to open in Isearch mode.
1301 The value should be one of these four symbols:
1302
1303 @table @code
1304 @item code
1305 Open only code blocks.
1306 @item comment
1307 Open only comments.
1308 @item t
1309 Open both code blocks and comments.
1310 @item nil
1311 Open neither code blocks nor comments.
1312 @end table
1313
1314 @item hs-special-modes-alist
1315 A list of elements, each specifying how to initialize Hideshow
1316 variables for one major mode. See the variable's documentation string
1317 for more information.
1318 @end table
1319
1320 @node Symbol Completion
1321 @section Completion for Symbol Names
1322 @cindex completion (symbol names)
1323
1324 In Emacs, completion is something you normally do in the minibuffer.
1325 But one kind of completion is available in all buffers: completion for
1326 symbol names.
1327
1328 @kindex M-TAB
1329 The character @kbd{M-@key{TAB}} runs a command to complete the
1330 partial symbol before point against the set of meaningful symbol
1331 names. This command inserts at point any additional characters that
1332 it can determine from the partial name. (If your window manager
1333 defines @kbd{M-@key{TAB}} to switch windows, you can type
1334 @kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.)
1335
1336 If the partial name in the buffer has multiple possible completions
1337 that differ in the very next character, so that it is impossible to
1338 complete even one more character, @kbd{M-@key{TAB}} displays a list of
1339 all possible completions in another window.
1340
1341 @cindex tags-based completion
1342 @cindex Info index completion
1343 @findex complete-symbol
1344 In most programming language major modes, @kbd{M-@key{TAB}} runs the
1345 command @code{complete-symbol}, which provides two kinds of completion.
1346 Normally it does completion based on a tags table (@pxref{Tags}); with a
1347 numeric argument (regardless of the value), it does completion based on
1348 the names listed in the Info file indexes for your language. Thus, to
1349 complete the name of a symbol defined in your own program, use
1350 @kbd{M-@key{TAB}} with no argument; to complete the name of a standard
1351 library function, use @kbd{C-u M-@key{TAB}}. Of course, Info-based
1352 completion works only if there is an Info file for the standard library
1353 functions of your language, and only if it is installed at your site.
1354
1355 @cindex Lisp symbol completion
1356 @cindex completion (Lisp symbols)
1357 @findex lisp-complete-symbol
1358 In Emacs-Lisp mode, the name space for completion normally consists of
1359 nontrivial symbols present in Emacs---those that have function
1360 definitions, values or properties. However, if there is an
1361 open-parenthesis immediately before the beginning of the partial symbol,
1362 only symbols with function definitions are considered as completions.
1363 The command which implements this is @code{lisp-complete-symbol}.
1364
1365 In Text mode and related modes, @kbd{M-@key{TAB}} completes words
1366 based on the spell-checker's dictionary. @xref{Spelling}.
1367
1368 @node Glasses
1369 @section Glasses minor mode
1370 @cindex Glasses mode
1371 @cindex identifiers, making long ones readable
1372 @cindex StudlyCaps, making them readable
1373 @findex glasses-mode
1374
1375 Glasses minor mode makes @samp{unreadableIdentifiersLikeThis}
1376 readable by altering the way they display. It knows two different
1377 ways to do this: by displaying underscores between a lower-case letter
1378 and the following capital letter, and by emboldening the capital
1379 letters. It does not alter the buffer text, only the way they
1380 display, so you can use it even on read-only buffers. You can use the
1381 command @kbd{M-x glasses-mode} to enable or disable the mode in the
1382 current buffer; you can also add @code{glasses-mode} to the mode hook
1383 of the programming language major modes in which you normally want
1384 to use Glasses mode.
1385
1386 @node Misc for Programs
1387 @section Other Features Useful for Editing Programs
1388
1389 A number of Emacs commands that aren't designed specifically for
1390 editing programs are useful for that nonetheless.
1391
1392 The Emacs commands that operate on words, sentences and paragraphs
1393 are useful for editing code. Most symbols names contain words
1394 (@pxref{Words}); sentences can be found in strings and comments
1395 (@pxref{Sentences}). Paragraphs in the strict sense can be found in
1396 program code (in long comments), but the paragraph commands are useful
1397 in other places too, because programming language major modes define
1398 paragraphs to begin and end at blank lines (@pxref{Paragraphs}).
1399 Judicious use of blank lines to make the program clearer will also
1400 provide useful chunks of text for the paragraph commands to work on.
1401 Auto Fill mode, if enabled in a programming language major mode,
1402 indents the new lines which it creates.
1403
1404 The selective display feature is useful for looking at the overall
1405 structure of a function (@pxref{Selective Display}). This feature
1406 hides the lines that are indented more than a specified amount.
1407 Programming modes often support Outline minor mode (@pxref{Outline
1408 Mode}). The Foldout package provides folding-editor features
1409 (@pxref{Foldout}).
1410
1411 The ``automatic typing'' features may be useful for writing programs.
1412 @xref{Top,,Autotyping, autotype, Autotyping}.
1413
1414 @node C Modes
1415 @section C and Related Modes
1416 @cindex C mode
1417 @cindex Java mode
1418 @cindex Pike mode
1419 @cindex IDL mode
1420 @cindex CORBA IDL mode
1421 @cindex Objective C mode
1422 @cindex C++ mode
1423 @cindex AWK mode
1424 @cindex mode, Java
1425 @cindex mode, C
1426 @cindex mode, C++
1427 @cindex mode, Objective C
1428 @cindex mode, CORBA IDL
1429 @cindex mode, Pike
1430 @cindex mode, AWK
1431
1432 This section gives a brief description of the special features
1433 available in C, C++, Objective-C, Java, CORBA IDL, Pike and AWK modes.
1434 (These are called ``C mode and related modes.'') @xref{Top, , CC Mode,
1435 ccmode, CC Mode}, for a more extensive description of these modes
1436 and their special features.
1437
1438 @menu
1439 * Motion in C:: Commands to move by C statements, etc.
1440 * Electric C:: Colon and other chars can automatically reindent.
1441 * Hungry Delete:: A more powerful DEL command.
1442 * Other C Commands:: Filling comments, viewing expansion of macros,
1443 and other neat features.
1444 @end menu
1445
1446 @node Motion in C
1447 @subsection C Mode Motion Commands
1448
1449 This section describes commands for moving point, in C mode and
1450 related modes.
1451
1452 @table @code
1453 @item M-x c-beginning-of-defun
1454 @itemx M-x c-end-of-defun
1455 @findex c-beginning-of-defun
1456 @findex c-end-of-defun
1457 Move point to the beginning or end of the current function or
1458 top-level definition. These are found by searching for the least
1459 enclosing braces. (By contrast, @code{beginning-of-defun} and
1460 @code{end-of-defun} search for braces in column zero.) If you are
1461 editing code where the opening brace of a function isn't placed in
1462 column zero, you may wish to bind @code{C-M-a} and @code{C-M-e} to
1463 these commands. @xref{Moving by Defuns}.
1464
1465 @item C-c C-u
1466 @kindex C-c C-u @r{(C mode)}
1467 @findex c-up-conditional
1468 Move point back to the containing preprocessor conditional, leaving the
1469 mark behind. A prefix argument acts as a repeat count. With a negative
1470 argument, move point forward to the end of the containing
1471 preprocessor conditional.
1472
1473 @samp{#elif} is equivalent to @samp{#else} followed by @samp{#if}, so
1474 the function will stop at a @samp{#elif} when going backward, but not
1475 when going forward.
1476
1477 @item C-c C-p
1478 @kindex C-c C-p @r{(C mode)}
1479 @findex c-backward-conditional
1480 Move point back over a preprocessor conditional, leaving the mark
1481 behind. A prefix argument acts as a repeat count. With a negative
1482 argument, move forward.
1483
1484 @item C-c C-n
1485 @kindex C-c C-n @r{(C mode)}
1486 @findex c-forward-conditional
1487 Move point forward across a preprocessor conditional, leaving the mark
1488 behind. A prefix argument acts as a repeat count. With a negative
1489 argument, move backward.
1490
1491 @item M-a
1492 @kindex M-a (C mode)
1493 @findex c-beginning-of-statement
1494 Move point to the beginning of the innermost C statement
1495 (@code{c-beginning-of-statement}). If point is already at the beginning
1496 of a statement, move to the beginning of the preceding statement. With
1497 prefix argument @var{n}, move back @var{n} @minus{} 1 statements.
1498
1499 In comments or in strings which span more than one line, this command
1500 moves by sentences instead of statements.
1501
1502 @item M-e
1503 @kindex M-e (C mode)
1504 @findex c-end-of-statement
1505 Move point to the end of the innermost C statement or sentence; like
1506 @kbd{M-a} except that it moves in the other direction
1507 (@code{c-end-of-statement}).
1508
1509 @item M-x c-backward-into-nomenclature
1510 @findex c-backward-into-nomenclature
1511 Move point backward to beginning of a C++ nomenclature section or word.
1512 With prefix argument @var{n}, move @var{n} times. If @var{n} is
1513 negative, move forward. C++ nomenclature means a symbol name in the
1514 style of NamingSymbolsWithMixedCaseAndNoUnderlines; each capital letter
1515 begins a section or word.
1516
1517 In the GNU project, we recommend using underscores to separate words
1518 within an identifier in C or C++, rather than using case distinctions.
1519
1520 @item M-x c-forward-into-nomenclature
1521 @findex c-forward-into-nomenclature
1522 Move point forward to end of a C++ nomenclature section or word.
1523 With prefix argument @var{n}, move @var{n} times.
1524 @end table
1525
1526 @node Electric C
1527 @subsection Electric C Characters
1528
1529 In C mode and related modes, certain printing characters are
1530 ``electric''---in addition to inserting themselves, they also reindent
1531 the current line, and optionally also insert newlines. The
1532 ``electric'' characters are @kbd{@{}, @kbd{@}}, @kbd{:}, @kbd{#},
1533 @kbd{;}, @kbd{,}, @kbd{<}, @kbd{>}, @kbd{/}, @kbd{*}, @kbd{(}, and
1534 @kbd{)}.
1535
1536 Electric characters insert newlines only when the @dfn{auto-newline}
1537 feature is enabled (indicated by @samp{/a} in the mode line after the
1538 mode name). This feature is controlled by the variable
1539 @code{c-auto-newline}. You can turn this feature on or off with the
1540 command @kbd{C-c C-a}:
1541
1542 @table @kbd
1543 @item C-c C-a
1544 @kindex C-c C-a @r{(C mode)}
1545 @findex c-toggle-auto-state
1546 Toggle the auto-newline feature (@code{c-toggle-auto-state}). With a
1547 prefix argument, this command turns the auto-newline feature on if the
1548 argument is positive, and off if it is negative.
1549 @end table
1550
1551 The colon character is electric because that is appropriate for a
1552 single colon. But when you want to insert a double colon in C++, the
1553 electric behavior of colon is inconvenient. You can insert a double
1554 colon with no reindentation or newlines by typing @kbd{C-c :}:
1555
1556 @table @kbd
1557 @item C-c :
1558 @ifinfo
1559 @c This uses ``colon'' instead of a literal `:' because Info cannot
1560 @c cope with a `:' in a menu
1561 @kindex C-c @key{colon} @r{(C mode)}
1562 @end ifinfo
1563 @ifnotinfo
1564 @kindex C-c : @r{(C mode)}
1565 @end ifnotinfo
1566 @findex c-scope-operator
1567 Insert a double colon scope operator at point, without reindenting the
1568 line or adding any newlines (@code{c-scope-operator}).
1569 @end table
1570
1571 @vindex c-electric-pound-behavior
1572 The electric @kbd{#} key reindents the line if it appears to be the
1573 beginning of a preprocessor directive. This happens when the value of
1574 @code{c-electric-pound-behavior} is @code{(alignleft)}. You can turn
1575 this feature off by setting @code{c-electric-pound-behavior} to
1576 @code{nil}.
1577
1578 @vindex c-hanging-braces-alist
1579 The variable @code{c-hanging-braces-alist} controls the insertion of
1580 newlines before and after inserted braces. It is an association list
1581 with elements of the following form: @code{(@var{syntactic-symbol}
1582 . @var{nl-list})}. Most of the syntactic symbols that appear in
1583 @code{c-offsets-alist} are meaningful here as well.
1584
1585 The list @var{nl-list} may contain either of the symbols
1586 @code{before} or @code{after}, or both; or it may be @code{nil}. When a
1587 brace is inserted, the syntactic context it defines is looked up in
1588 @code{c-hanging-braces-alist}; if it is found, the @var{nl-list} is used
1589 to determine where newlines are inserted: either before the brace,
1590 after, or both. If not found, the default is to insert a newline both
1591 before and after braces.
1592
1593 @vindex c-hanging-colons-alist
1594 The variable @code{c-hanging-colons-alist} controls the insertion of
1595 newlines before and after inserted colons. It is an association list
1596 with elements of the following form: @code{(@var{syntactic-symbol}
1597 . @var{nl-list})}. The list @var{nl-list} may contain either of the
1598 symbols @code{before} or @code{after}, or both; or it may be @code{nil}.
1599
1600 When a colon is inserted, the syntactic symbol it defines is looked
1601 up in this list, and if found, the @var{nl-list} is used to determine
1602 where newlines are inserted: either before the brace, after, or both.
1603 If the syntactic symbol is not found in this list, no newlines are
1604 inserted.
1605
1606 @vindex c-cleanup-list
1607 Electric characters can also delete newlines automatically when the
1608 auto-newline feature is enabled. This feature makes auto-newline more
1609 acceptable, by deleting the newlines in the most common cases where you
1610 do not want them. Emacs can recognize several cases in which deleting a
1611 newline might be desirable; by setting the variable
1612 @code{c-cleanup-list}, you can specify @emph{which} of these cases that
1613 should happen. The variable's value is a list of symbols, each
1614 describing one case for possible deletion of a newline. Here are the
1615 meaningful symbols, and their meanings:
1616
1617 @table @code
1618 @item brace-catch-brace
1619 Clean up @samp{@} catch (@var{condition}) @{} constructs by placing the
1620 entire construct on a single line. The clean-up occurs when you type
1621 the @samp{@{}, if there is nothing between the braces aside from
1622 @code{catch} and @var{condition}.
1623
1624 @item brace-else-brace
1625 Clean up @samp{@} else @{} constructs by placing the entire construct on
1626 a single line. The clean-up occurs when you type the @samp{@{} after
1627 the @code{else}, but only if there is nothing but white space between
1628 the braces and the @code{else}.
1629
1630 @item brace-elseif-brace
1631 Clean up @samp{@} else if (@dots{}) @{} constructs by placing the entire
1632 construct on a single line. The clean-up occurs when you type the
1633 @samp{@{}, if there is nothing but white space between the @samp{@}} and
1634 @samp{@{} aside from the keywords and the @code{if}-condition.
1635
1636 @item empty-defun-braces
1637 Clean up empty defun braces by placing the braces on the same
1638 line. Clean-up occurs when you type the closing brace.
1639
1640 @item defun-close-semi
1641 Clean up the semicolon after a @code{struct} or similar type
1642 declaration, by placing the semicolon on the same line as the closing
1643 brace. Clean-up occurs when you type the semicolon.
1644
1645 @item list-close-comma
1646 Clean up commas following braces in array and aggregate
1647 initializers. Clean-up occurs when you type the comma.
1648
1649 @item scope-operator
1650 Clean up double colons which may designate a C++ scope operator, by
1651 placing the colons together. Clean-up occurs when you type the second
1652 colon, but only when the two colons are separated by nothing but
1653 whitespace.
1654 @end table
1655
1656 @node Hungry Delete
1657 @subsection Hungry Delete Feature in C
1658 @cindex hungry deletion (C Mode)
1659
1660 When the @dfn{hungry-delete} feature is enabled (indicated by
1661 @samp{/h} or @samp{/ah} in the mode line after the mode name), a single
1662 @key{DEL} command deletes all preceding whitespace, not just one space.
1663 To turn this feature on or off, use @kbd{C-c C-d}:
1664
1665 @table @kbd
1666 @item C-c C-d
1667 @kindex C-c C-d @r{(C mode)}
1668 @findex c-toggle-hungry-state
1669 Toggle the hungry-delete feature (@code{c-toggle-hungry-state}). With a
1670 prefix argument, this command turns the hungry-delete feature on if the
1671 argument is positive, and off if it is negative.
1672
1673 @item C-c C-t
1674 @kindex C-c C-t @r{(C mode)}
1675 @findex c-toggle-auto-hungry-state
1676 Toggle the auto-newline and hungry-delete features, both at once
1677 (@code{c-toggle-auto-hungry-state}).
1678 @end table
1679
1680 @vindex c-hungry-delete-key
1681 The variable @code{c-hungry-delete-key} controls whether the
1682 hungry-delete feature is enabled.
1683
1684 @node Other C Commands
1685 @subsection Other Commands for C Mode
1686
1687 @table @kbd
1688 @item M-x c-context-line-break
1689 @findex c-context-line-break
1690 This command inserts a line break and indents the new line in a manner
1691 appropriate to the context. In normal code, it does the work of
1692 @kbd{C-j} (@code{newline-and-indent}), in a C preprocessor line it
1693 additionally inserts a @samp{\} at the line break, and within comments
1694 it's like @kbd{M-j} (@code{c-indent-new-comment-line}).
1695
1696 @code{c-context-line-break} isn't bound to a key by default, but it
1697 needs a binding to be useful. The following code will bind it to
1698 @kbd{C-j}.
1699 @example
1700 (define-key c-mode-base-map "\C-j" 'c-context-line-break)
1701 @end example
1702
1703 @item C-M-h
1704 Put mark at the end of a function definition, and put point at the
1705 beginning (@code{c-mark-function}).
1706
1707 @item M-q
1708 @kindex M-q @r{(C mode)}
1709 @findex c-fill-paragraph
1710 Fill a paragraph, handling C and C++ comments (@code{c-fill-paragraph}).
1711 If any part of the current line is a comment or within a comment, this
1712 command fills the comment or the paragraph of it that point is in,
1713 preserving the comment indentation and comment delimiters.
1714
1715 @item C-c C-e
1716 @cindex macro expansion in C
1717 @cindex expansion of C macros
1718 @findex c-macro-expand
1719 @kindex C-c C-e @r{(C mode)}
1720 Run the C preprocessor on the text in the region, and show the result,
1721 which includes the expansion of all the macro calls
1722 (@code{c-macro-expand}). The buffer text before the region is also
1723 included in preprocessing, for the sake of macros defined there, but the
1724 output from this part isn't shown.
1725
1726 When you are debugging C code that uses macros, sometimes it is hard to
1727 figure out precisely how the macros expand. With this command, you
1728 don't have to figure it out; you can see the expansions.
1729
1730 @item C-c C-\
1731 @findex c-backslash-region
1732 @kindex C-c C-\ @r{(C mode)}
1733 Insert or align @samp{\} characters at the ends of the lines of the
1734 region (@code{c-backslash-region}). This is useful after writing or
1735 editing a C macro definition.
1736
1737 If a line already ends in @samp{\}, this command adjusts the amount of
1738 whitespace before it. Otherwise, it inserts a new @samp{\}. However,
1739 the last line in the region is treated specially; no @samp{\} is
1740 inserted on that line, and any @samp{\} there is deleted.
1741
1742 @item M-x cpp-highlight-buffer
1743 @cindex preprocessor highlighting
1744 @findex cpp-highlight-buffer
1745 Highlight parts of the text according to its preprocessor conditionals.
1746 This command displays another buffer named @samp{*CPP Edit*}, which
1747 serves as a graphic menu for selecting how to display particular kinds
1748 of conditionals and their contents. After changing various settings,
1749 click on @samp{[A]pply these settings} (or go to that buffer and type
1750 @kbd{a}) to rehighlight the C mode buffer accordingly.
1751
1752 @item C-c C-s
1753 @findex c-show-syntactic-information
1754 @kindex C-c C-s @r{(C mode)}
1755 Display the syntactic information about the current source line
1756 (@code{c-show-syntactic-information}). This information directs how
1757 the line is indented.
1758
1759 @item M-x cwarn-mode
1760 @itemx M-x global-cwarn-mode
1761 @findex cwarn-mode
1762 @findex global-cwarn-mode
1763 @vindex global-cwarn-mode
1764 @cindex CWarn mode
1765 @cindex suspicious constructions in C, C++
1766 CWarn minor mode highlights certain suspicious C and C++ constructions:
1767
1768 @itemize @bullet{}
1769 @item
1770 Assignments inside expressions.
1771 @item
1772 Semicolon following immediately after @samp{if}, @samp{for}, and @samp{while}
1773 (except after a @samp{do @dots{} while} statement);
1774 @item
1775 C++ functions with reference parameters.
1776 @end itemize
1777
1778 @noindent
1779 You can enable the mode for one buffer with the command @kbd{M-x
1780 cwarn-mode}, or for all suitable buffers with the command @kbd{M-x
1781 global-cwarn-mode} or by customizing the variable
1782 @code{global-cwarn-mode}. You must also enable Font Lock mode to make
1783 it work.
1784
1785 @item M-x hide-ifdef-mode
1786 @findex hide-ifdef-mode
1787 @cindex Hide-ifdef mode
1788 Hide-ifdef minor mode hides selected code within @samp{#if} and
1789 @samp{#ifdef} preprocessor blocks. See the documentation string of
1790 @code{hide-ifdef-mode} for more information.
1791
1792 @item M-x ff-find-related-file
1793 @cindex related files
1794 @findex ff-find-related-file
1795 @vindex ff-related-file-alist
1796 Find a file ``related'' in a special way to the file visited by the
1797 current buffer. Typically this will be the header file corresponding
1798 to a C/C++ source file, or vice versa. The variable
1799 @code{ff-related-file-alist} specifies how to compute related file
1800 names.
1801 @end table
1802
1803 @node Fortran
1804 @section Fortran Mode
1805 @cindex Fortran mode
1806 @cindex mode, Fortran
1807
1808 Fortran mode provides special motion commands for Fortran statements
1809 and subprograms, and indentation commands that understand Fortran
1810 conventions of nesting, line numbers and continuation statements.
1811 Fortran mode has support for Auto Fill mode that breaks long lines into
1812 proper Fortran continuation lines.
1813
1814 Special commands for comments are provided because Fortran comments
1815 are unlike those of other languages. Built-in abbrevs optionally save
1816 typing when you insert Fortran keywords.
1817
1818 Use @kbd{M-x fortran-mode} to switch to this major mode. This command
1819 runs the hook @code{fortran-mode-hook} (@pxref{Hooks}).
1820
1821 @cindex Fortran77 and Fortran90
1822 @findex f90-mode
1823 @findex fortran-mode
1824 Fortran mode is meant for editing Fortran77 ``fixed format'' (and also
1825 ``tab format'') source code. For editing the modern Fortran90 or
1826 Fortran95 ``free format'' source code, use F90 mode (@code{f90-mode}).
1827 Emacs normally uses Fortran mode for files with extension @samp{.f},
1828 @samp{.F} or @samp{.for}, and F90 mode for the extension @samp{.f90} and
1829 @samp{.f95}. GNU Fortran supports both kinds of format.
1830
1831 @menu
1832 * Motion: Fortran Motion. Moving point by statements or subprograms.
1833 * Indent: Fortran Indent. Indentation commands for Fortran.
1834 * Comments: Fortran Comments. Inserting and aligning comments.
1835 * Autofill: Fortran Autofill. Auto fill support for Fortran.
1836 * Columns: Fortran Columns. Measuring columns for valid Fortran.
1837 * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords.
1838 @end menu
1839
1840 @node Fortran Motion
1841 @subsection Motion Commands
1842
1843 In addition to the normal commands for moving by and operating on
1844 ``defuns'' (Fortran subprograms---functions and subroutines, as well as
1845 modules for F90 mode), Fortran mode provides special commands to move by
1846 statements and other program units.
1847
1848 @table @kbd
1849 @kindex C-c C-n @r{(Fortran mode)}
1850 @findex fortran-next-statement
1851 @findex f90-next-statement
1852 @item C-c C-n
1853 Move to the beginning of the next statement
1854 (@code{fortran-next-statement}/@code{f90-next-statement}).
1855
1856 @kindex C-c C-p @r{(Fortran mode)}
1857 @findex fortran-previous-statement
1858 @findex f90-previous-statement
1859 @item C-c C-p
1860 Move to the beginning of the previous statement
1861 (@code{fortran-previous-statement}/@code{f90-previous-statement}).
1862 If there is no previous statement (i.e. if called from the first
1863 statement in the buffer), move to the start of the buffer.
1864
1865 @kindex C-c C-e @r{(F90 mode)}
1866 @findex f90-next-block
1867 @item C-c C-e
1868 Move point forward to the start of the next code block
1869 (@code{f90-next-block}). A code block is a subroutine,
1870 @code{if}--@code{endif} statement, and so forth. This command exists
1871 for F90 mode only, not Fortran mode. With a numeric argument, this
1872 moves forward that many blocks.
1873
1874 @kindex C-c C-a @r{(F90 mode)}
1875 @findex f90-previous-block
1876 @item C-c C-a
1877 Move point backward to the previous code block
1878 (@code{f90-previous-block}). This is like @code{f90-next-block}, but
1879 moves backwards.
1880
1881 @kindex C-M-n @r{(Fortran mode)}
1882 @findex fortran-end-of-block
1883 @findex f90-end-of-block
1884 @item C-M-n
1885 Move to the end of the current code block
1886 (@code{fortran-end-of-block}/@code{f90-end-of-block}). With a numeric
1887 agument, move forward that number of blocks. The mark is set before
1888 moving point. The F90 mode version of this command checks for
1889 consistency of block types and labels (if present), but it does not
1890 check the outermost block since that may be incomplete.
1891
1892 @kindex C-M-p @r{(Fortran mode)}
1893 @findex fortran-beginning-of-block
1894 @findex f90-beginning-of-block
1895 @item C-M-p
1896 Move to the start of the current code block
1897 (@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This
1898 is like @code{fortran-end-of-block}, but moves backwards.
1899 @end table
1900
1901 @node Fortran Indent
1902 @subsection Fortran Indentation
1903
1904 Special commands and features are needed for indenting Fortran code in
1905 order to make sure various syntactic entities (line numbers, comment line
1906 indicators and continuation line flags) appear in the columns that are
1907 required for standard, fixed (or tab) format Fortran.
1908
1909 @menu
1910 * Commands: ForIndent Commands. Commands for indenting and filling Fortran.
1911 * Contline: ForIndent Cont. How continuation lines indent.
1912 * Numbers: ForIndent Num. How line numbers auto-indent.
1913 * Conv: ForIndent Conv. Conventions you must obey to avoid trouble.
1914 * Vars: ForIndent Vars. Variables controlling Fortran indent style.
1915 @end menu
1916
1917 @node ForIndent Commands
1918 @subsubsection Fortran Indentation and Filling Commands
1919
1920 @table @kbd
1921 @item C-M-j
1922 Break the current line at point and set up a continuation line
1923 (@code{fortran-split-line}).
1924 @item M-^
1925 Join this line to the previous line (@code{fortran-join-line}).
1926 @item C-M-q
1927 Indent all the lines of the subprogram point is in
1928 (@code{fortran-indent-subprogram}).
1929 @item M-q
1930 Fill a comment block or statement.
1931 @end table
1932
1933 @kindex C-M-q @r{(Fortran mode)}
1934 @findex fortran-indent-subprogram
1935 The key @kbd{C-M-q} runs @code{fortran-indent-subprogram}, a command
1936 to reindent all the lines of the Fortran subprogram (function or
1937 subroutine) containing point.
1938
1939 @kindex C-M-j @r{(Fortran mode)}
1940 @findex fortran-split-line
1941 The key @kbd{C-M-j} runs @code{fortran-split-line}, which splits
1942 a line in the appropriate fashion for Fortran. In a non-comment line,
1943 the second half becomes a continuation line and is indented
1944 accordingly. In a comment line, both halves become separate comment
1945 lines.
1946
1947 @kindex M-^ @r{(Fortran mode)}
1948 @kindex C-c C-d @r{(Fortran mode)}
1949 @findex fortran-join-line
1950 @kbd{M-^} or @kbd{C-c C-d} runs the command @code{fortran-join-line},
1951 which joins a continuation line back to the previous line, roughly as
1952 the inverse of @code{fortran-split-line}. The point must be on a
1953 continuation line when this command is invoked.
1954
1955 @kindex M-q @r{(Fortran mode)}
1956 @kbd{M-q} in Fortran mode fills the comment block or statement that
1957 point is in. This removes any excess statement continuations.
1958
1959 @node ForIndent Cont
1960 @subsubsection Continuation Lines
1961 @cindex Fortran continuation lines
1962
1963 @vindex fortran-continuation-string
1964 Most Fortran77 compilers allow two ways of writing continuation lines.
1965 If the first non-space character on a line is in column 5, then that
1966 line is a continuation of the previous line. We call this @dfn{fixed
1967 format}. (In GNU Emacs we always count columns from 0; but note that
1968 the Fortran standard counts from 1.) The variable
1969 @code{fortran-continuation-string} specifies what character to put in
1970 column 5. A line that starts with a tab character followed by any digit
1971 except @samp{0} is also a continuation line. We call this style of
1972 continuation @dfn{tab format}. (Fortran90 introduced ``free format'',
1973 with another style of continuation lines).
1974
1975 @vindex indent-tabs-mode @r{(Fortran mode)}
1976 @vindex fortran-analyze-depth
1977 @vindex fortran-tab-mode-default
1978 Fortran mode can use either style of continuation line. When you
1979 enter Fortran mode, it tries to deduce the proper continuation style
1980 automatically from the buffer contents. It does this by scanning up to
1981 @code{fortran-analyze-depth} (default 100) lines from the start of the
1982 buffer. The first line that begins with either a tab character or six
1983 spaces determines the choice. If the scan fails (for example, if the
1984 buffer is new and therefore empty), the value of
1985 @code{fortran-tab-mode-default} (@code{nil} for fixed format, and
1986 non-@code{nil} for tab format) is used. @samp{/t} in the mode line
1987 indicates tab format is selected. Fortran mode sets the value of
1988 @code{indent-tabs-mode} accordingly (@pxref{Just Spaces}).
1989
1990 If the text on a line starts with the Fortran continuation marker
1991 @samp{$}, or if it begins with any non-whitespace character in column
1992 5, Fortran mode treats it as a continuation line. When you indent a
1993 continuation line with @key{TAB}, it converts the line to the current
1994 continuation style. When you split a Fortran statement with
1995 @kbd{C-M-j}, the continuation marker on the newline is created according
1996 to the continuation style.
1997
1998 The setting of continuation style affects several other aspects of
1999 editing in Fortran mode. In fixed format mode, the minimum column
2000 number for the body of a statement is 6. Lines inside of Fortran
2001 blocks that are indented to larger column numbers always use only the
2002 space character for whitespace. In tab format mode, the minimum
2003 column number for the statement body is 8, and the whitespace before
2004 column 8 must always consist of one tab character.
2005
2006 @node ForIndent Num
2007 @subsubsection Line Numbers
2008
2009 If a number is the first non-whitespace in the line, Fortran
2010 indentation assumes it is a line number and moves it to columns 0
2011 through 4. (Columns always count from 0 in GNU Emacs.)
2012
2013 @vindex fortran-line-number-indent
2014 Line numbers of four digits or less are normally indented one space.
2015 The variable @code{fortran-line-number-indent} controls this; it
2016 specifies the maximum indentation a line number can have. The default
2017 value of the variable is 1. Fortran mode tries to prevent line number
2018 digits passing column 4, reducing the indentation below the specified
2019 maximum if necessary. If @code{fortran-line-number-indent} has the
2020 value 5, line numbers are right-justified to end in column 4.
2021
2022 @vindex fortran-electric-line-number
2023 Simply inserting a line number is enough to indent it according to
2024 these rules. As each digit is inserted, the indentation is recomputed.
2025 To turn off this feature, set the variable
2026 @code{fortran-electric-line-number} to @code{nil}.
2027
2028
2029 @node ForIndent Conv
2030 @subsubsection Syntactic Conventions
2031
2032 Fortran mode assumes that you follow certain conventions that simplify
2033 the task of understanding a Fortran program well enough to indent it
2034 properly:
2035
2036 @itemize @bullet
2037 @item
2038 Two nested @samp{do} loops never share a @samp{continue} statement.
2039
2040 @item
2041 Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do}
2042 and others are written without embedded whitespace or line breaks.
2043
2044 Fortran compilers generally ignore whitespace outside of string
2045 constants, but Fortran mode does not recognize these keywords if they
2046 are not contiguous. Constructs such as @samp{else if} or @samp{end do}
2047 are acceptable, but the second word should be on the same line as the
2048 first and not on a continuation line.
2049 @end itemize
2050
2051 @noindent
2052 If you fail to follow these conventions, the indentation commands may
2053 indent some lines unaesthetically. However, a correct Fortran program
2054 retains its meaning when reindented even if the conventions are not
2055 followed.
2056
2057 @node ForIndent Vars
2058 @subsubsection Variables for Fortran Indentation
2059
2060 @vindex fortran-do-indent
2061 @vindex fortran-if-indent
2062 @vindex fortran-structure-indent
2063 @vindex fortran-continuation-indent
2064 @vindex fortran-check-all-num@dots{}
2065 @vindex fortran-minimum-statement-indent@dots{}
2066 Several additional variables control how Fortran indentation works:
2067
2068 @table @code
2069 @item fortran-do-indent
2070 Extra indentation within each level of @samp{do} statement (default 3).
2071
2072 @item fortran-if-indent
2073 Extra indentation within each level of @samp{if}, @samp{select case}, or
2074 @samp{where} statements (default 3).
2075
2076 @item fortran-structure-indent
2077 Extra indentation within each level of @samp{structure}, @samp{union},
2078 @samp{map}, or @samp{interface} statements (default 3).
2079
2080 @item fortran-continuation-indent
2081 Extra indentation for bodies of continuation lines (default 5).
2082
2083 @item fortran-check-all-num-for-matching-do
2084 In Fortran77, a numbered @samp{do} statement is ended by any statement
2085 with a matching line number. It is common (but not compulsory) to use a
2086 @samp{continue} statement for this purpose. If this variable has a
2087 non-@code{nil} value, indenting any numbered statement must check for a
2088 @samp{do} that ends there. If you always end @samp{do} statements with
2089 a @samp{continue} line (or if you use the more modern @samp{enddo}),
2090 then you can speed up indentation by setting this variable to
2091 @code{nil}. The default is @code{nil}.
2092
2093 @item fortran-blink-matching-if
2094 If this is @code{t}, indenting an @samp{endif} (or @samp{enddo}
2095 statement moves the cursor momentarily to the matching @samp{if} (or
2096 @samp{do}) statement to show where it is. The default is @code{nil}.
2097
2098 @item fortran-minimum-statement-indent-fixed
2099 Minimum indentation for Fortran statements when using fixed format
2100 continuation line style. Statement bodies are never indented less than
2101 this much. The default is 6.
2102
2103 @item fortran-minimum-statement-indent-tab
2104 Minimum indentation for Fortran statements for tab format continuation line
2105 style. Statement bodies are never indented less than this much. The
2106 default is 8.
2107 @end table
2108
2109 The variables controlling the indentation of comments are described in
2110 the following section.
2111
2112 @node Fortran Comments
2113 @subsection Fortran Comments
2114
2115 The usual Emacs comment commands assume that a comment can follow a
2116 line of code. In Fortran77, the standard comment syntax requires an
2117 entire line to be just a comment. Therefore, Fortran mode replaces the
2118 standard Emacs comment commands and defines some new variables.
2119
2120 @vindex fortran-comment-line-start
2121 Fortran mode can also handle the Fortran90 comment syntax where comments
2122 start with @samp{!} and can follow other text. Because only some Fortran77
2123 compilers accept this syntax, Fortran mode will not insert such comments
2124 unless you have said in advance to do so. To do this, set the variable
2125 @code{fortran-comment-line-start} to @samp{"!"}.
2126
2127 @table @kbd
2128 @item M-;
2129 Align comment or insert new comment (@code{fortran-indent-comment}).
2130
2131 @item C-x ;
2132 Applies to nonstandard @samp{!} comments only.
2133
2134 @item C-c ;
2135 Turn all lines of the region into comments, or (with argument) turn them back
2136 into real code (@code{fortran-comment-region}).
2137 @end table
2138
2139 @findex fortran-indent-comment
2140 @kbd{M-;} in Fortran mode is redefined as the command
2141 @code{fortran-indent-comment}. Like the usual @kbd{M-;} command, this
2142 recognizes any kind of existing comment and aligns its text appropriately;
2143 if there is no existing comment, a comment is inserted and aligned. But
2144 inserting and aligning comments are not the same in Fortran mode as in
2145 other modes.
2146
2147 When a new comment must be inserted, if the current line is blank, a
2148 full-line comment is inserted. On a non-blank line, a nonstandard @samp{!}
2149 comment is inserted if you have said you want to use them. Otherwise a
2150 full-line comment is inserted on a new line before the current line.
2151
2152 Nonstandard @samp{!} comments are aligned like comments in other
2153 languages, but full-line comments are different. In a standard full-line
2154 comment, the comment delimiter itself must always appear in column zero.
2155 What can be aligned is the text within the comment. You can choose from
2156 three styles of alignment by setting the variable
2157 @code{fortran-comment-indent-style} to one of these values:
2158
2159 @vindex fortran-comment-indent-style
2160 @vindex fortran-comment-line-extra-indent
2161 @table @code
2162 @item fixed
2163 Align the text at a fixed column, which is the sum of
2164 @code{fortran-comment-line-extra-indent} and the minimum statement
2165 indentation. This is the default.
2166
2167 The minimum statement indentation is
2168 @code{fortran-minimum-statement-indent-fixed} for fixed format
2169 continuation line style and @code{fortran-minimum-statement-indent-tab}
2170 for tab format style.
2171
2172 @item relative
2173 Align the text as if it were a line of code, but with an additional
2174 @code{fortran-comment-line-extra-indent} columns of indentation.
2175
2176 @item nil
2177 Don't move text in full-line comments automatically.
2178 @end table
2179
2180 @vindex fortran-comment-indent-char
2181 In addition, you can specify the character to be used to indent within
2182 full-line comments by setting the variable
2183 @code{fortran-comment-indent-char} to the single-character string you want
2184 to use.
2185
2186 @vindex fortran-directive-re
2187 Compiler directive lines, or preprocessor lines, have much the same
2188 appearance as comment lines. It is important, though, that such lines
2189 never be indented at all, no matter what the value of
2190 @code{fortran-comment-indent-style}. The variable
2191 @code{fortran-directive-re} is a regular expression that specifies which
2192 lines are directives. Matching lines are never indented, and receive
2193 distinctive font-locking.
2194
2195 The normal Emacs comment command @kbd{C-x ;} has not been redefined. If
2196 you use @samp{!} comments, this command can be used with them. Otherwise
2197 it is useless in Fortran mode.
2198
2199 @kindex C-c ; @r{(Fortran mode)}
2200 @findex fortran-comment-region
2201 @vindex fortran-comment-region
2202 The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
2203 lines of the region into comments by inserting the string @samp{C$$$} at
2204 the front of each one. With a numeric argument, it turns the region
2205 back into live code by deleting @samp{C$$$} from the front of each line
2206 in it. The string used for these comments can be controlled by setting
2207 the variable @code{fortran-comment-region}. Note that here we have an
2208 example of a command and a variable with the same name; these two uses
2209 of the name never conflict because in Lisp and in Emacs it is always
2210 clear from the context which one is meant.
2211
2212 @node Fortran Autofill
2213 @subsection Auto Fill in Fortran Mode
2214
2215 Fortran mode has specialized support for Auto Fill mode, which is a
2216 minor mode that automatically splits statements as you insert them when
2217 they become too wide. Splitting a statement involves making
2218 continuation lines using @code{fortran-continuation-string}
2219 (@pxref{ForIndent Cont}). This splitting happens when you type
2220 @key{SPC}, @key{RET}, or @key{TAB}, and also in the Fortran indentation
2221 commands. You activate Auto Fill in Fortran mode in the normal way
2222 (@pxref{Auto Fill}).
2223
2224 @vindex fortran-break-before-delimiters
2225 Auto Fill breaks lines at spaces or delimiters when the lines get
2226 longer than the desired width (the value of @code{fill-column}). The
2227 delimiters (besides whitespace) that Auto Fill can break at are
2228 @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>},
2229 and @samp{,}. The line break comes after the delimiter if the
2230 variable @code{fortran-break-before-delimiters} is @code{nil}.
2231 Otherwise (and by default), the break comes before the delimiter.
2232
2233 To enable Auto Fill in all Fortran buffers, add
2234 @code{turn-on-auto-fill} to @code{fortran-mode-hook}. @xref{Hooks}.
2235
2236 @node Fortran Columns
2237 @subsection Checking Columns in Fortran
2238
2239 @table @kbd
2240 @item C-c C-r
2241 Display a ``column ruler'' momentarily above the current line
2242 (@code{fortran-column-ruler}).
2243 @item C-c C-w
2244 Split the current window horizontally temporarily so that it is 72
2245 columns wide (@code{fortran-window-create-momentarily}). This may
2246 help you avoid making lines longer than the 72-character limit that
2247 some Fortran compilers impose.
2248 @item C-u C-c C-w
2249 Split the current window horizontally so that it is 72 columns wide
2250 (@code{fortran-window-create}). You can then continue editing.
2251 @item M-x fortran-strip-sequence-nos
2252 Delete all text in column 72 and beyond.
2253 @end table
2254
2255 @kindex C-c C-r @r{(Fortran mode)}
2256 @findex fortran-column-ruler
2257 The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
2258 ruler momentarily above the current line. The comment ruler is two lines
2259 of text that show you the locations of columns with special significance in
2260 Fortran programs. Square brackets show the limits of the columns for line
2261 numbers, and curly brackets show the limits of the columns for the
2262 statement body. Column numbers appear above them.
2263
2264 Note that the column numbers count from zero, as always in GNU Emacs.
2265 As a result, the numbers may be one less than those you are familiar
2266 with; but the positions they indicate in the line are standard for
2267 Fortran.
2268
2269 @vindex fortran-column-ruler-fixed
2270 @vindex fortran-column-ruler-tabs
2271 The text used to display the column ruler depends on the value of the
2272 variable @code{indent-tabs-mode}. If @code{indent-tabs-mode} is
2273 @code{nil}, then the value of the variable
2274 @code{fortran-column-ruler-fixed} is used as the column ruler.
2275 Otherwise, the value of the variable @code{fortran-column-ruler-tab} is
2276 displayed. By changing these variables, you can change the column ruler
2277 display.
2278
2279 @kindex C-c C-w @r{(Fortran mode)}
2280 @findex fortran-window-create-momentarily
2281 @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily
2282 splits the current window horizontally, making a window 72 columns
2283 wide, so you can see any lines that are too long. Type a space to
2284 restore the normal width.
2285
2286 @kindex C-u C-c C-w @r{(Fortran mode)}
2287 @findex fortran-window-create
2288 You can also split the window horizontally and continue editing with
2289 the split in place. To do this, use @kbd{C-u C-c C-w} (@code{M-x
2290 fortran-window-create}). By editing in this window you can
2291 immediately see when you make a line too wide to be correct Fortran.
2292
2293 @findex fortran-strip-sequence-nos
2294 The command @kbd{M-x fortran-strip-sequence-nos} deletes all text in
2295 column 72 and beyond, on all lines in the current buffer. This is the
2296 easiest way to get rid of old sequence numbers.
2297
2298 @node Fortran Abbrev
2299 @subsection Fortran Keyword Abbrevs
2300
2301 Fortran mode provides many built-in abbrevs for common keywords and
2302 declarations. These are the same sort of abbrev that you can define
2303 yourself. To use them, you must turn on Abbrev mode. @xref{Abbrevs}.
2304
2305 The built-in abbrevs are unusual in one way: they all start with a
2306 semicolon. You cannot normally use semicolon in an abbrev, but Fortran
2307 mode makes this possible by changing the syntax of semicolon to ``word
2308 constituent.''
2309
2310 For example, one built-in Fortran abbrev is @samp{;c} for
2311 @samp{continue}. If you insert @samp{;c} and then insert a punctuation
2312 character such as a space or a newline, the @samp{;c} expands automatically
2313 to @samp{continue}, provided Abbrev mode is enabled.@refill
2314
2315 Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
2316 Fortran abbrevs and what they stand for.
2317
2318 @node Asm Mode
2319 @section Asm Mode
2320
2321 @cindex Asm mode
2322 @cindex assembler mode
2323 Asm mode is a major mode for editing files of assembler code. It
2324 defines these commands:
2325
2326 @table @kbd
2327 @item @key{TAB}
2328 @code{tab-to-tab-stop}.
2329 @item C-j
2330 Insert a newline and then indent using @code{tab-to-tab-stop}.
2331 @item :
2332 Insert a colon and then remove the indentation from before the label
2333 preceding colon. Then do @code{tab-to-tab-stop}.
2334 @item ;
2335 Insert or align a comment.
2336 @end table
2337
2338 The variable @code{asm-comment-char} specifies which character
2339 starts comments in assembler syntax.
2340
2341 @ignore
2342 arch-tag: c7ee7409-40a4-45c7-bfb7-ae7f2c74d0c0
2343 @end ignore