1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985,86,87,93,94,95,97,99,00,2001 Free Software Foundation, Inc.
3 @c See file emacs.texi for copying conditions.
4 @node Programs, Building, Text, Top
5 @chapter Editing Programs
8 @cindex program editing
10 Emacs provides many features to facilitate editing programs. Some
15 Find or move over top-level definitions (@pxref{Defuns}).
17 Apply the usual indentation conventions of the language
18 (@pxref{Program Indent}).
20 Insert, kill or align comments (@pxref{Comments}).
22 Balance parentheses (@pxref{Parentheses}).
24 Highlight program syntax (@pxref{Font Lock}).
27 This chapter describes these features and many more.
30 * Program Modes:: Major modes for editing programs.
31 * Defuns:: Commands to operate on major top-level parts
33 * Program Indent:: Adjusting indentation to show the nesting.
34 * Comments:: Inserting, killing, and aligning comments.
35 * Parentheses:: Commands that operate on parentheses.
36 * Documentation:: Getting documentation of functions you plan to call.
37 * Hideshow:: Displaying blocks selectively.
38 * Symbol Completion:: Completion on symbol names of your program or language.
39 * Glasses:: Making identifiersLikeThis more readable.
40 * Misc for Programs:: Other Emacs features useful for editing programs.
41 * C Modes:: Special commands of C, C++, Objective-C,
43 * Fortran:: Fortran mode and its special features.
44 * Asm Mode:: Asm mode and its special features.
48 @section Major Modes for Programming Languages
49 @cindex modes for programming languages
51 Emacs has specialized major modes for various programming languages.
52 @xref{Major Modes}. A programming language major mode typically
53 specifies the syntax of expressions, the customary rules for
54 indentation, how to do syntax highlighting for the language, and how
55 to find the beginning of a function definition. It often customizes
56 or provides facilities for compiling and debugging programs as well.
58 Ideally, Emacs should provide a major mode for each programming
59 language that you might want to edit; if it doesn't have a mode for
60 your favorite language, you can contribute one. But often the mode
61 for one language can serve for other syntactically similar languages.
62 The major mode for language @var{l} is called @code{@var{l}-mode},
63 and you can select it by typing @kbd{M-x @var{l}-mode @key{RET}}.
64 @xref{Choosing Modes}.
79 @cindex Shell-script mode
81 @cindex PostScript mode
82 The existing programming language major modes include Lisp, Scheme (a
83 variant of Lisp) and the Scheme-based DSSSL expression language, Ada,
84 AWK, C, C++, Delphi (Object Pascal), Fortran (free format and fixed
85 format), Icon, IDL (CORBA), IDLWAVE, Java, Metafont (@TeX{}'s
86 companion for font creation), Modula2, Objective-C, Octave, Pascal,
87 Perl, Pike, PostScript, Prolog, Simula, Tcl, and VHDL. There is
88 also a major mode for makefiles, called Makefile mode. An alternative
89 mode for Perl is called CPerl mode. Modes are available for the
90 scripting languages of the common GNU and Unix shells, VMS DCL, and
91 MS-DOS/MS-Windows @samp{BAT} files. There are also major modes for
92 editing various sorts of configuration files.
94 @kindex DEL @r{(programming modes)}
95 @findex c-electric-backspace
96 In most programming languages, indentation should vary from line to
97 line to illustrate the structure of the program. So the major modes
98 for programming languages arrange for @key{TAB} to update the
99 indentation of the current line. They also rebind @key{DEL} to treat
100 a tab as if it were the equivalent number of spaces; this lets you
101 delete one column of indentation without worrying whether the
102 whitespace consists of spaces or tabs. Use @kbd{C-b C-d} to delete a
103 tab character before point, in these modes.
105 Separate manuals are available for the modes for Ada (@pxref{Top, , Ada
106 Mode, ada-mode, Ada Mode}), C/C++/Objective C/Java/Corba IDL/Pike/AWK
107 (@pxref{Top, , CC Mode, ccmode, CC Mode}) and the IDLWAVE modes
108 (@pxref{Top, , IDLWAVE, idlwave, IDLWAVE User Manual}).
112 @vindex lisp-mode-hook
113 @vindex emacs-lisp-mode-hook
114 @vindex lisp-interaction-mode-hook
115 @vindex scheme-mode-hook
116 Turning on a major mode runs a normal hook called the @dfn{mode
117 hook}, which is the value of a Lisp variable. Each major mode has a
118 mode hook, and the hook's name is always made from the mode command's
119 name by adding @samp{-hook}. For example, turning on C mode runs the
120 hook @code{c-mode-hook}, while turning on Lisp mode runs the hook
121 @code{lisp-mode-hook}. The purpose of the mode hook is to give you a
122 place to set up customizations for that major mode. @xref{Hooks}.
125 @section Top-Level Definitions, or Defuns
127 In Emacs, a major definition at the top level in the buffer is
128 called a @dfn{defun}. The name comes from Lisp, but in Emacs we use
129 it for all languages.
131 In most programming language modes, Emacs assumes that a defun is
132 any pair of parentheses (or braces, if the language uses braces this
133 way) that starts at the left margin. For example, in C, the body of a
134 function definition is normally a defun, because the open-brace that
135 begins it is normally at the left margin. A variable's initializer
136 can also count as a defun, if the open-brace that begins the
137 initializer is at the left margin.
139 However, some language modes provide their own code for recognizing
140 defuns in a way that suits the language syntax and conventions better.
143 * Left Margin Paren:: An open-paren or similar opening delimiter
144 starts a defun if it is at the left margin.
145 * Moving by Defuns:: Commands to move over or mark a major definition.
146 * Imenu:: Making buffer indexes as menus.
147 * Which Function:: Which Function mode shows which function you are in.
150 @node Left Margin Paren
151 @subsection Left Margin Convention
153 @cindex open-parenthesis in leftmost column
154 @cindex ( in leftmost column
155 In most major modes, Emacs assumes that any opening delimiter found
156 at the left margin is the start of a top-level definition, or defun.
157 Therefore, @strong{never put an opening delimiter at the left margin
158 unless it should have that significance.} For instance, never put an
159 open-parenthesis at the left margin in a Lisp file unless it is the
160 start of a top-level list. Never put an open-brace or other opening
161 delimiter at the beginning of a line of C code unless it is at top
164 If you don't follow this convention, not only will you have trouble
165 when you explicitly use the commands for motion by defuns; other
166 features that use them will also give you trouble. This includes
167 the indentation commands (@pxref{Program Indent}) and Font Lock
168 mode (@pxref{Font Lock}).
170 The most likely problem case is when you want an opening delimiter
171 at the start of a line inside a string. To avoid trouble, put an
172 escape character (@samp{\}, in C and Emacs Lisp, @samp{/} in some
173 other Lisp dialects) before the opening delimiter. This will not
174 affect the contents of the string, but will prevent that opening
175 delimiter from starting a defun. Here's an example:
183 To help you catch violations of this convention, Font Lock mode
184 highlights confusing opening delimiters (those that ought to be
187 In the earliest days, the original Emacs found defuns by moving
188 upward a level of parentheses or braces until there were no more
189 levels to go up. This always required scanning all the way back to
190 the beginning of the buffer, even for a small function. To speed up
191 the operation, we changed Emacs to assume that any opening delimiter
192 at the left margin is the start of a defun. This heuristic is nearly
193 always right, and avoids the need to scan back to the beginning of the
194 buffer. However, it mandates following the convention described
197 @node Moving by Defuns
198 @subsection Moving by Defuns
201 These commands move point or set up the region based on top-level
202 major definitions, also called @dfn{defuns}.
206 Move to beginning of current or preceding defun
207 (@code{beginning-of-defun}).
209 Move to end of current or following defun (@code{end-of-defun}).
211 Put region around whole current or following defun (@code{mark-defun}).
214 @cindex move to beginning or end of function
215 @cindex function, move to beginning or end
219 @findex beginning-of-defun
222 The commands to move to the beginning and end of the current defun
223 are @kbd{C-M-a} (@code{beginning-of-defun}) and @kbd{C-M-e}
224 (@code{end-of-defun}). If you repeat one of these commands, or use a
225 positive numeric argument, each repetition moves to the next defun in
226 the direction of motion.
228 @kbd{C-M-a} with a negative argument @minus{}@var{n} moves forward
229 @var{n} times to the next beginning of a defun. This is not exactly
230 the same place that @kbd{C-M-e} with argument @var{n} would move to;
231 the end of this defun is not usually exactly the same place as the
232 beginning of the following defun. (Whitespace, comments, and perhaps
233 declarations can separate them.) Likewise, @kbd{C-M-e} with a
234 negative argument moves back to an end of a defun, which is not quite
235 the same as @kbd{C-M-a} with a positive argument.
237 @kindex C-M-h @r{(C mode)}
238 @findex c-mark-function
239 To operate on the current defun, use @kbd{C-M-h} (@code{mark-defun})
240 which puts point at the beginning and mark at the end of the current
241 defun. This is the easiest way to get ready to kill the defun in
242 order to move it to a different place in the file. If you use the
243 command while point is between defuns, it uses the following defun.
245 In C mode, @kbd{C-M-h} runs the function @code{c-mark-function},
246 which is almost the same as @code{mark-defun}; the difference is that
247 it backs up over the argument declarations, function name and returned
248 data type so that the entire C function is inside the region. This is
249 an example of how major modes adjust the standard key bindings so that
250 they do their standard jobs in a way better fitting a particular
251 language. Other major modes may replace any or all of these key
252 bindings for that purpose.
256 @cindex index of buffer definitions
257 @cindex buffer definitions index
260 The Imenu facility offers a way to find the major definitions in
261 a file by name. It is also useful in text formatter major modes,
262 where it treats each chapter, section, etc., as a definition.
263 (@xref{Tags}, for a more powerful feature that handles multiple files
267 If you type @kbd{M-x imenu}, it reads the name of a definition using
268 the minibuffer, then moves point to that definition. You can use
269 completion to specify the name; the command always displays the whole
272 @findex imenu-add-menubar-index
273 Alternatively, you can bind the command @code{imenu} to a mouse
274 click. Then it displays mouse menus for you to select a definition
275 name. You can also add the buffer's index to the menu bar by calling
276 @code{imenu-add-menubar-index}. If you want to have this menu bar
277 item available for all buffers in a certain major mode, you can do
278 this by adding @code{imenu-add-menubar-index} to its mode hook. But
279 if you have done that, you will have to wait each time you visit a
280 file in that mode, while Emacs finds all the definitions in that
283 @vindex imenu-auto-rescan
284 When you change the contents of a buffer, if you add or delete
285 definitions, you can update the buffer's index based on the
286 new contents by invoking the @samp{*Rescan*} item in the menu.
287 Rescanning happens automatically if you set @code{imenu-auto-rescan} to
288 a non-@code{nil} value. There is no need to rescan because of small
291 @vindex imenu-sort-function
292 You can customize the way the menus are sorted by setting the
293 variable @code{imenu-sort-function}. By default, names are ordered as
294 they occur in the buffer; if you want alphabetic sorting, use the
295 symbol @code{imenu--sort-by-name} as the value. You can also
296 define your own comparison function by writing Lisp code.
298 Imenu provides the information to guide Which Function mode
300 (@pxref{Which Function}).
305 The Speedbar can also use it (@pxref{Speedbar}).
308 @subsection Which Function Mode
309 @cindex current function name in mode line
311 Which Function mode is a minor mode that displays the current
312 function name in the mode line, updating it as you move around in a
315 @findex which-function-mode
316 @vindex which-func-modes
317 To enable (or disable) Which Function mode, use the command @kbd{M-x
318 which-function-mode}. This command is global; it applies to all
319 buffers, both existing ones and those yet to be created. However,
320 it only takes effect in certain major modes, those listed in the value of
321 @code{which-func-modes}. If the value is @code{t}, then Which
322 Function mode applies to all major modes that know how to support
323 it---in other words, all the major modes that support Imenu.
326 @section Indentation for Programs
327 @cindex indentation for programs
329 The best way to keep a program properly indented is to use Emacs to
330 reindent it as you change it. Emacs has commands to indent properly
331 either a single line, a specified number of lines, or all of the lines
332 inside a single parenthetical grouping.
335 * Basic Indent:: Indenting a single line.
336 * Multi-line Indent:: Commands to reindent many lines at once.
337 * Lisp Indent:: Specifying how each Lisp function should be indented.
338 * C Indent:: Extra features for indenting C and related modes.
339 * Custom C Indent:: Controlling indentation style for C and related modes.
342 @cindex pretty-printer
343 Emacs also provides a Lisp pretty-printer in the library @code{pp}.
344 This program reformats a Lisp object with indentation chosen to look nice.
347 @subsection Basic Program Indentation Commands
349 The basic indentation commands indent a single line according to the
350 usual conventions of the language you are editing.
354 Adjust indentation of current line.
356 Equivalent to @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
358 This key, if the keyboard has it, is another way to enter @kbd{C-j}.
361 @kindex TAB @r{(programming modes)}
362 @findex c-indent-command
363 @findex indent-line-function
364 @findex indent-for-tab-command
365 The basic indentation command is @key{TAB}, which gives the current line
366 the correct indentation as determined from the previous lines. The
367 function that @key{TAB} runs depends on the major mode; it is
368 @code{indent-for-tab-command}
369 in Lisp mode, @code{c-indent-command} in C mode, etc. These functions
370 understand the syntax and conventions of different languages, but they all do
371 conceptually the same job: @key{TAB} in any programming-language major mode
372 inserts or deletes whitespace at the beginning of the current line,
373 independent of where point is in the line. If point was inside the
374 whitespace at the beginning of the line, @key{TAB} puts it at the end of
375 that whitespace; otherwise, @key{TAB} keeps point fixed with respect to
376 the characters around it.
378 Use @kbd{C-q @key{TAB}} to insert a tab at point.
381 @findex newline-and-indent
382 When entering lines of new code, use @kbd{C-j}
383 (@code{newline-and-indent}), which is equivalent to a @key{RET}
384 followed by a @key{TAB}. @kbd{C-j} at the end of a line creates a
385 blank line and then gives it the appropriate indentation.
387 @key{TAB} indents lines that start within a parenthetical grouping
388 each under the preceding line (or the text after the parenthesis).
389 Therefore, if you manually give one of these lines a nonstandard
390 indentation, the lines below will tend to follow it. This behavior is
391 convenient in cases where you have overridden the standard result of
392 @key{TAB} because you find it unaesthetic for a particular line.
394 Remember that an open-parenthesis, open-brace or other opening delimiter
395 at the left margin is assumed by Emacs (including the indentation routines)
396 to be the start of a function. Therefore, you must never have an opening
397 delimiter in column zero that is not the beginning of a function, not even
398 inside a string. This restriction is vital for making the indentation
399 commands fast; you must simply accept it. @xref{Left Margin Paren},
400 for more information on this.
402 Normally, lines are indented with tabs and spaces. If you want Emacs
403 to use spaces only, see @ref{Just Spaces}.
405 @node Multi-line Indent
406 @subsection Indenting Several Lines
408 When you wish to reindent several lines of code which have been
409 altered or moved to a different level in the parenthesis structure,
410 you have several commands available.
414 Reindent all the lines within one parenthetical grouping(@code{indent-sexp}).
416 Reindent all lines in the region (@code{indent-region}).
418 Shift an entire parenthetical grouping rigidly sideways so that its
419 first line is properly indented.
420 @item M-x indent-code-rigidly
421 Shift all the lines in the region rigidly sideways, but do not alter
422 lines that start inside comments and strings.
427 You can reindent the contents of a single parenthetical grouping by
428 positioning point before the beginning of it and typing @kbd{C-M-q}
429 (@code{indent-sexp} in Lisp mode, @code{c-indent-exp} in C mode; also
430 bound to other suitable commands in other modes). The indentation of
431 the line where the grouping starts is not changed; therefore, this
432 changes only the relative indentation within the grouping, not its
433 overall indentation. To correct that as well, type @key{TAB} first.
435 Another way to specify the range to be reindented is with the
436 region. The command @kbd{C-M-\} (@code{indent-region}) applies
437 @key{TAB} to every line whose first character is between point and
441 If you like the relative indentation within a grouping, but not the
442 indentation of its first line, you can type @kbd{C-u @key{TAB}} to
443 reindent the whole grouping as a rigid unit. (This works in Lisp
444 modes and C and related modes.) @key{TAB} with a numeric argument
445 reindents the current line as usual, then reindents by the same amount
446 all the lines in the parenthetical grouping starting on the current
447 line. It is clever, though, and does not alter lines that start
448 inside strings. Neither does it alter C preprocessor lines when in C
449 mode, but it does reindent any continuation lines that may be attached
452 @findex indent-code-rigidly
453 You can also perform this operation on the region, using the command
454 @kbd{M-x indent-code-rigidly}. It rigidly shifts all the lines in the
455 region sideways, like @code{indent-rigidly} does (@pxref{Indentation
456 Commands}). It doesn't alter the indentation of lines that start
457 inside a string, unless the region also starts inside that string.
460 @subsection Customizing Lisp Indentation
461 @cindex customizing Lisp indentation
463 The indentation pattern for a Lisp expression can depend on the function
464 called by the expression. For each Lisp function, you can choose among
465 several predefined patterns of indentation, or define an arbitrary one with
468 The standard pattern of indentation is as follows: the second line of the
469 expression is indented under the first argument, if that is on the same
470 line as the beginning of the expression; otherwise, the second line is
471 indented underneath the function name. Each following line is indented
472 under the previous line whose nesting depth is the same.
474 @vindex lisp-indent-offset
475 If the variable @code{lisp-indent-offset} is non-@code{nil}, it overrides
476 the usual indentation pattern for the second line of an expression, so that
477 such lines are always indented @code{lisp-indent-offset} more columns than
480 @vindex lisp-body-indent
481 Certain functions override the standard pattern. Functions whose
482 names start with @code{def} treat the second lines as the start of
483 a @dfn{body}, by indenting the second line @code{lisp-body-indent}
484 additional columns beyond the open-parenthesis that starts the
487 @cindex @code{lisp-indent-function} property
488 You can override the standard pattern in various ways for individual
489 functions, according to the @code{lisp-indent-function} property of
490 the function name. Normally you would use this for macro definitions
491 and specify it using the @code{declare} construct (@pxref{Defining
492 Macros,,, elisp, the Emacs Lisp Reference Manual}).
495 @subsection Commands for C Indentation
497 Here are special features for indentation in C mode and related modes:
501 @kindex C-c C-q @r{(C mode)}
502 @findex c-indent-defun
503 Reindent the current top-level function definition or aggregate type
504 declaration (@code{c-indent-defun}).
507 @kindex C-M-q @r{(C mode)}
509 Reindent each line in the balanced expression that follows point
510 (@code{c-indent-exp}). A prefix argument inhibits warning messages
511 about invalid syntax.
514 @findex c-indent-command
515 Reindent the current line, and/or in some cases insert a tab character
516 (@code{c-indent-command}).
518 @vindex c-tab-always-indent
519 If @code{c-tab-always-indent} is @code{t}, this command always reindents
520 the current line and does nothing else. This is the default.
522 If that variable is @code{nil}, this command reindents the current line
523 only if point is at the left margin or in the line's indentation;
524 otherwise, it inserts a tab (or the equivalent number of spaces,
525 if @code{indent-tabs-mode} is @code{nil}).
527 Any other value (not @code{nil} or @code{t}) means always reindent the
528 line, and also insert a tab if within a comment or a string.
531 To reindent the whole current buffer, type @kbd{C-x h C-M-\}. This
532 first selects the whole buffer as the region, then reindents that
535 To reindent the current block, use @kbd{C-M-u C-M-q}. This moves
536 to the front of the block and then reindents it all.
538 @node Custom C Indent
539 @subsection Customizing C Indentation
540 @cindex style (for indentation)
542 C mode and related modes use a flexible mechanism for customizing
543 indentation. C mode indents a source line in two steps: first it
544 classifies the line syntactically according to its contents and
545 context; second, it determines the indentation offset associated by
546 your selected @dfn{style} with the syntactic construct and adds this
547 onto the indentation of the @dfn{anchor statement}.
550 @item C-c . @key{RET} @var{style} @key{RET}
551 Select a predefined style @var{style} (@code{c-set-style}).
554 A @dfn{style} is a named collection of customizations that can
555 be used in C mode and the related modes. Emacs comes with several
556 predefined styles, including @code{gnu}, @code{k&r}, @code{bsd},
557 @code{stroustrup}, @code{linux}, @code{python}, @code{java},
558 @code{whitesmith}, @code{ellemtel}, @code{cc-mode}, and @code{user}.
559 Some of these styles are primarily intended for one language, but any
560 of them can be used with any of the languages supported by these
561 modes. To find out what a style looks like, select it and reindent
562 some code, e.g., by typing @key{C-M-q} at the start of a function
565 @kindex C-c . @r{(C mode)}
567 To choose a style for the current buffer, use the command @kbd{C-c
568 .}. Specify a style name as an argument (case is not significant).
569 This command affects the current buffer only, and it affects only
570 future invocations of the indentation commands; it does not reindent
571 the code in the buffer. To reindent the whole buffer in the new
572 style, you can type @kbd{C-x h C-M-\}.
574 @vindex c-default-style
575 You can also set the variable @code{c-default-style} to specify the
576 default style for various major modes. Its value should be either the
577 style's name (a string) or an alist, in which each element specifies
578 one major mode and which indentation style to use for it. For
582 (setq c-default-style
583 '((java-mode . "java") (other . "gnu")))
587 specifies an explicit choice for Java mode, and the default @samp{gnu}
588 style for the other C-like modes. This variable takes effect when you
589 select one of the C-like major modes; thus, if you specify a new
590 default style for Java mode, you can make it take effect in an
591 existing Java mode buffer by typing @kbd{M-x java-mode} there.
593 The @code{gnu} style specifies the formatting recommended by the GNU
594 Project for C; it is the default, so as to encourage use of our
597 @xref{Customizing Indentation,,, ccmode, the CC Mode Manual}, for
598 more information on customizing indentation for C and related modes,
599 including how to override parts of an existing style and how to define
603 @section Commands for Editing with Parentheses
606 @cindex unbalanced parentheses and quotes
607 This section describes the commands and features that take advantage
608 of the parenthesis structure in a program, or help you keep it
611 When talking about these facilities, the term ``parenthesis'' also
612 includes braces, brackets, or whatever delimiters are defined to match
613 in pairs. The major mode controls which delimiters are significant,
614 through the syntax table (@pxref{Syntax}). In Lisp, only parentheses
615 count; in C, these commands apply to braces and brackets too.
617 You can use @kbd{M-x check-parens} to find any unbalanced
618 parentheses and unbalanced string quotes in the buffer.
621 * Expressions:: Expressions with balanced parentheses.
622 * Moving by Parens:: Commands for moving up, down and across
623 in the structure of parentheses.
624 * Matching:: Insertion of a close-delimiter flashes matching open.
628 @subsection Expressions with Balanced Parentheses
632 @cindex balanced expression
633 These commands deal with balanced expressions, also called
634 @dfn{sexps}@footnote{The word ``sexp'' is used to refer to an
635 expression in Lisp.}.
639 Move forward over a balanced expression (@code{forward-sexp}).
641 Move backward over a balanced expression(@code{backward-sexp}).
643 Kill balanced expression forward (@code{kill-sexp}).
645 Transpose expressions (@code{transpose-sexps}).
648 Put mark after following expression (@code{mark-sexp}).
651 Each programming language major mode customizes the definition of
652 balanced expressions to suit that language. Balanced expressions
653 typically include symbols, numbers, and string constants, as well as
654 any pair of matching delimiters and their contents. Some languages
655 have obscure forms of expression syntax that nobody has bothered to
659 By convention, the keys for these commands are all Control-Meta
660 characters. They usually act on expressions just as the corresponding
661 Meta characters act on words. For instance, the command @kbd{C-M-b}
662 moves backward over a balanced expression, just as @kbd{M-b} moves
668 @findex backward-sexp
669 To move forward over a balanced expression, use @kbd{C-M-f}
670 (@code{forward-sexp}). If the first significant character after point
671 is an opening delimiter (@samp{(} in Lisp; @samp{(}, @samp{[} or
672 @samp{@{} in C), @kbd{C-M-f} moves past the matching closing
673 delimiter. If the character begins a symbol, string, or number,
674 @kbd{C-M-f} moves over that.
676 The command @kbd{C-M-b} (@code{backward-sexp}) moves backward over a
677 balanced expression. The detailed rules are like those above for
678 @kbd{C-M-f}, but with directions reversed. If there are prefix
679 characters (single-quote, backquote and comma, in Lisp) preceding the
680 expression, @kbd{C-M-b} moves back over them as well. The balanced
681 expression commands move across comments as if they were whitespace,
684 @kbd{C-M-f} or @kbd{C-M-b} with an argument repeats that operation the
685 specified number of times; with a negative argument, it moves in the
688 @cindex killing expressions
691 Killing a whole balanced expression can be done with @kbd{C-M-k}
692 (@code{kill-sexp}). @kbd{C-M-k} kills the characters that @kbd{C-M-f}
695 @cindex transposition of expressions
697 @findex transpose-sexps
698 A somewhat random-sounding command which is nevertheless handy is
699 @kbd{C-M-t} (@code{transpose-sexps}), which drags the previous
700 balanced expression across the next one. An argument serves as a
701 repeat count, and a negative argument drags the previous balanced
702 expression backwards across those before it (thus canceling out the
703 effect of @kbd{C-M-t} with a positive argument). An argument of zero,
704 rather than doing nothing, transposes the balanced expressions ending
705 at or after point and the mark.
708 @kindex C-M-@key{SPC}
710 To set the region around the next balanced expression in the buffer,
711 use @kbd{C-M-@@} (@code{mark-sexp}), which sets mark at the same place
712 that @kbd{C-M-f} would move to. @kbd{C-M-@@} takes arguments like
713 @kbd{C-M-f}. In particular, a negative argument is useful for putting
714 the mark at the beginning of the previous balanced expression.
715 The alias @kbd{C-M-@key{SPC}} is equivalent to @kbd{C-M-@@}.
717 In languages that use infix operators, such as C, it is not possible
718 to recognize all balanced expressions as such because there can be
719 multiple possibilities at a given position. For example, C mode does
720 not treat @samp{foo + bar} as a single expression, even though it
721 @emph{is} one C expression; instead, it recognizes @samp{foo} as one
722 expression and @samp{bar} as another, with the @samp{+} as punctuation
723 between them. Both @samp{foo + bar} and @samp{foo} are legitimate
724 choices for ``the expression following point'' when point is at the
725 @samp{f}, so the expression commands must perforce choose one or the
726 other to operate on. Note that @samp{(foo + bar)} is recognized as a
727 single expression in C mode, because of the parentheses.
729 @node Moving by Parens
730 @subsection Moving in the Parenthesis Structure
732 @cindex parenthetical groupings
733 @cindex parentheses, moving across
734 @cindex matching parenthesis and braces, moving to
735 @cindex braces, moving across
736 @cindex list commands
737 The Emacs commands for handling parenthetical groupings see nothing
738 except parentheses (or whatever characters must balance in the
739 language you are working with), and the escape characters that might
740 be used to quote those. They are mainly intended for editing
741 programs, but can be useful for editing any text that has parentheses.
742 They are sometimes called ``list'' commands because in Lisp these
747 Move forward over a parenthetical group (@code{forward-list}).
749 Move backward over a parenthetical group(@code{backward-list}).
751 Move up in parenthesis structure (@code{backward-up-list}).
753 Move down in parenthesis structure (@code{down-list}).
759 @findex backward-list
760 The ``list'' commands @kbd{C-M-n} (@code{forward-list}) and
761 @kbd{C-M-p} (@code{backward-list}) move over one (or @var{n})
762 parenthetical groupings, skipping blithely over any amount of text
763 that doesn't include meaningful parentheses (symbols, strings, etc.).
767 @findex backward-up-list
769 @kbd{C-M-n} and @kbd{C-M-p} try to stay at the same level in the
770 parenthesis structure. To move @emph{up} one (or @var{n}) levels, use
771 @kbd{C-M-u} (@code{backward-up-list}). @kbd{C-M-u} moves backward up
772 past one unmatched opening delimiter. A positive argument serves as a
773 repeat count; a negative argument reverses the direction of motion, so
774 that the command moves forward and up one or more levels.
776 To move @emph{down} in the parenthesis structure, use @kbd{C-M-d}
777 (@code{down-list}). In Lisp mode, where @samp{(} is the only opening
778 delimiter, this is nearly the same as searching for a @samp{(}. An
779 argument specifies the number of levels to go down.
782 @subsection Automatic Display Of Matching Parentheses
783 @cindex matching parentheses
784 @cindex parentheses, displaying matches
786 The Emacs parenthesis-matching feature is designed to show
787 automatically how parentheses (and other matching delimiters) match in
788 the text. Whenever you type a self-inserting character that is a
789 closing delimiter, the cursor moves momentarily to the location of the
790 matching opening delimiter, provided that is on the screen. If it is
791 not on the screen, Emacs displays some of the text near it in the echo
792 area. Either way, you can tell which grouping you are closing off.
794 If the opening delimiter and closing delimiter are mismatched---such
795 as in @samp{[x)}---a warning message is displayed in the echo area.
797 @vindex blink-matching-paren
798 @vindex blink-matching-paren-distance
799 @vindex blink-matching-delay
800 Three variables control parenthesis match display.
801 @code{blink-matching-paren} turns the feature on or off: @code{nil}
802 disables it, but the default is @code{t} to enable match display.
804 @code{blink-matching-delay} says how many seconds to leave the
805 cursor on the matching opening delimiter, before bringing it back to
806 the real location of point; the default is 1, but on some systems it
807 is useful to specify a fraction of a second.
809 @code{blink-matching-paren-distance} specifies how many characters
810 back to search to find the matching opening delimiter. If the match
811 is not found in that distance, scanning stops, and nothing is displayed.
812 This is to prevent the scan for the matching delimiter from wasting
813 lots of time when there is no match. The default is 25600.
815 @cindex Show Paren mode
816 @cindex highlighting matching parentheses
817 @findex show-paren-mode
818 Show Paren mode provides a more powerful kind of automatic matching.
819 Whenever point is after a closing delimiter, that delimiter and its
820 matching opening delimiter are both highlighted; otherwise, if point
821 is before an opening delimiter, the matching closing delimiter is
822 highlighted. (There is no need to highlight the opening delimiter in
823 that case, because the cursor appears on top of that character.) Use
824 the command @kbd{M-x show-paren-mode} to enable or disable this mode.
826 By default, @code{show-paren-mode} uses colors to highlight the
827 parentheses. However, if your display doesn't support colors, you can
828 customize the faces @code{show-paren-match-face} and
829 @code{show-paren-mismatch-face} to use other attributes, such as bold or
830 underline. @xref{Face Customization}.
833 @section Manipulating Comments
836 Because comments are such an important part of programming, Emacs
837 provides special commands for editing and inserting comments. It can
838 also do spell checking on comments with Flyspell Prog mode
842 * Comment Commands:: Inserting, killing, and indenting comments.
843 * Multi-Line Comments:: Commands for adding and editing multi-line comments.
844 * Options for Comments::Customizing the comment features.
847 @node Comment Commands
848 @subsection Comment Commands
849 @cindex indentation for comments
851 The comment commands in this table insert, kill and align comments.
852 They are described in this section and following sections.
856 Insert or realign comment on current line; alternatively, comment or
857 uncomment the region (@code{comment-dwim}).
859 Kill comment on current line (@code{comment-kill}).
861 Set comment column (@code{comment-set-column}).
864 Like @key{RET} followed by inserting and aligning a comment
865 (@code{comment-indent-new-line}).
866 @item @kbd{M-x comment-region}
867 @itemx @kbd{C-c C-c} (in C-like modes)
868 Add or remove comment delimiters on all the lines in the region.
873 The command to create or align a comment is @kbd{M-;}
874 (@code{comment-dwim}). The word ``dwim'' is an acronym for ``Do What
875 I Mean''; it indicates that this command can be used for many
876 different jobs relating to comments, depending on the situation where
879 If there is no comment already on the line, @kbd{M-;} inserts a new
880 comment, aligned at a specific column called the @dfn{comment column}.
881 The new comment begins with the string Emacs thinks comments should
882 start with (the value of @code{comment-start}; see below). Point is
883 after that string, so you can insert the text of the comment right
884 away. If the major mode has specified a string to terminate comments,
885 @kbd{M-;} inserts that too, to keep the syntax valid.
887 If the text of the line extends past the comment column, then the
888 comment start string is indented to a suitable boundary (usually, at
889 least one space is inserted).
891 You can also use @kbd{M-;} to align an existing comment. If a line
892 already contains the comment-start string, @kbd{M-;} reindents it to
893 the conventional alignment and moves point after it. (Exception:
894 comments starting in column 0 are not moved.) Even when an existing
895 comment is properly aligned, @kbd{M-;} is still useful for moving
896 directly to the start of the text inside the comment.
900 @kbd{C-u M-;} kills any comment on the current line, along with the
901 whitespace before it. To reinsert the comment on another line, move
902 to the end of that line, do @kbd{C-y}, and then do @kbd{M-;} to
905 Note that @kbd{C-u M-;} is not a distinct key; it is @kbd{M-;}
906 (@code{comment-dwim}) with a prefix argument. That command is
907 programmed so that when it receives a prefix argument it calls
908 @code{comment-kill}. However, @code{comment-kill} is a valid command
909 in its own right, and you can bind it directly to a key if you wish.
911 @kbd{M-;} does two other jobs when used with an active region in
912 Transient Mark mode (@pxref{Transient Mark}). Then it either adds or
913 removes comment delimiters on each line of the region. (If every line
914 is a comment, it removes comment delimiters from each; otherwise, it
915 adds comment delimiters to each.) If you are not using Transient Mark
916 mode, then you should use the commands @code{comment-region} and
917 @code{uncomment-region} to do these jobs (@pxref{Multi-Line Comments}).
918 A prefix argument used in these circumstances specifies how many
919 comment delimiters to add or how many to delete.
921 Some major modes have special rules for indenting certain kinds of
922 comments in certain contexts. For example, in Lisp code, comments which
923 start with two semicolons are indented as if they were lines of code,
924 instead of at the comment column. Comments which start with three
925 semicolons are supposed to start at the left margin. Emacs understands
926 these conventions by indenting a double-semicolon comment using @key{TAB},
927 and by not changing the indentation of a triple-semicolon comment at all.
930 ;; This function is just an example
931 ;;; Here either two or three semicolons are appropriate.
933 ;;; And now, the first part of the function:
934 ;; The following line adds one.
935 (1+ x)) ; This line adds one.
938 In C code, a comment preceded on its line by nothing but whitespace
939 is indented like a line of code.
941 @node Multi-Line Comments
942 @subsection Multiple Lines of Comments
946 @cindex blank lines in programs
947 @findex comment-indent-new-line
948 If you are typing a comment and wish to continue it on another line,
949 you can use the command @kbd{C-M-j} or @kbd{M-j}
950 (@code{comment-indent-new-line}). This terminates the comment you are
951 typing, creates a new blank line afterward, and begins a new comment
952 indented under the old one. When Auto Fill mode is on, going past the
953 fill column while typing a comment causes the comment to be continued
954 in just this fashion. If point is not at the end of the line when you
955 type the command, the text on the rest of the line becomes part of the
958 @kindex C-c C-c (C mode)
959 @findex comment-region
960 To turn existing lines into comment lines, use the @kbd{M-x
961 comment-region} command. It adds comment delimiters to the lines that start
962 in the region, thus commenting them out. With a negative argument, it
963 does the opposite---it deletes comment delimiters from the lines in the
966 With a positive argument, @code{comment-region} duplicates the last
967 character of the comment start sequence it adds; the argument specifies
968 how many copies of the character to insert. Thus, in Lisp mode,
969 @kbd{C-u 2 M-x comment-region} adds @samp{;;} to each line. Duplicating
970 the comment delimiter is a way of calling attention to the comment. It
971 can also affect how the comment is indented. In Lisp, for proper
972 indentation, you should use an argument of two or three, if between defuns;
973 if within a defun, it must be three.
975 @node Options for Comments
976 @subsection Options Controlling Comments
978 @vindex comment-column
980 @findex comment-set-column
981 The @dfn{comment column}, the column at which Emacs tries to place
982 comments, is stored in the variable @code{comment-column}. You can
983 set it to a number explicitly. Alternatively, the command @kbd{C-x ;}
984 (@code{comment-set-column}) sets the comment column to the column
985 point is at. @kbd{C-u C-x ;} sets the comment column to match the
986 last comment before point in the buffer, and then does a @kbd{M-;} to
987 align the current line's comment under the previous one.
989 The variable @code{comment-column} is per-buffer: setting the variable
990 in the normal fashion affects only the current buffer, but there is a
991 default value which you can change with @code{setq-default}.
992 @xref{Locals}. Many major modes initialize this variable for the
995 @vindex comment-start-skip
996 The comment commands recognize comments based on the regular
997 expression that is the value of the variable @code{comment-start-skip}.
998 Make sure this regexp does not match the null string. It may match more
999 than the comment starting delimiter in the strictest sense of the word;
1000 for example, in C mode the value of the variable is
1001 @c This stops M-q from breaking the line inside that @code.
1002 @code{@w{"/\\*+ *\\|//+ *"}}, which matches extra stars and spaces
1003 after the @samp{/*} itself, and accepts C++ style comments also.
1004 (Note that @samp{\\} is needed in Lisp syntax to include a @samp{\} in
1005 the string, which is needed to deny the first star its special meaning
1006 in regexp syntax. @xref{Regexps}.)
1008 @vindex comment-start
1010 When a comment command makes a new comment, it inserts the value of
1011 @code{comment-start} to begin it. The value of @code{comment-end} is
1012 inserted after point, so that it will follow the text that you will insert
1013 into the comment. In C mode, @code{comment-start} has the value
1014 @w{@code{"/* "}} and @code{comment-end} has the value @w{@code{" */"}}.
1016 @vindex comment-padding
1017 The variable @code{comment-padding} specifies how many spaces
1018 @code{comment-region} should insert on each line between the comment
1019 delimiter and the line's original text. The default is 1, to insert
1020 one space. @code{nil} means 0. Alternatively, @code{comment-padding}
1021 can hold the actual string to insert.
1023 @vindex comment-multi-line
1024 The variable @code{comment-multi-line} controls how @kbd{C-M-j}
1025 (@code{indent-new-comment-line}) behaves when used inside a comment.
1026 Specifically, when @code{comment-multi-line} is @code{nil} (the
1027 default value), the command inserts a comment terminator, begins a new
1028 line, and finally inserts a comment starter. Otherwise it does not
1029 insert the terminator and starter, so it effectively continues the
1030 current comment across multiple lines. In languages that allow
1031 multi-line comments, the choice of value for this variable is a matter
1034 @vindex comment-indent-function
1035 The variable @code{comment-indent-function} should contain a function
1036 that will be called to compute the indentation for a newly inserted
1037 comment or for aligning an existing comment. It is set differently by
1038 various major modes. The function is called with no arguments, but with
1039 point at the beginning of the comment, or at the end of a line if a new
1040 comment is to be inserted. It should return the column in which the
1041 comment ought to start. For example, in Lisp mode, the indent hook
1042 function bases its decision on how many semicolons begin an existing
1043 comment, and on the code in the preceding lines.
1046 @section Documentation Lookup
1048 Emacs provides several features you can use to look up the
1049 documentation of functions, variables and commands that you plan to
1050 use in your program.
1053 * Info Lookup:: Looking up library functions and commands
1055 * Man Page:: Looking up man pages of library functions and commands.
1056 * Lisp Doc:: Looking up Emacs Lisp functions, etc.
1060 @subsection Info Documentation Lookup
1062 @findex info-lookup-symbol
1063 @findex info-lookup-file
1065 For C, Lisp, and other languages that have documentation in Info,
1066 you can use @kbd{C-h S} (@code{info-lookup-symbol}) to view the Info
1067 documentation for a symbol. You specify the symbol with the
1068 minibuffer; the default is the symbol appearing in the buffer at
1071 The major mode determines where to look for documentation for the
1072 symbol---which Info files to look in, and which indices to search.
1073 You can also use @kbd{M-x info-lookup-file} to look for documentation
1076 This feature currently supports the modes AWK, Autoconf, Bison, C,
1077 Emacs Lisp, LaTeX, M4, Makefile, Octave, Perl, Scheme, and Texinfo,
1078 provided you have installed the relevant Info files, which are
1079 typically available with the appropriate GNU package.
1082 @subsection Man Page Lookup
1085 On Unix, the main form of on-line documentation was the @dfn{manual
1086 page} or @dfn{man page}. In the GNU operating system, we hope to
1087 replace man pages with better-organized manuals that you can browse
1088 with Info (@pxref{Misc Help}). This process is not finished, so it is
1089 still useful to read manual pages.
1091 @findex manual-entry
1092 You can read the man page for an operating system command, library
1093 function, or system call, with the @kbd{M-x man} command. It
1094 runs the @code{man} program to format the man page; if the system
1095 permits, it runs @code{man} asynchronously, so that you can keep on
1096 editing while the page is being formatted. (On MS-DOS and MS-Windows
1097 3, you cannot edit while Emacs waits for @code{man} to finish.) The
1098 result goes in a buffer named @samp{*Man @var{topic}*}. These buffers
1099 use a special major mode, Man mode, that facilitates scrolling and
1100 jumping to other manual pages. For details, type @kbd{C-h m} while in
1103 @cindex sections of manual pages
1104 Each man page belongs to one of ten or more @dfn{sections}, each
1105 named by a digit or by a digit and a letter. Sometimes there are
1106 multiple man pages with the same name in different sections. To read
1107 a man page from a specific section, type
1108 @samp{@var{topic}(@var{section})} or @samp{@var{section} @var{topic}}
1109 when @kbd{M-x manual-entry} prompts for the topic. For example, to
1110 read the man page for the C library function @code{chmod} (as opposed
1111 to a command of the same name), type @kbd{M-x manual-entry @key{RET}
1112 chmod(2) @key{RET}} (@code{chmod} is a system call, so it is in
1115 @vindex Man-switches
1116 If you do not specify a section, the results depend on how the
1117 @code{man} program works on your system. Some of them display only
1118 the first man page they find. Others display all man pages that have
1119 the specified name, so you can move between them with the @kbd{M-n}
1120 and @kbd{M-p} keys@footnote{On some systems, the @code{man} program
1121 accepts a @samp{-a} command-line option which tells it to display all
1122 the man pages for the specified topic. If you want this behavior, you
1123 can add this option to the value of the variable @code{Man-switches}.}.
1124 The mode line shows how many manual pages are present in the Man buffer.
1126 @vindex Man-fontify-manpage-flag
1127 By default, Emacs highlights the text in man pages. For a long man
1128 page, highlighting can take substantial time. You can turn off
1129 highlighting of man pages by setting the variable
1130 @code{Man-fontify-manpage-flag} to @code{nil}.
1132 @findex Man-fontify-manpage
1133 If you insert the text of a man page into an Emacs buffer in some
1134 other fashion, you can use the command @kbd{M-x Man-fontify-manpage} to
1135 perform the same conversions that @kbd{M-x manual-entry} does.
1138 @cindex manual pages, on MS-DOS/MS-Windows
1139 An alternative way of reading manual pages is the @kbd{M-x woman}
1140 command@footnote{The name of the command, @code{woman}, is an acronym
1141 for ``w/o (without) man,'' since it doesn't use the @code{man}
1142 program.}. Unlike @kbd{M-x man}, it does not run any external
1143 programs to format and display the man pages; instead it does the job
1144 in Emacs Lisp, so it works on systems such as MS-Windows, where the
1145 @code{man} program (and the other programs it uses) are not generally
1148 @kbd{M-x woman} prompts for a name of a manual page, and provides
1149 completion based on the list of manual pages that are installed on
1150 your machine; the list of available manual pages is computed
1151 automatically the first time you invoke @code{woman}. The word at
1152 point in the current buffer is used to suggest the default for the
1153 name the manual page.
1155 With a numeric argument, @kbd{M-x woman} recomputes the list of the
1156 manual pages used for completion. This is useful if you add or delete
1159 If you type a name of a manual page and @kbd{M-x woman} finds that
1160 several manual pages by the same name exist in different sections, it
1161 pops up a window with possible candidates asking you to choose one of
1164 @vindex woman-manpath
1165 By default, @kbd{M-x woman} looks for manual pages in the
1166 directories specified in the @code{MANPATH} environment variable. (If
1167 @code{MANPATH} is not set, @code{woman} uses a suitable default value,
1168 which can be customized.) More precisely, @code{woman} looks for
1169 subdirectories that match the shell wildcard pattern @file{man*} in each one
1170 of these directories, and tries to find the manual pages in those
1171 subdirectories. When first invoked, @kbd{M-x woman} converts the
1172 value of @code{MANPATH} to a list of directory names and stores that
1173 list in the @code{woman-manpath} variable. Changing the value of this
1174 variable is another way to control the list of directories used.
1177 You can also augment the list of directories searched by
1178 @code{woman} by setting the value of the @code{woman-path} variable.
1179 This variable should hold a list of specific directories which
1180 @code{woman} should search, in addition to those in
1181 @code{woman-manpath}. Unlike @code{woman-manpath}, the directories in
1182 @code{woman-path} are searched for the manual pages, not for
1183 @file{man*} subdirectories.
1185 @findex woman-find-file
1186 Occasionally, you might need to display manual pages that are not in
1187 any of the directories listed by @code{woman-manpath} and
1188 @code{woman-path}. The @kbd{M-x woman-find-file} command prompts for a
1189 name of a manual page file, with completion, and then formats and
1190 displays that file like @kbd{M-x woman} does.
1192 @vindex woman-dired-keys
1193 The first time you invoke @kbd{M-x woman}, it defines the Dired
1194 @kbd{W} key to run the @code{woman-find-file} command on the current
1195 line's file. You can disable this by setting the variable
1196 @code{woman-dired-keys} to @code{nil}. @xref{Dired}. In addition,
1197 the Tar-mode @kbd{w} key is define to invoke @code{woman-find-file} on
1198 the current line's archive member.
1200 For more information about setting up and using @kbd{M-x woman}, see
1201 @ref{Top, WoMan, Browse UN*X Manual Pages WithOut Man, woman, The WoMan
1205 @subsection Emacs Lisp Documentation Lookup
1207 As you edit Lisp code to be run in Emacs, you can use the commands
1208 @kbd{C-h f} (@code{describe-function}) and @kbd{C-h v}
1209 (@code{describe-variable}) to view documentation of functions and
1210 variables that you want to use. These commands use the minibuffer to
1211 read the name of a function or variable to document, and display the
1212 documentation in a window. Their default arguments are based on the
1213 code in the neighborhood of point. For @kbd{C-h f}, the default is
1214 the function called in the innermost list containing point. @kbd{C-h
1215 v} uses the symbol name around or adjacent to point as its default.
1219 A more automatic but less powerful method is Eldoc mode. This minor
1220 mode constantly displays in the echo area the argument list for the
1221 function being called at point. (In other words, it finds the
1222 function call that point is contained in, and displays the argument
1223 list of that function.) Eldoc mode applies in Emacs Lisp and Lisp
1224 Interaction modes only. Use the command @kbd{M-x eldoc-mode} to
1225 enable or disable this feature.
1228 @section Hideshow minor mode
1230 @findex hs-minor-mode
1231 Hideshow minor mode provides selective display of portions of a
1232 program, known as @dfn{blocks}. You can use @kbd{M-x hs-minor-mode}
1233 to enable or disable this mode, or add @code{hs-minor-mode} to the
1234 mode hook for certain major modes in order to enable it automatically
1237 Just what constitutes a block depends on the major mode. In C mode
1238 or C++ mode, they are delimited by braces, while in Lisp mode and
1239 similar modes they are delimited by parentheses. Multi-line comments
1240 also count as blocks.
1243 @findex hs-hide-block
1245 @findex hs-show-block
1246 @findex hs-show-region
1247 @findex hs-hide-level
1248 @findex hs-minor-mode
1251 @kindex C-c @@ C-M-h
1252 @kindex C-c @@ C-M-s
1258 Hide the current block (@code{hs-hide-block}).
1260 Show the current block (@code{hs-show-block}).
1262 Either hide or show the current block (@code{hs-toggle-hiding})
1264 Either hide or show the block you click on (@code{hs-mouse-toggle-hiding})
1266 Hide all top-level blocks (@code{hs-hide-all}).
1268 Show everything in the buffer (@code{hs-show-all}).
1270 Hide all blocks @var{n} levels below this block
1271 (@code{hs-hide-level}).
1274 @vindex hs-hide-comments-when-hiding-all
1275 @vindex hs-isearch-open
1276 @vindex hs-special-modes-alist
1277 These user options exist for customizing Hideshow mode.
1280 @item hs-hide-comments-when-hiding-all
1281 Non-@code{nil} says that @kbd{hs-hide-all} should hide comments too.
1283 @item hs-isearch-open
1284 Specifies what kind of hidden blocks to open in Isearch mode.
1285 The value should be one of these four symbols.
1289 Open only code blocks.
1293 Open both code blocks and comments.
1295 Open neither code blocks nor comments.
1298 @item hs-special-modes-alist
1299 A list of elements, each specifying how to initialize Hideshow
1300 variables for one major mode. See the variable's documentation string
1301 for more information.
1304 @node Symbol Completion
1305 @section Completion for Symbol Names
1306 @cindex completion (symbol names)
1308 In Emacs, completion is something you normally do in the minibuffer.
1309 But one kind of completion is available in all buffers: completion for
1313 The character @kbd{M-@key{TAB}} runs a command to complete the
1314 partial symbol before point against the set of meaningful symbol
1315 names. This command inserts at point any additional characters that
1316 it can determine from the partial name.
1318 If the partial name in the buffer has multiple possible completions
1319 that differ in the very next character, so that it is impossible to
1320 complete even one more character, @kbd{M-@key{TAB}} displays a list of
1321 all possible completions in another window.
1323 @cindex tags-based completion
1324 @cindex Info index completion
1325 @findex complete-symbol
1326 In most programming language major modes, @kbd{M-@key{TAB}} runs the
1327 command @code{complete-symbol}, which provides two kinds of completion.
1328 Normally it does completion based on a tags table (@pxref{Tags}); with a
1329 numeric argument (regardless of the value), it does completion based on
1330 the names listed in the Info file indexes for your language. Thus, to
1331 complete the name of a symbol defined in your own program, use
1332 @kbd{M-@key{TAB}} with no argument; to complete the name of a standard
1333 library function, use @kbd{C-u M-@key{TAB}}. Of course, Info-based
1334 completion works only if there is an Info file for the standard library
1335 functions of your language, and only if it is installed at your site.
1337 @cindex Lisp symbol completion
1338 @cindex completion (Lisp symbols)
1339 @findex lisp-complete-symbol
1340 In Emacs-Lisp mode, the name space for completion normally consists of
1341 nontrivial symbols present in Emacs---those that have function
1342 definitions, values or properties. However, if there is an
1343 open-parenthesis immediately before the beginning of the partial symbol,
1344 only symbols with function definitions are considered as completions.
1345 The command which implements this is @code{lisp-complete-symbol}.
1347 In Text mode and related modes, @kbd{M-@key{TAB}} completes words
1348 based on the spell-checker's dictionary. @xref{Spelling}.
1351 @section Glasses minor mode
1352 @cindex Glasses mode
1353 @cindex identifiers, making long ones readable
1354 @cindex StudlyCaps, making them readable
1355 @findex glasses-mode
1357 Glasses minor mode makes @samp{unreadableIdentifiersLikeThis}
1358 readable by altering the way they display. It knows two different
1359 ways to do this: by displaying underscores between a lower-case letter
1360 and the following capital letter, and by emboldening the capital
1361 letters. It does not alter the buffer text, only the way they
1362 display, so you can use it even on read-only buffers. You can use the
1363 command @kbd{M-x glasses-mode} to enable or disable the mode in the
1364 current buffer; you can also add @code{glasses-mode} to the mode hook
1365 of the programming language major modes in which you normally want
1366 to use Glasses mode.
1368 @node Misc for Programs
1369 @section Other Features Useful for Editing Programs
1371 A number of Emacs commands that aren't designed specifically for
1372 editing programs are useful for that nonetheless.
1374 The Emacs commands that operate on words, sentences and paragraphs
1375 are useful for editing code. Most symbols names contain words
1376 (@pxref{Words}); sentences can be found in strings and comments
1377 (@pxref{Sentences}). Paragraphs in the strict sense can be found in
1378 program code (in long comments), but the paragraph commands are useful
1379 in other places too, because programming language major modes define
1380 paragraphs to begin and end at blank lines (@pxref{Paragraphs}).
1381 Judicious use of blank lines to make the program clearer will also
1382 provide useful chunks of text for the paragraph commands to work on.
1383 Auto Fill mode, if enabled in a programming language major mode,
1384 indents the new lines which it creates.
1386 The selective display feature is useful for looking at the overall
1387 structure of a function (@pxref{Selective Display}). This feature
1388 hides the lines that are indented more than a specified amount.
1389 Programming modes often support Outline minor mode (@pxref{Outline
1390 Mode}). The Foldout package provides folding-editor features
1393 The ``automatic typing'' features may be useful for writing programs.
1394 @xref{Top,,Autotyping, autotype, Autotyping}.
1397 @section C and Related Modes
1402 @cindex CORBA IDL mode
1403 @cindex Objective C mode
1409 @cindex mode, Objective C
1410 @cindex mode, CORBA IDL
1414 This section gives a brief description of the special features
1415 available in C, C++, Objective-C, Java, CORBA IDL, Pike and AWK modes.
1416 (These are called ``C mode and related modes.'') @xref{Top, , CC Mode,
1417 ccmode, CC Mode}, for a more extensive description of these modes
1418 and their special features.
1421 * Motion in C:: Commands to move by C statements, etc.
1422 * Electric C:: Colon and other chars can automatically reindent.
1423 * Hungry Delete:: A more powerful DEL command.
1424 * Other C Commands:: Filling comments, viewing expansion of macros,
1425 and other neat features.
1429 @subsection C Mode Motion Commands
1431 This section describes commands for moving point, in C mode and
1435 @item M-x c-beginning-of-defun
1436 @itemx M-x c-end-of-defun
1437 @findex c-beginning-of-defun
1438 @findex c-end-of-defun
1439 Move point to the beginning or end of the current function or
1440 top-level definition. These are found by searching for the least
1441 enclosing braces. (By contrast, @code{beginning-of-defun} and
1442 @code{end-of-defun} search for braces in column zero.) If you are
1443 editing code where the opening brace of a function isn't placed in
1444 column zero, you may wish to bind @code{C-M-a} and @code{C-M-e} to
1445 these commands. @xref{Moving by Defuns}.
1448 @kindex C-c C-u @r{(C mode)}
1449 @findex c-up-conditional
1450 Move point back to the containing preprocessor conditional, leaving the
1451 mark behind. A prefix argument acts as a repeat count. With a negative
1452 argument, move point forward to the end of the containing
1453 preprocessor conditional.
1455 @samp{#elif} is equivalent to @samp{#else} followed by @samp{#if}, so
1456 the function will stop at a @samp{#elif} when going backward, but not
1460 @kindex C-c C-p @r{(C mode)}
1461 @findex c-backward-conditional
1462 Move point back over a preprocessor conditional, leaving the mark
1463 behind. A prefix argument acts as a repeat count. With a negative
1464 argument, move forward.
1467 @kindex C-c C-n @r{(C mode)}
1468 @findex c-forward-conditional
1469 Move point forward across a preprocessor conditional, leaving the mark
1470 behind. A prefix argument acts as a repeat count. With a negative
1471 argument, move backward.
1474 @kindex M-a (C mode)
1475 @findex c-beginning-of-statement
1476 Move point to the beginning of the innermost C statement
1477 (@code{c-beginning-of-statement}). If point is already at the beginning
1478 of a statement, move to the beginning of the preceding statement. With
1479 prefix argument @var{n}, move back @var{n} @minus{} 1 statements.
1481 In comments or in strings which span more than one line, this command
1482 moves by sentences instead of statements.
1485 @kindex M-e (C mode)
1486 @findex c-end-of-statement
1487 Move point to the end of the innermost C statement or sentence; like
1488 @kbd{M-a} except that it moves in the other direction
1489 (@code{c-end-of-statement}).
1491 @item M-x c-backward-into-nomenclature
1492 @findex c-backward-into-nomenclature
1493 Move point backward to beginning of a C++ nomenclature section or word.
1494 With prefix argument @var{n}, move @var{n} times. If @var{n} is
1495 negative, move forward. C++ nomenclature means a symbol name in the
1496 style of NamingSymbolsWithMixedCaseAndNoUnderlines; each capital letter
1497 begins a section or word.
1499 In the GNU project, we recommend using underscores to separate words
1500 within an identifier in C or C++, rather than using case distinctions.
1502 @item M-x c-forward-into-nomenclature
1503 @findex c-forward-into-nomenclature
1504 Move point forward to end of a C++ nomenclature section or word.
1505 With prefix argument @var{n}, move @var{n} times.
1509 @subsection Electric C Characters
1511 In C mode and related modes, certain printing characters are
1512 ``electric''---in addition to inserting themselves, they also reindent
1513 the current line and may insert newlines. This feature is controlled by
1514 the variable @code{c-auto-newline}. The ``electric'' characters are
1515 @kbd{@{}, @kbd{@}}, @kbd{:}, @kbd{#}, @kbd{;}, @kbd{,}, @kbd{<},
1516 @kbd{>}, @kbd{/}, @kbd{*}, @kbd{(}, and @kbd{)}.
1518 Electric characters insert newlines only when the @dfn{auto-newline}
1519 feature is enabled (indicated by @samp{/a} in the mode line after the
1520 mode name). This feature is controlled by the variable
1521 @code{c-auto-newline}. You can turn this feature on or off with the
1522 command @kbd{C-c C-a}:
1526 @kindex C-c C-a @r{(C mode)}
1527 @findex c-toggle-auto-state
1528 Toggle the auto-newline feature (@code{c-toggle-auto-state}). With a
1529 prefix argument, this command turns the auto-newline feature on if the
1530 argument is positive, and off if it is negative.
1533 The colon character is electric because that is appropriate for a
1534 single colon. But when you want to insert a double colon in C++, the
1535 electric behavior of colon is inconvenient. You can insert a double
1536 colon with no reindentation or newlines by typing @kbd{C-c :}:
1541 @c This uses ``colon'' instead of a literal `:' because Info cannot
1542 @c cope with a `:' in a menu
1543 @kindex C-c @key{colon} @r{(C mode)}
1546 @kindex C-c : @r{(C mode)}
1548 @findex c-scope-operator
1549 Insert a double colon scope operator at point, without reindenting the
1550 line or adding any newlines (@code{c-scope-operator}).
1553 @vindex c-electric-pound-behavior
1554 The electric @kbd{#} key reindents the line if it appears to be the
1555 beginning of a preprocessor directive. This happens when the value of
1556 @code{c-electric-pound-behavior} is @code{(alignleft)}. You can turn
1557 this feature off by setting @code{c-electric-pound-behavior} to
1560 @vindex c-hanging-braces-alist
1561 The variable @code{c-hanging-braces-alist} controls the insertion of
1562 newlines before and after inserted braces. It is an association list
1563 with elements of the following form: @code{(@var{syntactic-symbol}
1564 . @var{nl-list})}. Most of the syntactic symbols that appear in
1565 @code{c-offsets-alist} are meaningful here as well.
1567 The list @var{nl-list} may contain either of the symbols
1568 @code{before} or @code{after}, or both; or it may be @code{nil}. When a
1569 brace is inserted, the syntactic context it defines is looked up in
1570 @code{c-hanging-braces-alist}; if it is found, the @var{nl-list} is used
1571 to determine where newlines are inserted: either before the brace,
1572 after, or both. If not found, the default is to insert a newline both
1573 before and after braces.
1575 @vindex c-hanging-colons-alist
1576 The variable @code{c-hanging-colons-alist} controls the insertion of
1577 newlines before and after inserted colons. It is an association list
1578 with elements of the following form: @code{(@var{syntactic-symbol}
1579 . @var{nl-list})}. The list @var{nl-list} may contain either of the
1580 symbols @code{before} or @code{after}, or both; or it may be @code{nil}.
1582 When a colon is inserted, the syntactic symbol it defines is looked
1583 up in this list, and if found, the @var{nl-list} is used to determine
1584 where newlines are inserted: either before the brace, after, or both.
1585 If the syntactic symbol is not found in this list, no newlines are
1588 @vindex c-cleanup-list
1589 Electric characters can also delete newlines automatically when the
1590 auto-newline feature is enabled. This feature makes auto-newline more
1591 acceptable, by deleting the newlines in the most common cases where you
1592 do not want them. Emacs can recognize several cases in which deleting a
1593 newline might be desirable; by setting the variable
1594 @code{c-cleanup-list}, you can specify @emph{which} of these cases that
1595 should happen. The variable's value is a list of symbols, each
1596 describing one case for possible deletion of a newline. Here are the
1597 meaningful symbols, and their meanings:
1600 @item brace-catch-brace
1601 Clean up @samp{@} catch (@var{condition}) @{} constructs by placing the
1602 entire construct on a single line. The clean-up occurs when you type
1603 the @samp{@{}, if there is nothing between the braces aside from
1604 @code{catch} and @var{condition}.
1606 @item brace-else-brace
1607 Clean up @samp{@} else @{} constructs by placing the entire construct on
1608 a single line. The clean-up occurs when you type the @samp{@{} after
1609 the @code{else}, but only if there is nothing but white space between
1610 the braces and the @code{else}.
1612 @item brace-elseif-brace
1613 Clean up @samp{@} else if (@dots{}) @{} constructs by placing the entire
1614 construct on a single line. The clean-up occurs when you type the
1615 @samp{@{}, if there is nothing but white space between the @samp{@}} and
1616 @samp{@{} aside from the keywords and the @code{if}-condition.
1618 @item empty-defun-braces
1619 Clean up empty defun braces by placing the braces on the same
1620 line. Clean-up occurs when you type the closing brace.
1622 @item defun-close-semi
1623 Clean up the semicolon after a @code{struct} or similar type
1624 declaration, by placing the semicolon on the same line as the closing
1625 brace. Clean-up occurs when you type the semicolon.
1627 @item list-close-comma
1628 Clean up commas following braces in array and aggregate
1629 initializers. Clean-up occurs when you type the comma.
1631 @item scope-operator
1632 Clean up double colons which may designate a C++ scope operator, by
1633 placing the colons together. Clean-up occurs when you type the second
1634 colon, but only when the two colons are separated by nothing but
1639 @subsection Hungry Delete Feature in C
1640 @cindex hungry deletion (C Mode)
1642 When the @dfn{hungry-delete} feature is enabled (indicated by
1643 @samp{/h} or @samp{/ah} in the mode line after the mode name), a single
1644 @key{DEL} command deletes all preceding whitespace, not just one space.
1645 To turn this feature on or off, use @kbd{C-c C-d}:
1649 @kindex C-c C-d @r{(C mode)}
1650 @findex c-toggle-hungry-state
1651 Toggle the hungry-delete feature (@code{c-toggle-hungry-state}). With a
1652 prefix argument, this command turns the hungry-delete feature on if the
1653 argument is positive, and off if it is negative.
1656 @kindex C-c C-t @r{(C mode)}
1657 @findex c-toggle-auto-hungry-state
1658 Toggle the auto-newline and hungry-delete features, both at once
1659 (@code{c-toggle-auto-hungry-state}).
1662 @vindex c-hungry-delete-key
1663 The variable @code{c-hungry-delete-key} controls whether the
1664 hungry-delete feature is enabled.
1666 @node Other C Commands
1667 @subsection Other Commands for C Mode
1670 @item M-x c-context-line-break
1671 @findex c-context-line-break
1672 This command inserts a line break and indents the new line in a manner
1673 appropriate to the context. In normal code, it does the work of
1674 @kbd{C-j} (@code{newline-and-indent}), in a C preprocessor line it
1675 additionally inserts a @samp{\} at the line break, and within comments
1676 it's like @kbd{M-j} (@code{c-indent-new-comment-line}).
1678 @code{c-context-line-break} isn't bound to a key by default, but it
1679 needs a binding to be useful. The following code will bind it to
1682 (define-key c-mode-base-map "\C-j" 'c-context-line-break)
1686 Put mark at the end of a function definition, and put point at the
1687 beginning (@code{c-mark-function}).
1690 @kindex M-q @r{(C mode)}
1691 @findex c-fill-paragraph
1692 Fill a paragraph, handling C and C++ comments (@code{c-fill-paragraph}).
1693 If any part of the current line is a comment or within a comment, this
1694 command fills the comment or the paragraph of it that point is in,
1695 preserving the comment indentation and comment delimiters.
1698 @cindex macro expansion in C
1699 @cindex expansion of C macros
1700 @findex c-macro-expand
1701 @kindex C-c C-e @r{(C mode)}
1702 Run the C preprocessor on the text in the region, and show the result,
1703 which includes the expansion of all the macro calls
1704 (@code{c-macro-expand}). The buffer text before the region is also
1705 included in preprocessing, for the sake of macros defined there, but the
1706 output from this part isn't shown.
1708 When you are debugging C code that uses macros, sometimes it is hard to
1709 figure out precisely how the macros expand. With this command, you
1710 don't have to figure it out; you can see the expansions.
1713 @findex c-backslash-region
1714 @kindex C-c C-\ @r{(C mode)}
1715 Insert or align @samp{\} characters at the ends of the lines of the
1716 region (@code{c-backslash-region}). This is useful after writing or
1717 editing a C macro definition.
1719 If a line already ends in @samp{\}, this command adjusts the amount of
1720 whitespace before it. Otherwise, it inserts a new @samp{\}. However,
1721 the last line in the region is treated specially; no @samp{\} is
1722 inserted on that line, and any @samp{\} there is deleted.
1724 @item M-x cpp-highlight-buffer
1725 @cindex preprocessor highlighting
1726 @findex cpp-highlight-buffer
1727 Highlight parts of the text according to its preprocessor conditionals.
1728 This command displays another buffer named @samp{*CPP Edit*}, which
1729 serves as a graphic menu for selecting how to display particular kinds
1730 of conditionals and their contents. After changing various settings,
1731 click on @samp{[A]pply these settings} (or go to that buffer and type
1732 @kbd{a}) to rehighlight the C mode buffer accordingly.
1735 @findex c-show-syntactic-information
1736 @kindex C-c C-s @r{(C mode)}
1737 Display the syntactic information about the current source line
1738 (@code{c-show-syntactic-information}). This is the information that
1739 directs how the line is indented.
1741 @item M-x cwarn-mode
1742 @itemx M-x global-cwarn-mode
1744 @findex global-cwarn-mode
1745 @vindex global-cwarn-mode
1747 @cindex suspicious constructions in C, C++
1748 CWarn minor mode highlights certain suspicious C and C++ constructions:
1752 Assignments inside expressions.
1754 Semicolon following immediately after @samp{if}, @samp{for}, and @samp{while}
1755 (except after a @samp{do @dots{} while} statement);
1757 C++ functions with reference parameters.
1761 You can enable the mode for one buffer with the command @kbd{M-x
1762 cwarn-mode}, or for all suitable buffers with the command @kbd{M-x
1763 global-cwarn-mode} or by customizing the variable
1764 @code{global-cwarn-mode}. You must also enable Font Lock mode to make
1767 @item M-x hide-ifdef-mode
1768 @findex hide-ifdef-mode
1769 @cindex Hide-ifdef mode
1770 Hide-ifdef minor mode hides selected code within @samp{#if} and
1771 @samp{#ifdef} preprocessor blocks. See the documentation string of
1772 @code{hide-ifdef-mode} for more information.
1774 @item M-x ff-find-related-file
1775 @cindex related files
1776 @findex ff-find-related-file
1777 @vindex ff-related-file-alist
1778 Find a file ``related'' in a special way to the file visited by the
1779 current buffer. Typically this will be the header file corresponding
1780 to a C/C++ source file, or vice versa. The variable
1781 @code{ff-related-file-alist} specifies how to compute related file
1786 @section Fortran Mode
1787 @cindex Fortran mode
1788 @cindex mode, Fortran
1790 Fortran mode provides special motion commands for Fortran statements and
1791 subprograms, and indentation commands that understand Fortran conventions
1792 of nesting, line numbers and continuation statements. Fortran mode has
1793 its own Auto Fill mode that breaks long lines into proper Fortran
1796 Special commands for comments are provided because Fortran comments
1797 are unlike those of other languages. Built-in abbrevs optionally save
1798 typing when you insert Fortran keywords.
1800 Use @kbd{M-x fortran-mode} to switch to this major mode. This command
1801 runs the hook @code{fortran-mode-hook} (@pxref{Hooks}).
1803 @cindex Fortran77 and Fortran90
1805 @findex fortran-mode
1806 Fortran mode is meant for editing Fortran77 ``fixed format'' source
1807 code. For editing the modern Fortran90 ``free format'' source code,
1808 use F90 mode (@code{f90-mode}). Emacs normally uses Fortran mode for
1809 files with extension @samp{.f}, @samp{.F} or @samp{.for}, and F90 mode
1810 for the extension @samp{.f90}. GNU Fortran supports both kinds of
1814 * Motion: Fortran Motion. Moving point by statements or subprograms.
1815 * Indent: Fortran Indent. Indentation commands for Fortran.
1816 * Comments: Fortran Comments. Inserting and aligning comments.
1817 * Autofill: Fortran Autofill. Auto fill minor mode for Fortran.
1818 * Columns: Fortran Columns. Measuring columns for valid Fortran.
1819 * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords.
1822 @node Fortran Motion
1823 @subsection Motion Commands
1825 In addition to the normal commands for moving by and operating on
1826 ``defuns'' (Fortran subprograms---functions and subroutines), Fortran
1827 mode provides special commands to move by statements.
1830 @kindex C-c C-n @r{(Fortran mode)}
1831 @findex fortran-next-statement
1833 Move to beginning of current or next statement
1834 (@code{fortran-next-statement}).
1836 @kindex C-c C-p @r{(Fortran mode)}
1837 @findex fortran-previous-statement
1839 Move to beginning of current or previous statement
1840 (@code{fortran-previous-statement}).
1843 @node Fortran Indent
1844 @subsection Fortran Indentation
1846 Special commands and features are needed for indenting Fortran code in
1847 order to make sure various syntactic entities (line numbers, comment line
1848 indicators and continuation line flags) appear in the columns that are
1849 required for standard Fortran.
1852 * Commands: ForIndent Commands. Commands for indenting and filling Fortran.
1853 * Contline: ForIndent Cont. How continuation lines indent.
1854 * Numbers: ForIndent Num. How line numbers auto-indent.
1855 * Conv: ForIndent Conv. Conventions you must obey to avoid trouble.
1856 * Vars: ForIndent Vars. Variables controlling Fortran indent style.
1859 @node ForIndent Commands
1860 @subsubsection Fortran Indentation and Filling Commands
1864 Break the current line and set up a continuation line
1865 (@code{fortran-split-line}).
1867 Join this line to the previous line (@code{fortran-join-line}).
1869 Indent all the lines of the subprogram point is in
1870 (@code{fortran-indent-subprogram}).
1872 Fill a comment block or statement.
1875 @kindex C-M-q @r{(Fortran mode)}
1876 @findex fortran-indent-subprogram
1877 The key @kbd{C-M-q} runs @code{fortran-indent-subprogram}, a command
1878 to reindent all the lines of the Fortran subprogram (function or
1879 subroutine) containing point.
1881 @kindex C-M-j @r{(Fortran mode)}
1882 @findex fortran-split-line
1883 The key @kbd{C-M-j} runs @code{fortran-split-line}, which splits
1884 a line in the appropriate fashion for Fortran. In a non-comment line,
1885 the second half becomes a continuation line and is indented
1886 accordingly. In a comment line, both halves become separate comment
1889 @kindex M-^ @r{(Fortran mode)}
1890 @kindex C-c C-d @r{(Fortran mode)}
1891 @findex fortran-join-line
1892 @kbd{M-^} or @kbd{C-c C-d} runs the command @code{fortran-join-line},
1893 which joins a continuation line back to the previous line, roughly as
1894 the inverse of @code{fortran-split-line}. The point must be on a
1895 continuation line when this command is invoked.
1897 @kindex M-q @r{(Fortran mode)}
1898 @kbd{M-q} in Fortran mode fills the comment block or statement that
1899 point is in. This removes any excess statement continuations.
1901 @node ForIndent Cont
1902 @subsubsection Continuation Lines
1903 @cindex Fortran continuation lines
1905 @vindex fortran-continuation-string
1906 Most modern Fortran compilers allow two ways of writing continuation
1907 lines. If the first non-space character on a line is in column 5, then
1908 that line is a continuation of the previous line. We call this
1909 @dfn{fixed format}. (In GNU Emacs we always count columns from 0.) The
1910 variable @code{fortran-continuation-string} specifies what character to
1911 put on column 5. A line that starts with a tab character followed by
1912 any digit except @samp{0} is also a continuation line. We call this
1913 style of continuation @dfn{tab format}.
1915 @vindex indent-tabs-mode @r{(Fortran mode)}
1916 Fortran mode can make either style of continuation line, but you
1917 must specify which one you prefer. The value of the variable
1918 @code{indent-tabs-mode} controls the choice: @code{nil} for fixed
1919 format, and non-@code{nil} for tab format. You can tell which style
1920 is presently in effect by the presence or absence of the string
1921 @samp{Tab} in the mode line.
1923 If the text on a line starts with the conventional Fortran
1924 continuation marker @samp{$}, or if it begins with any non-whitespace
1925 character in column 5, Fortran mode treats it as a continuation line.
1926 When you indent a continuation line with @key{TAB}, it converts the line
1927 to the current continuation style. When you split a Fortran statement
1928 with @kbd{C-M-j}, the continuation marker on the newline is created
1929 according to the continuation style.
1931 The setting of continuation style affects several other aspects of
1932 editing in Fortran mode. In fixed format mode, the minimum column
1933 number for the body of a statement is 6. Lines inside of Fortran
1934 blocks that are indented to larger column numbers always use only the
1935 space character for whitespace. In tab format mode, the minimum
1936 column number for the statement body is 8, and the whitespace before
1937 column 8 must always consist of one tab character.
1939 @vindex fortran-tab-mode-default
1940 @vindex fortran-analyze-depth
1941 When you enter Fortran mode for an existing file, it tries to deduce the
1942 proper continuation style automatically from the file contents. The first
1943 line that begins with either a tab character or six spaces determines the
1944 choice. The variable @code{fortran-analyze-depth} specifies how many lines
1945 to consider (at the beginning of the file); if none of those lines
1946 indicates a style, then the variable @code{fortran-tab-mode-default}
1947 specifies the style. If it is @code{nil}, that specifies fixed format, and
1948 non-@code{nil} specifies tab format.
1951 @subsubsection Line Numbers
1953 If a number is the first non-whitespace in the line, Fortran
1954 indentation assumes it is a line number and moves it to columns 0
1955 through 4. (Columns always count from 0 in GNU Emacs.)
1957 @vindex fortran-line-number-indent
1958 Line numbers of four digits or less are normally indented one space.
1959 The variable @code{fortran-line-number-indent} controls this; it
1960 specifies the maximum indentation a line number can have. Line numbers
1961 are indented to right-justify them to end in column 4 unless that would
1962 require more than this maximum indentation. The default value of the
1965 @vindex fortran-electric-line-number
1966 Simply inserting a line number is enough to indent it according to
1967 these rules. As each digit is inserted, the indentation is recomputed.
1968 To turn off this feature, set the variable
1969 @code{fortran-electric-line-number} to @code{nil}. Then inserting line
1970 numbers is like inserting anything else.
1972 @node ForIndent Conv
1973 @subsubsection Syntactic Conventions
1975 Fortran mode assumes that you follow certain conventions that simplify
1976 the task of understanding a Fortran program well enough to indent it
1981 Two nested @samp{do} loops never share a @samp{continue} statement.
1984 Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do}
1985 and others are written without embedded whitespace or line breaks.
1987 Fortran compilers generally ignore whitespace outside of string
1988 constants, but Fortran mode does not recognize these keywords if they
1989 are not contiguous. Constructs such as @samp{else if} or @samp{end do}
1990 are acceptable, but the second word should be on the same line as the
1991 first and not on a continuation line.
1995 If you fail to follow these conventions, the indentation commands may
1996 indent some lines unaesthetically. However, a correct Fortran program
1997 retains its meaning when reindented even if the conventions are not
2000 @node ForIndent Vars
2001 @subsubsection Variables for Fortran Indentation
2003 @vindex fortran-do-indent
2004 @vindex fortran-if-indent
2005 @vindex fortran-structure-indent
2006 @vindex fortran-continuation-indent
2007 @vindex fortran-check-all-num@dots{}
2008 @vindex fortran-minimum-statement-indent@dots{}
2009 Several additional variables control how Fortran indentation works:
2012 @item fortran-do-indent
2013 Extra indentation within each level of @samp{do} statement (default 3).
2015 @item fortran-if-indent
2016 Extra indentation within each level of @samp{if} statement (default 3).
2017 This value is also used for extra indentation within each level of the
2018 Fortran 90 @samp{where} statement.
2020 @item fortran-structure-indent
2021 Extra indentation within each level of @samp{structure}, @samp{union}, or
2022 @samp{map} statements (default 3).
2024 @item fortran-continuation-indent
2025 Extra indentation for bodies of continuation lines (default 5).
2027 @item fortran-check-all-num-for-matching-do
2028 If this is @code{nil}, indentation assumes that each @samp{do} statement
2029 ends on a @samp{continue} statement. Therefore, when computing
2030 indentation for a statement other than @samp{continue}, it can save time
2031 by not checking for a @samp{do} statement ending there. If this is
2032 non-@code{nil}, indenting any numbered statement must check for a
2033 @samp{do} that ends there. The default is @code{nil}.
2035 @item fortran-blink-matching-if
2036 If this is @code{t}, indenting an @samp{endif} statement moves the
2037 cursor momentarily to the matching @samp{if} statement to show where it
2038 is. The default is @code{nil}.
2040 @item fortran-minimum-statement-indent-fixed
2041 Minimum indentation for fortran statements when using fixed format
2042 continuation line style. Statement bodies are never indented less than
2043 this much. The default is 6.
2045 @item fortran-minimum-statement-indent-tab
2046 Minimum indentation for fortran statements for tab format continuation line
2047 style. Statement bodies are never indented less than this much. The
2051 @node Fortran Comments
2052 @subsection Fortran Comments
2054 The usual Emacs comment commands assume that a comment can follow a line
2055 of code. In Fortran, the standard comment syntax requires an entire line
2056 to be just a comment. Therefore, Fortran mode replaces the standard Emacs
2057 comment commands and defines some new variables.
2059 Fortran mode can also handle the Fortran90 comment syntax where comments
2060 start with @samp{!} and can follow other text. Because only some Fortran77
2061 compilers accept this syntax, Fortran mode will not insert such comments
2062 unless you have said in advance to do so. To do this, set the variable
2063 @code{comment-start} to @samp{"!"} (@pxref{Variables}).
2067 Align comment or insert new comment (@code{fortran-comment-indent}).
2070 Applies to nonstandard @samp{!} comments only.
2073 Turn all lines of the region into comments, or (with argument) turn them back
2074 into real code (@code{fortran-comment-region}).
2077 @kbd{M-;} in Fortran mode is redefined as the command
2078 @code{fortran-comment-indent}. Like the usual @kbd{M-;} command, this
2079 recognizes any kind of existing comment and aligns its text appropriately;
2080 if there is no existing comment, a comment is inserted and aligned. But
2081 inserting and aligning comments are not the same in Fortran mode as in
2084 When a new comment must be inserted, if the current line is blank, a
2085 full-line comment is inserted. On a non-blank line, a nonstandard @samp{!}
2086 comment is inserted if you have said you want to use them. Otherwise a
2087 full-line comment is inserted on a new line before the current line.
2089 Nonstandard @samp{!} comments are aligned like comments in other
2090 languages, but full-line comments are different. In a standard full-line
2091 comment, the comment delimiter itself must always appear in column zero.
2092 What can be aligned is the text within the comment. You can choose from
2093 three styles of alignment by setting the variable
2094 @code{fortran-comment-indent-style} to one of these values:
2096 @vindex fortran-comment-indent-style
2097 @vindex fortran-comment-line-extra-indent
2100 Align the text at a fixed column, which is the sum of
2101 @code{fortran-comment-line-extra-indent} and the minimum statement
2102 indentation. This is the default.
2104 The minimum statement indentation is
2105 @code{fortran-minimum-statement-indent-fixed} for fixed format
2106 continuation line style and @code{fortran-minimum-statement-indent-tab}
2107 for tab format style.
2110 Align the text as if it were a line of code, but with an additional
2111 @code{fortran-comment-line-extra-indent} columns of indentation.
2114 Don't move text in full-line comments automatically at all.
2117 @vindex fortran-comment-indent-char
2118 In addition, you can specify the character to be used to indent within
2119 full-line comments by setting the variable
2120 @code{fortran-comment-indent-char} to the single-character string you want
2123 @vindex fortran-directive-re
2124 Compiler directive lines, or preprocessor lines, have much the same
2125 appearance as comment lines. It is important, though, that such lines
2126 never be indented at all, no matter what the value of
2127 @code{fortran-comment-indent-style}. The variable
2128 @code{fortran-directive-re} is a regular expression that specifies which
2129 lines are directives. Matching lines are never indented, and receive
2130 distinctive font-locking.
2132 @vindex comment-line-start
2133 @vindex comment-line-start-skip
2134 Fortran mode introduces two variables @code{comment-line-start} and
2135 @code{comment-line-start-skip}, which play for full-line comments the same
2136 roles played by @code{comment-start} and @code{comment-start-skip} for
2137 ordinary text-following comments. Normally these are set properly by
2138 Fortran mode, so you do not need to change them.
2140 The normal Emacs comment command @kbd{C-x ;} has not been redefined. If
2141 you use @samp{!} comments, this command can be used with them. Otherwise
2142 it is useless in Fortran mode.
2144 @kindex C-c ; @r{(Fortran mode)}
2145 @findex fortran-comment-region
2146 @vindex fortran-comment-region
2147 The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
2148 lines of the region into comments by inserting the string @samp{C$$$} at
2149 the front of each one. With a numeric argument, it turns the region
2150 back into live code by deleting @samp{C$$$} from the front of each line
2151 in it. The string used for these comments can be controlled by setting
2152 the variable @code{fortran-comment-region}. Note that here we have an
2153 example of a command and a variable with the same name; these two uses
2154 of the name never conflict because in Lisp and in Emacs it is always
2155 clear from the context which one is meant.
2157 @node Fortran Autofill
2158 @subsection Fortran Auto Fill Mode
2160 Fortran Auto Fill mode is a minor mode which automatically splits
2161 Fortran statements as you insert them when they become too wide.
2162 Splitting a statement involves making continuation lines using
2163 @code{fortran-continuation-string} (@pxref{ForIndent Cont}). This
2164 splitting happens when you type @key{SPC}, @key{RET}, or @key{TAB}, and
2165 also in the Fortran indentation commands.
2167 @findex fortran-auto-fill-mode
2168 @kbd{M-x fortran-auto-fill-mode} turns Fortran Auto Fill mode on if it
2169 was off, or off if it was on. This command works the same as @kbd{M-x
2170 auto-fill-mode} does for normal Auto Fill mode (@pxref{Filling}). A
2171 positive numeric argument turns Fortran Auto Fill mode on, and a
2172 negative argument turns it off. You can see when Fortran Auto Fill mode
2173 is in effect by the presence of the word @samp{Fill} in the mode line,
2174 inside the parentheses. Fortran Auto Fill mode is a minor mode, turned
2175 on or off for each buffer individually. @xref{Minor Modes}.
2177 @vindex fortran-break-before-delimiters
2178 Fortran Auto Fill mode breaks lines at spaces or delimiters when the
2179 lines get longer than the desired width (the value of @code{fill-column}).
2180 The delimiters that Fortran Auto Fill mode may break at are @samp{,},
2181 @samp{'}, @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, and @samp{)}.
2182 The line break comes after the delimiter if the variable
2183 @code{fortran-break-before-delimiters} is @code{nil}. Otherwise (and by
2184 default), the break comes before the delimiter.
2186 By default, Fortran Auto Fill mode is not enabled. If you want this
2187 feature turned on permanently, add a hook function to
2188 @code{fortran-mode-hook} to execute @code{(fortran-auto-fill-mode 1)}.
2191 @node Fortran Columns
2192 @subsection Checking Columns in Fortran
2196 Display a ``column ruler'' momentarily above the current line
2197 (@code{fortran-column-ruler}).
2199 Split the current window horizontally temporarily so that it is 72
2200 columns wide (@code{fortran-window-create-momentarily}). This may
2201 help you avoid making lines longer than the 72-character limit that
2202 some Fortran compilers impose.
2204 Split the current window horizontally so that it is 72 columns wide
2205 (@code{fortran-window-create}). You can then continue editing.
2206 @item M-x fortran-strip-sequence-nos
2207 Delete all text in column 72 and beyond.
2210 @kindex C-c C-r @r{(Fortran mode)}
2211 @findex fortran-column-ruler
2212 The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
2213 ruler momentarily above the current line. The comment ruler is two lines
2214 of text that show you the locations of columns with special significance in
2215 Fortran programs. Square brackets show the limits of the columns for line
2216 numbers, and curly brackets show the limits of the columns for the
2217 statement body. Column numbers appear above them.
2219 Note that the column numbers count from zero, as always in GNU Emacs.
2220 As a result, the numbers may be one less than those you are familiar
2221 with; but the positions they indicate in the line are standard for
2224 @vindex fortran-column-ruler-fixed
2225 @vindex fortran-column-ruler-tabs
2226 The text used to display the column ruler depends on the value of
2227 the variable @code{indent-tabs-mode}. If @code{indent-tabs-mode} is
2228 @code{nil}, then the value of the variable
2229 @code{fortran-column-ruler-fixed} is used as the column ruler.
2230 Otherwise, the variable @code{fortran-column-ruler-tab} is displayed.
2231 By changing these variables, you can change the column ruler display.
2233 @kindex C-c C-w @r{(Fortran mode)}
2234 @findex fortran-window-create-momentarily
2235 @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily
2236 splits the current window horizontally, making a window 72 columns
2237 wide, so you can see which lines that is too long. Type a space to
2238 restore the normal width.
2240 @kindex C-u C-c C-w @r{(Fortran mode)}
2241 @findex fortran-window-create
2242 You can also split the window horizontally and continue editing with
2243 the split in place. To do this, use @kbd{C-u C-c C-w} (@code{M-x
2244 fortran-window-create}). By editing in this window you can
2245 immediately see when you make a line too wide to be correct Fortran.
2247 @findex fortran-strip-sequence-nos
2248 The command @kbd{M-x fortran-strip-sequence-nos} deletes all text in
2249 column 72 and beyond, on all lines in the current buffer. This is the
2250 easiest way to get rid of old sequence numbers.
2252 @node Fortran Abbrev
2253 @subsection Fortran Keyword Abbrevs
2255 Fortran mode provides many built-in abbrevs for common keywords and
2256 declarations. These are the same sort of abbrev that you can define
2257 yourself. To use them, you must turn on Abbrev mode. @xref{Abbrevs}.
2259 The built-in abbrevs are unusual in one way: they all start with a
2260 semicolon. You cannot normally use semicolon in an abbrev, but Fortran
2261 mode makes this possible by changing the syntax of semicolon to ``word
2264 For example, one built-in Fortran abbrev is @samp{;c} for
2265 @samp{continue}. If you insert @samp{;c} and then insert a punctuation
2266 character such as a space or a newline, the @samp{;c} expands automatically
2267 to @samp{continue}, provided Abbrev mode is enabled.@refill
2269 Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
2270 Fortran abbrevs and what they stand for.
2276 @cindex assembler mode
2277 Asm mode is a major mode for editing files of assembler code. It
2278 defines these commands:
2282 @code{tab-to-tab-stop}.
2284 Insert a newline and then indent using @code{tab-to-tab-stop}.
2286 Insert a colon and then remove the indentation from before the label
2287 preceding colon. Then do @code{tab-to-tab-stop}.
2289 Insert or align a comment.
2292 The variable @code{asm-comment-char} specifies which character
2293 starts comments in assembler syntax.
2296 arch-tag: c7ee7409-40a4-45c7-bfb7-ae7f2c74d0c0