Annotation of GNUtools/emacs/info/emacs-4, revision 1.1

1.1     ! root        1: This is Info file ../info/emacs, produced by Makeinfo-1.49 from the
        !             2: input file emacs.texi.
        !             3: 
        !             4:    This file documents the GNU Emacs editor.
        !             5: 
        !             6:    Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman.
        !             7: 
        !             8:    Permission is granted to make and distribute verbatim copies of this
        !             9: manual provided the copyright notice and this permission notice are
        !            10: preserved on all copies.
        !            11: 
        !            12:    Permission is granted to copy and distribute modified versions of
        !            13: this manual under the conditions for verbatim copying, provided also
        !            14: that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
        !            15: General Public License" are included exactly as in the original, and
        !            16: provided that the entire resulting derived work is distributed under the
        !            17: terms of a permission notice identical to this one.
        !            18: 
        !            19:    Permission is granted to copy and distribute translations of this
        !            20: manual into another language, under the above conditions for modified
        !            21: versions, except that the sections entitled "The GNU Manifesto",
        !            22: "Distribution" and "GNU General Public License" may be included in a
        !            23: translation approved by the author instead of in the original English.
        !            24: 
        !            25: 
        !            26: File: emacs,  Node: Horizontal Scrolling,  Prev: Scrolling,  Up: Display
        !            27: 
        !            28: Horizontal Scrolling
        !            29: ====================
        !            30: 
        !            31: `C-x <'
        !            32:      Scroll text in current window to the left (`scroll-left').
        !            33: 
        !            34: `C-x >'
        !            35:      Scroll to the right (`scroll-right').
        !            36: 
        !            37:    The text in a window can also be scrolled horizontally.  This means
        !            38: that each line of text is shifted sideways in the window, and one or
        !            39: more characters at the beginning of each line are not displayed at all.
        !            40:  When a window has been scrolled horizontally in this way, text lines
        !            41: are truncated rather than continued (*note Continuation Lines::.), with
        !            42: a `$' appearing in the first column when there is text truncated to the
        !            43: left, and in the last column when there is text truncated to the right.
        !            44: 
        !            45:    The command `C-x <' (`scroll-left') scrolls the selected window to
        !            46: the left by N columns with argument N.  With no argument, it scrolls by
        !            47: almost the full width of the window (two columns less, to be precise).
        !            48: `C-x >' (`scroll-right') scrolls similarly to the right. The window
        !            49: cannot be scrolled any farther to the right once it is displaying
        !            50: normally (with each line starting at the window's left margin);
        !            51: attempting to do so has no effect.
        !            52: 
        !            53: 
        !            54: File: emacs,  Node: Selective Display,  Next: Display Vars,  Prev: Display,  Up: Display
        !            55: 
        !            56: Selective Display
        !            57: =================
        !            58: 
        !            59:    Emacs has the ability to hide lines indented more than a certain
        !            60: number of columns (you specify how many columns).  You can use this to
        !            61: get an overview of a part of a program.
        !            62: 
        !            63:    To hide lines, type `C-x $' (`set-selective-display') with a numeric
        !            64: argument N.  (*Note Arguments::, for how to give the argument.)  Then
        !            65: lines with at least N columns of indentation disappear from the screen.
        !            66:  The only indication of their presence is that three dots (`...')
        !            67: appear at the end of each visible line that is followed by one or more
        !            68: invisible ones.
        !            69: 
        !            70:    The invisible lines are still present in the buffer, and most editing
        !            71: commands see them as usual, so it is very easy to put point in the
        !            72: middle of invisible text.  When this happens, the cursor appears at the
        !            73: end of the previous line, after the three dots.  If point is at the end
        !            74: of the visible line, before the newline that ends it, the cursor
        !            75: appears before the three dots.
        !            76: 
        !            77:    The commands `C-n' and `C-p' move across the invisible lines as if
        !            78: they were not there.
        !            79: 
        !            80:    To make everything visible again, type `C-x $' with no argument.
        !            81: 
        !            82: 
        !            83: File: emacs,  Node: Display Vars,  Prev: Selective Display,  Up: Display
        !            84: 
        !            85: Variables Controlling Display
        !            86: =============================
        !            87: 
        !            88:    This section contains information for customization only.  Beginning
        !            89: users should skip it.
        !            90: 
        !            91:    The variable `mode-line-inverse-video' controls whether the mode
        !            92: line is displayed in inverse video (assuming the terminal supports it);
        !            93: `nil' means don't do so.  *Note Mode Line::.
        !            94: 
        !            95:    If the variable `inverse-video' is non-`nil', Emacs attempts to
        !            96: invert all the lines of the display from what they normally are.
        !            97: 
        !            98:    If the variable `visible-bell' is non-`nil', Emacs attempts to make
        !            99: the whole screen blink when it would normally make an audible bell
        !           100: sound.  This variable has no effect if your terminal does not have a way
        !           101: to make the screen blink.
        !           102: 
        !           103:    When you reenter Emacs after suspending, Emacs normally clears the
        !           104: screen and redraws the entire display.  On some terminals with more
        !           105: than one page of memory, it is possible to arrange the termcap entry so
        !           106: that the `ti' and `te' strings (output to the terminal when Emacs is
        !           107: entered and exited, respectively) switch between pages of memory so as
        !           108: to use one page for Emacs and another page for other output.  Then you
        !           109: might want to set the variable `no-redraw-on-reenter' non-`nil' so that
        !           110: Emacs will assume, when resumed, that the screen page it is using still
        !           111: contains what Emacs last wrote there.
        !           112: 
        !           113:    The variable `echo-keystrokes' controls the echoing of
        !           114: multi-character keys; its value is the number of seconds of pause
        !           115: required to cause echoing to start, or zero meaning don't echo at all. 
        !           116: *Note Echo Area::.
        !           117: 
        !           118:    If the variable `ctl-arrow' is `nil', control characters in the
        !           119: buffer are displayed with octal escape sequences, all except newline and
        !           120: tab.  Altering the value of `ctl-arrow' makes it local to the current
        !           121: buffer; until that time, the default value is in effect.  The default is
        !           122: initially `t'.  *Note Locals::.
        !           123: 
        !           124:    Normally, a tab character in the buffer is displayed as whitespace
        !           125: which extends to the next display tab stop position, and display tab
        !           126: stops come at intervals equal to eight spaces.  The number of spaces
        !           127: per tab is controlled by the variable `tab-width', which is made local
        !           128: by changing it, just like `ctl-arrow'.  Note that how the tab character
        !           129: in the buffer is displayed has nothing to do with the definition of TAB
        !           130: as a command.
        !           131: 
        !           132:    If you set the variable `selective-display-ellipses' to `nil', the
        !           133: three dots do not appear at the end of a line that precedes invisible
        !           134: lines.  Then there is no visible indication of the invisible lines.
        !           135: This variable too becomes local automatically when set.
        !           136: 
        !           137: 
        !           138: File: emacs,  Node: Search,  Next: Fixit,  Prev: Display,  Up: Top
        !           139: 
        !           140: Searching and Replacement
        !           141: *************************
        !           142: 
        !           143:    Like other editors, Emacs has commands for searching for occurrences
        !           144: of a string.  The principal search command is unusual in that it is
        !           145: "incremental"; it begins to search before you have finished typing the
        !           146: search string.  There are also nonincremental search commands more like
        !           147: those of other editors.
        !           148: 
        !           149:    Besides the usual `replace-string' command that finds all
        !           150: occurrences of one string and replaces them with another, Emacs has a
        !           151: fancy replacement command called `query-replace' which asks
        !           152: interactively which occurrences to replace.
        !           153: 
        !           154: * Menu:
        !           155: 
        !           156: * Incremental Search::     Search happens as you type the string.
        !           157: * Nonincremental Search::  Specify entire string and then search.
        !           158: * Word Search::            Search for sequence of words.
        !           159: * Regexp Search::          Search for match for a regexp.
        !           160: * Regexps::                Syntax of regular expressions.
        !           161: * Search Case::            To ignore case while searching, or not.
        !           162: * Replace::                Search, and replace some or all matches.
        !           163: * Other Repeating Search:: Operating on all matches for some regexp.
        !           164: 
        !           165: 
        !           166: File: emacs,  Node: Incremental Search,  Next: Nonincremental Search,  Prev: Search,  Up: Search
        !           167: 
        !           168: Incremental Search
        !           169: ==================
        !           170: 
        !           171:    An incremental search begins searching as soon as you type the first
        !           172: character of the search string.  As you type in the search string, Emacs
        !           173: shows you where the string (as you have typed it so far) would be found.
        !           174: When you have typed enough characters to identify the place you want,
        !           175: you can stop.  Depending on what you will do next, you may or may not
        !           176: need to terminate the search explicitly with an ESC first.
        !           177: 
        !           178: `C-s'
        !           179:      Incremental search forward (`isearch-forward').
        !           180: 
        !           181: `C-r'
        !           182:      Incremental search backward (`isearch-backward').
        !           183: 
        !           184:    `C-s' starts an incremental search.  `C-s' reads characters from the
        !           185: keyboard and positions the cursor at the first occurrence of the
        !           186: characters that you have typed.  If you type `C-s' and then `F', the
        !           187: cursor moves right after the first `F'.  Type an `O', and see the
        !           188: cursor move to after the first `FO'.  After another `O', the cursor is
        !           189: after the first `FOO' after the place where you started the search. 
        !           190: Meanwhile, the search string `FOO' has been echoed in the echo area.
        !           191: 
        !           192:    The echo area display ends with three dots when actual searching is
        !           193: going on.  When search is waiting for more input, the three dots are
        !           194: removed. (On slow terminals, the three dots are not displayed.)
        !           195: 
        !           196:    If you make a mistake in typing the search string, you can erase
        !           197: characters with DEL.  Each DEL cancels the last character of search
        !           198: string.  This does not happen until Emacs is ready to read another
        !           199: input character; first it must either find, or fail to find, the
        !           200: character you want to erase.  If you do not want to wait for this to
        !           201: happen, use `C-g' as described below.
        !           202: 
        !           203:    When you are satisfied with the place you have reached, you can type
        !           204: ESC, which stops searching, leaving the cursor where the search brought
        !           205: it.  Also, any command not specially meaningful in searches stops the
        !           206: searching and is then executed.  Thus, typing `C-a' would exit the
        !           207: search and then move to the beginning of the line.  ESC is necessary
        !           208: only if the next command you want to type is a printing character, DEL,
        !           209: ESC, or another control character that is special within searches
        !           210: (`C-q', `C-w', `C-r', `C-s' or `C-y').
        !           211: 
        !           212:    Sometimes you search for `FOO' and find it, but not the one you
        !           213: expected to find.  There was a second `FOO' that you forgot about,
        !           214: before the one you were looking for.  In this event, type another `C-s'
        !           215: to move to the next occurrence of the search string.  This can be done
        !           216: any number of times.  If you overshoot, you can cancel some `C-s'
        !           217: characters with DEL.
        !           218: 
        !           219:    After you exit a search, you can search for the same string again by
        !           220: typing just `C-s C-s': the first `C-s' is the key that invokes
        !           221: incremental search, and the second `C-s' means "search again".
        !           222: 
        !           223:    If your string is not found at all, the echo area says `Failing
        !           224: I-Search'.  The cursor is after the place where Emacs found as much of
        !           225: your string as it could.  Thus, if you search for `FOOT', and there is
        !           226: no `FOOT', you might see the cursor after the `FOO' in `FOOL'. At this
        !           227: point there are several things you can do.  If your string was
        !           228: mistyped, you can rub some of it out and correct it.  If you like the
        !           229: place you have found, you can type ESC or some other Emacs command to
        !           230: "accept what the search offered".  Or you can type `C-g', which removes
        !           231: from the search string the characters that could not be found (the `T'
        !           232: in `FOOT'), leaving those that were found (the `FOO' in `FOOT').  A
        !           233: second `C-g' at that point cancels the search entirely, returning point
        !           234: to where it was when the search started.
        !           235: 
        !           236:    If a search is failing and you ask to repeat it by typing another
        !           237: `C-s', it starts again from the beginning of the buffer.  Repeating a
        !           238: failing reverse search with `C-r' starts again from the end.  This is
        !           239: called "wrapping around".  `Wrapped' appears in the search prompt once
        !           240: this has happened.
        !           241: 
        !           242:    The `C-g' "quit" character does special things during searches; just
        !           243: what it does depends on the status of the search.  If the search has
        !           244: found what you specified and is waiting for input, `C-g' cancels the
        !           245: entire search.  The cursor moves back to where you started the search. 
        !           246: If `C-g' is typed when there are characters in the search string that
        !           247: have not been found--because Emacs is still searching for them, or
        !           248: because it has failed to find them--then the search string characters
        !           249: which have not been found are discarded from the search string.  With
        !           250: them gone, the search is now successful and waiting for more input, so
        !           251: a second `C-g' will cancel the entire search.
        !           252: 
        !           253:    To search for a control character such as `C-s' or DEL or ESC, you
        !           254: must quote it by typing `C-q' first.  This function of `C-q' is
        !           255: analogous to its meaning as an Emacs command: it causes the following
        !           256: character to be treated the way a graphic character would normally be
        !           257: treated in the same context.  You can also specify a quoted character
        !           258: in octal while searching, just as you can for insertion. *Note Basic::.
        !           259: 
        !           260:    You can change to searching backwards with `C-r'.  If a search fails
        !           261: because the place you started was too late in the file, you should do
        !           262: this. Repeated `C-r' keeps looking for more occurrences backwards.  A
        !           263: `C-s' starts going forwards again.  `C-r' in a search can be cancelled
        !           264: with DEL.
        !           265: 
        !           266:    If you know initially that you want to search backwards, you can use
        !           267: `C-r' instead of `C-s' to start the search, because `C-r' is also a key
        !           268: running a command (`isearch-backward') to search backward.
        !           269: 
        !           270:    The characters `C-y' and `C-w' can be used in incremental search to
        !           271: grab text from the buffer into the search string.  This makes it
        !           272: convenient to search for another occurrence of text at point.  `C-w'
        !           273: copies the word after point as part of the search string, advancing
        !           274: point over that word.  Another `C-s' to repeat the search will then
        !           275: search for a string including that word.  `C-y' is similar to `C-w' but
        !           276: copies all the rest of the current line into the search string.
        !           277: 
        !           278:    All the characters special in incremental search can be changed by
        !           279: setting the following variables:
        !           280: 
        !           281: `search-delete-char'
        !           282:      Character to delete from incremental search string (normally DEL).
        !           283: 
        !           284: `search-exit-char'
        !           285:      Character to exit incremental search (normally ESC).
        !           286: 
        !           287: `search-quote-char'
        !           288:      Character to quote special characters for incremental search
        !           289:      (normally `C-q').
        !           290: 
        !           291: `search-repeat-char'
        !           292:      Character to repeat incremental search forwards (normally `C-s').
        !           293: 
        !           294: `search-reverse-char'
        !           295:      Character to repeat incremental search backwards (normally `C-r').
        !           296: 
        !           297: `search-yank-line-char'
        !           298:      Character to pull rest of line from buffer into search string
        !           299:      (normally `C-y').
        !           300: 
        !           301: `search-yank-word-char'
        !           302:      Character to pull next word from buffer into search string
        !           303:      (normally `C-w').
        !           304: 
        !           305: Slow Terminal Incremental Search
        !           306: --------------------------------
        !           307: 
        !           308:    Incremental search on a slow terminal uses a modified style of
        !           309: display that is designed to take less time.  Instead of redisplaying
        !           310: the buffer at each place the search gets to, it creates a new
        !           311: single-line window and uses that to display the line that the search
        !           312: has found.  The single-line window comes into play as soon as point
        !           313: gets outside of the text that is already on the screen.
        !           314: 
        !           315:    When the search is terminated, the single-line window is removed. 
        !           316: Only at this time is the window in which the search was done
        !           317: redisplayed to show its new value of point.
        !           318: 
        !           319:    The three dots at the end of the search string, normally used to
        !           320: indicate that searching is going on, are not displayed in slow style
        !           321: display.
        !           322: 
        !           323:    The slow terminal style of display is used when the terminal baud
        !           324: rate is less than or equal to the value of the variable
        !           325: `search-slow-speed', initially 1200.
        !           326: 
        !           327:    The number of lines to use in slow terminal search display is
        !           328: controlled by the variable `search-slow-window-lines'.  1 is its normal
        !           329: value.
        !           330: 
        !           331: 
        !           332: File: emacs,  Node: Nonincremental Search,  Next: Word Search,  Prev: Incremental Search,  Up: Search
        !           333: 
        !           334: Nonincremental Search
        !           335: =====================
        !           336: 
        !           337:    Emacs also has conventional nonincremental search commands, which
        !           338: require you to type the entire search string before searching begins.
        !           339: 
        !           340: `C-s ESC STRING RET'
        !           341:      Search for STRING.
        !           342: 
        !           343: `C-r ESC STRING RET'
        !           344:      Search backward for STRING.
        !           345: 
        !           346:    To do a nonincremental search, first type `C-s ESC'.  This enters
        !           347: the minibuffer to read the search string; terminate the string with
        !           348: RET, and then the search is done.  If the string is not found the
        !           349: search command gets an error.
        !           350: 
        !           351:    The way `C-s ESC' works is that the `C-s' invokes incremental
        !           352: search, which is specially programmed to invoke nonincremental search
        !           353: if the argument you give it is empty.  (Such an empty argument would
        !           354: otherwise be useless.)  `C-r ESC' also works this way.
        !           355: 
        !           356:    Forward and backward nonincremental searches are implemented by the
        !           357: commands `search-forward' and `search-backward'.  These commands may be
        !           358: bound to keys in the usual manner.  The reason that incremental search
        !           359: is programmed to invoke them as well is that `C-s ESC' is the
        !           360: traditional sequence of characters used in Emacs to invoke
        !           361: nonincremental search.
        !           362: 
        !           363:    However, nonincremental searches performed using `C-s ESC' do not
        !           364: call `search-forward' right away.  The first thing done is to see if
        !           365: the next character is `C-w', which requests a word search. *Note Word
        !           366: Search::.
        !           367: 
        !           368: 
        !           369: File: emacs,  Node: Word Search,  Next: Regexp Search,  Prev: Nonincremental Search,  Up: Search
        !           370: 
        !           371: Word Search
        !           372: ===========
        !           373: 
        !           374:    Word search searches for a sequence of words without regard to how
        !           375: the words are separated.  More precisely, you type a string of many
        !           376: words, using single spaces to separate them, and the string can be
        !           377: found even if there are multiple spaces, newlines or other punctuation
        !           378: between the words.
        !           379: 
        !           380:    Word search is useful in editing documents formatted by text
        !           381: formatters. If you edit while looking at the printed, formatted
        !           382: version, you can't tell where the line breaks are in the source file. 
        !           383: With word search, you can search without having to know them.
        !           384: 
        !           385: `C-s ESC C-w WORDS RET'
        !           386:      Search for WORDS, ignoring differences in punctuation.
        !           387: 
        !           388: `C-r ESC C-w WORDS RET'
        !           389:      Search backward for WORDS, ignoring differences in punctuation.
        !           390: 
        !           391:    Word search is a special case of nonincremental search and is invoked
        !           392: with `C-s ESC C-w'.  This is followed by the search string, which must
        !           393: always be terminated with RET.  Being nonincremental, this search does
        !           394: not start until the argument is terminated.  It works by constructing a
        !           395: regular expression and searching for that.  *Note Regexp Search::.
        !           396: 
        !           397:    A backward word search can be done by `C-r ESC C-w'.
        !           398: 
        !           399:    Forward and backward word searches are implemented by the commands
        !           400: `word-search-forward' and `word-search-backward'.  These commands may
        !           401: be bound to keys in the usual manner.  The reason that incremental
        !           402: search is programmed to invoke them as well is that `C-s ESC C-w' is
        !           403: the traditional Emacs sequence of keys for word search.
        !           404: 
        !           405: 
        !           406: File: emacs,  Node: Regexp Search,  Next: Regexps,  Prev: Word Search,  Up: Search
        !           407: 
        !           408: Regular Expression Search
        !           409: =========================
        !           410: 
        !           411:    A "regular expression" ("regexp", for short) is a pattern that
        !           412: denotes a set of strings, possibly an infinite set.  Searching for
        !           413: matches for a regexp is a very powerful operation that editors on Unix
        !           414: systems have traditionally offered.  In GNU Emacs, you can search for
        !           415: the next match for a regexp either incrementally or not.
        !           416: 
        !           417:    Incremental search for a regexp is done by typing `C-M-s'
        !           418: (`isearch-forward-regexp').  This command reads a search string
        !           419: incrementally just like `C-s', but it treats the search string as a
        !           420: regexp rather than looking for an exact match against the text in the
        !           421: buffer.  Each time you add text to the search string, you make the
        !           422: regexp longer, and the new regexp is searched for.  A reverse regexp
        !           423: search command, `isearch-backward-regexp', also exists but no key runs
        !           424: it.
        !           425: 
        !           426:    All of the control characters that do special things within an
        !           427: ordinary incremental search have the same function in incremental
        !           428: regexp search. Typing `C-s' or `C-r' immediately after starting the
        !           429: search retrieves the last incremental search regexp used; that is to
        !           430: say, incremental regexp and non-regexp searches have independent
        !           431: defaults.
        !           432: 
        !           433:    Note that adding characters to the regexp in an incremental regexp
        !           434: search does not make the cursor move back and start again.  Perhaps it
        !           435: ought to; I am not sure.  As it stands, if you have searched for `foo'
        !           436: and you add `\|bar', the search will not check for a `bar' in the
        !           437: buffer before the `foo'.
        !           438: 
        !           439:    Nonincremental search for a regexp is done by the functions
        !           440: `re-search-forward' and `re-search-backward'.  You can invoke these
        !           441: with `M-x', or bind them to keys.  Also, you can call
        !           442: `re-search-forward' by way of incremental regexp search with `C-M-s
        !           443: ESC'.
        !           444: 
        !           445: 
        !           446: File: emacs,  Node: Regexps,  Next: Search Case,  Prev: Regexp Search,  Up: Search
        !           447: 
        !           448: Syntax of Regular Expressions
        !           449: =============================
        !           450: 
        !           451:    Regular expressions have a syntax in which a few characters are
        !           452: special constructs and the rest are "ordinary".  An ordinary character
        !           453: is a simple regular expression which matches that character and nothing
        !           454: else. The special characters are `$', `^', `.', `*', `+', `?', `[', `]'
        !           455: and `\'; no new special characters will be defined.  Any other
        !           456: character appearing in a regular expression is ordinary, unless a `\'
        !           457: precedes it.
        !           458: 
        !           459:    For example, `f' is not a special character, so it is ordinary, and
        !           460: therefore `f' is a regular expression that matches the string `f' and
        !           461: no other string.  (It does not match the string `ff'.)  Likewise, `o'
        !           462: is a regular expression that matches only `o'.
        !           463: 
        !           464:    Any two regular expressions A and B can be concatenated.  The result
        !           465: is a regular expression which matches a string if A matches some amount
        !           466: of the beginning of that string and B matches the rest of the string.
        !           467: 
        !           468:    As a simple example, we can concatenate the regular expressions `f'
        !           469: and `o' to get the regular expression `fo', which matches only the
        !           470: string `fo'.  Still trivial.  To do something nontrivial, you need to
        !           471: use one of the special characters.  Here is a list of them.
        !           472: 
        !           473: `. (Period)'
        !           474:      is a special character that matches any single character except a
        !           475:      newline. Using concatenation, we can make regular expressions like
        !           476:      `a.b' which matches any three-character string which begins with
        !           477:      `a' and ends with `b'.
        !           478: 
        !           479: `*'
        !           480:      is not a construct by itself; it is a suffix, which means the
        !           481:      preceding regular expression is to be repeated as many times as
        !           482:      possible.  In `fo*', the `*' applies to the `o', so `fo*' matches
        !           483:      one `f' followed by any number of `o's. The case of zero `o's is
        !           484:      allowed: `fo*' does match `f'.
        !           485: 
        !           486:      `*' always applies to the smallest possible preceding expression. 
        !           487:      Thus, `fo*' has a repeating `o', not a repeating `fo'.
        !           488: 
        !           489:      The matcher processes a `*' construct by matching, immediately, as
        !           490:      many repetitions as can be found.  Then it continues with the rest
        !           491:      of the pattern.  If that fails, backtracking occurs, discarding
        !           492:      some of the matches of the `*'-modified construct in case that
        !           493:      makes it possible to match the rest of the pattern.  For example,
        !           494:      matching `ca*ar' against the string `caaar', the `a*' first tries
        !           495:      to match all three `a's; but the rest of the pattern is `ar' and
        !           496:      there is only `r' left to match, so this try fails. The next
        !           497:      alternative is for `a*' to match only two `a's. With this choice,
        !           498:      the rest of the regexp matches successfully.
        !           499: 
        !           500: `+'
        !           501:      Is a suffix character similar to `*' except that it requires that
        !           502:      the preceding expression be matched at least once.  So, for
        !           503:      example, `ca+r' will match the strings `car' and `caaaar' but not
        !           504:      the string `cr', whereas `ca*r' would match all three strings.
        !           505: 
        !           506: `?'
        !           507:      Is a suffix character similar to `*' except that it can match the
        !           508:      preceding expression either once or not at all.  For example,
        !           509:      `ca?r' will match `car' or `cr'; nothing else.
        !           510: 
        !           511: `[ ... ]'
        !           512:      `[' begins a "character set", which is terminated by a `]'.  In
        !           513:      the simplest case, the characters between the two form the set. 
        !           514:      Thus, `[ad]' matches either one `a' or one `d', and `[ad]*'
        !           515:      matches any string composed of just `a's and `d's (including the
        !           516:      empty string), from which it follows that `c[ad]*r' matches `cr',
        !           517:      `car', `cdr', `caddaar', etc.
        !           518: 
        !           519:      Character ranges can also be included in a character set, by
        !           520:      writing two characters with a `-' between them.  Thus, `[a-z]'
        !           521:      matches any lower-case letter.  Ranges may be intermixed freely
        !           522:      with individual characters, as in `[a-z$%.]', which matches any
        !           523:      lower case letter or `$', `%' or period.
        !           524: 
        !           525:      Note that the usual special characters are not special any more
        !           526:      inside a character set.  A completely different set of special
        !           527:      characters exists inside character sets: `]', `-' and `^'.
        !           528: 
        !           529:      To include a `]' in a character set, you must make it the first
        !           530:      character.  For example, `[]a]' matches `]' or `a'.  To include a
        !           531:      `-', write `---', which is a range containing only `-'.  To
        !           532:      include `^', make it other than the first character in the set.
        !           533: 
        !           534: `[^ ... ]'
        !           535:      `[^' begins a "complement character set", which matches any
        !           536:      character except the ones specified.  Thus, `[^a-z0-9A-Z]' matches
        !           537:      all characters except letters and digits.
        !           538: 
        !           539:      `^' is not special in a character set unless it is the first
        !           540:      character.  The character following the `^' is treated as if it
        !           541:      were first (`-' and `]' are not special there).
        !           542: 
        !           543:      Note that a complement character set can match a newline, unless
        !           544:      newline is mentioned as one of the characters not to match.
        !           545: 
        !           546: `^'
        !           547:      is a special character that matches the empty string, but only if
        !           548:      at the beginning of a line in the text being matched.  Otherwise
        !           549:      it fails to match anything.  Thus, `^foo' matches a `foo' which
        !           550:      occurs at the beginning of a line.
        !           551: 
        !           552: `$'
        !           553:      is similar to `^' but matches only at the end of a line.  Thus,
        !           554:      `xx*$' matches a string of one `x' or more at the end of a line.
        !           555: 
        !           556: `\'
        !           557:      has two functions: it quotes the special characters (including
        !           558:      `\'), and it introduces additional special constructs.
        !           559: 
        !           560:      Because `\' quotes special characters, `\$' is a regular
        !           561:      expression which matches only `$', and `\[' is a regular
        !           562:      expression which matches only `[', and so on.
        !           563: 
        !           564:    Note: for historical compatibility, special characters are treated as
        !           565: ordinary ones if they are in contexts where their special meanings make
        !           566: no sense.  For example, `*foo' treats `*' as ordinary since there is no
        !           567: preceding expression on which the `*' can act.  It is poor practice to
        !           568: depend on this behavior; better to quote the special character anyway,
        !           569: regardless of where is appears.
        !           570: 
        !           571:    For the most part, `\' followed by any character matches only that
        !           572: character.  However, there are several exceptions: characters which,
        !           573: when preceded by `\', are special constructs.  Such characters are
        !           574: always ordinary when encountered on their own.  Here is a table of `\'
        !           575: constructs.
        !           576: 
        !           577: `\|'
        !           578:      specifies an alternative. Two regular expressions A and B with
        !           579:      `\|' in between form an expression that matches anything that
        !           580:      either A or B will match.
        !           581: 
        !           582:      Thus, `foo\|bar' matches either `foo' or `bar' but no other string.
        !           583: 
        !           584:      `\|' applies to the largest possible surrounding expressions. 
        !           585:      Only a surrounding `\( ... \)' grouping can limit the grouping
        !           586:      power of `\|'.
        !           587: 
        !           588:      Full backtracking capability exists to handle multiple uses of
        !           589:      `\|'.
        !           590: 
        !           591: `\( ... \)'
        !           592:      is a grouping construct that serves three purposes:
        !           593: 
        !           594:        1. To enclose a set of `\|' alternatives for other operations.
        !           595:           Thus, `\(foo\|bar\)x' matches either `foox' or `barx'.
        !           596: 
        !           597:        2. To enclose a complicated expression for the postfix `*' to
        !           598:           operate on. Thus, `ba\(na\)*' matches `bananana', etc., with
        !           599:           any (zero or more) number of `na' strings.
        !           600: 
        !           601:        3. To mark a matched substring for future reference.
        !           602: 
        !           603: 
        !           604:      This last application is not a consequence of the idea of a
        !           605:      parenthetical grouping; it is a separate feature which happens to
        !           606:      be assigned as a second meaning to the same `\( ... \)' construct
        !           607:      because there is no conflict in practice between the two meanings.
        !           608:      Here is an explanation of this feature:
        !           609: 
        !           610: `\DIGIT'
        !           611:      after the end of a `\( ... \)' construct, the matcher remembers the
        !           612:      beginning and end of the text matched by that construct.  Then,
        !           613:      later on in the regular expression, you can use `\' followed by
        !           614:      DIGIT to mean "match the same text matched the DIGIT'th time by the
        !           615:      `\( ... \)' construct."
        !           616: 
        !           617:      The strings matching the first nine `\( ... \)' constructs
        !           618:      appearing in a regular expression are assigned numbers 1 through 9
        !           619:      in order that the open-parentheses appear in the regular
        !           620:      expression.  `\1' through `\9' may be used to refer to the text
        !           621:      matched by the corresponding `\( ... \)' construct.
        !           622: 
        !           623:      For example, `\(.*\)\1' matches any newline-free string that is
        !           624:      composed of two identical halves.  The `\(.*\)' matches the first
        !           625:      half, which may be anything, but the `\1' that follows must match
        !           626:      the same exact text.
        !           627: 
        !           628: `\`'
        !           629:      matches the empty string, provided it is at the beginning of the
        !           630:      buffer.
        !           631: 
        !           632: `\''
        !           633:      matches the empty string, provided it is at the end of the buffer.
        !           634: 
        !           635: `\b'
        !           636:      matches the empty string, provided it is at the beginning or end
        !           637:      of a word.  Thus, `\bfoo\b' matches any occurrence of `foo' as a
        !           638:      separate word.  `\bballs?\b' matches `ball' or `balls' as a
        !           639:      separate word.
        !           640: 
        !           641: `\B'
        !           642:      matches the empty string, provided it is not at the beginning or
        !           643:      end of a word.
        !           644: 
        !           645: `\<'
        !           646:      matches the empty string, provided it is at the beginning of a
        !           647:      word.
        !           648: 
        !           649: `\>'
        !           650:      matches the empty string, provided it is at the end of a word.
        !           651: 
        !           652: `\w'
        !           653:      matches any word-constituent character.  The editor syntax table
        !           654:      determines which characters these are.
        !           655: 
        !           656: `\W'
        !           657:      matches any character that is not a word-constituent.
        !           658: 
        !           659: `\sCODE'
        !           660:      matches any character whose syntax is CODE.  CODE is a character
        !           661:      which represents a syntax code: thus, `w' for word constituent,
        !           662:      `-' for whitespace, `(' for open-parenthesis, etc.  *Note Syntax::.
        !           663: 
        !           664: `\SCODE'
        !           665:      matches any character whose syntax is not CODE.
        !           666: 
        !           667:    Here is a complicated regexp, used by Emacs to recognize the end of a
        !           668: sentence together with any whitespace that follows.  It is given in Lisp
        !           669: syntax to enable you to distinguish the spaces from the tab characters.
        !           670:  In Lisp syntax, the string constant begins and ends with a
        !           671: double-quote. `\"' stands for a double-quote as part of the regexp,
        !           672: `\\' for a backslash as part of the regexp, `\t' for a tab and `\n' for
        !           673: a newline.
        !           674: 
        !           675:      "[.?!][]\"')]*\\($\\|\t\\|  \\)[ \t\n]*"
        !           676: 
        !           677: This contains four parts in succession: a character set matching period,
        !           678: `?' or `!'; a character set matching close-brackets, quotes or
        !           679: parentheses, repeated any number of times; an alternative in
        !           680: backslash-parentheses that matches end-of-line, a tab or two spaces;
        !           681: and a character set matching whitespace characters, repeated any number
        !           682: of times.
        !           683: 
        !           684:    Note that the above example shows how to write this regexp when
        !           685: entering it as part of an Emacs Lisp program. To enter the same regexp
        !           686: in an interactive command such as `re-search-forward' you must spell it
        !           687: differently:
        !           688: 
        !           689:      [.?!][]"')]*\($\|^Q^I\| \)[ ^Q^I^Q^J]*
        !           690: 
        !           691: 
        !           692: File: emacs,  Node: Search Case,  Next: Replace,  Prev: Regexps,  Up: Search
        !           693: 
        !           694: Searching and Case
        !           695: ==================
        !           696: 
        !           697:    All sorts of searches in Emacs normally ignore the case of the text
        !           698: they are searching through; if you specify searching for `FOO', then
        !           699: `Foo' and `foo' are also considered a match.  Regexps, and in
        !           700: particular character sets, are included: `[aB]' would match `a' or `A'
        !           701: or `b' or `B'.
        !           702: 
        !           703:    If you do not want this feature, set the variable `case-fold-search'
        !           704: to `nil'.  Then all letters must match exactly, including case.  This
        !           705: is a per-buffer variable; altering the variable affects only the current
        !           706: buffer, but there is a default value which you can change as well.
        !           707: *Note Locals::.
        !           708: 
        !           709: 
        !           710: File: emacs,  Node: Replace,  Next: Other Repeating Search,  Prev: Search Case,  Up: Search
        !           711: 
        !           712: Replacement Commands
        !           713: ====================
        !           714: 
        !           715:    Global search-and-replace operations are not needed as often in
        !           716: Emacs as they are in other editors, but they are available.  In
        !           717: addition to the simple `replace-string' command which is like that
        !           718: found in most editors, there is a `query-replace' command which asks
        !           719: you, for each occurrence of the pattern, whether to replace it.
        !           720: 
        !           721:    The replace commands all replace one string (or regexp) with one
        !           722: replacement string.  It is possible to perform several replacements in
        !           723: parallel using the command `expand-region-abbrevs'.  *Note Expanding
        !           724: Abbrevs::.
        !           725: 
        !           726: * Menu:
        !           727: 
        !           728: * Unconditional Replace::  Replacing all matches for a string.
        !           729: * Regexp Replace::         Replacing all matches for a regexp.
        !           730: * Replacement and Case::   How replacements preserve case of letters.
        !           731: * Query Replace::          How to use querying.
        !           732: 
        !           733: 
        !           734: File: emacs,  Node: Unconditional Replace,  Next: Regexp Replace,  Prev: Replace,  Up: Replace
        !           735: 
        !           736: Unconditional Replacement
        !           737: -------------------------
        !           738: 
        !           739: `M-x replace-string RET STRING RET NEWSTRING RET'
        !           740:      Replace every occurrence of STRING with NEWSTRING.
        !           741: 
        !           742: `M-x replace-regexp RET REGEXP RET NEWSTRING RET'
        !           743:      Replace every match for REGEXP with NEWSTRING.
        !           744: 
        !           745:    To replace every instance of `foo' after point with `bar', use the
        !           746: command `M-x replace-string' with the two arguments `foo' and `bar'. 
        !           747: Replacement occurs only after point, so if you want to cover the whole
        !           748: buffer you must go to the beginning first.  All occurrences up to the
        !           749: end of the buffer are replaced; to limit replacement to part of the
        !           750: buffer, narrow to that part of the buffer before doing the replacement
        !           751: (*note Narrowing::.).
        !           752: 
        !           753:    When `replace-string' exits, point is left at the last occurrence
        !           754: replaced.  The value of point when the `replace-string' command was
        !           755: issued is remembered on the mark ring; `C-u C-SPC' moves back there.
        !           756: 
        !           757:    A numeric argument restricts replacement to matches that are
        !           758: surrounded by word boundaries.
        !           759: 
        !           760: 
        !           761: File: emacs,  Node: Regexp Replace,  Next: Replacement and Case,  Prev: Unconditional Replace,  Up: Replace
        !           762: 
        !           763: Regexp Replacement
        !           764: ------------------
        !           765: 
        !           766:    `replace-string' replaces exact matches for a single string.  The
        !           767: similar command `replace-regexp' replaces any match for a specified
        !           768: pattern.
        !           769: 
        !           770:    In `replace-regexp', the NEWSTRING need not be constant.  It can
        !           771: refer to all or part of what is matched by the REGEXP.  `\&' in
        !           772: NEWSTRING stands for the entire text being replaced. `\D' in NEWSTRING,
        !           773: where D is a digit, stands for whatever matched the D'th parenthesized
        !           774: grouping in REGEXP. For example,
        !           775: 
        !           776:      M-x replace-regexp RET c[ad]+r RET \&-safe RET
        !           777: 
        !           778: would replace (for example) `cadr' with `cadr-safe' and `cddr' with
        !           779: `cddr-safe'.
        !           780: 
        !           781:      M-x replace-regexp RET \(c[ad]+r\)-safe RET \1 RET
        !           782: 
        !           783: would perform exactly the opposite replacements.  To include a `\' in
        !           784: the text to replace with, you must give `\\'.
        !           785: 
        !           786: 
        !           787: File: emacs,  Node: Replacement and Case,  Next: Query Replace,  Prev: Regexp Replace,  Up: Replace
        !           788: 
        !           789: Replace Commands and Case
        !           790: -------------------------
        !           791: 
        !           792:    If the arguments to a replace command are in lower case, it preserves
        !           793: case when it makes a replacement.  Thus, the command
        !           794: 
        !           795:      M-x replace-string RET foo RET bar RET
        !           796: 
        !           797: replaces a lower case `foo' with a lower case `bar', `FOO' with `BAR',
        !           798: and `Foo' with `Bar'.  If upper case letters are used in the second
        !           799: argument, they remain upper case every time that argument is inserted. 
        !           800: If upper case letters are used in the first argument, the second
        !           801: argument is always substituted exactly as given, with no case
        !           802: conversion.  Likewise, if the variable `case-replace' is set to `nil',
        !           803: replacement is done without case conversion.  If `case-fold-search' is
        !           804: set to `nil', case is significant in matching occurrences of `foo' to
        !           805: replace; also, case conversion of the replacement string is not done.
        !           806: 
        !           807: 
        !           808: File: emacs,  Node: Query Replace,  Prev: Replacement and Case,  Up: Replace
        !           809: 
        !           810: Query Replace
        !           811: -------------
        !           812: 
        !           813: `M-% STRING RET NEWSTRING RET'
        !           814: `M-x query-replace RET STRING RET NEWSTRING RET'
        !           815:      Replace some occurrences of STRING with NEWSTRING.
        !           816: 
        !           817: `M-x query-replace-regexp RET REGEXP RET NEWSTRING RET'
        !           818:      Replace some matches for REGEXP with NEWSTRING.
        !           819: 
        !           820:    If you want to change only some of the occurrences of `foo' to
        !           821: `bar', not all of them, then you cannot use an ordinary
        !           822: `replace-string'.  Instead, use `M-%' (`query-replace'). This command
        !           823: finds occurrences of `foo' one by one, displays each occurrence and
        !           824: asks you whether to replace it.  A numeric argument to `query-replace'
        !           825: tells it to consider only occurrences that are bounded by
        !           826: word-delimiter characters.
        !           827: 
        !           828:    Aside from querying, `query-replace' works just like
        !           829: `replace-string', and `query-replace-regexp' works just like
        !           830: `replace-regexp'.
        !           831: 
        !           832:    The things you can type when you are shown an occurrence of STRING
        !           833: or a match for REGEXP are:
        !           834: 
        !           835: `SPC'
        !           836:      to replace the occurrence with NEWSTRING.  This preserves case,
        !           837:      just like `replace-string', provided `case-replace' is non-`nil',
        !           838:      as it normally is.
        !           839: 
        !           840: `DEL'
        !           841:      to skip to the next occurrence without replacing this one.
        !           842: 
        !           843: `, (Comma)'
        !           844:      to replace this occurrence and display the result.  You are then
        !           845:      asked for another input character, except that since the
        !           846:      replacement has already been made, DEL and SPC are equivalent. 
        !           847:      You could type `C-r' at this point (see below) to alter the
        !           848:      replaced text.  You could also type `C-x u' to undo the
        !           849:      replacement; this exits the `query-replace', so if you want to do
        !           850:      further replacement you must use `C-x ESC' to restart (*note
        !           851:      Repetition::.).
        !           852: 
        !           853: `ESC'
        !           854:      to exit without doing any more replacements.
        !           855: 
        !           856: `. (Period)'
        !           857:      to replace this occurrence and then exit.
        !           858: 
        !           859: `!'
        !           860:      to replace all remaining occurrences without asking again.
        !           861: 
        !           862: `^'
        !           863:      to go back to the location of the previous occurrence (or what
        !           864:      used to be an occurrence), in case you changed it by mistake. 
        !           865:      This works by popping the mark ring.  Only one `^' in a row is
        !           866:      allowed, because only one previous replacement location is kept
        !           867:      during `query-replace'.
        !           868: 
        !           869: `C-r'
        !           870:      to enter a recursive editing level, in case the occurrence needs
        !           871:      to be edited rather than just replaced with NEWSTRING.  When you
        !           872:      are done, exit the recursive editing level with `C-M-c' and the
        !           873:      next occurrence will be displayed.  *Note Recursive Edit::.
        !           874: 
        !           875: `C-w'
        !           876:      to delete the occurrence, and then enter a recursive editing level
        !           877:      as in `C-r'.  Use the recursive edit to insert text to replace the
        !           878:      deleted occurrence of STRING.  When done, exit the recursive
        !           879:      editing level with `C-M-c' and the next occurrence will be
        !           880:      displayed.
        !           881: 
        !           882: `C-l'
        !           883:      to redisplay the screen and then give another answer.
        !           884: 
        !           885: `C-h'
        !           886:      to display a message summarizing these options, then give another
        !           887:      answer.
        !           888: 
        !           889:    If you type any other character, the `query-replace' is exited, and
        !           890: the character executed as a command.  To restart the `query-replace',
        !           891: use `C-x ESC', which repeats the `query-replace' because it used the
        !           892: minibuffer to read its arguments.  *Note C-x ESC: Repetition.
        !           893: 
        !           894:    To replace every occurrence, you can start `query-replace' at the
        !           895: beginning of the buffer and type `!', or you can use the
        !           896: `replace-string' command at the beginning of the buffer.  To replace
        !           897: every occurrence in a part of the buffer, narrow to that part and then
        !           898: run `replace-string' or `query-replace' at the beginning of it.  *Note
        !           899: Narrowing::.
        !           900: 
        !           901: 
        !           902: File: emacs,  Node: Other Repeating Search,  Prev: Replace,  Up: Search
        !           903: 
        !           904: Other Search-and-Loop Commands
        !           905: ==============================
        !           906: 
        !           907:    Here are some other commands that find matches for a regular
        !           908: expression. They all operate from point to the end of the buffer.
        !           909: 
        !           910: `M-x occur'
        !           911:      Print each line that follows point and contains a match for the
        !           912:      specified regexp.  A numeric argument specifies the number of
        !           913:      context lines to print before and after each matching line; the
        !           914:      default is none.
        !           915: 
        !           916:      The buffer `*Occur*' containing the output serves as a menu for
        !           917:      finding the occurrences in their original context.  Find an
        !           918:      occurrence as listed in `*Occur*', position point there and type
        !           919:      `C-c C-c'; this switches to the buffer that was searched and moves
        !           920:      point to the original of the same occurrence.
        !           921: 
        !           922: `M-x list-matching-lines'
        !           923:      Synonym for `M-x occur'.
        !           924: 
        !           925: `M-x count-matches'
        !           926:      Print the number of matches following point for the specified
        !           927:      regexp.
        !           928: 
        !           929: `M-x delete-non-matching-lines'
        !           930:      Delete each line that follows point and does not contain a match
        !           931:      for the specified regexp.
        !           932: 
        !           933: `M-x delete-matching-lines'
        !           934:      Delete each line that follows point and contains a match for the
        !           935:      specified regexp.
        !           936: 
        !           937: 
        !           938: File: emacs,  Node: Fixit,  Next: Files,  Prev: Search,  Up: Top
        !           939: 
        !           940: Commands for Fixing Typos
        !           941: *************************
        !           942: 
        !           943:    In this chapter we describe the commands that are especially useful
        !           944: for the times when you catch a mistake in your text just after you have
        !           945: made it, or change your mind while composing text on line.
        !           946: 
        !           947: * Menu:
        !           948: 
        !           949: * Kill Errors:: Commands to kill a batch of recently entered text.
        !           950: * Transpose::   Exchanging two characters, words, lines, lists...
        !           951: * Fixing Case:: Correcting case of last word entered.
        !           952: * Spelling::    Apply spelling checker to a word, or a whole file.
        !           953: 
        !           954: 
        !           955: File: emacs,  Node: Kill Errors,  Next: Transpose,  Prev: Fixit,  Up: Fixit
        !           956: 
        !           957: Killing Your Mistakes
        !           958: =====================
        !           959: 
        !           960: `DEL'
        !           961:      Delete last character (`delete-backward-char').
        !           962: 
        !           963: `M-DEL'
        !           964:      Kill last word (`backward-kill-word').
        !           965: 
        !           966: `C-x DEL'
        !           967:      Kill to beginning of sentence (`backward-kill-sentence').
        !           968: 
        !           969:    The DEL character (`delete-backward-char') is the most important
        !           970: correction command.  When used among graphic (self-inserting)
        !           971: characters, it can be thought of as canceling the last character typed.
        !           972: 
        !           973:    When your mistake is longer than a couple of characters, it might be
        !           974: more convenient to use `M-DEL' or `C-x DEL'. `M-DEL' kills back to the
        !           975: start of the last word, and `C-x DEL' kills back to the start of the
        !           976: last sentence.  `C-x DEL' is particularly useful when you are thinking
        !           977: of what to write as you type it, in case you change your mind about
        !           978: phrasing. `M-DEL' and `C-x DEL' save the killed text for `C-y' and
        !           979: `M-y' to retrieve.  *Note Yanking::.
        !           980: 
        !           981:    `M-DEL' is often useful even when you have typed only a few
        !           982: characters wrong, if you know you are confused in your typing and aren't
        !           983: sure exactly what you typed.  At such a time, you cannot correct with
        !           984: DEL except by looking at the screen to see what you did.  It requires
        !           985: less thought to kill the whole word and start over again.
        !           986: 
        !           987: 
        !           988: File: emacs,  Node: Transpose,  Next: Fixing Case,  Prev: Kill Errors,  Up: Fixit
        !           989: 
        !           990: Transposing Text
        !           991: ================
        !           992: 
        !           993: `C-t'
        !           994:      Transpose two characters (`transpose-chars').
        !           995: 
        !           996: `M-t'
        !           997:      Transpose two words (`transpose-words').
        !           998: 
        !           999: `C-M-t'
        !          1000:      Transpose two balanced expressions (`transpose-sexps').
        !          1001: 
        !          1002: `C-x C-t'
        !          1003:      Transpose two lines (`transpose-lines').
        !          1004: 
        !          1005:    The common error of transposing two characters can be fixed, when
        !          1006: they are adjacent, with the `C-t' command (`transpose-chars'). 
        !          1007: Normally, `C-t' transposes the two characters on either side of point. 
        !          1008: When given at the end of a line, rather than transposing the last
        !          1009: character of the line with the newline, which would be useless, `C-t'
        !          1010: transposes the last two characters on the line.  So, if you catch your
        !          1011: transposition error right away, you can fix it with just a `C-t'.  If
        !          1012: you don't catch it so fast, you must move the cursor back to between
        !          1013: the two transposed characters.  If you transposed a space with the last
        !          1014: character of the word before it, the word motion commands are a good
        !          1015: way of getting there. Otherwise, a reverse search (`C-r') is often the
        !          1016: best way. *Note Search::.
        !          1017: 
        !          1018:    `Meta-t' (`transpose-words') transposes the word before point with
        !          1019: the word after point.  It moves point forward over a word, dragging the
        !          1020: word preceding or containing point forward as well.  The punctuation
        !          1021: characters between the words do not move.  For example, `FOO, BAR'
        !          1022: transposes into `BAR, FOO' rather than `BAR FOO,'.
        !          1023: 
        !          1024:    `C-M-t' (`transpose-sexps') is a similar command for transposing two
        !          1025: expressions (*note Lists::.), and `C-x C-t' (`transpose-lines')
        !          1026: exchanges lines.  They work like `M-t' except in determining the
        !          1027: division of the text into syntactic units.
        !          1028: 
        !          1029:    A numeric argument to a transpose command serves as a repeat count:
        !          1030: it tells the transpose command to move the character (word, sexp, line)
        !          1031: before or containing point across several other characters (words,
        !          1032: sexps, lines). For example, `C-u 3 C-t' moves the character before
        !          1033: point forward across three other characters.  This is equivalent to
        !          1034: repeating `C-t' three times.  `C-u - 4 M-t' moves the word before point
        !          1035: backward across four words.  `C-u - C-M-t' would cancel the effect of
        !          1036: plain `C-M-t'.
        !          1037: 
        !          1038:    A numeric argument of zero is assigned a special meaning (because
        !          1039: otherwise a command with a repeat count of zero would do nothing): to
        !          1040: transpose the character (word, sexp, line) ending after point with the
        !          1041: one ending after the mark.
        !          1042: 
        !          1043: 
        !          1044: File: emacs,  Node: Fixing Case,  Next: Spelling,  Prev: Transpose,  Up: Fixit
        !          1045: 
        !          1046: Case Conversion
        !          1047: ===============
        !          1048: 
        !          1049: `M-- M-l'
        !          1050:      Convert last word to lower case.  Note `Meta--' is Meta-minus.
        !          1051: 
        !          1052: `M-- M-u'
        !          1053:      Convert last word to all upper case.
        !          1054: 
        !          1055: `M-- M-c'
        !          1056:      Convert last word to lower case with capital initial.
        !          1057: 
        !          1058:    A very common error is to type words in the wrong case.  Because of
        !          1059: this, the word case-conversion commands `M-l', `M-u' and `M-c' have a
        !          1060: special feature when used with a negative argument: they do not move the
        !          1061: cursor.  As soon as you see you have mistyped the last word, you can
        !          1062: simply case-convert it and go on typing.  *Note Case::.
        !          1063: 
        !          1064: 
        !          1065: File: emacs,  Node: Spelling,  Prev: Fixing Case,  Up: Fixit
        !          1066: 
        !          1067: Checking and Correcting Spelling
        !          1068: ================================
        !          1069: 
        !          1070: `M-$'
        !          1071:      Check and correct spelling of word (`spell-word').
        !          1072: 
        !          1073: `M-x spell-buffer'
        !          1074:      Check and correct spelling of each word in the buffer.
        !          1075: 
        !          1076: `M-x spell-region'
        !          1077:      Check and correct spelling of each word in the region.
        !          1078: 
        !          1079: `M-x spell-string'
        !          1080:      Check spelling of specified word.
        !          1081: 
        !          1082:    To check the spelling of the word before point, and optionally
        !          1083: correct it as well, use the command `M-$' (`spell-word').  This command
        !          1084: runs an inferior process containing the `spell' program to see whether
        !          1085: the word is correct English.  If it is not, it asks you to edit the
        !          1086: word (in the minibuffer) into a corrected spelling, and then does a
        !          1087: `query-replace' to substitute the corrected spelling for the old one
        !          1088: throughout the buffer.
        !          1089: 
        !          1090:    If you exit the minibuffer without altering the original spelling, it
        !          1091: means you do not want to do anything to that word.  Then the
        !          1092: `query-replace' is not done.
        !          1093: 
        !          1094:    `M-x spell-buffer' checks each word in the buffer the same way that
        !          1095: `spell-word' does, doing a `query-replace' if appropriate for every
        !          1096: incorrect word.
        !          1097: 
        !          1098:    `M-x spell-region' is similar but operates only on the region, not
        !          1099: the entire buffer.
        !          1100: 
        !          1101:    `M-x spell-string' reads a string as an argument and checks whether
        !          1102: that is a correctly spelled English word.  It prints in the echo area a
        !          1103: message giving the answer.
        !          1104: 
        !          1105: 
        !          1106: File: emacs,  Node: Files,  Next: Buffers,  Prev: Fixit,  Up: Top
        !          1107: 
        !          1108: File Handling
        !          1109: *************
        !          1110: 
        !          1111:    The basic unit of stored data in Unix is the "file".  To edit a file,
        !          1112: you must tell Emacs to examine the file and prepare a buffer containing
        !          1113: a copy of the file's text.  This is called "visiting" the file.  Editing
        !          1114: commands apply directly to text in the buffer; that is, to the copy
        !          1115: inside Emacs.  Your changes appear in the file itself only when you
        !          1116: "save" the buffer back into the file.
        !          1117: 
        !          1118:    In addition to visiting and saving files, Emacs can delete, copy,
        !          1119: rename, and append to files, and operate on file directories.
        !          1120: 
        !          1121: * Menu:
        !          1122: 
        !          1123: * File Names::   How to type and edit file name arguments.
        !          1124: * Visiting::     Visiting a file prepares Emacs to edit the file.
        !          1125: * Saving::       Saving makes your changes permanent.
        !          1126: * Reverting::    Reverting cancels all the changes not saved.
        !          1127: * Auto Save::    Auto Save periodically protects against loss of data.
        !          1128: * ListDir::      Listing the contents of a file directory.
        !          1129: * Dired::        "Editing" a directory to delete, rename, etc.
        !          1130:                   the files in it.
        !          1131: * Misc File Ops:: Other things you can do on files.
        !          1132: 
        !          1133: 

unix.superglobalmegacorp.com

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