Sync up with r21-2-27.
[chise/xemacs-chise.git] / info / xemacs.info-10
1 This is Info file ../info/xemacs.info, produced by Makeinfo version
2 1.68 from the input file xemacs/xemacs.texi.
3
4 INFO-DIR-SECTION XEmacs Editor
5 START-INFO-DIR-ENTRY
6 * XEmacs: (xemacs).             XEmacs Editor.
7 END-INFO-DIR-ENTRY
8
9    This file documents the XEmacs editor.
10
11    Copyright (C) 1985, 1986, 1988 Richard M. Stallman.  Copyright (C)
12 1991, 1992, 1993, 1994 Lucid, Inc.  Copyright (C) 1993, 1994 Sun
13 Microsystems, Inc.  Copyright (C) 1995 Amdahl Corporation.
14
15    Permission is granted to make and distribute verbatim copies of this
16 manual provided the copyright notice and this permission notice are
17 preserved on all copies.
18
19    Permission is granted to copy and distribute modified versions of
20 this manual under the conditions for verbatim copying, provided also
21 that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
22 General Public License" are included exactly as in the original, and
23 provided that the entire resulting derived work is distributed under the
24 terms of a permission notice identical to this one.
25
26    Permission is granted to copy and distribute translations of this
27 manual into another language, under the above conditions for modified
28 versions, except that the sections entitled "The GNU Manifesto",
29 "Distribution" and "GNU General Public License" may be included in a
30 translation approved by the author instead of in the original English.
31
32 \1f
33 File: xemacs.info,  Node: Outline Motion,  Next: Outline Visibility,  Prev: Outline Format,  Up: Outline Mode
34
35 Outline Motion Commands
36 .......................
37
38    Some special commands in Outline mode move backward and forward to
39 heading lines.
40
41 `C-c C-n'
42      Move point to the next visible heading line
43      (`outline-next-visible-heading').
44
45 `C-c C-p'
46      Move point to the previous visible heading line
47      (`outline-previous-visible-heading').
48
49 `C-c C-f'
50      Move point to the next visible heading line at the same level as
51      the one point is on (`outline-forward-same-level').
52
53 `C-c C-b'
54      Move point to the previous visible heading line at the same level
55      (`outline-backward-same-level').
56
57 `C-c C-u'
58      Move point up to a lower-level (more inclusive) visible heading
59      line (`outline-up-heading').
60
61    `C-c C-n' (`next-visible-heading') moves down to the next heading
62 line.  `C-c C-p' (`previous-visible-heading') moves similarly backward.
63 Both accept numeric arguments as repeat counts.  The names emphasize
64 that invisible headings are skipped, but this is not really a special
65 feature.  All editing commands that look for lines ignore the invisible
66 lines automatically.
67
68    More advanced motion commands understand the levels of headings.
69 The commands `C-c C-f' (`outline-forward-same-level') and `C-c C-b'
70 (`outline-backward-same-level') move from one heading line to another
71 visible heading at the same depth in the outline.  `C-c C-u'
72 (`outline-up-heading') moves backward to another heading that is less
73 deeply nested.
74
75 \1f
76 File: xemacs.info,  Node: Outline Visibility,  Prev: Outline Motion,  Up: Outline Mode
77
78 Outline Visibility Commands
79 ...........................
80
81    The other special commands of outline mode are used to make lines
82 visible or invisible.  Their names all start with `hide' or `show'.
83 Most of them exist as pairs of opposites.  They are not undoable;
84 instead, you can undo right past them.  Making lines visible or
85 invisible is simply not recorded by the undo mechanism.
86
87 `M-x hide-body'
88      Make all body lines in the buffer invisible.
89
90 `M-x show-all'
91      Make all lines in the buffer visible.
92
93 `C-c C-d'
94      Make everything under this heading invisible, not including this
95      heading itself (`hide-subtree').
96
97 `C-c C-s'
98      Make everything under this heading visible, including body,
99      subheadings, and their bodies (`show-subtree').
100
101 `M-x hide-leaves'
102      Make the body of this heading line, and of all its subheadings,
103      invisible.
104
105 `M-x show-branches'
106      Make all subheadings of this heading line, at all levels, visible.
107
108 `C-c C-i'
109      Make immediate subheadings (one level down) of this heading line
110      visible (`show-children').
111
112 `M-x hide-entry'
113      Make this heading line's body invisible.
114
115 `M-x show-entry'
116      Make this heading line's body visible.
117
118    Two commands that are exact opposites are `M-x hide-entry' and `M-x
119 show-entry'.  They are used with point on a heading line, and apply
120 only to the body lines of that heading.  The subtopics and their bodies
121 are not affected.
122
123    Two more powerful opposites are `C-c C-h' (`hide-subtree') and `C-c
124 C-s' (`show-subtree').  Both should be used when point is on a heading
125 line, and both apply to all the lines of that heading's "subtree": its
126 body, all its subheadings, both direct and indirect, and all of their
127 bodies.  In other words, the subtree contains everything following this
128 heading line, up to and not including the next heading of the same or
129 higher rank.
130
131    Intermediate between a visible subtree and an invisible one is having
132 all the subheadings visible but none of the body.  There are two
133 commands for doing this, one that hides the bodies and one that makes
134 the subheadings visible.  They are `M-x hide-leaves' and `M-x
135 show-branches'.
136
137    A little weaker than `show-branches' is `C-c C-i' (`show-children').
138 It makes just the direct subheadings visible--those one level down.
139 Deeper subheadings remain invisible.
140
141    Two commands have a blanket effect on the whole file.  `M-x
142 hide-body' makes all body lines invisible, so that you see just the
143 outline structure.  `M-x show-all' makes all lines visible.  You can
144 think of these commands as a pair of opposites even though `M-x
145 show-all' applies to more than just body lines.
146
147    You can turn off the use of ellipses at the ends of visible lines by
148 setting `selective-display-ellipses' to `nil'.  The result is no
149 visible indication of the presence of invisible lines.
150
151 \1f
152 File: xemacs.info,  Node: Words,  Next: Sentences,  Prev: Text Mode,  Up: Text
153
154 Words
155 =====
156
157    Emacs has commands for moving over or operating on words.  By
158 convention, the keys for them are all `Meta-' characters.
159
160 `M-f'
161      Move forward over a word (`forward-word').
162
163 `M-b'
164      Move backward over a word (`backward-word').
165
166 `M-d'
167      Kill up to the end of a word (`kill-word').
168
169 `M-<DEL>'
170      Kill back to the beginning of a word (`backward-kill-word').
171
172 `M-@'
173      Mark the end of the next word (`mark-word').
174
175 `M-t'
176      Transpose two words;  drag a word forward or backward across other
177      words (`transpose-words').
178
179    Notice how these keys form a series that parallels the
180 character-based `C-f', `C-b', `C-d', `C-t' and <DEL>.  `M-@' is related
181 to `C-@', which is an alias for `C-<SPC>'.
182
183    The commands `Meta-f' (`forward-word') and `Meta-b'
184 (`backward-word') move forward and backward over words.  They are
185 analogous to `Control-f' and `Control-b', which move over single
186 characters.  Like their `Control-' analogues, `Meta-f' and `Meta-b'
187 move several words if given an argument.  `Meta-f' with a negative
188 argument moves backward, and `Meta-b' with a negative argument moves
189 forward.  Forward motion stops after the last letter of the word, while
190 backward motion stops before the first letter.
191
192    `Meta-d' (`kill-word') kills the word after point.  To be precise,
193 it kills everything from point to the place `Meta-f' would move to.
194 Thus, if point is in the middle of a word, `Meta-d' kills just the part
195 after point.  If some punctuation comes between point and the next
196 word, it is killed along with the word.  (To kill only the next word
197 but not the punctuation before it, simply type `Meta-f' to get to the
198 end and kill the word backwards with `Meta-<DEL>'.)  `Meta-d' takes
199 arguments just like `Meta-f'.
200
201    `Meta-<DEL>' (`backward-kill-word') kills the word before point.  It
202 kills everything from point back to where `Meta-b' would move to.  If
203 point is after the space in `FOO, BAR', then `FOO, ' is killed.   To
204 kill just `FOO', type `Meta-b Meta-d' instead of `Meta-<DEL>'.
205
206    `Meta-t' (`transpose-words') exchanges the word before or containing
207 point with the following word.  The delimiter characters between the
208 words do not move.  For example, transposing `FOO, BAR' results in
209 `BAR, FOO' rather than `BAR FOO,'.  *Note Transpose::, for more on
210 transposition and on arguments to transposition commands.
211
212    To operate on the next N words with an operation which applies
213 between point and mark, you can either set the mark at point and then
214 move over the words, or you can use the command `Meta-@' (`mark-word')
215 which does not move point but sets the mark where `Meta-f' would move
216 to.  It can be given arguments just like `Meta-f'.
217
218    The word commands' understanding of syntax is completely controlled
219 by the syntax table.  For example, any character can be declared to be
220 a word delimiter.  *Note Syntax::.
221
222 \1f
223 File: xemacs.info,  Node: Sentences,  Next: Paragraphs,  Prev: Words,  Up: Text
224
225 Sentences
226 =========
227
228    The Emacs commands for manipulating sentences and paragraphs are
229 mostly on `Meta-' keys, and therefore are like the word-handling
230 commands.
231
232 `M-a'
233      Move back to the beginning of the sentence (`backward-sentence').
234
235 `M-e'
236      Move forward to the end of the sentence (`forward-sentence').
237
238 `M-k'
239      Kill forward to the end of the sentence (`kill-sentence').
240
241 `C-x <DEL>'
242      Kill back to the beginning of the sentence
243      (`backward-kill-sentence').
244
245    The commands `Meta-a' and `Meta-e' (`backward-sentence' and
246 `forward-sentence') move to the beginning and end of the current
247 sentence, respectively.  They resemble `Control-a' and `Control-e',
248 which move to the beginning and end of a line.  Unlike their
249 counterparts, `Meta-a' and `Meta-e' move over successive sentences if
250 repeated or given numeric arguments.  Emacs assumes the typist's
251 convention is followed, and thus considers a sentence to end wherever
252 there is a `.', `?', or `!' followed by the end of a line or two
253 spaces, with any number of `)', `]', `'', or `"' characters allowed in
254 between.  A sentence also begins or ends wherever a paragraph begins or
255 ends.
256
257    Neither `M-a' nor `M-e' moves past the newline or spaces beyond the
258 sentence edge at which it is stopping.
259
260    `M-a' and `M-e' have a corresponding kill command, just like `C-a'
261 and `C-e' have `C-k'.  The command is  `M-k' (`kill-sentence') which
262 kills from point to the end of the sentence.  With minus one as an
263 argument it kills back to the beginning of the sentence.  Larger
264 arguments serve as repeat counts.
265
266    There is a special command, `C-x <DEL>' (`backward-kill-sentence'),
267 for killing back to the beginning of a sentence, which is useful when
268 you change your mind in the middle of composing text.
269
270    The variable `sentence-end' controls recognition of the end of a
271 sentence.  It is a regexp that matches the last few characters of a
272 sentence, together with the whitespace following the sentence.  Its
273 normal value is:
274
275      "[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
276
277 This example is explained in the section on regexps.  *Note Regexps::.
278
279 \1f
280 File: xemacs.info,  Node: Paragraphs,  Next: Pages,  Prev: Sentences,  Up: Text
281
282 Paragraphs
283 ==========
284
285    The Emacs commands for manipulating paragraphs are also `Meta-' keys.
286
287 `M-['
288      Move back to previous paragraph beginning
289      (`backward-paragraph').
290
291 `M-]'
292      Move forward to next paragraph end (`forward-paragraph').
293
294 `M-h'
295      Put point and mark around this or next paragraph
296      (`mark-paragraph').
297
298    `Meta-[' moves to the beginning of the current or previous paragraph,
299 while `Meta-]' moves to the end of the current or next paragraph.
300 Blank lines and text formatter command lines separate paragraphs and are
301 not part of any paragraph.  An indented line starts a new paragraph.
302
303    In major modes for programs (as opposed to Text mode), paragraphs
304 begin and end only at blank lines.  As a result, the paragraph commands
305 continue to be useful even though there are no paragraphs per se.
306
307    When there is a fill prefix, paragraphs are delimited by all lines
308 which don't start with the fill prefix.  *Note Filling::.
309
310    To operate on a paragraph, you can use the command `Meta-h'
311 (`mark-paragraph') to set the region around it.  This command puts
312 point at the beginning and mark at the end of the paragraph point was
313 in.  If point is between paragraphs (in a run of blank lines or at a
314 boundary), the paragraph following point is surrounded by point and
315 mark.  If there are blank lines preceding the first line of the
316 paragraph, one of the blank lines is included in the region.  Thus, for
317 example, `M-h C-w' kills the paragraph around or after point.
318
319    The precise definition of a paragraph boundary is controlled by the
320 variables `paragraph-separate' and `paragraph-start'.  The value of
321 `paragraph-start' is a regexp that matches any line that either starts
322 or separates paragraphs.  The value of `paragraph-separate' is another
323 regexp that  matches only lines that separate paragraphs without being
324 part of any paragraph.  Lines that start a new paragraph and are
325 contained in it must match both regexps.  For example, normally
326 `paragraph-start' is `"^[ \t\n\f]"' and `paragraph-separate' is `"^[
327 \t\f]*$"'.
328
329    Normally it is desirable for page boundaries to separate paragraphs.
330 The default values of these variables recognize the usual separator for
331 pages.
332
333 \1f
334 File: xemacs.info,  Node: Pages,  Next: Filling,  Prev: Paragraphs,  Up: Text
335
336 Pages
337 =====
338
339    Files are often thought of as divided into "pages" by the "formfeed"
340 character (ASCII Control-L, octal code 014).  For example, if a file is
341 printed on a line printer, each "page" of the file starts on a new page
342 of paper.  Emacs treats a page-separator character just like any other
343 character.  It can be inserted with `C-q C-l' or deleted with <DEL>.
344 You are free to paginate your file or not.  However, since pages are
345 often meaningful divisions of the file, commands are provided to move
346 over them and operate on them.
347
348 `C-x ['
349      Move point to previous page boundary (`backward-page').
350
351 `C-x ]'
352      Move point to next page boundary (`forward-page').
353
354 `C-x C-p'
355      Put point and mark around this page (or another page)
356      (`mark-page').
357
358 `C-x l'
359      Count the lines in this page (`count-lines-page').
360
361    The `C-x [' (`backward-page') command moves point to immediately
362 after the previous page delimiter.  If point is already right after a
363 page delimiter, the command skips that one and stops at the previous
364 one.  A numeric argument serves as a repeat count.  The `C-x ]'
365 (`forward-page') command moves forward past the next page delimiter.
366
367    The `C-x C-p' command (`mark-page') puts point at the beginning of
368 the current page and the mark at the end.  The page delimiter at the end
369 is included (the mark follows it).  The page delimiter at the front is
370 excluded (point follows it).  You can follow this command  by `C-w' to
371 kill a page you want to move elsewhere.  If you insert the page after a
372 page delimiter, at a place where `C-x ]' or `C-x [' would take you, the
373 page will be properly delimited before and after once again.
374
375    A numeric argument to `C-x C-p' is used to specify which page to go
376 to, relative to the current one.  Zero means the current page.  One
377 means the next page, and -1 means the previous one.
378
379    The `C-x l' command (`count-lines-page') can help you decide where
380 to break a page in two.  It prints the total number of lines in the
381 current page in the echo area, then divides the lines into those
382 preceding the current line and those following it, for example
383
384      Page has 96 (72+25) lines
385
386 Notice that the sum is off by one; this is correct if point is not at
387 the beginning of a line.
388
389    The variable `page-delimiter' should have as its value a regexp that
390 matches the beginning of a line that separates pages.  This defines
391 where pages begin.  The normal value of this variable is `"^\f"', which
392 matches a formfeed character at the beginning of a line.
393
394 \1f
395 File: xemacs.info,  Node: Filling,  Next: Case,  Prev: Pages,  Up: Text
396
397 Filling Text
398 ============
399
400    If you use Auto Fill mode, Emacs "fills" text (breaks it up into
401 lines that fit in a specified width) as you insert it.  When you alter
402 existing text it is often no longer be properly filled afterwards and
403 you can use explicit commands for filling.
404
405 * Menu:
406
407 * Auto Fill::     Auto Fill mode breaks long lines automatically.
408 * Fill Commands:: Commands to refill paragraphs and center lines.
409 * Fill Prefix::   Filling when every line is indented or in a comment, etc.
410
411 \1f
412 File: xemacs.info,  Node: Auto Fill,  Next: Fill Commands,  Prev: Filling,  Up: Filling
413
414 Auto Fill Mode
415 --------------
416
417    "Auto Fill" mode is a minor mode in which lines are broken
418 automatically when they become too wide.  Breaking happens only when
419 you type a <SPC> or <RET>.
420
421 `M-x auto-fill-mode'
422      Enable or disable Auto Fill mode.
423
424 `<SPC>'
425 `<RET>'
426      In Auto Fill mode, break lines when appropriate.
427
428    `M-x auto-fill-mode' turns Auto Fill mode on if it was off, or off
429 if it was on.  With a positive numeric argument the command always turns
430 Auto Fill mode on, and with a negative argument it always turns it off.
431 The presence of the word `Fill' in the mode line, inside the
432 parentheses, indicates that Auto Fill mode is in effect.  Auto Fill mode
433 is a minor mode; you can turn it on or off for each buffer individually.
434 *Note Minor Modes::.
435
436    In Auto Fill mode, lines are broken automatically at spaces when
437 they get longer than desired.  Line breaking and rearrangement takes
438 place only when you type <SPC> or <RET>.  To insert a space or newline
439 without permitting line-breaking, type `C-q <SPC>' or `C-q <LFD>'
440 (recall that a newline is really a linefeed).  `C-o' inserts a newline
441 without line breaking.
442
443    Auto Fill mode works well with Lisp mode: when it makes a new line in
444 Lisp mode, it indents that line with <TAB>.  If a line ending in a Lisp
445 comment gets too long, the text of the comment is split into two
446 comment lines.  Optionally, new comment delimiters are inserted at the
447 end of the first line and the beginning of the second, so that each line
448 is a separate comment.  The variable `comment-multi-line' controls the
449 choice (*note Comments::.).
450
451    Auto Fill mode does not refill entire paragraphs.  It can break
452 lines but cannot merge lines.  Editing in the middle of a paragraph can
453 result in a paragraph that is not correctly filled.  The easiest way to
454 make the paragraph properly filled again is using an explicit fill
455 commands.
456
457    Many users like Auto Fill mode and want to use it in all text files.
458 The section on init files explains how you can arrange this permanently
459 for yourself.  *Note Init File::.
460
461 \1f
462 File: xemacs.info,  Node: Fill Commands,  Next: Fill Prefix,  Prev: Auto Fill,  Up: Filling
463
464 Explicit Fill Commands
465 ----------------------
466
467 `M-q'
468      Fill current paragraph (`fill-paragraph').
469
470 `M-g'
471      Fill each paragraph in the region (`fill-region').
472
473 `C-x f'
474      Set the fill column (`set-fill-column').
475
476 `M-x fill-region-as-paragraph'
477      Fill the region, considering it as one paragraph.
478
479 `M-s'
480      Center a line.
481
482    To refill a paragraph, use the command `Meta-q' (`fill-paragraph').
483 It causes the paragraph containing point, or the one after point if
484 point is between paragraphs, to be refilled.  All line breaks are
485 removed, and new ones are inserted where necessary.  `M-q' can be
486 undone with `C-_'.  *Note Undo::.
487
488    To refill many paragraphs, use `M-g' (`fill-region'), which divides
489 the region into paragraphs and fills each of them.
490
491    `Meta-q' and `Meta-g' use the same criteria as `Meta-h' for finding
492 paragraph boundaries (*note Paragraphs::.).  For more control, you can
493 use `M-x fill-region-as-paragraph', which refills everything between
494 point and mark.  This command recognizes only blank lines as paragraph
495 separators.
496
497    A numeric argument to `M-g' or `M-q' causes it to "justify" the text
498 as well as filling it.  Extra spaces are inserted to make the right
499 margin line up exactly at the fill column.  To remove the extra spaces,
500 use `M-q' or `M-g' with no argument.
501
502    The variable `auto-fill-inhibit-regexp' takes as a value a regexp to
503 match lines that should not be auto-filled.
504
505    The command `Meta-s' (`center-line') centers the current line within
506 the current fill column.  With an argument, it centers several lines
507 individually and moves past them.
508
509    The maximum line width for filling is in the variable `fill-column'.
510 Altering the value of `fill-column' makes it local to the current
511 buffer; until then, the default value--initially 70--is in effect.
512 *Note Locals::.
513
514    The easiest way to set `fill-column' is to use the command `C-x f'
515 (`set-fill-column').  With no argument, it sets `fill-column' to the
516 current horizontal position of point.  With a numeric argument, it uses
517 that number as the new fill column.
518
519 \1f
520 File: xemacs.info,  Node: Fill Prefix,  Prev: Fill Commands,  Up: Filling
521
522 The Fill Prefix
523 ---------------
524
525    To fill a paragraph in which each line starts with a special marker
526 (which might be a few spaces, giving an indented paragraph), use the
527 "fill prefix" feature.  The fill prefix is a string which is not
528 included in filling.  Emacs expects every line to start with a fill
529 prefix.
530
531 `C-x .'
532      Set the fill prefix (`set-fill-prefix').
533
534 `M-q'
535      Fill a paragraph using current fill prefix (`fill-paragraph').
536
537 `M-x fill-individual-paragraphs'
538      Fill the region, considering each change of indentation as
539      starting a new paragraph.
540
541    To specify a fill prefix, move to a line that starts with the desired
542 prefix, put point at the end of the prefix, and give the command
543 `C-x .' (`set-fill-prefix').  That's a period after the `C-x'.  To turn
544 off the fill prefix, specify an empty prefix: type `C-x .' with point
545 at the beginning of a line.
546
547    When a fill prefix is in effect, the fill commands remove the fill
548 prefix from each line before filling and insert it on each line after
549 filling.  Auto Fill mode also inserts the fill prefix inserted on new
550 lines it creates.  Lines that do not start with the fill prefix are
551 considered to start paragraphs, both in `M-q' and the paragraph
552 commands; this is just right if you are using paragraphs with hanging
553 indentation (every line indented except the first one).  Lines which are
554 blank or indented once the prefix is removed also separate or start
555 paragraphs; this is what you want if you are writing multi-paragraph
556 comments with a comment delimiter on each line.
557
558    The fill prefix is stored in the variable `fill-prefix'.  Its value
559 is a string, or `nil' when there is no fill prefix.  This is a
560 per-buffer variable; altering the variable affects only the current
561 buffer, but there is a default value which you can change as well.
562 *Note Locals::.
563
564    Another way to use fill prefixes is through `M-x
565 fill-individual-paragraphs'.  This function divides the region into
566 groups of consecutive lines with the same amount and kind of
567 indentation and fills each group as a paragraph, using its indentation
568 as a fill prefix.
569
570 \1f
571 File: xemacs.info,  Node: Case,  Prev: Filling,  Up: Text
572
573 Case Conversion Commands
574 ========================
575
576    Emacs has commands for converting either a single word or any
577 arbitrary range of text to upper case or to lower case.
578
579 `M-l'
580      Convert following word to lower case (`downcase-word').
581
582 `M-u'
583      Convert following word to upper case (`upcase-word').
584
585 `M-c'
586      Capitalize the following word (`capitalize-word').
587
588 `C-x C-l'
589      Convert region to lower case (`downcase-region').
590
591 `C-x C-u'
592      Convert region to upper case (`upcase-region').
593
594    The word conversion commands are used most frequently.  `Meta-l'
595 (`downcase-word') converts the word after point to lower case, moving
596 past it.  Thus, repeating `Meta-l' converts successive words.  `Meta-u'
597 (`upcase-word') converts to all capitals instead, while `Meta-c'
598 (`capitalize-word') puts the first letter of the word into upper case
599 and the rest into lower case.  The word conversion commands convert
600 several words at once if given an argument.  They are especially
601 convenient for converting a large amount of text from all upper case to
602 mixed case: you can move through the text using `M-l', `M-u', or `M-c'
603 on each word as appropriate, occasionally using `M-f' instead to skip a
604 word.
605
606    When given a negative argument, the word case conversion commands
607 apply to the appropriate number of words before point, but do not move
608 point.  This is convenient when you have just typed a word in the wrong
609 case: you can give the case conversion command and continue typing.
610
611    If a word case conversion command is given in the middle of a word,
612 it applies only to the part of the word which follows point.  This is
613 just like what `Meta-d' (`kill-word') does.  With a negative argument,
614 case conversion applies only to the part of the word before point.
615
616    The other case conversion commands are `C-x C-u' (`upcase-region')
617 and `C-x C-l' (`downcase-region'), which convert everything between
618 point and mark to the specified case.  Point and mark do not move.
619
620 \1f
621 File: xemacs.info,  Node: Programs,  Next: Running,  Prev: Text,  Up: Top
622
623 Editing Programs
624 ****************
625
626    Emacs has many commands designed to understand the syntax of
627 programming languages such as Lisp and C.  These commands can:
628
629    * Move over or kill balanced expressions or "sexps" (*note Lists::.).
630
631    * Move over or mark top-level balanced expressions ("defuns", in
632      Lisp; functions, in C).
633
634    * Show how parentheses balance (*note Matching::.).
635
636    * Insert, kill, or align comments (*note Comments::.).
637
638    * Follow the usual indentation conventions of the language (*note
639      Grinding::.).
640
641    The commands available for words, sentences, and paragraphs are
642 useful in editing code even though their canonical application is for
643 editing human language text.  Most symbols contain words (*note
644 Words::.); sentences can be found in strings and comments (*note
645 Sentences::.).  Paragraphs per se are not present in code, but the
646 paragraph commands are useful anyway, because Lisp mode and C mode
647 define paragraphs to begin and end at blank lines (*note
648 Paragraphs::.).  Judicious use of blank lines to make the program
649 clearer also provides interesting chunks of text for the paragraph
650 commands to work on.
651
652    The selective display feature is useful for looking at the overall
653 structure of a function (*note Selective Display::.).  This feature
654 causes only the lines that are indented less than a specified amount to
655 appear on the screen.
656
657 * Menu:
658
659 * Program Modes::       Major modes for editing programs.
660 * Lists::               Expressions with balanced parentheses.
661                          There are editing commands to operate on them.
662 * Defuns::              Each program is made up of separate functions.
663                          There are editing commands to operate on them.
664 * Grinding::            Adjusting indentation to show the nesting.
665 * Matching::            Insertion of a close-delimiter flashes matching open.
666 * Comments::            Inserting, illing and aligning comments.
667 * Balanced Editing::    Inserting two matching parentheses at once, etc.
668 * Lisp Completion::     Completion on symbol names in Lisp code.
669 * Documentation::       Getting documentation of functions you plan to call.
670 * Change Log::          Maintaining a change history for your program.
671 * Tags::                Go direct to any function in your program in one
672                          command.  Tags remembers which file it is in.
673 * Fortran::             Fortran mode and its special features.
674 * Asm Mode::            Asm mode and its special features.
675
676 \1f
677 File: xemacs.info,  Node: Program Modes,  Next: Lists,  Prev: Programs,  Up: Programs
678
679 Major Modes for Programming Languages
680 =====================================
681
682    Emacs has several major modes for the programming languages Lisp,
683 Scheme (a variant of Lisp), C, Fortran, and Muddle.  Ideally, a major
684 mode should be implemented for each programming language you might want
685 to edit with Emacs; but often the mode for one language can serve for
686 other syntactically similar languages.  The language modes that exist
687 are those that someone decided to take the trouble to write.
688
689    There are several variants of Lisp mode, which differ in the way they
690 interface to Lisp execution.  *Note Lisp Modes::.
691
692    Each of the programming language modes defines the <TAB> key to run
693 an indentation function that knows the indentation conventions of that
694 language and updates the current line's indentation accordingly.  For
695 example, in C mode <TAB> is bound to `c-indent-line'.  <LFD> is
696 normally defined to do <RET> followed by <TAB>; thus it, too, indents
697 in a mode-specific fashion.
698
699    In most programming languages, indentation is likely to vary from
700 line to line.  So the major modes for those languages rebind <DEL> to
701 treat a tab as if it were the equivalent number of spaces (using the
702 command `backward-delete-char-untabify').  This makes it possible to
703 rub out indentation one column at a time without worrying whether it is
704 made up of spaces or tabs.  In these modes, use `C-b C-d' to delete a
705 tab character before point.
706
707    Programming language modes define paragraphs to be separated only by
708 blank lines, so that the paragraph commands remain useful.  Auto Fill
709 mode, if enabled in a programming language major mode, indents the new
710 lines which it creates.
711
712    Turning on a major mode calls a user-supplied function called the
713 "mode hook", which is the value of a Lisp variable.  For example,
714 turning on C mode calls the value of the variable `c-mode-hook' if that
715 value exists and is non-`nil'.  Mode hook variables for other
716 programming language modes include `lisp-mode-hook',
717 `emacs-lisp-mode-hook', `lisp-interaction-mode-hook',
718 `scheme-mode-hook', and `muddle-mode-hook'.  The mode hook function
719 receives no arguments.
720
721 \1f
722 File: xemacs.info,  Node: Lists,  Next: Defuns,  Prev: Program Modes,  Up: Programs
723
724 Lists and Sexps
725 ===============
726
727    By convention, Emacs keys for dealing with balanced expressions are
728 usually `Control-Meta-' characters.  They tend to be analogous in
729 function to their `Control-' and `Meta-' equivalents.  These commands
730 are usually thought of as pertaining to expressions in programming
731 languages, but can be useful with any language in which some sort of
732 parentheses exist (including English).
733
734    The commands fall into two classes.  Some commands deal only with
735 "lists" (parenthetical groupings).  They see nothing except
736 parentheses, brackets, braces (depending on what must balance in the
737 language you are working with), and escape characters that might be used
738 to quote those.
739
740    The other commands deal with expressions or "sexps".  The word `sexp'
741 is derived from "s-expression", the term for a symbolic expression in
742 Lisp.  In Emacs, the notion of `sexp' is not limited to Lisp.  It
743 refers to an expression in the language  your program is written in.
744 Each programming language has its own major mode, which customizes the
745 syntax tables so that expressions in that language count as sexps.
746
747    Sexps typically include symbols, numbers, and string constants, as
748 well as anything contained in parentheses, brackets, or braces.
749
750    In languages that use prefix and infix operators, such as C, it is
751 not possible for all expressions to be sexps.  For example, C mode does
752 not recognize `foo + bar' as an sexp, even though it is a C expression;
753 it recognizes `foo' as one sexp and `bar' as another, with the `+' as
754 punctuation between them.  This is a fundamental ambiguity: both `foo +
755 bar' and `foo' are legitimate choices for the sexp to move over if
756 point is at the `f'.  Note that `(foo + bar)' is a sexp in C mode.
757
758    Some languages have obscure forms of syntax for expressions that
759 nobody has bothered to make Emacs understand properly.
760
761 `C-M-f'
762      Move forward over an sexp (`forward-sexp').
763
764 `C-M-b'
765      Move backward over an sexp (`backward-sexp').
766
767 `C-M-k'
768      Kill sexp forward (`kill-sexp').
769
770 `C-M-u'
771      Move up and backward in list structure (`backward-up-list').
772
773 `C-M-d'
774      Move down and forward in list structure (`down-list').
775
776 `C-M-n'
777      Move forward over a list (`forward-list').
778
779 `C-M-p'
780      Move backward over a list (`backward-list').
781
782 `C-M-t'
783      Transpose expressions (`transpose-sexps').
784
785 `C-M-@'
786      Put mark after following expression (`mark-sexp').
787
788    To move forward over an sexp, use `C-M-f' (`forward-sexp').  If the
789 first significant character after point is an opening delimiter (`(' in
790 Lisp; `(', `[', or `{' in C), `C-M-f' moves past the matching closing
791 delimiter.  If the character begins a symbol, string, or number,
792 `C-M-f' moves over that.  If the character after point is a closing
793 delimiter, `C-M-f' just moves past it.  (This last is not really moving
794 across an sexp; it is an exception which is included in the definition
795 of `C-M-f' because it is as useful a behavior as anyone can think of
796 for that situation.)
797
798    The command `C-M-b' (`backward-sexp') moves backward over a sexp.
799 The detailed rules are like those above for `C-M-f', but with
800 directions reversed.  If there are any prefix characters (single quote,
801 back quote, and comma, in Lisp) preceding the sexp, `C-M-b' moves back
802 over them as well.
803
804    `C-M-f' or `C-M-b' with an argument repeats that operation the
805 specified number of times; with a negative argument, it moves in the
806 opposite direction.
807
808    In languages such as C where the comment-terminator can be
809 recognized, the sexp commands move across comments as if they were
810 whitespace.  In Lisp and other languages where comments run until the
811 end of a line, it is very difficult to ignore comments when parsing
812 backwards; therefore, in such languages the sexp commands treat the
813 text of comments as if it were code.
814
815    Killing an sexp at a time can be done with `C-M-k' (`kill-sexp').
816 `C-M-k' kills the characters that `C-M-f' would move over.
817
818    The "list commands", `C-M-n' (`forward-list') and `C-M-p'
819 (`backward-list'), move over lists like the sexp commands but skip over
820 any number of other kinds of sexps (symbols, strings, etc).  In some
821 situations, these commands are useful because they usually ignore
822 comments, since the comments usually do not contain any lists.
823
824    `C-M-n' and `C-M-p' stay at the same level in parentheses, when that
825 is possible.  To move up one (or N) levels, use `C-M-u'
826 (`backward-up-list').  `C-M-u' moves backward up past one unmatched
827 opening delimiter.  A positive argument serves as a repeat count; a
828 negative argument reverses direction of motion and also requests
829 repetition, so it moves forward and up one or more levels.
830
831    To move down in list structure, use `C-M-d' (`down-list').  In Lisp
832 mode, where `(' is the only opening delimiter, this is nearly the same
833 as searching for a `('.  An argument specifies the number of levels of
834 parentheses to go down.
835
836    `C-M-t' (`transpose-sexps') drags the previous sexp across the next
837 one.  An argument serves as a repeat count, and a negative argument
838 drags backwards (thus canceling out the effect of `C-M-t' with a
839 positive argument).  An argument of zero, rather than doing nothing,
840 transposes the sexps ending after point and the mark.
841
842    To make the region be the next sexp in the buffer, use `C-M-@'
843 (`mark-sexp') which sets the mark at the same place that `C-M-f' would
844 move to.  `C-M-@' takes arguments like `C-M-f'.  In particular, a
845 negative argument is useful for putting the mark at the beginning of
846 the previous sexp.
847
848    The list and sexp commands' understanding of syntax is completely
849 controlled by the syntax table.  Any character can, for example, be
850 declared to be an opening delimiter and act like an open parenthesis.
851 *Note Syntax::.
852
853 \1f
854 File: xemacs.info,  Node: Defuns,  Next: Grinding,  Prev: Lists,  Up: Programs
855
856 Defuns
857 ======
858
859    In Emacs, a parenthetical grouping at the top level in the buffer is
860 called a "defun".  The name derives from the fact that most top-level
861 lists in Lisp are instances of the special form `defun', but Emacs
862 calls any top-level parenthetical grouping counts a defun regardless of
863 its contents or the programming language.  For example, in C, the body
864 of a function definition is a defun.
865
866 `C-M-a'
867      Move to beginning of current or preceding defun
868      (`beginning-of-defun').
869
870 `C-M-e'
871      Move to end of current or following defun (`end-of-defun').
872
873 `C-M-h'
874      Put region around whole current or following defun (`mark-defun').
875
876    The commands to move to the beginning and end of the current defun
877 are `C-M-a' (`beginning-of-defun') and `C-M-e' (`end-of-defun').
878
879    To operate on the current defun, use `C-M-h' (`mark-defun') which
880 puts point at the beginning and the mark at the end of the current or
881 next defun.  This is the easiest way to prepare for moving the defun to
882 a different place.  In C mode, `C-M-h' runs the function
883 `mark-c-function', which is almost the same as `mark-defun', but which
884 backs up over the argument declarations, function name, and returned
885 data type so that the entire C function is inside the region.
886
887    To compile and evaluate the current defun, use `M-x compile-defun'.
888 This function prints the results in the minibuffer. If you include an
889 argument, it inserts the value in the current buffer after the defun.
890
891    Emacs assumes that any open-parenthesis found in the leftmost column
892 is the start of a defun.  Therefore, never put an open-parenthesis at
893 the left margin in a Lisp file unless it is the start of a top level
894 list.  Never put an open-brace or other opening delimiter at the
895 beginning of a line of C code unless it starts the body of a function.
896 The most likely problem case is when you want an opening delimiter at
897 the start of a line inside a string.  To avoid trouble, put an escape
898 character (`\' in C and Emacs Lisp, `/' in some other Lisp dialects)
899 before the opening delimiter.  It will not affect the contents of the
900 string.
901
902    The original Emacs found defuns by moving upward a level of
903 parentheses until there were no more levels to go up.  This required
904 scanning back to the beginning of the buffer for every function.  To
905 speed this up, Emacs was changed to assume that any `(' (or other
906 character assigned the syntactic class of opening-delimiter) at the
907 left margin is the start of a defun.  This heuristic is nearly always
908 right; however, it mandates the convention described above.
909
910 \1f
911 File: xemacs.info,  Node: Grinding,  Next: Matching,  Prev: Defuns,  Up: Programs
912
913 Indentation for Programs
914 ========================
915
916    The best way to keep a program properly indented ("ground") is to
917 use Emacs to re-indent it as you change the program.  Emacs has commands
918 to indent properly either a single line, a specified number of lines, or
919 all of the lines inside a single parenthetical grouping.
920
921 * Menu:
922
923 * Basic Indent::
924 * Multi-line Indent::   Commands to reindent many lines at once.
925 * Lisp Indent::         Specifying how each Lisp function should be indented.
926 * C Indent::            Choosing an indentation style for C code.
927
928 \1f
929 File: xemacs.info,  Node: Basic Indent,  Next: Multi-line Indent,  Prev: Grinding,  Up: Grinding
930
931 Basic Program Indentation Commands
932 ----------------------------------
933
934 `<TAB>'
935      Adjust indentation of current line.
936
937 `<LFD>'
938      Equivalent to <RET> followed by <TAB> (`newline-and-indent').
939
940    The basic indentation command is <TAB>, which gives the current line
941 the correct indentation as determined from the previous lines.  The
942 function that <TAB> runs depends on the major mode; it is
943 `lisp-indent-line' in Lisp mode, `c-indent-line' in C mode, etc.  These
944 functions understand different syntaxes for different languages, but
945 they all do about the same thing.  <TAB> in any programming language
946 major mode inserts or deletes whitespace at the beginning of the
947 current line, independent of where point is in the line.  If point is
948 inside the whitespace at the beginning of the line, <TAB> leaves it at
949 the end of that whitespace; otherwise, <TAB> leaves point fixed with
950 respect to the characters around it.
951
952    Use `C-q <TAB>' to insert a tab at point.
953
954    When entering a large amount of new code, use <LFD>
955 (`newline-and-indent'), which is equivalent to a <RET> followed by a
956 <TAB>.  <LFD> creates a blank line, then gives it the appropriate
957 indentation.
958
959    <TAB> indents the second and following lines of the body of a
960 parenthetical grouping each under the preceding one; therefore, if you
961 alter one line's indentation to be nonstandard, the lines below tend to
962 follow it.  This is the right behavior in cases where the standard
963 result of <TAB> does not look good.
964
965    Remember that Emacs assumes that an open-parenthesis, open-brace, or
966 other opening delimiter at the left margin (including the indentation
967 routines) is the start of a function.  You should therefore never have
968 an opening delimiter in column zero that is not the beginning of a
969 function, not even inside a string.  This restriction is vital for
970 making the indentation commands fast. *Note Defuns::, for more
971 information on this behavior.
972
973 \1f
974 File: xemacs.info,  Node: Multi-line Indent,  Next: Lisp Indent,  Prev: Basic Indent,  Up: Grinding
975
976 Indenting Several Lines
977 -----------------------
978
979    Several commands are available to re-indent several lines of code
980 which have been altered or moved to a different level in a list
981 structure.
982
983 `C-M-q'
984      Re-indent all the lines within one list (`indent-sexp').
985
986 `C-u <TAB>'
987      Shift an entire list rigidly sideways so that its first line is
988      properly indented.
989
990 `C-M-\'
991      Re-indent all lines in the region (`indent-region').
992
993    To re-indent the contents of a single list, position point before the
994 beginning of it and type `C-M-q'. This key is bound to `indent-sexp' in
995 Lisp mode, `indent-c-exp' in C mode, and bound to other suitable
996 functions in other modes.  The indentation of the line the sexp starts
997 on is not changed; therefore, only the relative indentation within the
998 list, and not its position, is changed.  To correct the position as
999 well, type a <TAB> before `C-M-q'.
1000
1001    If the relative indentation within a list is correct but the
1002 indentation of its beginning is not, go to the line on which the list
1003 begins and type `C-u <TAB>'.  When you give <TAB> a numeric argument,
1004 it moves all the lines in the group, starting on the current line,
1005 sideways the same amount that the current line moves.  The command does
1006 not move lines that start inside strings, or C preprocessor lines when
1007 in C mode.
1008
1009    Another way to specify a range to be re-indented is with point and
1010 mark.  The command `C-M-\' (`indent-region') applies <TAB> to every
1011 line whose first character is between point and mark.
1012
1013 \1f
1014 File: xemacs.info,  Node: Lisp Indent,  Next: C Indent,  Prev: Multi-line Indent,  Up: Grinding
1015
1016 Customizing Lisp Indentation
1017 ----------------------------
1018
1019    The indentation pattern for a Lisp expression can depend on the
1020 function called by the expression.  For each Lisp function, you can
1021 choose among several predefined patterns of indentation, or define an
1022 arbitrary one with a Lisp program.
1023
1024    The standard pattern of indentation is as follows: the second line
1025 of the expression is indented under the first argument, if that is on
1026 the same line as the beginning of the expression; otherwise, the second
1027 line is indented underneath the function name.  Each following line is
1028 indented under the previous line whose nesting depth is the same.
1029
1030    If the variable `lisp-indent-offset' is non-`nil', it overrides the
1031 usual indentation pattern for the second line of an expression, so that
1032 such lines are always indented `lisp-indent-offset' more columns than
1033 the containing list.
1034
1035    Certain functions override the standard pattern.  Functions whose
1036 names start with `def' always indent the second line by
1037 `lisp-body-indention' extra columns beyond the open-parenthesis
1038 starting the expression.
1039
1040    Individual functions can override the standard pattern in various
1041 ways, according to the `lisp-indent-function' property of the function
1042 name.  (Note: `lisp-indent-function' was formerly called
1043 `lisp-indent-hook').  There are four possibilities for this property:
1044
1045 `nil'
1046      This is the same as no property; the standard indentation pattern
1047      is used.
1048
1049 `defun'
1050      The pattern used for function names that start with `def' is used
1051      for this function also.
1052
1053 a number, NUMBER
1054      The first NUMBER arguments of the function are "distinguished"
1055      arguments; the rest are considered the "body" of the expression.
1056      A line in the expression is indented according to whether the
1057      first argument on it is distinguished or not.  If the argument is
1058      part of the body, the line is indented `lisp-body-indent' more
1059      columns than the open-parenthesis starting the containing
1060      expression.  If the argument is distinguished and is either the
1061      first or second argument, it is indented twice that many extra
1062      columns.  If the argument is distinguished and not the first or
1063      second argument, the standard pattern is followed for that line.
1064
1065 a symbol, SYMBOL
1066      SYMBOL should be a function name; that function is called to
1067      calculate the indentation of a line within this expression.  The
1068      function receives two arguments:
1069     STATE
1070           The value returned by `parse-partial-sexp' (a Lisp primitive
1071           for indentation and nesting computation) when it parses up to
1072           the beginning of this line.
1073
1074     POS
1075           The position at which the line being indented begins.
1076
1077      It should return either a number, which is the number of columns of
1078      indentation for that line, or a list whose first element is such a
1079      number.  The difference between returning a number and returning a
1080      list is that a number says that all following lines at the same
1081      nesting level should be indented just like this one; a list says
1082      that following lines might call for different indentations.  This
1083      makes a difference when the indentation is computed by `C-M-q'; if
1084      the value is a number, `C-M-q' need not recalculate indentation
1085      for the following lines until the end of the list.
1086
1087 \1f
1088 File: xemacs.info,  Node: C Indent,  Prev: Lisp Indent,  Up: Grinding
1089
1090 Customizing C Indentation
1091 -------------------------
1092
1093    Two variables control which commands perform C indentation and when.
1094
1095    If `c-auto-newline' is non-`nil', newlines are inserted both before
1096 and after braces that you insert and after colons and semicolons.
1097 Correct C indentation is done on all the lines that are made this way.
1098
1099    If `c-tab-always-indent' is non-`nil', the <TAB> command in C mode
1100 does indentation only if point is at the left margin or within the
1101 line's indentation.  If there is non-whitespace to the left of point,
1102 <TAB> just inserts a tab character in the buffer.  Normally, this
1103 variable is `nil', and <TAB> always reindents the current line.
1104
1105    C does not have anything analogous to particular function names for
1106 which special forms of indentation are desirable.  However, it has a
1107 different need for customization facilities: many different styles of C
1108 indentation are in common use.
1109
1110    There are six variables you can set to control the style that Emacs C
1111 mode will use.
1112
1113 `c-indent-level'
1114      Indentation of C statements within surrounding block.  The
1115      surrounding block's indentation is the indentation of the line on
1116      which the open-brace appears.
1117
1118 `c-continued-statement-offset'
1119      Extra indentation given to a substatement, such as the then-clause
1120      of an `if' or body of a `while'.
1121
1122 `c-brace-offset'
1123      Extra indentation for lines that start with an open brace.
1124
1125 `c-brace-imaginary-offset'
1126      An open brace following other text is treated as if it were this
1127      far to the right of the start of its line.
1128
1129 `c-argdecl-indent'
1130      Indentation level of declarations of C function arguments.
1131
1132 `c-label-offset'
1133      Extra indentation for a line that is a label, case, or default.
1134
1135    The variable `c-indent-level' controls the indentation for C
1136 statements with respect to the surrounding block.  In the example:
1137
1138          {
1139            foo ();
1140
1141 the difference in indentation between the lines is `c-indent-level'.
1142 Its standard value is 2.
1143
1144    If the open-brace beginning the compound statement is not at the
1145 beginning of its line, the `c-indent-level' is added to the indentation
1146 of the line, not the column of the open-brace.  For example,
1147
1148      if (losing) {
1149        do_this ();
1150
1151 One popular indentation style is that which results from setting
1152 `c-indent-level' to 8 and putting open-braces at the end of a line in
1153 this way.  Another popular style prefers to put the open-brace on a
1154 separate line.
1155
1156    In fact, the value of the variable `c-brace-imaginary-offset' is
1157 also added to the indentation of such a statement.  Normally this
1158 variable is zero.  Think of this variable as the imaginary position of
1159 the open brace, relative to the first non-blank character on the line.
1160 By setting the variable to 4 and `c-indent-level' to 0, you can get
1161 this style:
1162
1163      if (x == y) {
1164          do_it ();
1165          }
1166
1167    When `c-indent-level' is zero, the statements inside most braces
1168 line up exactly under the open brace.  An exception are braces in column
1169 zero, like those surrounding a function's body.  The statements inside
1170 those braces are not placed at column zero.  Instead, `c-brace-offset'
1171 and `c-continued-statement-offset' (see below) are added to produce a
1172 typical offset between brace levels, and the statements are indented
1173 that far.
1174
1175    `c-continued-statement-offset' controls the extra indentation for a
1176 line that starts within a statement (but not within parentheses or
1177 brackets).  These lines are usually statements inside other statements,
1178 like the then-clauses of `if' statements and the bodies of `while'
1179 statements.  The `c-continued-statement-offset' parameter determines
1180 the difference in indentation between the two lines in:
1181
1182      if (x == y)
1183        do_it ();
1184
1185 The default value for `c-continued-statement-offset' is 2.  Some
1186 popular indentation styles correspond to a value of zero for
1187 `c-continued-statement-offset'.
1188
1189    `c-brace-offset' is the extra indentation given to a line that
1190 starts with an open-brace.  Its standard value is zero; compare:
1191
1192      if (x == y)
1193        {
1194
1195 with:
1196
1197      if (x == y)
1198        do_it ();
1199
1200 If you set `c-brace-offset' to 4, the first example becomes:
1201
1202      if (x == y)
1203            {
1204
1205    `c-argdecl-indent' controls the indentation of declarations of the
1206 arguments of a C function.  It is absolute: argument declarations
1207 receive exactly `c-argdecl-indent' spaces.  The standard value is 5 and
1208 results in code like this:
1209
1210      char *
1211      index (string, char)
1212           char *string;
1213           int char;
1214
1215    `c-label-offset' is the extra indentation given to a line that
1216 contains a label, a case statement, or a `default:' statement.  Its
1217 standard value is -2 and results in code like this:
1218
1219      switch (c)
1220        {
1221        case 'x':
1222
1223 If `c-label-offset' were zero, the same code would be indented as:
1224
1225      switch (c)
1226        {
1227          case 'x':
1228
1229 This example assumes that the other variables above also have their
1230 default values.
1231
1232    Using the indentation style produced by the default settings of the
1233 variables just discussed and putting open braces on separate lines
1234 produces clear and readable files.  For an example, look at any of the C
1235 source files of XEmacs.
1236