Annotation of 43BSDReno/contrib/emacs-18.55/info/emacs-4, revision 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: Regexps, Prev: Regexp Search, Up: Search, Next: Search Case
        !            27: 
        !            28: Syntax of Regular Expressions
        !            29: =============================
        !            30: 
        !            31: Regular expressions have a syntax in which a few characters are special
        !            32: constructs and the rest are "ordinary".  An ordinary character is a simple
        !            33: regular expression which matches that character and nothing else.  The
        !            34: special characters are `$', `^', `.', `*', `+', `?', `[', `]' and `\'; no
        !            35: new special characters will be defined.  Any other character appearing in a
        !            36: regular expression is ordinary, unless a `\' precedes it.
        !            37: 
        !            38: For example, `f' is not a special character, so it is ordinary, and
        !            39: therefore `f' is a regular expression that matches the string `f' and no
        !            40: other string.  (It does not match the string `ff'.)  Likewise, `o' is a
        !            41: regular expression that matches only `o'.
        !            42: 
        !            43: Any two regular expressions A and B can be concatenated.  The result is a
        !            44: regular expression which matches a string if A matches some amount of the
        !            45: beginning of that string and B matches the rest of the string.
        !            46: 
        !            47: As a simple example, we can concatenate the regular expressions `f'
        !            48: and `o' to get the regular expression `fo', which matches only
        !            49: the string `fo'.  Still trivial.  To do something nontrivial, you
        !            50: need to use one of the special characters.  Here is a list of them.
        !            51: 
        !            52: `. (Period)'     
        !            53:      is a special character that matches any single character except a
        !            54:      newline.  Using concatenation, we can make regular expressions like
        !            55:      `a.b' which matches any three-character string which begins with `a'
        !            56:      and ends with `b'.
        !            57:      
        !            58: `*'     
        !            59:      is not a construct by itself; it is a suffix, which means the
        !            60:      preceding regular expression is to be repeated as many times as
        !            61:      possible.  In `fo*', the `*' applies to the `o', so `fo*' matches one
        !            62:      `f' followed by any number of `o's.  The case of zero `o's is allowed:
        !            63:      `fo*' does match `f'.
        !            64:      
        !            65:      `*' always applies to the smallest possible preceding expression.
        !            66:      Thus, `fo*' has a repeating `o', not a repeating `fo'.
        !            67:      
        !            68:      The matcher processes a `*' construct by matching, immediately, as
        !            69:      many repetitions as can be found.  Then it continues with the rest of
        !            70:      the pattern.  If that fails, backtracking occurs, discarding some of
        !            71:      the matches of the `*'-modified construct in case that makes it
        !            72:      possible to match the rest of the pattern.  For example, matching
        !            73:      `ca*ar' against the string `caaar', the `a*' first tries to match all
        !            74:      three `a's; but the rest of the pattern is `ar' and there is only `r'
        !            75:      left to match, so this try fails.  The next alternative is for `a*' to
        !            76:      match only two `a's.  With this choice, the rest of the regexp matches
        !            77:      successfully.
        !            78:      
        !            79: `+'     
        !            80:      Is a suffix character similar to `*' except that it requires that the
        !            81:      preceding expression be matched at least once.  So, for example,
        !            82:      `ca+r' will match the strings `car' and `caaaar' but not the string
        !            83:      `cr', whereas `ca*r' would match all three strings.
        !            84:      
        !            85: `?'     
        !            86:      Is a suffix character similar to `*' except that it can match the
        !            87:      preceding expression either once or not at all.  For example,
        !            88:      `ca?r' will match `car' or `cr'; nothing else.
        !            89:      
        !            90: `[ ... ]'     
        !            91:      `[' begins a "character set", which is terminated by a `]'.  In the
        !            92:      simplest case, the characters between the two form the set.  Thus,
        !            93:      `[ad]' matches either one `a' or one `d', and `[ad]*' matches any
        !            94:      string composed of just `a's and `d's (including the empty string),
        !            95:      from which it follows that `c[ad]*r' matches `cr', `car', `cdr',
        !            96:      `caddaar', etc.
        !            97:      
        !            98:      Character ranges can also be included in a character set, by writing
        !            99:      two characters with a `-' between them.  Thus, `[a-z]' matches any
        !           100:      lower-case letter.  Ranges may be intermixed freely with individual
        !           101:      characters, as in `[a-z$%.]', which matches any lower case letter or
        !           102:      `$', `%' or period.
        !           103:      
        !           104:      Note that the usual special characters are not special any more inside
        !           105:      a character set.  A completely different set of special characters
        !           106:      exists inside character sets: `]', `-' and `^'.
        !           107:      
        !           108:      To include a `]' in a character set, you must make it the first
        !           109:      character.  For example, `[]a]' matches `]' or `a'.  To include a `-',
        !           110:      write `---', which is a range containing only `-'.  To include `^',
        !           111:      make it other than the first character in the set.
        !           112:      
        !           113: `[^ ... ]'     
        !           114:      `[^' begins a "complement character set", which matches any character
        !           115:      except the ones specified.  Thus, `[^a-z0-9A-Z]' matches all
        !           116:      characters except letters and digits.
        !           117:      
        !           118:      `^' is not special in a character set unless it is the first
        !           119:      character.  The character following the `^' is treated as if it
        !           120:      were first (`-' and `]' are not special there).
        !           121:      
        !           122:      Note that a complement character set can match a newline, unless
        !           123:      newline is mentioned as one of the characters not to match.
        !           124:      
        !           125: `^'     
        !           126:      is a special character that matches the empty string, but only if at
        !           127:      the beginning of a line in the text being matched.  Otherwise it fails
        !           128:      to match anything.  Thus, `^foo' matches a `foo' which occurs
        !           129:      at the beginning of a line.
        !           130:      
        !           131: `$'     
        !           132:      is similar to `^' but matches only at the end of a line.  Thus,
        !           133:      `xx*$' matches a string of one `x' or more at the end of a line.
        !           134:      
        !           135: `\'     
        !           136:      has two functions: it quotes the special characters (including
        !           137:      `\'), and it introduces additional special constructs.
        !           138:      
        !           139:      Because `\' quotes special characters, `\$' is a regular expression
        !           140:      which matches only `$', and `\[' is a regular expression which matches
        !           141:      only `[', and so on.
        !           142: 
        !           143: Note: for historical compatibility, special characters are treated as
        !           144: ordinary ones if they are in contexts where their special meanings make no
        !           145: sense.  For example, `*foo' treats `*' as ordinary since there is no
        !           146: preceding expression on which the `*' can act.  It is poor practice to
        !           147: depend on this behavior; better to quote the special character anyway,
        !           148: regardless of where is appears.
        !           149: 
        !           150: For the most part, `\' followed by any character matches only
        !           151: that character.  However, there are several exceptions: characters
        !           152: which, when preceded by `\', are special constructs.  Such
        !           153: characters are always ordinary when encountered on their own.  Here
        !           154: is a table of `\' constructs.
        !           155: 
        !           156: `\|'     
        !           157:      specifies an alternative.  Two regular expressions A and B with `\|'
        !           158:      in between form an expression that matches anything that either A or B
        !           159:      will match.
        !           160:      
        !           161:      Thus, `foo\|bar' matches either `foo' or `bar' but no other string.
        !           162:      
        !           163:      `\|' applies to the largest possible surrounding expressions.  Only a
        !           164:      surrounding `\( ... \)' grouping can limit the grouping power of `\|'.
        !           165:      
        !           166:      Full backtracking capability exists to handle multiple uses of `\|'.
        !           167:      
        !           168: `\( ... \)'     
        !           169:      is a grouping construct that serves three purposes:
        !           170:      
        !           171:        1. To enclose a set of `\|' alternatives for other operations.
        !           172:           Thus, `\(foo\|bar\)x' matches either `foox' or `barx'.
        !           173:           
        !           174:        2. To enclose a complicated expression for the postfix `*' to
        !           175:           operate on.  Thus, `ba\(na\)*' matches `bananana', etc., with any
        !           176:           (zero or more) number of `na' strings.
        !           177:           
        !           178:        3. To mark a matched substring for future reference.
        !           179:           
        !           180:      
        !           181:      This last application is not a consequence of the idea of a
        !           182:      parenthetical grouping; it is a separate feature which happens to be
        !           183:      assigned as a second meaning to the same `\( ... \)' construct
        !           184:      because there is no conflict in practice between the two meanings.
        !           185:      Here is an explanation of this feature:
        !           186:      
        !           187: `\DIGIT'     
        !           188:      after the end of a `\( ... \)' construct, the matcher remembers the
        !           189:      beginning and end of the text matched by that construct.  Then, later
        !           190:      on in the regular expression, you can use `\' followed by DIGIT to
        !           191:      mean "match the same text matched the DIGIT'th time by the `\( ... \)'
        !           192:      construct."
        !           193:      
        !           194:      The strings matching the first nine `\( ... \)' constructs appearing
        !           195:      in a regular expression are assigned numbers 1 through 9 in order that the
        !           196:      open-parentheses appear in the regular expression.  `\1' through
        !           197:      `\9' may be used to refer to the text matched by the corresponding
        !           198:      `\( ... \)' construct.
        !           199:      
        !           200:      For example, `\(.*\)\1' matches any newline-free string that is
        !           201:      composed of two identical halves.  The `\(.*\)' matches the first
        !           202:      half, which may be anything, but the `\1' that follows must match
        !           203:      the same exact text.
        !           204:      
        !           205: `\`'     
        !           206:      matches the empty string, provided it is at the beginning
        !           207:      of the buffer.
        !           208:      
        !           209: `\''     
        !           210:      matches the empty string, provided it is at the end of
        !           211:      the buffer.
        !           212:      
        !           213: `\b'     
        !           214:      matches the empty string, provided it is at the beginning or end of a
        !           215:      word.  Thus, `\bfoo\b' matches any occurrence of `foo' as a separate
        !           216:      word.  `\bballs?\b' matches `ball' or `balls' as a separate word.
        !           217:      
        !           218: `\B'     
        !           219:      matches the empty string, provided it is not at the beginning or
        !           220:      end of a word.
        !           221:      
        !           222: `\<'     
        !           223:      matches the empty string, provided it is at the beginning of a word.
        !           224:      
        !           225: `\>'     
        !           226:      matches the empty string, provided it is at the end of a word.
        !           227:      
        !           228: `\w'     
        !           229:      matches any word-constituent character.  The editor syntax table
        !           230:      determines which characters these are.
        !           231:      
        !           232: `\W'     
        !           233:      matches any character that is not a word-constituent.
        !           234:      
        !           235: `\sCODE'     
        !           236:      matches any character whose syntax is CODE.  CODE is a character which
        !           237:      represents a syntax code: thus, `w' for word constituent, `-' for
        !           238:      whitespace, `(' for open-parenthesis, etc.  *Note Syntax::.
        !           239:      
        !           240: `\SCODE'     
        !           241:      matches any character whose syntax is not CODE.
        !           242: 
        !           243:   Here is a complicated regexp, used by Emacs to recognize the end of a
        !           244: sentence together with any whitespace that follows.  It is given in Lisp
        !           245: syntax to enable you to distinguish the spaces from the tab characters.  In
        !           246: Lisp syntax, the string constant begins and ends with a double-quote.
        !           247: `\"' stands for a double-quote as part of the regexp, `\\' for a
        !           248: backslash as part of the regexp, `\t' for a tab and `\n' for a
        !           249: newline.
        !           250: 
        !           251:      "[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
        !           252: 
        !           253: This contains four parts in succession: a character set matching period,
        !           254: `?' or `!'; a character set matching close-brackets,
        !           255: quotes or parentheses, repeated any number of times; an alternative in
        !           256: backslash-parentheses that matches end-of-line, a tab or two spaces; and a
        !           257: character set matching whitespace characters, repeated any number of times.
        !           258: 
        !           259: 
        !           260: File: emacs  Node: Search Case, Prev: Regexps, Up: Search, Next: Replace
        !           261: 
        !           262: Searching and Case
        !           263: ==================
        !           264: 
        !           265:   All sorts of searches in Emacs normally ignore the case of the text they
        !           266: are searching through; if you specify searching for `FOO', then `Foo' and
        !           267: `foo' are also considered a match.  Regexps, and in particular character
        !           268: sets, are included: `[aB]' would match `a' or `A' or `b' or `B'.
        !           269: 
        !           270:   If you do not want this feature, set the variable `case-fold-search'
        !           271: to `nil'.  Then all letters must match exactly, including case.  This
        !           272: is a per-buffer variable; altering the variable affects only the current
        !           273: buffer, but there is a default value which you can change as well.
        !           274: *Note Locals::.
        !           275: 
        !           276: 
        !           277: File: emacs  Node: Replace, Prev: Search Case, Up: Search, Next: Other Repeating Search
        !           278: 
        !           279: Replacement Commands
        !           280: ====================
        !           281: 
        !           282:   Global search-and-replace operations are not needed as often in Emacs as
        !           283: they are in other editors, but they are available.  In addition to the
        !           284: simple `replace-string' command which is like that found in most
        !           285: editors, there is a `query-replace' command which asks you, for each
        !           286: occurrence of the pattern, whether to replace it.
        !           287: 
        !           288:   The replace commands all replace one string (or regexp) with one
        !           289: replacement string.  It is possible to perform several replacements in
        !           290: parallel using the command `expand-region-abbrevs'.  *Note Expanding Abbrevs::.
        !           291: 
        !           292: * Menu:
        !           293: 
        !           294: * Unconditional Replace::  Replacing all matches for a string.
        !           295: * Regexp Replace::         Replacing all matches for a regexp.
        !           296: * Replacement and Case::   How replacements preserve case of letters.
        !           297: * Query Replace::          How to use querying.
        !           298: 
        !           299: 
        !           300: File: emacs  Node: Unconditional Replace, Prev: Replace, Up: Replace, Next: Regexp Replace
        !           301: 
        !           302: Unconditional Replacement
        !           303: -------------------------
        !           304: 
        !           305: `M-x replace-string RET STRING RET NEWSTRING RET'     
        !           306:      Replace every occurrence of STRING with NEWSTRING.
        !           307: `M-x replace-regexp RET REGEXP RET NEWSTRING RET'     
        !           308:      Replace every match for REGEXP with NEWSTRING.
        !           309: 
        !           310:   To replace every instance of `foo' after point with `bar', use
        !           311: the command `M-x replace-string' with the two arguments `foo' and
        !           312: `bar'.  Replacement occurs only after point, so if you want to cover
        !           313: the whole buffer you must go to the beginning first.  All occurrences up to
        !           314: the end of the buffer are replaced; to limit replacement to part of the
        !           315: buffer, narrow to that part of the buffer before doing the replacement
        !           316: (*Note Narrowing::).
        !           317: 
        !           318:   When `replace-string' exits, point is left at the last occurrence
        !           319: replaced.  The value of point when the `replace-string' command was
        !           320: issued is remembered on the mark ring; `C-u C-SPC' moves back
        !           321: there.
        !           322: 
        !           323:   A numeric argument restricts replacement to matches that are surrounded
        !           324: by word boundaries.
        !           325: 
        !           326: 
        !           327: File: emacs  Node: Regexp Replace, Prev: Unconditional Replace, Up: Replace, Next: Replacement and Case
        !           328: 
        !           329: Regexp Replacement
        !           330: ------------------
        !           331: 
        !           332:   `replace-string' replaces exact matches for a single string.  The
        !           333: similar command `replace-regexp' replaces any match for a specified
        !           334: pattern.
        !           335: 
        !           336:   In `replace-regexp', the NEWSTRING need not be constant.  It can refer to
        !           337: all or part of what is matched by the REGEXP.  `\&' in NEWSTRING stands for
        !           338: the entire text being replaced.  `\D' in NEWSTRING, where D is a digit,
        !           339: stands for whatever matched the D'th parenthesized grouping in REGEXP.  For
        !           340: example,
        !           341: 
        !           342:      M-x replace-regexp RET c[ad]+r RET \&-safe RET
        !           343: 
        !           344: would replace (for example) `cadr' with `cadr-safe' and `cddr'
        !           345: with `cddr-safe'.
        !           346: 
        !           347:      M-x replace-regexp RET \(c[ad]+r\)-safe RET \1 RET
        !           348: 
        !           349: would perform exactly the opposite replacements.  To include a `\'
        !           350: in the text to replace with, you must give `\\'.
        !           351: 
        !           352: 
        !           353: File: emacs  Node: Replacement and Case, Prev: Regexp Replace, Up: Replace, Next: Query Replace
        !           354: 
        !           355: Replace Commands and Case
        !           356: -------------------------
        !           357: 
        !           358:   If the arguments to a replace command are in lower case, it preserves
        !           359: case when it makes a replacement.  Thus, the command
        !           360: 
        !           361:      M-x replace-string RET foo RET bar RET
        !           362: 
        !           363: replaces a lower case `foo' with a lower case `bar', `FOO'
        !           364: with `BAR', and `Foo' with `Bar'.  If upper case letters are
        !           365: used in the second argument, they remain upper case every time that
        !           366: argument is inserted.  If upper case letters are used in the first
        !           367: argument, the second argument is always substituted exactly as given, with
        !           368: no case conversion.  Likewise, if the variable `case-replace' is set
        !           369: to `nil', replacement is done without case conversion.  If
        !           370: `case-fold-search' is set to `nil', case is significant in
        !           371: matching occurrences of `foo' to replace; also, case conversion of the
        !           372: replacement string is not done.
        !           373: 
        !           374: 
        !           375: File: emacs  Node: Query Replace, Prev: Replacement and Case, Up: Replace
        !           376: 
        !           377: Query Replace
        !           378: -------------
        !           379: 
        !           380: `M-% STRING RET NEWSTRING RET'     
        !           381: `M-x query-replace RET STRING RET NEWSTRING RET'     
        !           382:      Replace some occurrences of STRING with NEWSTRING.
        !           383: `M-x query-replace-regexp RET REGEXP RET NEWSTRING RET'     
        !           384:      Replace some matches for REGEXP with NEWSTRING.
        !           385: 
        !           386:   If you want to change only some of the occurrences of `foo' to `bar', not
        !           387: all of them, then you cannot use an ordinary `replace-string'.  Instead,
        !           388: use `M-%' (`query-replace').  This command finds occurrences of `foo' one
        !           389: by one, displays each occurrence and asks you whether to replace it.  A
        !           390: numeric argument to `query-replace' tells it to consider only occurrences
        !           391: that are bounded by word-delimiter characters.
        !           392: 
        !           393:   Aside from querying, `query-replace' works just like `replace-string',
        !           394: and `query-replace-regexp' works just like `replace-regexp'.
        !           395: 
        !           396:   The things you can type when you are shown an occurrence of STRING
        !           397: or a match for REGEXP are:
        !           398: 
        !           399: 
        !           400: `SPC'     
        !           401:      to replace the occurrence with NEWSTRING.  This preserves case, just
        !           402:      like `replace-string', provided `case-replace' is non-`nil', as it
        !           403:      normally is.
        !           404:      
        !           405: `DEL'     
        !           406:      to skip to the next occurrence without replacing this one.
        !           407:      
        !           408: `, (Comma)'     
        !           409:      to replace this occurrence and display the result.  You are then asked
        !           410:      for another input character, except that since the replacement has
        !           411:      already been made, DEL and SPC are equivalent.  You could
        !           412:      type `C-r' at this point (see below) to alter the replaced text.  You
        !           413:      could also type `C-x u' to undo the replacement; this exits the
        !           414:      `query-replace', so if you want to do further replacement you must use
        !           415:      `C-x ESC' to restart (*Note Repetition::).
        !           416:      
        !           417: `ESC'     
        !           418:      to exit without doing any more replacements.
        !           419:      
        !           420: `. (Period)'     
        !           421:      to replace this occurrence and then exit.
        !           422:      
        !           423: `!'     
        !           424:      to replace all remaining occurrences without asking again.
        !           425:      
        !           426: `^'     
        !           427:      to go back to the location of the previous occurrence (or what used to
        !           428:      be an occurrence), in case you changed it by mistake.  This works by
        !           429:      popping the mark ring.  Only one `^' in a row is allowed, because
        !           430:      only one previous replacement location is kept during `query-replace'.
        !           431:      
        !           432: `C-r'     
        !           433:      to enter a recursive editing level, in case the occurrence needs to be
        !           434:      edited rather than just replaced with NEWSTRING.  When you are
        !           435:      done, exit the recursive editing level with `C-M-c' and the next
        !           436:      occurrence will be displayed.  *Note Recursive Edit::.
        !           437:      
        !           438: `C-w'     
        !           439:      to delete the occurrence, and then enter a recursive editing level as
        !           440:      in `C-r'.  Use the recursive edit to insert text to replace the
        !           441:      deleted occurrence of STRING.  When done, exit the recursive
        !           442:      editing level with `C-M-c' and the next occurrence will be
        !           443:      displayed.
        !           444:      
        !           445: `C-l'     
        !           446:      to redisplay the screen and then give another answer.
        !           447:      
        !           448: `C-h'     
        !           449:      to display a message summarizing these options, then give another
        !           450:      answer.
        !           451: 
        !           452:   If you type any other character, the `query-replace' is exited, and
        !           453: the character executed as a command.  To restart the `query-replace',
        !           454: use `C-x ESC', which repeats the `query-replace' because it
        !           455: used the minibuffer to read its arguments.  *Note C-x ESC: Repetition.
        !           456:   
        !           457: 
        !           458: File: emacs  Node: Other Repeating Search, Prev: Replace, Up: Search
        !           459: 
        !           460: Other Search-and-Loop Commands
        !           461: ==============================
        !           462: 
        !           463:   Here are some other commands that find matches for a regular expression.
        !           464: They all operate from point to the end of the buffer.
        !           465: 
        !           466: `M-x occur'     
        !           467:      Print each line that follows point and contains a match for the
        !           468:      specified regexp.  A numeric argument specifies the number of context
        !           469:      lines to print before and after each matching line; the default is
        !           470:      none.
        !           471:      
        !           472:      The buffer `*Occur*' containing the output serves as a menu for
        !           473:      finding the occurrences in their original context.  Find an occurrence
        !           474:      as listed in `*Occur*', position point there and type `C-c
        !           475:      C-c'; this switches to the buffer that was searched and moves point to
        !           476:      the original of the same occurrence.
        !           477:      
        !           478: `M-x list-matching-lines'     
        !           479:      Synonym for `M-x occur'.
        !           480:      
        !           481: `M-x count-matches'     
        !           482:      Print the number of matches following point for the specified regexp.
        !           483:      
        !           484: `M-x delete-non-matching-lines'     
        !           485:      Delete each line that follows point and does not contain a match for
        !           486:      the specified regexp.
        !           487:      
        !           488: `M-x delete-matching-lines'     
        !           489:      Delete each line that follows point and contains a match for the
        !           490:      specified regexp.
        !           491: 
        !           492: 
        !           493: File: emacs  Node: Fixit, Prev: Search, Up: Top, Next: Files
        !           494: 
        !           495: Commands for Fixing Typos
        !           496: *************************
        !           497: 
        !           498:   In this chapter we describe the commands that are especially useful for
        !           499: the times when you catch a mistake in your text just after you have made
        !           500: it, or change your mind while composing text on line.
        !           501: 
        !           502: * Menu:
        !           503: 
        !           504: * Kill Errors:: Commands to kill a batch of recently entered text.
        !           505: * Transpose::   Exchanging two characters, words, lines, lists...
        !           506: * Fixing Case:: Correcting case of last word entered.
        !           507: * Spelling::    Apply spelling checker to a word, or a whole file.
        !           508: 
        !           509: 
        !           510: File: emacs  Node: Kill Errors, Prev: Fixit, Up: Fixit, Next: Transpose
        !           511: 
        !           512: Killing Your Mistakes
        !           513: =====================
        !           514: 
        !           515: `DEL'     
        !           516:      Delete last character (`delete-backward-char').
        !           517: `M-DEL'     
        !           518:      Kill last word (`backward-kill-word').
        !           519: `C-x DEL'     
        !           520:      Kill to beginning of sentence (`backward-kill-sentence').
        !           521: 
        !           522:   The DEL character (`delete-backward-char') is the most
        !           523: important correction command.  When used among graphic (self-inserting)
        !           524: characters, it can be thought of as canceling the last character typed.
        !           525: 
        !           526:   When your mistake is longer than a couple of characters, it might be more
        !           527: convenient to use `M-DEL' or `C-x DEL'.  `M-DEL' kills back to the start of
        !           528: the last word, and `C-x DEL' kills back to the start of the last sentence.
        !           529: `C-x DEL' is particularly useful when you are thinking of what to write as
        !           530: you type it, in case you change your mind about phrasing.  `M-DEL' and `C-x
        !           531: DEL' save the killed text for `C-y' and `M-y' to retrieve.  *Note
        !           532: Yanking::.
        !           533: 
        !           534:   `M-DEL' is often useful even when you have typed only a few
        !           535: characters wrong, if you know you are confused in your typing and aren't
        !           536: sure exactly what you typed.  At such a time, you cannot correct with
        !           537: DEL except by looking at the screen to see what you did.  It requires
        !           538: less thought to kill the whole word and start over again.
        !           539: 
        !           540: 
        !           541: File: emacs  Node: Transpose, Prev: Kill Errors, Up: Fixit, Next: Fixing Case
        !           542: 
        !           543: Transposing Text
        !           544: ================
        !           545: 
        !           546: `C-t'     
        !           547:      Transpose two characters (`transpose-chars').
        !           548: `M-t'     
        !           549:      Transpose two words (`transpose-words').
        !           550: `C-M-t'     
        !           551:      Transpose two balanced expressions (`transpose-sexps').
        !           552: `C-x C-t'     
        !           553:      Transpose two lines (`transpose-lines').
        !           554: 
        !           555:   The common error of transposing two characters can be fixed, when they
        !           556: are adjacent, with the `C-t' command (`transpose-chars').  Normally,
        !           557: `C-t' transposes the two characters on either side of point.  When
        !           558: given at the end of a line, rather than transposing the last character of
        !           559: the line with the newline, which would be useless, `C-t' transposes the
        !           560: last two characters on the line.  So, if you catch your transposition error
        !           561: right away, you can fix it with just a `C-t'.  If you don't catch it so
        !           562: fast, you must move the cursor back to between the two transposed
        !           563: characters.  If you transposed a space with the last character of the word
        !           564: before it, the word motion commands are a good way of getting there.
        !           565: Otherwise, a reverse search (`C-r') is often the best way.
        !           566: *Note Search::.
        !           567: 
        !           568: 
        !           569:   `Meta-t' (`transpose-words') transposes the word before point
        !           570: with the word after point.  It moves point forward over a word, dragging
        !           571: the word preceding or containing point forward as well.  The punctuation
        !           572: characters between the words do not move.  For example, `FOO, BAR'
        !           573: transposes into `BAR, FOO' rather than `BAR FOO,'.
        !           574: 
        !           575:   `C-M-t' (`transpose-sexps') is a similar command for transposing
        !           576: two expressions (*Note Lists::), and `{C-x C-t} (`transpose-lines')'exchanges lines.  They work like `M-t' except in determining the
        !           577: division of the text into syntactic units.
        !           578: 
        !           579:   A numeric argument to a transpose command serves as a repeat count: it
        !           580: tells the transpose command to move the character (word, sexp, line) before
        !           581: or containing point across several other characters (words, sexps, lines).
        !           582: For example, `C-u 3 C-t' moves the character before point forward across
        !           583: three other characters.  This is equivalent to repeating `C-t' three times.
        !           584: `C-u - 4 M-t' moves the word before point backward across four words.  `C-u
        !           585: - C-M-t' would cancel the effect of plain `C-M-t'.
        !           586: 
        !           587:   A numeric argument of zero is assigned a special meaning (because
        !           588: otherwise a command with a repeat count of zero would do nothing): to
        !           589: transpose the character (word, sexp, line) ending after point with the
        !           590: one ending after the mark.
        !           591: 
        !           592: 
        !           593: File: emacs  Node: Fixing Case, Prev: Transpose, Up: Fixit, Next: Spelling
        !           594: 
        !           595: Case Conversion
        !           596: ===============
        !           597: 
        !           598: `M-- M-l'     
        !           599:      Convert last word to lower case.  Note `Meta--' is Meta-minus.
        !           600: `M-- M-u'     
        !           601:      Convert last word to all upper case.
        !           602: `M-- M-c'     
        !           603:      Convert last word to lower case with capital initial.
        !           604: 
        !           605:   A very common error is to type words in the wrong case.  Because of this,
        !           606: the word case-conversion commands `M-l', `M-u' and `M-c' have a special
        !           607: feature when used with a negative argument: they do not move the cursor.
        !           608: As soon as you see you have mistyped the last word, you can simply
        !           609: case-convert it and go on typing.  *Note Case::.
        !           610: 
        !           611: 
        !           612: File: emacs  Node: Spelling, Prev: Fixing Case, Up: Fixit
        !           613: 
        !           614: Checking and Correcting Spelling
        !           615: ================================
        !           616: 
        !           617: `M-$'     
        !           618:      Check and correct spelling of word (`spell-word').
        !           619: `M-x spell-buffer'     
        !           620:      Check and correct spelling of each word in the buffer.
        !           621: `M-x spell-region'     
        !           622:      Check and correct spelling of each word in the region.
        !           623: `M-x spell-string'     
        !           624:      Check spelling of specified word.
        !           625: 
        !           626:   To check the spelling of the word before point, and optionally correct it
        !           627: as well, use the command `M-$' (`spell-word').  This command runs
        !           628: an inferior process containing the `spell' program to see whether the
        !           629: word is correct English.  If it is not, it asks you to edit the word (in
        !           630: the minibuffer) into a corrected spelling, and then does a `query-replace'
        !           631: to substitute the corrected spelling for the old one throughout the buffer.
        !           632: 
        !           633:   If you exit the minibuffer without altering the original spelling, it
        !           634: means you do not want to do anything to that word.  Then the `query-replace'
        !           635: is not done.
        !           636: 
        !           637:   `M-x spell-buffer' checks each word in the buffer the same way that
        !           638: `spell-word' does, doing a `query-replace' if appropriate for every
        !           639: incorrect word.
        !           640: 
        !           641:   `M-x spell-region' is similar but operates only on the region, not
        !           642: the entire buffer.
        !           643: 
        !           644:   `M-x spell-string' reads a string as an argument and checks whether
        !           645: that is a correctly spelled English word.  It prints in the echo area a
        !           646: message giving the answer.
        !           647: 
        !           648: 
        !           649: File: emacs  Node: Files, Prev: Fixit, Up: Top, Next: Buffers
        !           650: 
        !           651: File Handling
        !           652: *************
        !           653: 
        !           654:   The basic unit of stored data in Unix is the "file".  To edit a file,
        !           655: you must tell Emacs to examine the file and prepare a buffer containing a
        !           656: copy of the file's text.  This is called "visiting" the file.  Editing
        !           657: commands apply directly to text in the buffer; that is, to the copy inside
        !           658: Emacs.  Your changes appear in the file itself only when you "save" the
        !           659: buffer back into the file.
        !           660: 
        !           661:   In addition to visiting and saving files, Emacs can delete, copy, rename,
        !           662: and append to files, and operate on file directories.
        !           663: 
        !           664: * Menu:
        !           665: 
        !           666: * File Names::   How to type and edit file name arguments.
        !           667: * Visiting::     Visiting a file prepares Emacs to edit the file.
        !           668: * Saving::       Saving makes your changes permanent.
        !           669: * Reverting::    Reverting cancels all the changes not saved.
        !           670: * Auto Save::    Auto Save periodically protects against loss of data.
        !           671: * ListDir::      Listing the contents of a file directory.
        !           672: * Dired::        "Editing" a directory to delete, rename, etc.
        !           673:                   the files in it.
        !           674: * Misc File Ops:: Other things you can do on files.
        !           675: 
        !           676: 
        !           677: File: emacs  Node: File Names, Prev: Files, Up: Files, Next: Visiting
        !           678: 
        !           679: File Names
        !           680: ==========
        !           681: 
        !           682:   Most Emacs commands that operate on a file require you to specify the
        !           683: file name.  (Saving and reverting are exceptions; the buffer knows which
        !           684: file name to use for them.)  File names are specified using the minibuffer
        !           685: (*Note Minibuffer::).  "Completion" is available, to make it easier to
        !           686: specify long file names.  *Note Completion::.
        !           687: 
        !           688:   There is always a "default file name" which will be used if you type
        !           689: just RET, entering an empty argument.  Normally the default file name
        !           690: is the name of the file visited in the current buffer; this makes it easy
        !           691: to operate on that file with any of the Emacs file commands.
        !           692: 
        !           693:   Each buffer has a default directory, normally the same as the directory
        !           694: of the file visited in that buffer.  When Emacs reads a file name, if you
        !           695: do not specify a directory, the default directory is used.  If you specify
        !           696: a directory in a relative fashion, with a name that does not start with a
        !           697: slash, it is interpreted with respect to the default directory.  The
        !           698: default directory is kept in the variable `default-directory', which
        !           699: has a separate value in every buffer.
        !           700: 
        !           701:   For example, if the default file name is `/u/rms/gnu/gnu.tasks' then
        !           702: the default directory is `/u/rms/gnu/'.  If you type just `foo',
        !           703: which does not specify a directory, it is short for `/u/rms/gnu/foo'.
        !           704: `../.login' would stand for `/u/rms/.login'.  `new/foo'
        !           705: would stand for the filename `/u/rms/gnu/new/foo'.
        !           706: 
        !           707:   The command `M-x pwd' prints the current buffer's default directory,
        !           708: and the command `M-x cd' sets it (to a value read using the
        !           709: minibuffer).  A buffer's default directory changes only when the `cd'
        !           710: command is used.  A file-visiting buffer's default directory is initialized
        !           711: to the directory of the file that is visited there.  If a buffer is made
        !           712: randomly with `C-x b', its default directory is copied from that of the
        !           713: buffer that was current at the time.
        !           714: 
        !           715:   The default directory actually appears in the minibuffer when the
        !           716: minibuffer becomes active to read a file name.  This serves two purposes:
        !           717: it shows you what the default is, so that you can type a relative file name
        !           718: and know with certainty what it will mean, and it allows you to edit the
        !           719: default to specify a different directory.  This insertion of the default
        !           720: directory is inhibited if the variable `insert-default-directory' is
        !           721: set to `nil'.
        !           722: 
        !           723:   Note that it is legitimate to type an absolute file name after you enter
        !           724: the minibuffer, ignoring the presence of the default directory name as part
        !           725: of the text.  The final minibuffer contents may look invalid, but that is
        !           726: not so.  *Note Minibuffer File::.
        !           727: 
        !           728:   `$' in a file name is used to substitute environment variables.  For
        !           729: example, if you have used the shell command `setenv FOO rms/hacks' to
        !           730: set up an environment variable named `FOO', then you can use
        !           731: `/u/$FOO/test.c' or `/u/${FOO}/test.c' as an abbreviation for
        !           732: `/u/rms/hacks/test.c'.  The environment variable name consists of all
        !           733: the alphanumeric characters after the `$'; alternatively, it may be
        !           734: enclosed in braces after the `$'.  Note that the `setenv' command
        !           735: affects Emacs only if done before Emacs is started.
        !           736: 
        !           737:   To access a file with `$' in its name, type `$$'.  This pair
        !           738: is converted to a single `$' at the same time as variable substitution
        !           739: is performed for single `$'.  The Lisp function that performs the
        !           740: substitution is called `substitute-in-file-name'.  The substitution
        !           741: is performed only on filenames read as such using the minibuffer.
        !           742: 
        !           743: 
        !           744: File: emacs  Node: Visiting, Prev: File Names, Up: Files, Next: Saving
        !           745: 
        !           746: Visiting Files
        !           747: ==============
        !           748: 
        !           749: `C-x C-f'     
        !           750:      Visit a file (`find-file').
        !           751: `C-x C-v'     
        !           752:      Visit a different file instead of the one visited last
        !           753:      (`find-alternate-file').
        !           754: `C-x 4 C-f'     
        !           755:      Visit a file, in another window (`find-file-other-window').  Don't
        !           756:      change this window.
        !           757: 
        !           758:   "Visiting" a file means copying its contents into Emacs where you can
        !           759: edit them.  Emacs makes a new buffer for each file that you visit.  We say
        !           760: that the buffer is visiting the file that it was created to hold.  Emacs
        !           761: constructs the buffer name from the file name by throwing away the
        !           762: directory, keeping just the name proper.  For example, a file named
        !           763: `/usr/rms/emacs.tex' would get a buffer named `emacs.tex'.  If
        !           764: there is already a buffer with that name, a unique name is constructed by
        !           765: appending `<2>', `<3>', or so on, using the lowest number that
        !           766: makes a name that is not already in use.
        !           767: 
        !           768:   Each window's mode line shows the name of the buffer that is being displayed
        !           769: in that window, so you can always tell what buffer you are editing.
        !           770: 
        !           771:   The changes you make with Emacs are made in the Emacs buffer.  They do
        !           772: not take effect in the file that you visited, or any place permanent, until
        !           773: you "save" the buffer.  Saving the buffer means that Emacs writes the
        !           774: current contents of the buffer into its visited file.  *Note Saving::.
        !           775: 
        !           776:   If a buffer contains changes that have not been saved, the buffer is said
        !           777: to be "modified".  This is important because it implies that some
        !           778: changes will be lost if the buffer is not saved.  The mode line displays
        !           779: two stars near the left margin if the buffer is modified.
        !           780: 
        !           781:   To visit a file, use the command `C-x C-f' (`find-file').  Follow
        !           782: the command with the name of the file you wish to visit, terminated by a
        !           783: RET.
        !           784: 
        !           785:   The file name is read using the minibuffer (*Note Minibuffer::), with
        !           786: defaulting and completion in the standard manner (*Note File Names::).
        !           787: While in the minibuffer, you can abort `C-x C-f' by typing `C-g'.
        !           788: 
        !           789:   Your confirmation that `C-x C-f' has completed successfully is the
        !           790: appearance of new text on the screen and a new buffer name in the mode
        !           791: line.  If the specified file does not exist and could not be created, or
        !           792: cannot be read, then an error results.  The error message is printed in the
        !           793: echo area, and includes the file name which Emacs was trying to visit.
        !           794: 
        !           795:   If you visit a file that is already in Emacs, `C-x C-f' does not make
        !           796: another copy.  It selects the existing buffer containing that file.
        !           797: However, before doing so, it checks that the file itself has not changed
        !           798: since you visited or saved it last.  If the file has changed, a warning
        !           799: message is printed.  *Note Simultaneous Editing: Interlocking.
        !           800: 
        !           801:   What if you want to create a file?  Just visit it.  Emacs prints
        !           802: `(New File)' in the echo area, but in other respects behaves as if you
        !           803: had visited an existing empty file.  If you make any changes and save them,
        !           804: the file is created.
        !           805: 
        !           806:   If you visit a nonexistent file unintentionally (because you typed the
        !           807: wrong file name), use the `C-x C-v' (`find-alternate-file')
        !           808: command to visit the file you wanted.  `C-x C-v' is similar to `C-x
        !           809: C-f', but it kills the current buffer (after first offering to save it if
        !           810: it is modified).  `C-x C-v' is allowed even if the current buffer
        !           811: is not visiting a file.
        !           812: 
        !           813:   If the file you specify is actually a directory, Dired is called on that
        !           814: directory (*Note Dired::).  This can be inhibited by setting the variable
        !           815: `find-file-run-dired' to `nil'; then it is an error to try to
        !           816: visit a directory.
        !           817: 
        !           818:   `C-x 4 f' (`find-file-other-window') is like `C-x C-f'
        !           819: except that the buffer containing the specified file is selected in another
        !           820: window.  The window that was selected before `C-x 4 f' continues to
        !           821: show the same buffer it was already showing.  If this command is used when
        !           822: only one window is being displayed, that window is split in two, with one
        !           823: window showing the same before as before, and the other one showing the
        !           824: newly requested file.  *Note Windows::.
        !           825: 
        !           826:   There are two hook variables that allow extensions to modify the
        !           827: operation of visiting files.  Visiting a file that does not exist runs the
        !           828: functions in the list `find-file-not-found-hooks'; the value of this
        !           829: variable is expected to be a list of functions, and the functions are
        !           830: called one by one until one of them returns non-`nil'.  Any visiting
        !           831: of a file, whether extant or not, expects `find-file-hooks' to
        !           832: contain list of functions and calls them all, one by one.  In both cases
        !           833: the functions receive no arguments.  Visiting a nonexistent file
        !           834: runs the `find-file-not-found-hooks' first.
        !           835: 
        !           836: 
        !           837: File: emacs  Node: Saving, Prev: Visiting, Up: Files, Next: Reverting
        !           838: 
        !           839: Saving Files
        !           840: ============
        !           841: 
        !           842:   "Saving" a buffer in Emacs means writing its contents back into the file
        !           843: that was visited in the buffer.
        !           844: 
        !           845: `C-x C-s'     
        !           846:      Save the current buffer in its visited file (`save-buffer').
        !           847: `C-x s'     
        !           848:      Save any or all buffers in their visited files (`save-some-buffers').
        !           849: `M-~'     
        !           850:      Forget that the current buffer has been changed (`not-modified').
        !           851: `C-x C-w'     
        !           852:      Save the current buffer in a specified file, and record that file as
        !           853:      the one visited in the buffer (`write-file').
        !           854: `M-x set-visited-file-name'     
        !           855:      Change file the name under which the current buffer will be saved.
        !           856: 
        !           857:   When you wish to save the file and make your changes permanent, type
        !           858: `C-x C-s' (`save-buffer').  After saving is finished, `C-x C-s'
        !           859: prints a message such as
        !           860: 
        !           861:      Wrote /u/rms/gnu/gnu.tasks
        !           862: 
        !           863: If the selected buffer is not modified (no changes have been made in it
        !           864: since the buffer was created or last saved), saving is not really done,
        !           865: because it would have no effect.  Instead, `C-x C-s' prints a message
        !           866: in the echo area saying
        !           867: 
        !           868:      (No changes need to be written)
        !           869: 
        !           870:   The command `C-x s' (`save-some-buffers') can save any or all modified
        !           871: buffers.  First it asks, for each modified buffer, whether to save it.
        !           872: These questions should be answered with `y' or `n'.  `C-x C-c',
        !           873: the key that kills Emacs, invokes `save-some-buffers' and therefore
        !           874: asks the same questions.
        !           875: 
        !           876:   If you have changed a buffer and do not want the changes to be saved, you
        !           877: should take some action to prevent it.  Otherwise, each time you use
        !           878: `save-some-buffers' you are liable to save it by mistake.  One thing
        !           879: you can do is type `M-~' (`not-modified'), which clears out the
        !           880: indication that the buffer is modified.  If you do this, none of the save
        !           881: commands will believe that the buffer needs to be saved.  (`~' is often
        !           882: used as a mathematical symbol for `not'; thus `Meta-~' is `not', metafied.)
        !           883: You could also use `set-visited-file-name' (see below) to mark the
        !           884: buffer as visiting a different file name, one which is not in use for
        !           885: anything important.  Alternatively, you can undo all the changes made since
        !           886: the file was visited or saved, by reading the text from the file again.
        !           887: This is called "reverting".  *Note Reverting::.  You could also undo all
        !           888: the changes by repeating the undo command `C-x u' until you have undone
        !           889: all the changes; but this only works if you have not made more changes than
        !           890: the undo mechanism can remember.
        !           891: 
        !           892:   `M-x set-visited-file-name' alters the name of the file that the
        !           893: current buffer is visiting.  It reads the new file name using the
        !           894: minibuffer.  It can be used on a buffer that is not visiting a file, too.
        !           895: The buffer's name is changed to correspond to the file it is now visiting
        !           896: in the usual fashion (unless the new name is in use already for some other
        !           897: buffer; in that case, the buffer name is not changed).
        !           898: `set-visited-file-name' does not save the buffer in the newly visited
        !           899: file; it just alters the records inside Emacs so that, if you save the
        !           900: buffer, it will be saved in that file.  It also marks the buffer as
        !           901: "modified" so that `C-x C-s' will save.
        !           902: 
        !           903:   If you wish to mark the buffer as visiting a different file and save it
        !           904: right away, use `C-x C-w' (`write-file').  It is precisely
        !           905: equivalent to `set-visited-file-name' followed by `C-x C-s'.
        !           906: `C-x C-s' used on a buffer that is not visiting with a file has the
        !           907: same effect as `C-x C-w'; that is, it reads a file name, marks the
        !           908: buffer as visiting that file, and saves it there.  The default file name in
        !           909: a buffer that is not visiting a file is made by combining the buffer name
        !           910: with the buffer's default directory.
        !           911: 
        !           912:   If Emacs is about to save a file and sees that the date of the latest
        !           913: version on disk does not match what Emacs last read or wrote, Emacs
        !           914: notifies you of this fact, because it probably indicates a problem caused
        !           915: by simultaneous editing and requires your immediate attention.
        !           916: *Note Simultaneous Editing: Interlocking.
        !           917: 
        !           918:   If the variable `require-final-newline' is non-`nil', Emacs
        !           919: puts a newline at the end of any file that doesn't already end in one,
        !           920: every time a file is saved or written.
        !           921: 
        !           922:   You can implement other ways to write files, and other things to be done
        !           923: before writing them, using the hook variable `write-file-hooks'.  The
        !           924: value of this variable should be a list of Lisp functions.  When a file is
        !           925: to be written, the functions in the list are called, one by one, with no
        !           926: arguments.  If one of them returns a non-`nil' value, Emacs takes this
        !           927: to mean that the file has been written in some suitable fashion; the rest
        !           928: of the functions are not called, and normal writing is not done.
        !           929: 
        !           930: * Menu:
        !           931: 
        !           932: * Backup::       How Emacs saves the old version of your file.
        !           933: * Interlocking:: How Emacs protects against simultaneous editing
        !           934:                   of one file by two users.
        !           935: 
        !           936: 
        !           937: File: emacs  Node: Backup, Prev: Saving, Up: Saving, Next: Interlocking
        !           938: 
        !           939: Backup Files
        !           940: ------------
        !           941: 
        !           942:   Because Unix does not provide version numbers in file names, rewriting a
        !           943: file in Unix automatically destroys all record of what the file used to
        !           944: contain.  Thus, saving a file from Emacs throws away the old contents of
        !           945: the file---or it would, except that Emacs carefully copies the old contents
        !           946: to another file, called the "backup" file, before actually saving.
        !           947: (Provided the variable `make-backup-files' is non-`nil'.
        !           948: Backup files are not written if this variable is `nil').
        !           949: 
        !           950:   At your option, Emacs can keep either a single backup file or a series of
        !           951: numbered backup files for each file that you edit.
        !           952: 
        !           953:   Emacs makes a backup for a file only the first time the file is saved
        !           954: from one buffer.  No matter how many times you save a file, its backup file
        !           955: continues to contain the contents from before the file was visited.
        !           956: Normally this means that the backup file contains the contents from before
        !           957: the current editing session; however, if you kill the buffer and then visit
        !           958: the file again, a new backup file will be made by the next save.
        !           959: 
        !           960: * Menu:
        !           961: 
        !           962: * Names: Backup Names.         How backup files are named;
        !           963:                                Choosing single or numbered backup files.
        !           964: * Deletion: Backup Deletion.   Emacs deletes excess numbered backups.
        !           965: * Copying: Backup Copying.     Backups can be made by copying or renaming.
        !           966: 
        !           967: 
        !           968: File: emacs  Node: Backup Names, Prev: Backup, Up: Backup, Next: Backup Deletion
        !           969: 
        !           970: Single or Numbered Backups
        !           971: ..........................
        !           972: 
        !           973:   If you choose to have a single backup file (this is the default),
        !           974: the backup file's name is constructed by appending `~' to the
        !           975: file name being edited; thus, the backup file for `eval.c' would
        !           976: be `eval.c~'.
        !           977: 
        !           978:   If you choose to have a series of numbered backup files, backup file
        !           979: names are made by appending `.~', the number, and another `~' to
        !           980: the original file name.  Thus, the backup files of `eval.c' would be
        !           981: called `eval.c.~1~', `eval.c.~2~', and so on, through names
        !           982: like `eval.c.~259~' and beyond.
        !           983: 
        !           984:   If protection stops you from writing backup files under the usual names,
        !           985: the backup file is written as `%backup%~' in your home directory.
        !           986: Only one such file can exist, so only the most recently made such backup is
        !           987: available.
        !           988: 
        !           989:   The choice of single backup or numbered backups is controlled by the
        !           990: variable `version-control'.  Its possible values are
        !           991: 
        !           992: `t'     
        !           993:      Make numbered backups.
        !           994: `nil'     
        !           995:      Make numbered backups for files that have numbered backups already.
        !           996:      Otherwise, make single backups.
        !           997: `never'     
        !           998:      Do not in any case make numbered backups; always make single backups.
        !           999: 
        !          1000: `version-control' may be set locally in an individual buffer to
        !          1001: control the making of backups for that buffer's file.  For example,
        !          1002: Rmail mode locally sets `version-control' to `never' to make sure
        !          1003: that there is only one backup for an Rmail file.  *Note Locals::.
        !          1004: 
        !          1005: 
        !          1006: File: emacs  Node: Backup Deletion, Prev: Backup Names, Up: Backup, Next: Backup Copying
        !          1007: 
        !          1008: Automatic Deletion of Backups
        !          1009: .............................
        !          1010: 
        !          1011:   To prevent unlimited consumption of disk space, Emacs can delete numbered
        !          1012: backup versions automatically.  Generally Emacs keeps the first few backups
        !          1013: and the latest few backups, deleting any in between.  This happens every
        !          1014: time a new backup is made.  The two variables that control the deletion are
        !          1015: `kept-old-versions' and `kept-new-versions'.  Their values are, respectively
        !          1016: the number of oldest (lowest-numbered) backups to keep and the number of
        !          1017: newest (highest-numbered) ones to keep, each time a new backup is made.
        !          1018: Recall that these values are used just after a new backup version is made;
        !          1019: that newly made backup is included in the count in `kept-new-versions'.
        !          1020: By default, both variables are 2.
        !          1021: 
        !          1022:   If `trim-versions-without-asking' is non-`nil', the excess
        !          1023: middle versions are deleted without a murmur.  If it is `nil', the
        !          1024: default, then you are asked whether the excess middle versions should
        !          1025: really be deleted.
        !          1026: 
        !          1027:   Dired's `.' (Period) command can also be used to delete old versions.
        !          1028: *Note Dired::.
        !          1029: 
        !          1030: 
        !          1031: File: emacs  Node: Backup Copying, Prev: Backup Deletion, Up: Backup
        !          1032: 
        !          1033: Copying vs. Renaming
        !          1034: ....................
        !          1035: 
        !          1036:   Backup files can be made by copying the old file or by renaming it.  This
        !          1037: makes a difference when the old file has multiple names.  If the old file
        !          1038: is renamed into the backup file, then the alternate names become names for
        !          1039: the backup file.  If the old file is copied instead, then the alternate
        !          1040: names remain names for the file that you are editing, and the contents
        !          1041: accessed by those names will be the new contents.
        !          1042: 
        !          1043:   The method of making a backup file may also affect the file's owner
        !          1044: and group.  If copying is used, these do not change.  If renaming is used,
        !          1045: you become the file's owner, and the file's group becomes the default
        !          1046: (different operating systems have different defaults for the group).
        !          1047: 
        !          1048:   Having the owner change is usually a good idea, because then the owner
        !          1049: always shows who last edited the file.  Also, the owners of the backups
        !          1050: show who produced those versions.  Occasionally there is a file whose
        !          1051: owner should not change; it is a good idea for such files to contain
        !          1052: local variable lists to set `backup-by-copying-when-mismatch' for
        !          1053: them alone (*Note File Variables::).
        !          1054: 
        !          1055:   The choice of renaming or copying is controlled by three variables.
        !          1056: Normally, renaming is done.  If the variable `backup-by-copying' is
        !          1057: non-`nil', copying is used.  Otherwise, if the variable
        !          1058: `backup-by-copying-when-linked' is non-`nil', then copying is done for
        !          1059: files that have multiple names, but renaming may still done when the file
        !          1060: being edited has only one name.  If the variable
        !          1061: `backup-by-copying-when-mismatch' is non-`nil', then copying is done if
        !          1062: renaming would cause the file's owner or group to change.
        !          1063: 
        !          1064: 
        !          1065: File: emacs  Node: Interlocking, Prev: Backup, Up: Saving
        !          1066: 
        !          1067: Protection against Simultaneous Editing
        !          1068: ---------------------------------------
        !          1069: 
        !          1070:   Simultaneous editing occurs when two users visit the same file, both make
        !          1071: changes, and then both save them.  If nobody were informed that this was
        !          1072: happening, whichever user saved first would later find that his changes
        !          1073: were lost.  On some systems, Emacs notices immediately when the second user
        !          1074: starts to change the file, and issues an immediate warning.  When this is
        !          1075: not possible, or if the second user has gone on to change the file despite
        !          1076: the warning, Emacs checks later when the file is saved, and issues a second
        !          1077: warning when a user is about to overwrite a file containing another user's
        !          1078: changes.  If the editing user takes the proper corrective action at this
        !          1079: point, he can prevent actual loss of work.
        !          1080: 
        !          1081:   When you make the first modification in an Emacs buffer that is visiting
        !          1082: a file, Emacs records that you have locked the file.  (It does this by
        !          1083: writing another file in a directory reserved for this purpose.)  The lock
        !          1084: is removed when you save the changes.  The idea is that the file is locked
        !          1085: whenever the buffer is modified.  If you begin to modify the buffer while
        !          1086: the visited file is locked by someone else, this constitutes a collision,
        !          1087: and Emacs asks you what to do.  It does this by calling the Lisp function
        !          1088: `ask-user-about-lock', which you can redefine for the sake of
        !          1089: customization.  The standard definition of this function asks you a
        !          1090: question and accepts three possible answers:
        !          1091: 
        !          1092: `s'     
        !          1093:      Steal the lock.  Whoever was already changing the file loses the lock,
        !          1094:      and you gain the lock.
        !          1095: `p'     
        !          1096:      Proceed.  Go ahead and edit the file despite its being locked by someone else.
        !          1097: `q'     
        !          1098:      Quit.  This causes an error (`file-locked') and the modification you
        !          1099:      were trying to make in the buffer does not actually take place.
        !          1100: 
        !          1101:   Note that locking works on the basis of a file name; if a file has
        !          1102: multiple names, Emacs does not realize that the two names are the same file
        !          1103: and cannot prevent two user from editing it simultaneously under different
        !          1104: names.  However, basing locking on names means that Emacs can interlock the
        !          1105: editing of new files that will not really exist until they are saved.
        !          1106: 
        !          1107:   Some systems are not configured to allow Emacs to make locks.  On
        !          1108: these systems, Emacs cannot detect trouble in advance, but it still can
        !          1109: detect it in time to prevent you from overwriting someone else's changes.
        !          1110: 
        !          1111:   Every time Emacs saves a buffer, it first checks the last-modification
        !          1112: date of the existing file on disk to see that it has not changed since the
        !          1113: file was last visited or saved.  If the date does not match, it implies
        !          1114: that changes were made in the file in some other way, and these changes are
        !          1115: about to be lost if Emacs actually does save.  To prevent this, Emacs
        !          1116: prints a warning message and asks for confirmation before saving.
        !          1117: Occasionally you will know why the file was changed and know that it does
        !          1118: not matter; then you can answer `yes' and proceed.  Otherwise, you should
        !          1119: cancel the save with `C-g' and investigate the situation.
        !          1120: 
        !          1121:   The first thing you should do when notified that simultaneous editing has
        !          1122: already taken place is to list the directory with `C-u C-x C-d' (*Note
        !          1123: Directory Listing: ListDir.).  This will show the file's current author.
        !          1124: You should attempt to contact him to warn him not to continue editing.
        !          1125: Often the next step is to save the contents of your Emacs buffer under a
        !          1126: different name, and use `diff' to compare the two files.
        !          1127: 
        !          1128:   Simultaneous editing checks are also made when you visit with `C-x
        !          1129: C-f' a file that is already visited and when you start to modify a file.
        !          1130: This is not strictly necessary, but it can cause you to find out about the
        !          1131: problem earlier, when perhaps correction takes less work.
        !          1132: 
        !          1133: 

unix.superglobalmegacorp.com

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