Annotation of GNUtools/emacs/info/emacs-7, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.