Annotation of 43BSDReno/contrib/emacs-18.55/info/emacs-7, revision 1.1.1.1

1.1       root        1: Info file emacs, produced by texinfo-format-buffer   -*-Text-*-
                      2: from file emacs.tex
                      3: 
                      4: This file documents the GNU Emacs editor.
                      5: 
                      6: Copyright (C) 1985, 1986 Richard M. Stallman.
                      7: 
                      8: Permission is granted to make and distribute verbatim copies of
                      9: this manual provided the copyright notice and this permission notice
                     10: are preserved on all copies.
                     11: 
                     12: Permission is granted to copy and distribute modified versions of this
                     13: manual under the conditions for verbatim copying, provided also that the
                     14: sections entitled "The GNU Manifesto", "Distribution" and "GNU Emacs
                     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 manual
                     20: into another language, under the above conditions for modified versions,
                     21: except that the sections entitled "The GNU Manifesto", "Distribution"
                     22: and "GNU Emacs General Public License" may be included in a translation
                     23: approved by the author instead of in the original English.
                     24: 
                     25: 
                     26: File: emacs  Node: Defuns, Prev: Lists, Up: Programs, Next: Grinding
                     27: 
                     28: Defuns
                     29: ======
                     30: 
                     31:   In Emacs, a parenthetical grouping at the top level in the buffer is
                     32: called a "defun".  The name derives from the fact that most top-level
                     33: lists in a Lisp file are instances of the special form `defun', but
                     34: any top-level parenthetical grouping counts as a defun in Emacs parlance
                     35: regardless of what its contents are, and regardless of the programming
                     36: language in use.  For example, in C, the body of a function definition is a
                     37: defun.
                     38: 
                     39: `C-M-a'     
                     40:      Move to beginning of current or preceding defun
                     41:      (`beginning-of-defun').
                     42: `C-M-e'     
                     43:      Move to end of current or following defun (`end-of-defun').
                     44: `C-M-h'     
                     45:      Put region around whole current or following defun (`mark-defun').
                     46: 
                     47:   The commands to move to the beginning and end of the current defun are
                     48: `C-M-a' (`beginning-of-defun') and `C-M-e' (`end-of-defun').
                     49: 
                     50:   If you wish to operate on the current defun, use `C-M-h'
                     51: (`mark-defun') which puts point at the beginning and mark at the end
                     52: of the current or next defun.  For example, this is the easiest way to get
                     53: ready to move the defun to a different place in the text.  In C mode,
                     54: `C-M-h' runs the function `mark-c-function', which is almost the
                     55: same as `mark-defun'; the difference is that it backs up over the
                     56: argument declarations, function name and returned data type so that the
                     57: entire C function is inside the region.
                     58: 
                     59:   Emacs assumes that any open-parenthesis found in the leftmost column is
                     60: the start of a defun.  Therefore, never put an open-parenthesis at the
                     61: left margin in a Lisp file unless it is the start of a top level list.
                     62: Never put an open-brace or other opening delimiter at the beginning of a
                     63: line of C code unless it starts the body of a function.  The most likely
                     64: problem case is when you want an opening delimiter at the start of a line
                     65: inside a string.  To avoid trouble, put an escape character (`\', in C
                     66: and Emacs Lisp, `/' in some other Lisp dialects) before the opening
                     67: delimiter.  It will not affect the contents of the string.
                     68: 
                     69:   In the remotest past, the original Emacs found defuns by moving upward a
                     70: level of parentheses until there were no more levels to go up.  This always
                     71: required scanning all the way back to the beginning of the buffer, even for
                     72: a small function.  To speed up the operation, Emacs was changed to assume
                     73: that any `(' (or other character assigned the syntactic class of
                     74: opening-delimiter) at the left margin is the start of a defun.  This
                     75: heuristic was nearly always right and avoided the costly scan; however,
                     76: it mandated the convention described above.
                     77: 
                     78: 
                     79: File: emacs  Node: Grinding, Prev: Defuns, Up: Programs, Next: Matching
                     80: 
                     81: Indentation for Programs
                     82: ========================
                     83: 
                     84:   The best way to keep a program properly indented ("ground") is to use
                     85: Emacs to re-indent it as you change it.  Emacs has commands to indent
                     86: properly either a single line, a specified number of lines, or all of the
                     87: lines inside a single parenthetical grouping.
                     88: 
                     89: * Menu:
                     90: 
                     91: * Basic Indent::
                     92: * Multi-line Indent::   Commands to reindent many lines at once.
                     93: * Lisp Indent::                Specifying how each Lisp function should be indented.
                     94: * C Indent::           Choosing an indentation style for C code.
                     95: 
                     96: 
                     97: File: emacs  Node: Basic Indent, Prev: Grinding, Up: Grinding, Next: Multi-line Indent
                     98: 
                     99: Basic Program Indentation Commands
                    100: ----------------------------------
                    101: 
                    102: `TAB'     
                    103:      Adjust indentation of current line.
                    104: `LFD'     
                    105:      Equivalent to RET followed by TAB (`newline-and-indent').
                    106: 
                    107:   The basic indentation command is TAB, which gives the current line
                    108: the correct indentation as determined from the previous lines.  The
                    109: function that TAB runs depends on the major mode; it is `lisp-indent-line'
                    110: in Lisp mode, `c-indent-line' in C mode, etc.  These functions
                    111: understand different syntaxes for different languages, but they all do
                    112: about the same thing.  TAB in any programming language major mode
                    113: inserts or deletes whitespace at the beginning of the current line,
                    114: independent of where point is in the line.  If point is inside the
                    115: whitespace at the beginning of the line, TAB leaves it at the end of
                    116: that whitespace; otherwise, TAB leaves point fixed with respect to
                    117: the characters around it.
                    118: 
                    119:   Use `C-q TAB' to insert a tab at point.
                    120: 
                    121:   When entering a large amount of new code, use LFD (`newline-and-indent'),
                    122: which is equivalent to a RET followed by a TAB.  LFD creates
                    123: a blank line, and then gives it the appropriate indentation.
                    124: 
                    125:   TAB indents the second and following lines of the body of an
                    126: parenthetical grouping each under the preceding one; therefore, if you
                    127: alter one line's indentation to be nonstandard, the lines below will tend
                    128: to follow it.  This is the right behavior in cases where the standard
                    129: result of TAB is unaesthetic.
                    130: 
                    131:   Remember that an open-parenthesis, open-brace or other opening delimiter
                    132: at the left margin is assumed by Emacs (including the indentation routines)
                    133: to be the start of a function.  Therefore, you must never have an opening
                    134: delimiter in column zero that is not the beginning of a function, not even
                    135: inside a string.  This restriction is vital for making the indentation
                    136: commands fast; you must simply accept it.  *Note Defuns::, for more
                    137: information on this.
                    138: 
                    139: 
                    140: File: emacs  Node: Multi-line Indent, Prev: Basic Indent, Up: Grinding, Next: Lisp Indent
                    141: 
                    142: Indenting Several Lines
                    143: -----------------------
                    144: 
                    145:   When you wish to re-indent several lines of code which have been altered
                    146: or moved to a different level in the list structure, you have several
                    147: commands available.
                    148: 
                    149: `C-M-q'     
                    150:      Re-indent all the lines within one list (`indent-sexp').
                    151: `C-u TAB'     
                    152:      Shift an entire list rigidly sideways so that its first line
                    153:      is properly indented.
                    154: `C-M-\'     
                    155:      Re-indent all lines in the region (`indent-region').
                    156: 
                    157:   You can re-indent the contents of a single list by positioning point
                    158: before the beginning of it and typing `C-M-q' (`indent-sexp' in
                    159: Lisp mode, `indent-c-exp' in C mode; also bound to other suitable
                    160: functions in other modes).  The indentation of the line the sexp starts on
                    161: is not changed; therefore, only the relative indentation within the list,
                    162: and not its position, is changed.  To correct the position as well, type a
                    163: TAB before the `C-M-q'.
                    164: 
                    165:   If the relative indentation within a list is correct but the indentation
                    166: of its beginning is not, go to the line the list begins on and type
                    167: `C-u TAB'.  When TAB is given a numeric argument, it moves all the
                    168: lines in the grouping starting on the current line sideways the same amount
                    169: that the current line moves.  It is clever, though, and does not move lines
                    170: that start inside strings, or C preprocessor lines when in C mode.
                    171: 
                    172:   Another way to specify the range to be re-indented is with point and
                    173: mark.  The command `C-M-\' (`indent-region') applies TAB to every line
                    174: whose first character is between point and mark.
                    175:  
                    176: 
                    177: File: emacs  Node: Lisp Indent, Prev: Multi-line Indent, Up: Grinding, Next: C Indent
                    178: 
                    179: Customizing Lisp Indentation
                    180: ----------------------------
                    181: 
                    182:   The indentation pattern for a Lisp expression can depend on the function
                    183: called by the expression.  For each Lisp function, you can choose among
                    184: several predefined patterns of indentation, or define an arbitrary one with
                    185: a Lisp program.
                    186: 
                    187:   The standard pattern of indentation is as follows: the second line of the
                    188: expression is indented under the first argument, if that is on the same
                    189: line as the beginning of the expression; otherwise, the second line is
                    190: indented underneath the function name.  Each following line is indented
                    191: under the previous line whose nesting depth is the same.
                    192: 
                    193:   If the variable `lisp-indent-offset' is non-`nil', it overrides
                    194: the usual indentation pattern for the second line of an expression, so that
                    195: such lines are always indented `lisp-indent-offset' more columns than
                    196: the containing list.
                    197: 
                    198:   The standard pattern is overridded for certain functions.  Functions
                    199: whose names start with `def' always indent the second line by
                    200: `lisp-body-indention' extra columns beyond the open-parenthesis
                    201: starting the expression.
                    202: 
                    203:   The standard pattern can be overridden in various ways for individual
                    204: functions, according to the `lisp-indent-hook' property of the
                    205: function name.  There are four possibilities for this property:
                    206: 
                    207: `nil'     
                    208:      This is the same as no property; the standard indentation pattern is used.
                    209: `defun'     
                    210:      The pattern used for function names that start with `def' is used for
                    211:      this function also.
                    212: a number, NUMBER     
                    213:      The first NUMBER arguments of the function are
                    214:      "distinguished" arguments; the rest are considered the "body"
                    215:      of the expression.  A line in the expression is indented according to
                    216:      whether the first argument on it is distinguished or not.  If the
                    217:      argument is part of the body, the line is indented `lisp-body-indent'
                    218:      more columns than the open-parenthesis starting the containing
                    219:      expression.  If the argument is distinguished and is either the first
                    220:      or second argument, it is indented twice that many extra columns.
                    221:      If the argument is distinguished and not the first or second argument,
                    222:      the standard pattern is followed for that line.
                    223: a symbol, SYMBOL     
                    224:      SYMBOL should be a function name; that function is called to
                    225:      calculate the indentation of a line within this expression.  The
                    226:      function receives two arguments:
                    227:      STATE     
                    228:           The value returned by `parse-partial-sexp' (a Lisp primitive for
                    229:           indentation and nesting computation) when it parses up to the
                    230:           beginning of this line.
                    231:      POS     
                    232:           The position at which the line being indented begins.
                    233:      It should return either a number, which is the number of columns of
                    234:      indentation for that line, or a list whose car is such a number.  The
                    235:      difference between returning a number and returning a list is that a
                    236:      number says that all following lines at the same nesting level should
                    237:      be indented just like this one; a list says that following lines might
                    238:      call for different indentations.  This makes a difference when the
                    239:      indentation is being computed by `C-M-q'; if the value is a
                    240:      number, `C-M-q' need not recalculate indentation for the following
                    241:      lines until the end of the list.
                    242: 
                    243: 
                    244: File: emacs  Node: C Indent, Prev: Lisp Indent, Up: Grinding
                    245: 
                    246: Customizing C Indentation
                    247: -------------------------
                    248: 
                    249:   Two variables control which commands perform C indentation and when.
                    250: 
                    251:   If `c-auto-newline' is non-`nil', newlines are inserted both
                    252: before and after braces that you insert, and after colons and semicolons.
                    253: Correct C indentation is done on all the lines that are made this way.
                    254: 
                    255:   If `c-tab-always-indent' is non-`nil', the TAB command
                    256: in C mode does indentation only if point is at the left margin or within
                    257: the line's indentation.  If there is non-whitespace to the left of point,
                    258: then TAB just inserts a tab character in the buffer.  Normally,
                    259: this variable is `nil', and TAB always reindents the current line.
                    260: 
                    261:   C does not have anything analogous to particular function names for which
                    262: special forms of indentation are desirable.  However, it has a different
                    263: need for customization facilities: many different styles of C indentation
                    264: are in common use.
                    265: 
                    266:   There are six variables you can set to control the style that Emacs C
                    267: mode will use.
                    268: 
                    269: `c-indent-level'     
                    270:      Indentation of C statements within surrounding block.  The surrounding
                    271:      block's indentation is the indentation of the line on which the
                    272:      open-brace appears.
                    273: `c-continued-statement-offset'     
                    274:      Extra indentation given to a substatement, such as the then-clause of
                    275:      an if or body of a while.
                    276: `c-brace-offset'     
                    277:      Extra indentation for line if it starts with an open brace.
                    278: `c-brace-imaginary-offset'     
                    279:      An open brace following other text is treated as if it were this far
                    280:      to the right of the start of its line.
                    281: `c-argdecl-indent'     
                    282:      Indentation level of declarations of C function arguments.
                    283: `c-label-offset'     
                    284:      Extra indentation for line that is a label, or case or default.
                    285: 
                    286:   The variable `c-indent-level' controls the indentation for C
                    287: statements with respect to the surrounding block.  In the example
                    288: 
                    289:          {
                    290:            foo ();
                    291: 
                    292: the difference in indentation between the lines is `c-indent-level'.
                    293: Its standard value is 2.
                    294: 
                    295: If the open-brace beginning the compound statement is not at the beginning
                    296: of its line, the `c-indent-level' is added to the indentation of the
                    297: line, not the column of the open-brace.  For example,
                    298: 
                    299:      if (losing) {
                    300:        do_this ();
                    301: 
                    302: One popular indentation style is that which results from setting
                    303: `c-indent-level' to 8 and putting open-braces at the end of a line in
                    304: this way.  I prefer to put the open-brace on a separate line.
                    305: 
                    306:   In fact, the value of the variable `c-brace-imaginary-offset' is
                    307: also added to the indentation of such a statement.  Normally this variable
                    308: is zero.  Think of this variable as the imaginary position of the open
                    309: brace, relative to the first nonblank character on the line.  By setting
                    310: this variable to 4 and `c-indent-level' to 0, you can get this style:
                    311: 
                    312:      if (x == y) {
                    313:          do_it ();
                    314:          }
                    315: 
                    316:   When `c-indent-level' is zero, the statements inside most braces
                    317: will line up right under the open brace.  But there is an exception made
                    318: for braces in column zero, such as surrounding a function's body.  The
                    319: statements just inside it do not go at column zero.  Instead,
                    320: `c-brace-offset' and `c-continued-statement-offset' (see below)
                    321: are added to produce a typical offset between brace levels, and the
                    322: statements are indented that far.
                    323: 
                    324:   `c-continued-statement-offset' controls the extra indentation for a
                    325: line that starts within a statement (but not within parentheses or
                    326: brackets).  These lines are usually statements that are within other
                    327: statements, such as the then-clauses of `if' statements and the bodies
                    328: of `while' statements.  This parameter is the difference in
                    329: indentation between the two lines in
                    330: 
                    331:      if (x == y)
                    332:        do_it ();
                    333: 
                    334: Its standard value is 2.  Some popular indentation styles correspond to a
                    335: value of zero for `c-continued-statement-offset'.
                    336: 
                    337:   `c-brace-offset' is the extra indentation given to a line that
                    338: starts with an open-brace.  Its standard value is zero;
                    339: compare
                    340: 
                    341:      if (x == y)
                    342:        {
                    343: 
                    344: with
                    345: 
                    346:      if (x == y)
                    347:        do_it ();
                    348: 
                    349: if `c-brace-offset' were set to 4, the first example would become
                    350: 
                    351:      if (x == y)
                    352:            {
                    353: 
                    354:   `c-argdecl-indent' controls the indentation of declarations of the
                    355: arguments of a C function.  It is absolute: argument declarations receive
                    356: exactly `c-argdecl-indent' spaces.  The standard value is 5, resulting
                    357: in code like this:
                    358: 
                    359:      char *
                    360:      index (string, char)
                    361:           char *string;
                    362:           int char;
                    363: 
                    364:   `c-label-offset' is the extra indentation given to a line that
                    365: contains a label, a case statement, or a `default:' statement.  Its
                    366: standard value is -2, resulting in code like this
                    367: 
                    368:      switch (c)
                    369:        {
                    370:        case 'x':
                    371: 
                    372: If `c-label-offset' were zero, the same code would be indented as
                    373: 
                    374:      switch (c)
                    375:        {
                    376:          case 'x':
                    377: 
                    378: This example assumes that the other variables above also have their
                    379: standard values.
                    380: 
                    381:   I strongly recommend that you try out the indentation style produced by
                    382: the standard settings of these variables, together with putting open braces
                    383: on separate lines.  You can see how it looks in all the C source files of
                    384: GNU Emacs.
                    385: 
                    386: 
                    387: File: emacs  Node: Matching, Prev: Grinding, Up: Programs, Next: Comments
                    388: 
                    389: Automatic Display Of Matching Parentheses
                    390: =========================================
                    391: 
                    392:   The Emacs parenthesis-matching feature is designed to show automatically
                    393: how parentheses match in the text.  Whenever a self-inserting character
                    394: that is a closing delimiter is typed, the cursor moves momentarily to the
                    395: location of the matching opening delimiter, provided that is on the screen.
                    396: If it is not on the screen, some text starting with that opening delimiter
                    397: is displayed in the echo area.  Either way, you can tell what grouping is
                    398: being closed off.
                    399: 
                    400:   In Lisp, automatic matching applies only to parentheses.  In C, it
                    401: applies to braces and brackets too.  Emacs knows which characters to regard
                    402: as matching delimiters based on the syntax table, which is set by the major
                    403: mode.  *Note Syntax::.
                    404: 
                    405:   If the opening delimiter and closing delimiter are mismatched---such as
                    406: in `[x)'---a warning message is displayed in the echo area.  The
                    407: correct matches are specified in the syntax table.
                    408: 
                    409:   Two variables control parenthesis match display.  `blink-matching-paren'
                    410: turns the feature on or off; `nil' turns it off, but the default is
                    411: `t' to turn match display on.  `blink-matching-paren-distance'
                    412: specifies how many characters back to search to find the matching opening
                    413: delimiter.  If the match is not found in that far, scanning stops, and
                    414: nothing is displayed.  This is to prevent scanning for the matching
                    415: delimiter from wasting lots of time when there is no match.  The default
                    416: is 4000.
                    417: 
                    418: 
                    419: File: emacs  Node: Comments, Prev: Matching, Up: Programs, Next: Balanced Editing
                    420: 
                    421: Manipulating Comments
                    422: =====================
                    423: 
                    424:   The comment commands insert, kill and align comments.
                    425: 
                    426: `M-;'     
                    427:      Insert or align comment (`indent-for-comment').
                    428: `C-x ;'     
                    429:      Set comment column (`set-comment-column').
                    430: `C-u - C-x ;'     
                    431:      Kill comment on current line (`kill-comment').
                    432: `M-LFD'     
                    433:      Like RET followed by inserting and aligning a comment
                    434:      (`indent-new-comment-line').
                    435: 
                    436:   The command that creates a comment is `Meta-;' (`indent-for-comment').
                    437: If there is no comment already on the line, a new comment is created,
                    438: aligned at a specific column called the "comment column".  The comment
                    439: is created by inserting the string Emacs thinks comments should start with
                    440: (the value of `comment-start'; see below).  Point is left after that
                    441: string.  If the text of the line extends past the comment column, then the
                    442: indentation is done to a suitable boundary (usually, at least one space is
                    443: inserted).  If the major mode has specified a string to terminate comments,
                    444: that is inserted after point, to keep the syntax valid.
                    445: 
                    446:   `Meta-;' can also be used to align an existing comment.  If a line
                    447: already contains the string that starts comments, then `M-;' just moves
                    448: point after it and re-indents it to the conventional place.  Exception:
                    449: comments starting in column 0 are not moved.
                    450: 
                    451:   Some major modes have special rules for indenting certain kinds of
                    452: comments in certain contexts.  For example, in Lisp code, comments which
                    453: start with two semicolons are indented as if they were lines of code,
                    454: instead of at the comment column.  Comments which start with three
                    455: semicolons are supposed to start at the left margin.  Emacs understands
                    456: these conventions by indenting a double-semicolon comment using TAB,
                    457: and by not changing the indentation of a triple-semicolon comment at all.
                    458: 
                    459:      ;; This function is just an example
                    460:      ;;; Here either two or three semicolons are appropriate.
                    461:      (defun foo (x)
                    462:      ;;; And now, the first part of the function:
                    463:        ;; The following line adds one.
                    464:        (1+ x))           ; This line adds one.
                    465: 
                    466:   In C code, a comment preceded on its line by nothing but whitespace
                    467: is indented like a line of code.
                    468: 
                    469:   Even when an existing comment is properly aligned, `M-;' is still
                    470: useful for moving directly to the start of the comment.
                    471: 
                    472:   `C-u - C-x ;' (`kill-comment') kills the comment on the current line,
                    473: if there is one.  The indentation before the start of the comment is killed
                    474: as well.  If there does not appear to be a comment in the line, nothing is
                    475: done.  To reinsert the comment on another line, move to the end of that
                    476: line, do `C-y', and then do `M-;' to realign it.  Note that
                    477: `C-u - C-x ;' is not a distinct key; it is `C-x ;' (`set-comment-column')
                    478: with a negative argument.  That command is programmed so that when it
                    479: receives a negative argument it calls `kill-comment'.  However,
                    480: `kill-comment' is a valid command which you could bind directly to a
                    481: key if you wanted to.
                    482: 
                    483: 
                    484: Multiple Lines of Comments
                    485: --------------------------
                    486: 
                    487:   If you are typing a comment and find that you wish to continue it on
                    488: another line, you can use the command `Meta-LFD' (`indent-new-comment-line'),
                    489: which terminates the comment you are typing, creates a new blank line
                    490: afterward, and begins a new comment indented under the old one.  When Auto
                    491: Fill mode is on, going past the fill column while typing a comment causes
                    492: the comment to be continued in just this fashion.  If point is not at the
                    493: end of the line when `M-LFD' is typed, the text on the rest of
                    494: the line becomes part of the new comment line.
                    495: 
                    496: 
                    497: Options Controlling Comments
                    498: ----------------------------
                    499: 
                    500:   The comment column is stored in the variable `comment-column'.  You
                    501: can set it to a number explicitly.  Alternatively, the command `C-x ;'
                    502: (`set-comment-column') sets the comment column to the column point is
                    503: at.  `C-u C-x ;' sets the comment column to match the last comment
                    504: before point in the buffer, and then does a `Meta-;' to align the
                    505: current line's comment under the previous one.  Note that `C-u - C-x ;'
                    506: runs the function `kill-comment' as described above.
                    507: 
                    508:   `comment-column' is a per-buffer variable; altering the variable
                    509: affects only the current buffer, but there is a default value which you can
                    510: change as well.  *Note Locals::.  Many major modes initialize this variable
                    511: for the current buffer.
                    512: 
                    513:   The comment commands recognize comments based on the regular expression
                    514: that is the value of the variable `comment-start-skip'.  This regexp
                    515: should not match the null string.  It may match more than the comment
                    516: starting delimiter in the strictest sense of the word; for example, in C
                    517: mode the value of the variable is `"/\\*+ *"', which matches extra
                    518: stars and spaces after the `/*' itself.  (Note that `\\' is
                    519: needed in Lisp syntax to include a `\' in the string, which is needed
                    520: to deny the first star its special meaning in regexp syntax.  *Note Regexps::.)
                    521: 
                    522:   When a comment command makes a new comment, it inserts the value of
                    523: `comment-start' to begin it.  The value of `comment-end' is
                    524: inserted after point, so that it will follow the text that you will insert
                    525: into the comment.  In C mode, `comment-start' has the value
                    526: `"/* "' and `comment-end' has the value `" */"'.
                    527: 
                    528:   `comment-multi-line' controls how `M-LFD' (`indent-new-comment-line')
                    529: behaves when used inside a comment.  If `comment-multi-line' is
                    530: `nil', as it normally is, then the comment on the starting line is
                    531: terminated and a new comment is started on the new following line.  If
                    532: `comment-multi-line' is not `nil', then the new following line is
                    533: set up as part of the same comment that was found on the starting line.
                    534: This is done by not inserting a terminator on the old line, and not
                    535: inserting a starter on the new line.  In languages where multi-line comments
                    536: work, the choice of value for this variable is a matter of taste.
                    537: 
                    538:   The variable `comment-indent-hook' should contain a function that
                    539: will be called to compute the indentation for a newly inserted comment or
                    540: for aligning an existing comment.  It is set differently by various major
                    541: modes.  The function is called with no arguments, but with point at the
                    542: beginning of the comment, or at the end of a line if a new comment is to be
                    543: inserted.  It should return the column in which the comment ought to start.
                    544: For example, in Lisp mode, the indent hook function bases its decision
                    545: on how many semicolons begin an existing comment, and on the code in the
                    546: preceding lines.
                    547: 
                    548: 
                    549: File: emacs  Node: Balanced Editing, Prev: Comments, Up: Programs, Next: Lisp Completion
                    550: 
                    551: Editing Without Unbalanced Parentheses
                    552: ======================================
                    553: 
                    554: `M-('     
                    555:      Put parentheses around next sexp(s) (`insert-parentheses').
                    556: `M-)'     
                    557:      Move past next close parenthesis and re-indent
                    558:      (`move-over-close-and-reindent').
                    559: 
                    560:   The commands `M-(' (`insert-parentheses') and `M-)'
                    561: (`move-over-close-and-reindent') are designed to facilitate a style of
                    562: editing which keeps parentheses balanced at all times.  `M-(' inserts a
                    563: pair of parentheses, either together as in `()', or, if given an
                    564: argument, around the next several sexps, and leaves point after the open
                    565: parenthesis.  Instead of typing `( F O O )', you can type `M-( F O
                    566: O', which has the same effect except for leaving the cursor before the
                    567: close parenthesis.  Then you would type `M-)', which moves past the
                    568: close parenthesis, deleting any indentation preceding it (in this example
                    569: there is none), and indenting with LFD after it.
                    570: 
                    571: 
                    572: File: emacs  Node: Lisp Completion, Prev: Balanced Editing, Up: Programs, Next: Documentation
                    573: 
                    574: Completion for Lisp Symbols
                    575: ===========================
                    576: 
                    577:   Usually completion happens in the minibuffer.  But one kind of completion
                    578: is available in all buffers: completion for Lisp symbol names.
                    579: 
                    580:   The command `M-TAB' (`lisp-complete-symbol') takes the
                    581: partial Lisp symbol before point to be an abbreviation, and compares it
                    582: against all nontrivial Lisp symbols currently known to Emacs.  Any
                    583: additional characters that they all have in common are inserted at point.
                    584: Nontrivial symbols are those that have function definitions, values or
                    585: properties.
                    586: 
                    587:   If there is an open-parenthesis immediately before the beginning of
                    588: the partial symbol, only symbols with function definitions are considered
                    589: as completions.
                    590: 
                    591:   If the partial name in the buffer has more than one possible completion
                    592: and they have no additional characters in common, a list of all possible
                    593: completions is displayed in another window.
                    594: 
                    595: 
                    596: File: emacs  Node: Documentation, Prev: Lisp Completion, Up: Programs, Next: Change Log
                    597: 
                    598: Documentation Commands
                    599: ======================
                    600: 
                    601:   As you edit Lisp code to be run in Emacs, the commands `C-h f'
                    602: (`describe-function') and `C-h v' (`describe-variable') can
                    603: be used to print documentation of functions and variables that you want to
                    604: call.  These commands use the minibuffer to read the name of a function or
                    605: variable to document, and display the documentation in a window.
                    606: 
                    607:   For extra convenience, these commands provide default arguments based on
                    608: the code in the neighborhood of point.  `C-h f' sets the default to the
                    609: function called in the innermost list containing point.  `C-h v' uses
                    610: the symbol name around or adjacent to point as its default.
                    611: 
                    612:   Documentation on Unix commands, system calls and libraries can be
                    613: obtained with the `M-x manual-entry' command.  This reads a topic as an
                    614: argument, and displays the text on that topic from the Unix manual.
                    615: `manual-entry' always searches all 8 sections of the manual, and
                    616: concatenates all the entries that are found.  For example, the topic
                    617: `termcap' finds the description of the termcap library from section 3,
                    618: followed by the description of the termcap data base from section 5.
                    619: 
                    620: 
                    621: File: emacs  Node: Change Log, Prev: Documentation, Up: Programs, Next: Tags
                    622: 
                    623: Change Logs
                    624: ===========
                    625: 
                    626:   The Emacs command `M-x add-change-log-entry' helps you keep a record
                    627: of when and why you have changed a program.  It assumes that you have a
                    628: file in which you write a chronological sequence of entries describing
                    629: individual changes.  The default is to store the change entries in a file
                    630: called `ChangeLog' in the same directory as the file you are editing.
                    631: The same `ChangeLog' file therefore records changes for all the files
                    632: in the directory.
                    633: 
                    634:   A change log entry starts with a header line that contains your name and
                    635: the current date.  Aside from these header lines, every line in the change
                    636: log starts with a tab.  One entry can describe several changes; each change
                    637: starts with a line starting with a tab and a star.  `M-x add-change-log-entry'
                    638: visits the change log file and creates a new entry unless the most recent
                    639: entry is for today's date and your name.  In either case, it adds a new
                    640: line to start the description of another change just after the header line
                    641: of the entry.  When `M-x add-change-log-entry' is finished, all is
                    642: prepared for you to edit in the description of what you changed and how.
                    643: You must then save the change log file yourself.
                    644: 
                    645:   The change log file is always visited in Indented Text mode, which means
                    646: that LFD and auto-filling indent each new line like the previous
                    647: line.  This is convenient for entering the contents of an entry, which must
                    648: all be indented.  *Note Text Mode::.
                    649: 
                    650:   Here is an example of the formatting conventions used in the change log
                    651: for Emacs:
                    652: 
                    653:      Wed Jun 26 19:29:32 1985  Richard M. Stallman  (rms at mit-prep)
                    654:      
                    655:              * xdisp.c (try_window_id):
                    656:              If C-k is done at end of next-to-last line,
                    657:              this fn updates window_end_vpos and cannot leave
                    658:              window_end_pos nonnegative (it is zero, in fact).
                    659:              If display is preempted before lines are output,
                    660:              this is inconsistent.  Fix by setting
                    661:              blank_end_of_window to nonzero.
                    662:      
                    663:      Tue Jun 25 05:25:33 1985  Richard M. Stallman  (rms at mit-prep)
                    664:      
                    665:              * cmds.c (Fnewline):
                    666:              Call the auto fill hook if appropriate.
                    667:      
                    668:              * xdisp.c (try_window_id):
                    669:              If point is found by compute_motion after xp, record that
                    670:              permanently.  If display_text_line sets point position wrong
                    671:              (case where line is killed, point is at eob and that line is
                    672:              not displayed), set it again in final compute_motion.
                    673: 
                    674: 
                    675: File: emacs  Node: Tags, Prev: Change Log, Up: Programs, Next: Fortran
                    676: 
                    677: Tag Tables
                    678: ==========
                    679: 
                    680:   A "tag table" is a description of how a multi-file program is broken
                    681: up into files.  It lists the names of the component files and the names and
                    682: positions of the functions in each file.  Grouping the related files makes
                    683: it possible to search or replace through all the files with one command.
                    684: Recording the function names and positions makes possible the `Meta-.'
                    685: command which you can use to find the definition of a function without
                    686: having to know which of the files it is in.
                    687: 
                    688:   Tag tables are stored in files called "tag table files".  The
                    689: conventional name for a tag table file is `TAGS'.
                    690: 
                    691:   Each entry in the tag table records the name of one tag, the name of the
                    692: file that the tag is defined in (implicitly), and the position in that file
                    693: of the tag's definition.
                    694: 
                    695:   Just what names from the described files are recorded in the tag table
                    696: depends on the programming language of the described file.  They normally
                    697: include all functions and subroutines, and may also include global
                    698: variables, data types, and anything else convenient.  In any case, each
                    699: name recorded is called a "tag".
                    700: 
                    701: * Menu:
                    702: 
                    703: * Tag Syntax::
                    704: * Create Tag Table::
                    705: * Select Tag Table::
                    706: * Find Tag::
                    707: * Tags Search::
                    708: * Tags Stepping::
                    709: * List Tags::
                    710: 
                    711: 
                    712: File: emacs  Node: Tag Syntax, Prev: Tags, Up: Tags, Next: Create Tag Table
                    713: 
                    714: Source File Tag Syntax
                    715: ----------------------
                    716: 
                    717:   In Lisp code, any function defined with `defun', any variable
                    718: defined with `defvar' or `defconst', and in general the first
                    719: argument of any expression that starts with `(def' in column zero, is
                    720: a tag.
                    721: 
                    722:   In C code, any C function is a tag, and so is any typedef if `-t' is
                    723: specified when the tag table is constructed.
                    724: 
                    725:   In Fortran code, functions and subroutines are tags.
                    726: 
                    727:   In LaTeX text, the argument of any of the commands `\chapter',
                    728: `\section', `\subsection', `\subsubsection', `\eqno', `\label', `\ref',
                    729: `\cite', `\bibitem' and `\typeout' is a tag.
                    730: 
                    731: 
                    732: File: emacs  Node: Create Tag Table, Prev: Tag Syntax, Up: Tags, Next: Select Tag Table
                    733: 
                    734: Creating Tag Tables
                    735: -------------------
                    736: 
                    737:   The `etags' program is used to create a tag table file.  It knows
                    738: the syntax of C, Fortran, LaTeX, Scheme and Emacs Lisp/Common Lisp.  To
                    739: use `etags', type
                    740: 
                    741:      etags INPUTFILES...
                    742: 
                    743: as a shell command.  It reads the specified files and writes a tag table
                    744: named `TAGS' in the current working directory.  `etags'
                    745: recognizes the language used in an input file based on its file name and
                    746: contents; there are no switches for specifying the language.  The `-t'
                    747: switch tells `etags' to record typedefs in C code as tags.
                    748: 
                    749:   If the tag table data become outdated due to changes in the files
                    750: described in the table, the way to update the tag table is the same way it
                    751: was made in the first place.  It is not necessary to do this often.
                    752: 
                    753:   If the tag table fails to record a tag, or records it for the wrong file,
                    754: then Emacs cannot possibly find its definition.  However, if the position
                    755: recorded in the tag table becomes a little bit wrong (due to some editing
                    756: in the file that the tag definition is in), the only consequence is to slow
                    757: down finding the tag slightly.  Even if the stored position is very wrong,
                    758: Emacs will still find the tag, but it must search the entire file for it.
                    759: 
                    760:   So you should update a tag table when you define new tags that you want
                    761: to have listed, or when you move tag definitions from one file to another,
                    762: or when changes become substantial.  Normally there is no need to update
                    763: the tag table after each edit, or even every day.
                    764: 
                    765: 
                    766: File: emacs  Node: Select Tag Table, Prev: Create Tag Table, Up: Tags, Next: Find Tag
                    767: 
                    768: Selecting a Tag Table
                    769: ---------------------
                    770: 
                    771:   Emacs has at any time one "selected" tag table, and all the commands
                    772: for working with tag tables use the selected one.  To select a tag table,
                    773: type `M-x visit-tags-table', which reads the tag table file name as an
                    774: argument.  The name `TAGS' in the default directory is used as the
                    775: default file name.
                    776: 
                    777:   All this command does is store the file name in the variable
                    778: `tags-file-name'.  Emacs does not actually read in the tag table
                    779: contents until you try to use them.  Setting this variable yourself is just
                    780: as good as using `visit-tags-table'.  The variable's initial value is
                    781: `nil'; this value tells all the commands for working with tag tables
                    782: that they must ask for a tag table file name to use.
                    783: 
                    784: 
                    785: File: emacs  Node: Find Tag, Prev: Select Tag Table, Up: Tags, Next: Tags Search
                    786: 
                    787: Finding a Tag
                    788: -------------
                    789: 
                    790:   The most important thing that a tag table enables you to do is to find
                    791: the definition of a specific tag.
                    792: 
                    793: `M-. TAG'     
                    794:      Find first definition of TAG (`find-tag').
                    795: `C-u M-.'     
                    796:      Find next alternate definition of last tag specified.
                    797: `C-x 4 . TAG'     
                    798:      Find first definition of TAG, but display it in another window
                    799:      (`find-tag-other-window').
                    800: 
                    801:   `M-.' (`find-tag') is the command to find the definition of a
                    802: specified tag.  It searches through the tag table for that tag, as a
                    803: string, and then uses the tag table info to determine the file that the
                    804: definition is in and the approximate character position in the file of the
                    805: definition.  Then `find-tag' visits that file, moves point to the
                    806: approximate character position, and starts searching ever-increasing
                    807: distances away for the the text that should appear at the beginning of the
                    808: definition.
                    809: 
                    810:   If an empty argument is given (just type RET), the sexp in the
                    811: buffer before or around point is used as the name of the tag to find.
                    812: *Note Lists::, for info on sexps.
                    813: 
                    814:   The argument to `find-tag' need not be the whole tag name; it can be
                    815: a substring of a tag name.  However, there can be many tag names containing
                    816: the substring you specify.  Since `find-tag' works by searching the
                    817: text of the tag table, it finds the first tag in the table that the
                    818: specified substring appears in.  The way to find other tags that match the
                    819: substring is to give `find-tag' a numeric argument, as in `C-u
                    820: M-.'; this does not read a tag name, but continues searching the tag
                    821: table's text for another tag containing the same substring last used.  If
                    822: you have a real META key, `M-0 M-.' is an easier alternative
                    823: to `C-u M-.'.
                    824: 
                    825:   Like most commands that can switch buffers, `find-tag' has another
                    826: similar command that displays the new buffer in another window.  `C-x 4
                    827: .' invokes the function `find-tag-other-window'.  (This key sequence
                    828: ends with a period.)
                    829: 
                    830:   Emacs comes with a tag table file `TAGS', in the directory
                    831: containing Lisp libraries, which includes all the Lisp libraries and all
                    832: the C sources of Emacs.  By specifying this file with `visit-tags-table'
                    833: and then using `M-.' you can quickly look at the source of any Emacs
                    834: function.
                    835: 
                    836: 
                    837: File: emacs  Node: Tags Search, Prev: Find Tag, Up: Tags, Next: Tags Stepping
                    838: 
                    839: Searching and Replacing with Tag Tables
                    840: ---------------------------------------
                    841: 
                    842:   The commands in this section visit and search all the files listed in the
                    843: selected tag table, one by one.  For these commands, the tag table serves
                    844: only to specify a sequence of files to search.  A related command is
                    845: `M-x grep' (*Note Compilation::).
                    846: 
                    847: `M-x tags-search'     
                    848:      Search for the specified regexp through the files in the selected tag
                    849:      table.
                    850: `M-x tags-query-replace'     
                    851:      Perform a `query-replace' on each file in the selected tag table.
                    852: `M-,'     
                    853:      Restart one of the commands above, from the current location of point
                    854:      (`tags-loop-continue').
                    855: 
                    856:   `M-x tags-search' reads a regexp using the minibuffer, then visits
                    857: the files of the selected tag table one by one, and searches through each
                    858: one for that regexp.  It displays the name of the file being searched so
                    859: you can follow its progress.  As soon as an occurrence is found,
                    860: `tags-search' returns.
                    861: 
                    862:   Having found one match, you probably want to find all the rest.  To find
                    863: one more match, type `M-,' (`tags-loop-continue') to resume the
                    864: `tags-search'.  This searches the rest of the current buffer, followed
                    865: by the remaining files of the tag table.
                    866: 
                    867:   `M-x tags-query-replace' performs a single `query-replace' through all
                    868: the files in the tag table.  It reads a string to search for and a string
                    869: to replace with, just like ordinary `M-x query-replace'.  It searches much
                    870: like `M-x tags-search' but repeatedly, processing matches according to your
                    871: input.  *Note Replace::, for more information on `query-replace'.
                    872: 
                    873:   It is possible to get through all the files in the tag table with a
                    874: single invocation of `M-x tags-query-replace'.  But since any
                    875: unrecognized character causes the command to exit, you may need to continue
                    876: where you left off.  `M-,' can be used for this.  It resumes the last
                    877: tags search or replace command that you did.
                    878: 
                    879:   It may have struck you that `tags-search' is a lot like `grep'.
                    880: You can also run `grep' itself as an inferior of Emacs and have Emacs
                    881: show you the matching lines one by one.  This works mostly the same as
                    882: running a compilation and having Emacs show you where the errors were.
                    883: *Note Compilation::.
                    884: 
                    885: 
                    886: File: emacs  Node: Tags Stepping, Prev: Tags Search, Up: Tags, Next: List Tags
                    887: 
                    888: Stepping Through a Tag Table
                    889: ----------------------------
                    890: 
                    891:   If you wish to process all the files in the selected tag table, but
                    892: `M-x tags-search' and `M-x tags-query-replace' in particular are not what
                    893: you want, you can use `M-x next-file'.
                    894: 
                    895: `C-u M-x next-file'     
                    896:      With a numeric argument, regardless of its value, visit the first
                    897:      file in the tag table, and prepare to advance sequentially by files.
                    898: `M-x next-file'     
                    899:      Visit the next file in the selected tag table.
                    900: 
                    901: 
                    902: File: emacs  Node: List Tags, Prev: Tags Stepping, Up: Tags
                    903: 
                    904: Tag Table Inquiries
                    905: -------------------
                    906: 
                    907: `M-x list-tags'     
                    908:      Display a list of the tags defined in a specific program file.
                    909: `M-x tags-apropos'     
                    910:      Display a list of all tags matching a specified regexp.
                    911: 
                    912:   `M-x list-tags' reads the name of one of the files described by the
                    913: selected tag table, and displays a list of all the tags defined in that
                    914: file.  The "file name" argument is really just a string to compare
                    915: against the names recorded in the tag table; it is read as a string rather
                    916: than as a file name.  Therefore, completion and defaulting are not
                    917: available, and you must enter the string the same way it appears in the tag
                    918: table.  Do not include a directory as part of the file name unless the file
                    919: name recorded in the tag table includes a directory.
                    920: 
                    921:   `M-x tags-apropos' is like `apropos' for tags.  It reads a regexp,
                    922: then finds all the tags in the selected tag table whose entries match that
                    923: regexp, and displays the tag names found.
                    924: 
                    925: 
                    926: File: emacs  Node: Fortran, Prev: Tags, Up: Programs
                    927: 
                    928: Fortran Mode
                    929: ============
                    930: 
                    931:   Fortran mode provides special motion commands for Fortran statements and
                    932: subprograms, and indentation commands that understand Fortran conventions
                    933: of nesting, line numbers and continuation statements.
                    934: 
                    935:   Special commands for comments are provided because Fortran comments are
                    936: unlike those of other languages.
                    937: 
                    938:   Built-in abbrevs optionally save typing when you insert Fortran keywords.
                    939: 
                    940:   Use `M-x fortran-mode' to switch to this major mode.  Doing so calls
                    941: the value of `fortran-mode-hook' as a function of no arguments if
                    942: that variable has a value that is not `nil'.
                    943: 
                    944: * Menu:
                    945: 
                    946: * Motion: Fortran Motion.     Moving point by statements or subprograms.
                    947: * Indent: Fortran Indent.     Indentation commands for Fortran.
                    948: * Comments: Fortran Comments. Inserting and aligning comments.
                    949: * Columns: Fortran Columns.   Measuring columns for valid Fortran.
                    950: * Abbrev: Fortran Abbrev.     Built-in abbrevs for Fortran keywords.
                    951: 
                    952:   Fortran mode was contributed by Michael Prange.
                    953: 
                    954: 
                    955: File: emacs  Node: Fortran Motion, Prev: Fortran, Up: Fortran, Next: Fortran Indent
                    956: 
                    957: Motion Commands
                    958: ---------------
                    959: 
                    960:   Fortran mode provides special commands to move by subprograms (functions
                    961: and subroutines) and by statements.  There is also a command to put the
                    962: region around one subprogram, convenient for killing it or moving it.
                    963: 
                    964: 
                    965: `C-M-a'     
                    966:      Move to beginning of subprogram
                    967:      (`beginning-of-fortran-subprogram').
                    968: `C-M-e'     
                    969:      Move to end of subprogram (`end-of-fortran-subprogram').
                    970: `C-M-h'     
                    971:      Put point at beginning of subprogram and mark at end
                    972:      (`mark-fortran-subprogram').
                    973: `C-c C-n'     
                    974:      Move to beginning of current or next statement
                    975:      (`fortran-next-statement').
                    976: `C-c C-p'     
                    977:      Move to beginning of current or previous statement
                    978:      (`fortran-previous-statement').
                    979: 
                    980: 
                    981: File: emacs  Node: Fortran Indent, Prev: Fortran Motion, Up: Fortran, Next: Fortran Comments
                    982: 
                    983: Fortran Indentation
                    984: -------------------
                    985: 
                    986:   Special commands and features are needed for indenting Fortran code in
                    987: order to make sure various syntactic entities (line numbers, comment line
                    988: indicators and continuation line flags) appear in the columns that are
                    989: required for standard Fortran.
                    990: 
                    991: * Menu:
                    992: 
                    993: * Commands: ForIndent Commands. Commands for indenting Fortran.
                    994: * Numbers:  ForIndent Num.      How line numbers auto-indent.
                    995: * Conv:     ForIndent Conv.     Conventions you must obey to avoid trouble.
                    996: * Vars:     ForIndent Vars.     Variables controlling Fortran indent style.
                    997: 
                    998: 
                    999: File: emacs  Node: ForIndent Commands, Prev: Fortran Indent, Up: Fortran Indent, Next: ForIndent Num
                   1000: 
                   1001: Fortran Indentation Commands
                   1002: ............................
                   1003: 
                   1004: `TAB'     
                   1005:      Indent the current line (`fortran-indent-line').
                   1006: `M-LFD'     
                   1007:      Break the current line and set up a continuation line.
                   1008: `C-M-q'     
                   1009:      Indent all the lines of the subprogram point is in
                   1010:      (`fortran-indent-subprogram').
                   1011: 
                   1012:   TAB is redefined by Fortran mode to reindent the current line for
                   1013: Fortran (`fortran-indent-line').  Line numbers and continuation
                   1014: markers are indented to their required columns, and the body of the
                   1015: statement is independently indented based on its nesting in the program.
                   1016: 
                   1017:   The key `C-M-q' is redefined as `fortran-indent-subprogram', a
                   1018: command to reindent all the lines of the Fortran subprogram (function or
                   1019: subroutine) containing point.
                   1020: 
                   1021:   The key `M-LFD' is redefined as `fortran-split-line', a
                   1022: command to split a line in the appropriate fashion for Fortran.  In a
                   1023: non-comment line, the second half becomes a continuation line and is
                   1024: indented accordingly.  In a comment line, both halves become separate
                   1025: comment lines.
                   1026: 
                   1027: 
                   1028: File: emacs  Node: ForIndent Num, Prev: ForIndent Commands, Up: Fortran Indent, Next: ForIndent Conv
                   1029: 
                   1030: Line Numbers and Continuation
                   1031: .............................
                   1032: 
                   1033:   If a number is the first non-whitespace in the line, it is assumed to be
                   1034: a line number and is moved to columns 0 through 4.  (Columns are always
                   1035: counted from 0 in GNU Emacs.)  If the text on the line starts with the
                   1036: conventional Fortran continuation marker `$', it is moved to column 5.
                   1037: If the text begins with any non whitespace character in column 5, it is
                   1038: assumed to be an unconventional continuation marker and remains in column
                   1039: 5.
                   1040: 
                   1041:   Line numbers of four digits or less are normally indented one space.
                   1042: This amount is controlled by the variable `fortran-line-number-indent'
                   1043: which is the maximum indentation a line number can have.  Line numbers
                   1044: are indented to right-justify them to end in column 4 unless that would
                   1045: require more than this maximum indentation.  The default value of the
                   1046: variable is 1.
                   1047: 
                   1048:   Simply inserting a line number is enough to indent it according to these
                   1049: rules.  As each digit is inserted, the indentation is recomputed.  To turn
                   1050: off this feature, set the variable `fortran-electric-line-number' to
                   1051: `nil'.  Then inserting line numbers is like inserting anything else.
                   1052: 
                   1053: 
                   1054: File: emacs  Node: ForIndent Conv, Prev: ForIndent Num, Up: Fortran Indent, Next: ForIndent Vars
                   1055: 
                   1056: Syntactic Conventions
                   1057: .....................
                   1058: 
                   1059:   Fortran mode assumes that you follow certain conventions that simplify
                   1060: the task of understanding a Fortran program well enough to indent it
                   1061: properly:
                   1062: 
                   1063:    * Two nested `do' loops never share a `continue' statement.
                   1064:      
                   1065:    * The same character appears in column 5 of all continuation lines, and
                   1066:      this character is the value of the variable `fortran-continuation-char'.
                   1067:      By default, this character is `$'.
                   1068: 
                   1069: If you fail to follow these conventions, the indentation commands may
                   1070: indent some lines unaesthetically.  However, a correct Fortran program will
                   1071: retain its meaning when reindented even if the conventions are not
                   1072: followed.
                   1073: 
                   1074: 
                   1075: File: emacs  Node: ForIndent Vars, Prev: ForIndent Conv, Up: Fortran Indent
                   1076: 
                   1077: Variables for Fortran Indentation
                   1078: .................................
                   1079: 
                   1080:   Several additional variables control how Fortran indentation works.
                   1081: 
                   1082: `fortran-do-indent'     
                   1083:      Extra indentation within each level of `do' statement (default 3).
                   1084:      
                   1085: `fortran-if-indent'     
                   1086:      Extra indentation within each level of `if' statement (default 3).
                   1087:      
                   1088: `fortran-continuation-indent'     
                   1089:      Extra indentation for bodies of continuation lines (default 5).
                   1090:      
                   1091: `fortran-check-all-num-for-matching-do'     
                   1092:      If this is `nil', indentation assumes that each `do'
                   1093:      statement ends on a `continue' statement.  Therefore, when
                   1094:      computing indentation for a statement other than `continue', it
                   1095:      can save time by not checking for a `do' statement ending there.
                   1096:      If this is non-`nil', indenting any numbered statement must check
                   1097:      for a `do' that ends there.  The default is `nil'.
                   1098:      
                   1099: `fortran-minimum-statement-indent'     
                   1100:      Minimum indentation for fortran statements.  For standard Fortran,
                   1101:      this is 6.  Statement bodies will never be indented less than this
                   1102:      much.
                   1103: 
                   1104: 
                   1105: File: emacs  Node: Fortran Comments, Prev: Fortran Indent, Up: Fortran, Next: Fortran Columns
                   1106: 
                   1107: Comments
                   1108: --------
                   1109: 
                   1110:   The usual Emacs comment commands assume that a comment can follow a line
                   1111: of code.  In Fortran, the standard comment syntax requires an entire line
                   1112: to be just a comment.  Therefore, Fortran mode replaces the standard Emacs
                   1113: comment commands and defines some new variables.
                   1114: 
                   1115:   Fortran mode can also handle a nonstandard comment syntax where comments
                   1116: start with `!' and can follow other text.  Because only some Fortran
                   1117: compilers accept this syntax, Fortran mode will not insert such comments
                   1118: unless you have said in advance to do so.  To do this, set the variable
                   1119: `comment-start' to `"!"' (*Note Variables::).
                   1120: 
                   1121: `M-;'     
                   1122:      Align comment or insert new comment (`fortran-comment-indent').
                   1123:      
                   1124: `C-x ;'     
                   1125:      Applies to nonstandard `!' comments only.
                   1126:      
                   1127: `C-c ;'     
                   1128:      Turn all lines of the region into comments, or (with arg)
                   1129:      turn them back into real code (`fortran-comment-region').
                   1130: 
                   1131:   `M-;' in Fortran mode is redefined as the command
                   1132: `fortran-comment-indent'.  Like the usual `M-;' command, this
                   1133: recognizes any kind of existing comment and aligns its text appropriately;
                   1134: if there is no existing comment, a comment is inserted and aligned.  But
                   1135: inserting and aligning comments are not the same in Fortran mode as in
                   1136: other modes.
                   1137: 
                   1138:   When a new comment must be inserted, if the current line is blank, a
                   1139: full-line comment is inserted.  On a non-blank line, a nonstandard `!'
                   1140: comment is inserted if you have said you want to use them.  Otherwise a
                   1141: full-line comment is inserted on a new line before the current line.
                   1142: 
                   1143:   Nonstandard `!' comments are aligned like comments in other
                   1144: languages, but full-line comments are different.  In a standard full-line
                   1145: comment, the comment delimiter itself must always appear in column zero.
                   1146: What can be aligned is the text within the comment.  You can choose from
                   1147: three styles of alignment by setting the variable
                   1148: `fortran-comment-indent-style' to one of these values:
                   1149: 
                   1150: `fixed'     
                   1151:      The text is aligned at a fixed column, which is the value of
                   1152:      `fortran-comment-line-column'.  This is the default.
                   1153: `relative'     
                   1154:      The text is aligned as if it were a line of code, but with an
                   1155:      additional `fortran-comment-line-column' columns of indentation.
                   1156: `nil'     
                   1157:      Text in full-line columns is not moved automatically.
                   1158: 
                   1159:   In addition, you can specify the character to be used to indent within
                   1160: full-line comments by setting the variable `fortran-comment-indent-char'
                   1161: to the character you want to use.
                   1162: 
                   1163:   Fortran mode introduces two variables `comment-line-start' and
                   1164: `comment-line-start-skip' which play for full-line comments the same
                   1165: roles played by `comment-start' and `comment-start-skip' for
                   1166: ordinary text-following comments.  Normally these are set properly by
                   1167: Fortran mode so you do not need to change them.
                   1168: 
                   1169:   The normal Emacs comment command `C-x ;' has not been redefined.
                   1170: If you use `!' comments, this command can be used with them.  Otherwise
                   1171: it is useless in Fortran mode.
                   1172: 
                   1173:   The command `C-c ;' (`fortran-comment-region') turns all the
                   1174: lines of the region into comments by inserting the string `C$$$' at
                   1175: the front of each one.  With a numeric arg, the region is turned back into
                   1176: live code by deleting `C$$$' from the front of each line in it.  The
                   1177: string used for these comments can be controlled by setting the variable
                   1178: `fortran-comment-region'.  Note that here we have an example of a
                   1179: command and a variable with the same name; these two uses of the name never
                   1180: conflict because in Lisp and in Emacs it is always clear from the context
                   1181: which one is meant.
                   1182: 
                   1183: 

unix.superglobalmegacorp.com

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