summaryrefslogtreecommitdiff
path: root/info/emacs-4
diff options
context:
space:
mode:
Diffstat (limited to 'info/emacs-4')
-rw-r--r--info/emacs-41133
1 files changed, 1133 insertions, 0 deletions
diff --git a/info/emacs-4 b/info/emacs-4
new file mode 100644
index 00000000000..47a8cb7cd06
--- /dev/null
+++ b/info/emacs-4
@@ -0,0 +1,1133 @@
+This is Info file ../info/emacs, produced by Makeinfo-1.49 from the
+input file emacs.texi.
+
+ This file documents the GNU Emacs editor.
+
+ Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided also
+that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
+General Public License" are included exactly as in the original, and
+provided that the entire resulting derived work is distributed under the
+terms of a permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that the sections entitled "The GNU Manifesto",
+"Distribution" and "GNU General Public License" may be included in a
+translation approved by the author instead of in the original English.
+
+
+File: emacs, Node: Horizontal Scrolling, Prev: Scrolling, Up: Display
+
+Horizontal Scrolling
+====================
+
+`C-x <'
+ Scroll text in current window to the left (`scroll-left').
+
+`C-x >'
+ Scroll to the right (`scroll-right').
+
+ The text in a window can also be scrolled horizontally. This means
+that each line of text is shifted sideways in the window, and one or
+more characters at the beginning of each line are not displayed at all.
+ When a window has been scrolled horizontally in this way, text lines
+are truncated rather than continued (*note Continuation Lines::.), with
+a `$' appearing in the first column when there is text truncated to the
+left, and in the last column when there is text truncated to the right.
+
+ The command `C-x <' (`scroll-left') scrolls the selected window to
+the left by N columns with argument N. With no argument, it scrolls by
+almost the full width of the window (two columns less, to be precise).
+`C-x >' (`scroll-right') scrolls similarly to the right. The window
+cannot be scrolled any farther to the right once it is displaying
+normally (with each line starting at the window's left margin);
+attempting to do so has no effect.
+
+
+File: emacs, Node: Selective Display, Next: Display Vars, Prev: Display, Up: Display
+
+Selective Display
+=================
+
+ Emacs has the ability to hide lines indented more than a certain
+number of columns (you specify how many columns). You can use this to
+get an overview of a part of a program.
+
+ To hide lines, type `C-x $' (`set-selective-display') with a numeric
+argument N. (*Note Arguments::, for how to give the argument.) Then
+lines with at least N columns of indentation disappear from the screen.
+ The only indication of their presence is that three dots (`...')
+appear at the end of each visible line that is followed by one or more
+invisible ones.
+
+ The invisible lines are still present in the buffer, and most editing
+commands see them as usual, so it is very easy to put point in the
+middle of invisible text. When this happens, the cursor appears at the
+end of the previous line, after the three dots. If point is at the end
+of the visible line, before the newline that ends it, the cursor
+appears before the three dots.
+
+ The commands `C-n' and `C-p' move across the invisible lines as if
+they were not there.
+
+ To make everything visible again, type `C-x $' with no argument.
+
+
+File: emacs, Node: Display Vars, Prev: Selective Display, Up: Display
+
+Variables Controlling Display
+=============================
+
+ This section contains information for customization only. Beginning
+users should skip it.
+
+ The variable `mode-line-inverse-video' controls whether the mode
+line is displayed in inverse video (assuming the terminal supports it);
+`nil' means don't do so. *Note Mode Line::.
+
+ If the variable `inverse-video' is non-`nil', Emacs attempts to
+invert all the lines of the display from what they normally are.
+
+ If the variable `visible-bell' is non-`nil', Emacs attempts to make
+the whole screen blink when it would normally make an audible bell
+sound. This variable has no effect if your terminal does not have a way
+to make the screen blink.
+
+ When you reenter Emacs after suspending, Emacs normally clears the
+screen and redraws the entire display. On some terminals with more
+than one page of memory, it is possible to arrange the termcap entry so
+that the `ti' and `te' strings (output to the terminal when Emacs is
+entered and exited, respectively) switch between pages of memory so as
+to use one page for Emacs and another page for other output. Then you
+might want to set the variable `no-redraw-on-reenter' non-`nil' so that
+Emacs will assume, when resumed, that the screen page it is using still
+contains what Emacs last wrote there.
+
+ The variable `echo-keystrokes' controls the echoing of
+multi-character keys; its value is the number of seconds of pause
+required to cause echoing to start, or zero meaning don't echo at all.
+*Note Echo Area::.
+
+ If the variable `ctl-arrow' is `nil', control characters in the
+buffer are displayed with octal escape sequences, all except newline and
+tab. Altering the value of `ctl-arrow' makes it local to the current
+buffer; until that time, the default value is in effect. The default is
+initially `t'. *Note Locals::.
+
+ Normally, a tab character in the buffer is displayed as whitespace
+which extends to the next display tab stop position, and display tab
+stops come at intervals equal to eight spaces. The number of spaces
+per tab is controlled by the variable `tab-width', which is made local
+by changing it, just like `ctl-arrow'. Note that how the tab character
+in the buffer is displayed has nothing to do with the definition of TAB
+as a command.
+
+ If you set the variable `selective-display-ellipses' to `nil', the
+three dots do not appear at the end of a line that precedes invisible
+lines. Then there is no visible indication of the invisible lines.
+This variable too becomes local automatically when set.
+
+
+File: emacs, Node: Search, Next: Fixit, Prev: Display, Up: Top
+
+Searching and Replacement
+*************************
+
+ Like other editors, Emacs has commands for searching for occurrences
+of a string. The principal search command is unusual in that it is
+"incremental"; it begins to search before you have finished typing the
+search string. There are also nonincremental search commands more like
+those of other editors.
+
+ Besides the usual `replace-string' command that finds all
+occurrences of one string and replaces them with another, Emacs has a
+fancy replacement command called `query-replace' which asks
+interactively which occurrences to replace.
+
+* Menu:
+
+* Incremental Search:: Search happens as you type the string.
+* Nonincremental Search:: Specify entire string and then search.
+* Word Search:: Search for sequence of words.
+* Regexp Search:: Search for match for a regexp.
+* Regexps:: Syntax of regular expressions.
+* Search Case:: To ignore case while searching, or not.
+* Replace:: Search, and replace some or all matches.
+* Other Repeating Search:: Operating on all matches for some regexp.
+
+
+File: emacs, Node: Incremental Search, Next: Nonincremental Search, Prev: Search, Up: Search
+
+Incremental Search
+==================
+
+ An incremental search begins searching as soon as you type the first
+character of the search string. As you type in the search string, Emacs
+shows you where the string (as you have typed it so far) would be found.
+When you have typed enough characters to identify the place you want,
+you can stop. Depending on what you will do next, you may or may not
+need to terminate the search explicitly with an ESC first.
+
+`C-s'
+ Incremental search forward (`isearch-forward').
+
+`C-r'
+ Incremental search backward (`isearch-backward').
+
+ `C-s' starts an incremental search. `C-s' reads characters from the
+keyboard and positions the cursor at the first occurrence of the
+characters that you have typed. If you type `C-s' and then `F', the
+cursor moves right after the first `F'. Type an `O', and see the
+cursor move to after the first `FO'. After another `O', the cursor is
+after the first `FOO' after the place where you started the search.
+Meanwhile, the search string `FOO' has been echoed in the echo area.
+
+ The echo area display ends with three dots when actual searching is
+going on. When search is waiting for more input, the three dots are
+removed. (On slow terminals, the three dots are not displayed.)
+
+ If you make a mistake in typing the search string, you can erase
+characters with DEL. Each DEL cancels the last character of search
+string. This does not happen until Emacs is ready to read another
+input character; first it must either find, or fail to find, the
+character you want to erase. If you do not want to wait for this to
+happen, use `C-g' as described below.
+
+ When you are satisfied with the place you have reached, you can type
+ESC, which stops searching, leaving the cursor where the search brought
+it. Also, any command not specially meaningful in searches stops the
+searching and is then executed. Thus, typing `C-a' would exit the
+search and then move to the beginning of the line. ESC is necessary
+only if the next command you want to type is a printing character, DEL,
+ESC, or another control character that is special within searches
+(`C-q', `C-w', `C-r', `C-s' or `C-y').
+
+ Sometimes you search for `FOO' and find it, but not the one you
+expected to find. There was a second `FOO' that you forgot about,
+before the one you were looking for. In this event, type another `C-s'
+to move to the next occurrence of the search string. This can be done
+any number of times. If you overshoot, you can cancel some `C-s'
+characters with DEL.
+
+ After you exit a search, you can search for the same string again by
+typing just `C-s C-s': the first `C-s' is the key that invokes
+incremental search, and the second `C-s' means "search again".
+
+ If your string is not found at all, the echo area says `Failing
+I-Search'. The cursor is after the place where Emacs found as much of
+your string as it could. Thus, if you search for `FOOT', and there is
+no `FOOT', you might see the cursor after the `FOO' in `FOOL'. At this
+point there are several things you can do. If your string was
+mistyped, you can rub some of it out and correct it. If you like the
+place you have found, you can type ESC or some other Emacs command to
+"accept what the search offered". Or you can type `C-g', which removes
+from the search string the characters that could not be found (the `T'
+in `FOOT'), leaving those that were found (the `FOO' in `FOOT'). A
+second `C-g' at that point cancels the search entirely, returning point
+to where it was when the search started.
+
+ If a search is failing and you ask to repeat it by typing another
+`C-s', it starts again from the beginning of the buffer. Repeating a
+failing reverse search with `C-r' starts again from the end. This is
+called "wrapping around". `Wrapped' appears in the search prompt once
+this has happened.
+
+ The `C-g' "quit" character does special things during searches; just
+what it does depends on the status of the search. If the search has
+found what you specified and is waiting for input, `C-g' cancels the
+entire search. The cursor moves back to where you started the search.
+If `C-g' is typed when there are characters in the search string that
+have not been found--because Emacs is still searching for them, or
+because it has failed to find them--then the search string characters
+which have not been found are discarded from the search string. With
+them gone, the search is now successful and waiting for more input, so
+a second `C-g' will cancel the entire search.
+
+ To search for a control character such as `C-s' or DEL or ESC, you
+must quote it by typing `C-q' first. This function of `C-q' is
+analogous to its meaning as an Emacs command: it causes the following
+character to be treated the way a graphic character would normally be
+treated in the same context. You can also specify a quoted character
+in octal while searching, just as you can for insertion. *Note Basic::.
+
+ You can change to searching backwards with `C-r'. If a search fails
+because the place you started was too late in the file, you should do
+this. Repeated `C-r' keeps looking for more occurrences backwards. A
+`C-s' starts going forwards again. `C-r' in a search can be cancelled
+with DEL.
+
+ If you know initially that you want to search backwards, you can use
+`C-r' instead of `C-s' to start the search, because `C-r' is also a key
+running a command (`isearch-backward') to search backward.
+
+ The characters `C-y' and `C-w' can be used in incremental search to
+grab text from the buffer into the search string. This makes it
+convenient to search for another occurrence of text at point. `C-w'
+copies the word after point as part of the search string, advancing
+point over that word. Another `C-s' to repeat the search will then
+search for a string including that word. `C-y' is similar to `C-w' but
+copies all the rest of the current line into the search string.
+
+ All the characters special in incremental search can be changed by
+setting the following variables:
+
+`search-delete-char'
+ Character to delete from incremental search string (normally DEL).
+
+`search-exit-char'
+ Character to exit incremental search (normally ESC).
+
+`search-quote-char'
+ Character to quote special characters for incremental search
+ (normally `C-q').
+
+`search-repeat-char'
+ Character to repeat incremental search forwards (normally `C-s').
+
+`search-reverse-char'
+ Character to repeat incremental search backwards (normally `C-r').
+
+`search-yank-line-char'
+ Character to pull rest of line from buffer into search string
+ (normally `C-y').
+
+`search-yank-word-char'
+ Character to pull next word from buffer into search string
+ (normally `C-w').
+
+Slow Terminal Incremental Search
+--------------------------------
+
+ Incremental search on a slow terminal uses a modified style of
+display that is designed to take less time. Instead of redisplaying
+the buffer at each place the search gets to, it creates a new
+single-line window and uses that to display the line that the search
+has found. The single-line window comes into play as soon as point
+gets outside of the text that is already on the screen.
+
+ When the search is terminated, the single-line window is removed.
+Only at this time is the window in which the search was done
+redisplayed to show its new value of point.
+
+ The three dots at the end of the search string, normally used to
+indicate that searching is going on, are not displayed in slow style
+display.
+
+ The slow terminal style of display is used when the terminal baud
+rate is less than or equal to the value of the variable
+`search-slow-speed', initially 1200.
+
+ The number of lines to use in slow terminal search display is
+controlled by the variable `search-slow-window-lines'. 1 is its normal
+value.
+
+
+File: emacs, Node: Nonincremental Search, Next: Word Search, Prev: Incremental Search, Up: Search
+
+Nonincremental Search
+=====================
+
+ Emacs also has conventional nonincremental search commands, which
+require you to type the entire search string before searching begins.
+
+`C-s ESC STRING RET'
+ Search for STRING.
+
+`C-r ESC STRING RET'
+ Search backward for STRING.
+
+ To do a nonincremental search, first type `C-s ESC'. This enters
+the minibuffer to read the search string; terminate the string with
+RET, and then the search is done. If the string is not found the
+search command gets an error.
+
+ The way `C-s ESC' works is that the `C-s' invokes incremental
+search, which is specially programmed to invoke nonincremental search
+if the argument you give it is empty. (Such an empty argument would
+otherwise be useless.) `C-r ESC' also works this way.
+
+ Forward and backward nonincremental searches are implemented by the
+commands `search-forward' and `search-backward'. These commands may be
+bound to keys in the usual manner. The reason that incremental search
+is programmed to invoke them as well is that `C-s ESC' is the
+traditional sequence of characters used in Emacs to invoke
+nonincremental search.
+
+ However, nonincremental searches performed using `C-s ESC' do not
+call `search-forward' right away. The first thing done is to see if
+the next character is `C-w', which requests a word search. *Note Word
+Search::.
+
+
+File: emacs, Node: Word Search, Next: Regexp Search, Prev: Nonincremental Search, Up: Search
+
+Word Search
+===========
+
+ Word search searches for a sequence of words without regard to how
+the words are separated. More precisely, you type a string of many
+words, using single spaces to separate them, and the string can be
+found even if there are multiple spaces, newlines or other punctuation
+between the words.
+
+ Word search is useful in editing documents formatted by text
+formatters. If you edit while looking at the printed, formatted
+version, you can't tell where the line breaks are in the source file.
+With word search, you can search without having to know them.
+
+`C-s ESC C-w WORDS RET'
+ Search for WORDS, ignoring differences in punctuation.
+
+`C-r ESC C-w WORDS RET'
+ Search backward for WORDS, ignoring differences in punctuation.
+
+ Word search is a special case of nonincremental search and is invoked
+with `C-s ESC C-w'. This is followed by the search string, which must
+always be terminated with RET. Being nonincremental, this search does
+not start until the argument is terminated. It works by constructing a
+regular expression and searching for that. *Note Regexp Search::.
+
+ A backward word search can be done by `C-r ESC C-w'.
+
+ Forward and backward word searches are implemented by the commands
+`word-search-forward' and `word-search-backward'. These commands may
+be bound to keys in the usual manner. The reason that incremental
+search is programmed to invoke them as well is that `C-s ESC C-w' is
+the traditional Emacs sequence of keys for word search.
+
+
+File: emacs, Node: Regexp Search, Next: Regexps, Prev: Word Search, Up: Search
+
+Regular Expression Search
+=========================
+
+ A "regular expression" ("regexp", for short) is a pattern that
+denotes a set of strings, possibly an infinite set. Searching for
+matches for a regexp is a very powerful operation that editors on Unix
+systems have traditionally offered. In GNU Emacs, you can search for
+the next match for a regexp either incrementally or not.
+
+ Incremental search for a regexp is done by typing `C-M-s'
+(`isearch-forward-regexp'). This command reads a search string
+incrementally just like `C-s', but it treats the search string as a
+regexp rather than looking for an exact match against the text in the
+buffer. Each time you add text to the search string, you make the
+regexp longer, and the new regexp is searched for. A reverse regexp
+search command, `isearch-backward-regexp', also exists but no key runs
+it.
+
+ All of the control characters that do special things within an
+ordinary incremental search have the same function in incremental
+regexp search. Typing `C-s' or `C-r' immediately after starting the
+search retrieves the last incremental search regexp used; that is to
+say, incremental regexp and non-regexp searches have independent
+defaults.
+
+ Note that adding characters to the regexp in an incremental regexp
+search does not make the cursor move back and start again. Perhaps it
+ought to; I am not sure. As it stands, if you have searched for `foo'
+and you add `\|bar', the search will not check for a `bar' in the
+buffer before the `foo'.
+
+ Nonincremental search for a regexp is done by the functions
+`re-search-forward' and `re-search-backward'. You can invoke these
+with `M-x', or bind them to keys. Also, you can call
+`re-search-forward' by way of incremental regexp search with `C-M-s
+ESC'.
+
+
+File: emacs, Node: Regexps, Next: Search Case, Prev: Regexp Search, Up: Search
+
+Syntax of Regular Expressions
+=============================
+
+ Regular expressions have a syntax in which a few characters are
+special constructs and the rest are "ordinary". An ordinary character
+is a simple regular expression which matches that character and nothing
+else. The special characters are `$', `^', `.', `*', `+', `?', `[', `]'
+and `\'; no new special characters will be defined. Any other
+character appearing in a regular expression is ordinary, unless a `\'
+precedes it.
+
+ For example, `f' is not a special character, so it is ordinary, and
+therefore `f' is a regular expression that matches the string `f' and
+no other string. (It does not match the string `ff'.) Likewise, `o'
+is a regular expression that matches only `o'.
+
+ Any two regular expressions A and B can be concatenated. The result
+is a regular expression which matches a string if A matches some amount
+of the beginning of that string and B matches the rest of the string.
+
+ As a simple example, we can concatenate the regular expressions `f'
+and `o' to get the regular expression `fo', which matches only the
+string `fo'. Still trivial. To do something nontrivial, you need to
+use one of the special characters. Here is a list of them.
+
+`. (Period)'
+ is a special character that matches any single character except a
+ newline. Using concatenation, we can make regular expressions like
+ `a.b' which matches any three-character string which begins with
+ `a' and ends with `b'.
+
+`*'
+ is not a construct by itself; it is a suffix, which means the
+ preceding regular expression is to be repeated as many times as
+ possible. In `fo*', the `*' applies to the `o', so `fo*' matches
+ one `f' followed by any number of `o's. The case of zero `o's is
+ allowed: `fo*' does match `f'.
+
+ `*' always applies to the smallest possible preceding expression.
+ Thus, `fo*' has a repeating `o', not a repeating `fo'.
+
+ The matcher processes a `*' construct by matching, immediately, as
+ many repetitions as can be found. Then it continues with the rest
+ of the pattern. If that fails, backtracking occurs, discarding
+ some of the matches of the `*'-modified construct in case that
+ makes it possible to match the rest of the pattern. For example,
+ matching `ca*ar' against the string `caaar', the `a*' first tries
+ to match all three `a's; but the rest of the pattern is `ar' and
+ there is only `r' left to match, so this try fails. The next
+ alternative is for `a*' to match only two `a's. With this choice,
+ the rest of the regexp matches successfully.
+
+`+'
+ Is a suffix character similar to `*' except that it requires that
+ the preceding expression be matched at least once. So, for
+ example, `ca+r' will match the strings `car' and `caaaar' but not
+ the string `cr', whereas `ca*r' would match all three strings.
+
+`?'
+ Is a suffix character similar to `*' except that it can match the
+ preceding expression either once or not at all. For example,
+ `ca?r' will match `car' or `cr'; nothing else.
+
+`[ ... ]'
+ `[' begins a "character set", which is terminated by a `]'. In
+ the simplest case, the characters between the two form the set.
+ Thus, `[ad]' matches either one `a' or one `d', and `[ad]*'
+ matches any string composed of just `a's and `d's (including the
+ empty string), from which it follows that `c[ad]*r' matches `cr',
+ `car', `cdr', `caddaar', etc.
+
+ Character ranges can also be included in a character set, by
+ writing two characters with a `-' between them. Thus, `[a-z]'
+ matches any lower-case letter. Ranges may be intermixed freely
+ with individual characters, as in `[a-z$%.]', which matches any
+ lower case letter or `$', `%' or period.
+
+ Note that the usual special characters are not special any more
+ inside a character set. A completely different set of special
+ characters exists inside character sets: `]', `-' and `^'.
+
+ To include a `]' in a character set, you must make it the first
+ character. For example, `[]a]' matches `]' or `a'. To include a
+ `-', write `---', which is a range containing only `-'. To
+ include `^', make it other than the first character in the set.
+
+`[^ ... ]'
+ `[^' begins a "complement character set", which matches any
+ character except the ones specified. Thus, `[^a-z0-9A-Z]' matches
+ all characters except letters and digits.
+
+ `^' is not special in a character set unless it is the first
+ character. The character following the `^' is treated as if it
+ were first (`-' and `]' are not special there).
+
+ Note that a complement character set can match a newline, unless
+ newline is mentioned as one of the characters not to match.
+
+`^'
+ is a special character that matches the empty string, but only if
+ at the beginning of a line in the text being matched. Otherwise
+ it fails to match anything. Thus, `^foo' matches a `foo' which
+ occurs at the beginning of a line.
+
+`$'
+ is similar to `^' but matches only at the end of a line. Thus,
+ `xx*$' matches a string of one `x' or more at the end of a line.
+
+`\'
+ has two functions: it quotes the special characters (including
+ `\'), and it introduces additional special constructs.
+
+ Because `\' quotes special characters, `\$' is a regular
+ expression which matches only `$', and `\[' is a regular
+ expression which matches only `[', and so on.
+
+ Note: for historical compatibility, special characters are treated as
+ordinary ones if they are in contexts where their special meanings make
+no sense. For example, `*foo' treats `*' as ordinary since there is no
+preceding expression on which the `*' can act. It is poor practice to
+depend on this behavior; better to quote the special character anyway,
+regardless of where is appears.
+
+ For the most part, `\' followed by any character matches only that
+character. However, there are several exceptions: characters which,
+when preceded by `\', are special constructs. Such characters are
+always ordinary when encountered on their own. Here is a table of `\'
+constructs.
+
+`\|'
+ specifies an alternative. Two regular expressions A and B with
+ `\|' in between form an expression that matches anything that
+ either A or B will match.
+
+ Thus, `foo\|bar' matches either `foo' or `bar' but no other string.
+
+ `\|' applies to the largest possible surrounding expressions.
+ Only a surrounding `\( ... \)' grouping can limit the grouping
+ power of `\|'.
+
+ Full backtracking capability exists to handle multiple uses of
+ `\|'.
+
+`\( ... \)'
+ is a grouping construct that serves three purposes:
+
+ 1. To enclose a set of `\|' alternatives for other operations.
+ Thus, `\(foo\|bar\)x' matches either `foox' or `barx'.
+
+ 2. To enclose a complicated expression for the postfix `*' to
+ operate on. Thus, `ba\(na\)*' matches `bananana', etc., with
+ any (zero or more) number of `na' strings.
+
+ 3. To mark a matched substring for future reference.
+
+
+ This last application is not a consequence of the idea of a
+ parenthetical grouping; it is a separate feature which happens to
+ be assigned as a second meaning to the same `\( ... \)' construct
+ because there is no conflict in practice between the two meanings.
+ Here is an explanation of this feature:
+
+`\DIGIT'
+ after the end of a `\( ... \)' construct, the matcher remembers the
+ beginning and end of the text matched by that construct. Then,
+ later on in the regular expression, you can use `\' followed by
+ DIGIT to mean "match the same text matched the DIGIT'th time by the
+ `\( ... \)' construct."
+
+ The strings matching the first nine `\( ... \)' constructs
+ appearing in a regular expression are assigned numbers 1 through 9
+ in order that the open-parentheses appear in the regular
+ expression. `\1' through `\9' may be used to refer to the text
+ matched by the corresponding `\( ... \)' construct.
+
+ For example, `\(.*\)\1' matches any newline-free string that is
+ composed of two identical halves. The `\(.*\)' matches the first
+ half, which may be anything, but the `\1' that follows must match
+ the same exact text.
+
+`\`'
+ matches the empty string, provided it is at the beginning of the
+ buffer.
+
+`\''
+ matches the empty string, provided it is at the end of the buffer.
+
+`\b'
+ matches the empty string, provided it is at the beginning or end
+ of a word. Thus, `\bfoo\b' matches any occurrence of `foo' as a
+ separate word. `\bballs?\b' matches `ball' or `balls' as a
+ separate word.
+
+`\B'
+ matches the empty string, provided it is not at the beginning or
+ end of a word.
+
+`\<'
+ matches the empty string, provided it is at the beginning of a
+ word.
+
+`\>'
+ matches the empty string, provided it is at the end of a word.
+
+`\w'
+ matches any word-constituent character. The editor syntax table
+ determines which characters these are.
+
+`\W'
+ matches any character that is not a word-constituent.
+
+`\sCODE'
+ matches any character whose syntax is CODE. CODE is a character
+ which represents a syntax code: thus, `w' for word constituent,
+ `-' for whitespace, `(' for open-parenthesis, etc. *Note Syntax::.
+
+`\SCODE'
+ matches any character whose syntax is not CODE.
+
+ Here is a complicated regexp, used by Emacs to recognize the end of a
+sentence together with any whitespace that follows. It is given in Lisp
+syntax to enable you to distinguish the spaces from the tab characters.
+ In Lisp syntax, the string constant begins and ends with a
+double-quote. `\"' stands for a double-quote as part of the regexp,
+`\\' for a backslash as part of the regexp, `\t' for a tab and `\n' for
+a newline.
+
+ "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*"
+
+This contains four parts in succession: a character set matching period,
+`?' or `!'; a character set matching close-brackets, quotes or
+parentheses, repeated any number of times; an alternative in
+backslash-parentheses that matches end-of-line, a tab or two spaces;
+and a character set matching whitespace characters, repeated any number
+of times.
+
+ Note that the above example shows how to write this regexp when
+entering it as part of an Emacs Lisp program. To enter the same regexp
+in an interactive command such as `re-search-forward' you must spell it
+differently:
+
+ [.?!][]"')]*\($\|^Q^I\| \)[ ^Q^I^Q^J]*
+
+
+File: emacs, Node: Search Case, Next: Replace, Prev: Regexps, Up: Search
+
+Searching and Case
+==================
+
+ All sorts of searches in Emacs normally ignore the case of the text
+they are searching through; if you specify searching for `FOO', then
+`Foo' and `foo' are also considered a match. Regexps, and in
+particular character sets, are included: `[aB]' would match `a' or `A'
+or `b' or `B'.
+
+ If you do not want this feature, set the variable `case-fold-search'
+to `nil'. Then all letters must match exactly, including case. This
+is a per-buffer variable; altering the variable affects only the current
+buffer, but there is a default value which you can change as well.
+*Note Locals::.
+
+
+File: emacs, Node: Replace, Next: Other Repeating Search, Prev: Search Case, Up: Search
+
+Replacement Commands
+====================
+
+ Global search-and-replace operations are not needed as often in
+Emacs as they are in other editors, but they are available. In
+addition to the simple `replace-string' command which is like that
+found in most editors, there is a `query-replace' command which asks
+you, for each occurrence of the pattern, whether to replace it.
+
+ The replace commands all replace one string (or regexp) with one
+replacement string. It is possible to perform several replacements in
+parallel using the command `expand-region-abbrevs'. *Note Expanding
+Abbrevs::.
+
+* Menu:
+
+* Unconditional Replace:: Replacing all matches for a string.
+* Regexp Replace:: Replacing all matches for a regexp.
+* Replacement and Case:: How replacements preserve case of letters.
+* Query Replace:: How to use querying.
+
+
+File: emacs, Node: Unconditional Replace, Next: Regexp Replace, Prev: Replace, Up: Replace
+
+Unconditional Replacement
+-------------------------
+
+`M-x replace-string RET STRING RET NEWSTRING RET'
+ Replace every occurrence of STRING with NEWSTRING.
+
+`M-x replace-regexp RET REGEXP RET NEWSTRING RET'
+ Replace every match for REGEXP with NEWSTRING.
+
+ To replace every instance of `foo' after point with `bar', use the
+command `M-x replace-string' with the two arguments `foo' and `bar'.
+Replacement occurs only after point, so if you want to cover the whole
+buffer you must go to the beginning first. All occurrences up to the
+end of the buffer are replaced; to limit replacement to part of the
+buffer, narrow to that part of the buffer before doing the replacement
+(*note Narrowing::.).
+
+ When `replace-string' exits, point is left at the last occurrence
+replaced. The value of point when the `replace-string' command was
+issued is remembered on the mark ring; `C-u C-SPC' moves back there.
+
+ A numeric argument restricts replacement to matches that are
+surrounded by word boundaries.
+
+
+File: emacs, Node: Regexp Replace, Next: Replacement and Case, Prev: Unconditional Replace, Up: Replace
+
+Regexp Replacement
+------------------
+
+ `replace-string' replaces exact matches for a single string. The
+similar command `replace-regexp' replaces any match for a specified
+pattern.
+
+ In `replace-regexp', the NEWSTRING need not be constant. It can
+refer to all or part of what is matched by the REGEXP. `\&' in
+NEWSTRING stands for the entire text being replaced. `\D' in NEWSTRING,
+where D is a digit, stands for whatever matched the D'th parenthesized
+grouping in REGEXP. For example,
+
+ M-x replace-regexp RET c[ad]+r RET \&-safe RET
+
+would replace (for example) `cadr' with `cadr-safe' and `cddr' with
+`cddr-safe'.
+
+ M-x replace-regexp RET \(c[ad]+r\)-safe RET \1 RET
+
+would perform exactly the opposite replacements. To include a `\' in
+the text to replace with, you must give `\\'.
+
+
+File: emacs, Node: Replacement and Case, Next: Query Replace, Prev: Regexp Replace, Up: Replace
+
+Replace Commands and Case
+-------------------------
+
+ If the arguments to a replace command are in lower case, it preserves
+case when it makes a replacement. Thus, the command
+
+ M-x replace-string RET foo RET bar RET
+
+replaces a lower case `foo' with a lower case `bar', `FOO' with `BAR',
+and `Foo' with `Bar'. If upper case letters are used in the second
+argument, they remain upper case every time that argument is inserted.
+If upper case letters are used in the first argument, the second
+argument is always substituted exactly as given, with no case
+conversion. Likewise, if the variable `case-replace' is set to `nil',
+replacement is done without case conversion. If `case-fold-search' is
+set to `nil', case is significant in matching occurrences of `foo' to
+replace; also, case conversion of the replacement string is not done.
+
+
+File: emacs, Node: Query Replace, Prev: Replacement and Case, Up: Replace
+
+Query Replace
+-------------
+
+`M-% STRING RET NEWSTRING RET'
+`M-x query-replace RET STRING RET NEWSTRING RET'
+ Replace some occurrences of STRING with NEWSTRING.
+
+`M-x query-replace-regexp RET REGEXP RET NEWSTRING RET'
+ Replace some matches for REGEXP with NEWSTRING.
+
+ If you want to change only some of the occurrences of `foo' to
+`bar', not all of them, then you cannot use an ordinary
+`replace-string'. Instead, use `M-%' (`query-replace'). This command
+finds occurrences of `foo' one by one, displays each occurrence and
+asks you whether to replace it. A numeric argument to `query-replace'
+tells it to consider only occurrences that are bounded by
+word-delimiter characters.
+
+ Aside from querying, `query-replace' works just like
+`replace-string', and `query-replace-regexp' works just like
+`replace-regexp'.
+
+ The things you can type when you are shown an occurrence of STRING
+or a match for REGEXP are:
+
+`SPC'
+ to replace the occurrence with NEWSTRING. This preserves case,
+ just like `replace-string', provided `case-replace' is non-`nil',
+ as it normally is.
+
+`DEL'
+ to skip to the next occurrence without replacing this one.
+
+`, (Comma)'
+ to replace this occurrence and display the result. You are then
+ asked for another input character, except that since the
+ replacement has already been made, DEL and SPC are equivalent.
+ You could type `C-r' at this point (see below) to alter the
+ replaced text. You could also type `C-x u' to undo the
+ replacement; this exits the `query-replace', so if you want to do
+ further replacement you must use `C-x ESC' to restart (*note
+ Repetition::.).
+
+`ESC'
+ to exit without doing any more replacements.
+
+`. (Period)'
+ to replace this occurrence and then exit.
+
+`!'
+ to replace all remaining occurrences without asking again.
+
+`^'
+ to go back to the location of the previous occurrence (or what
+ used to be an occurrence), in case you changed it by mistake.
+ This works by popping the mark ring. Only one `^' in a row is
+ allowed, because only one previous replacement location is kept
+ during `query-replace'.
+
+`C-r'
+ to enter a recursive editing level, in case the occurrence needs
+ to be edited rather than just replaced with NEWSTRING. When you
+ are done, exit the recursive editing level with `C-M-c' and the
+ next occurrence will be displayed. *Note Recursive Edit::.
+
+`C-w'
+ to delete the occurrence, and then enter a recursive editing level
+ as in `C-r'. Use the recursive edit to insert text to replace the
+ deleted occurrence of STRING. When done, exit the recursive
+ editing level with `C-M-c' and the next occurrence will be
+ displayed.
+
+`C-l'
+ to redisplay the screen and then give another answer.
+
+`C-h'
+ to display a message summarizing these options, then give another
+ answer.
+
+ If you type any other character, the `query-replace' is exited, and
+the character executed as a command. To restart the `query-replace',
+use `C-x ESC', which repeats the `query-replace' because it used the
+minibuffer to read its arguments. *Note C-x ESC: Repetition.
+
+ To replace every occurrence, you can start `query-replace' at the
+beginning of the buffer and type `!', or you can use the
+`replace-string' command at the beginning of the buffer. To replace
+every occurrence in a part of the buffer, narrow to that part and then
+run `replace-string' or `query-replace' at the beginning of it. *Note
+Narrowing::.
+
+
+File: emacs, Node: Other Repeating Search, Prev: Replace, Up: Search
+
+Other Search-and-Loop Commands
+==============================
+
+ Here are some other commands that find matches for a regular
+expression. They all operate from point to the end of the buffer.
+
+`M-x occur'
+ Print each line that follows point and contains a match for the
+ specified regexp. A numeric argument specifies the number of
+ context lines to print before and after each matching line; the
+ default is none.
+
+ The buffer `*Occur*' containing the output serves as a menu for
+ finding the occurrences in their original context. Find an
+ occurrence as listed in `*Occur*', position point there and type
+ `C-c C-c'; this switches to the buffer that was searched and moves
+ point to the original of the same occurrence.
+
+`M-x list-matching-lines'
+ Synonym for `M-x occur'.
+
+`M-x count-matches'
+ Print the number of matches following point for the specified
+ regexp.
+
+`M-x delete-non-matching-lines'
+ Delete each line that follows point and does not contain a match
+ for the specified regexp.
+
+`M-x delete-matching-lines'
+ Delete each line that follows point and contains a match for the
+ specified regexp.
+
+
+File: emacs, Node: Fixit, Next: Files, Prev: Search, Up: Top
+
+Commands for Fixing Typos
+*************************
+
+ In this chapter we describe the commands that are especially useful
+for the times when you catch a mistake in your text just after you have
+made it, or change your mind while composing text on line.
+
+* Menu:
+
+* Kill Errors:: Commands to kill a batch of recently entered text.
+* Transpose:: Exchanging two characters, words, lines, lists...
+* Fixing Case:: Correcting case of last word entered.
+* Spelling:: Apply spelling checker to a word, or a whole file.
+
+
+File: emacs, Node: Kill Errors, Next: Transpose, Prev: Fixit, Up: Fixit
+
+Killing Your Mistakes
+=====================
+
+`DEL'
+ Delete last character (`delete-backward-char').
+
+`M-DEL'
+ Kill last word (`backward-kill-word').
+
+`C-x DEL'
+ Kill to beginning of sentence (`backward-kill-sentence').
+
+ The DEL character (`delete-backward-char') is the most important
+correction command. When used among graphic (self-inserting)
+characters, it can be thought of as canceling the last character typed.
+
+ When your mistake is longer than a couple of characters, it might be
+more convenient to use `M-DEL' or `C-x DEL'. `M-DEL' kills back to the
+start of the last word, and `C-x DEL' kills back to the start of the
+last sentence. `C-x DEL' is particularly useful when you are thinking
+of what to write as you type it, in case you change your mind about
+phrasing. `M-DEL' and `C-x DEL' save the killed text for `C-y' and
+`M-y' to retrieve. *Note Yanking::.
+
+ `M-DEL' is often useful even when you have typed only a few
+characters wrong, if you know you are confused in your typing and aren't
+sure exactly what you typed. At such a time, you cannot correct with
+DEL except by looking at the screen to see what you did. It requires
+less thought to kill the whole word and start over again.
+
+
+File: emacs, Node: Transpose, Next: Fixing Case, Prev: Kill Errors, Up: Fixit
+
+Transposing Text
+================
+
+`C-t'
+ Transpose two characters (`transpose-chars').
+
+`M-t'
+ Transpose two words (`transpose-words').
+
+`C-M-t'
+ Transpose two balanced expressions (`transpose-sexps').
+
+`C-x C-t'
+ Transpose two lines (`transpose-lines').
+
+ The common error of transposing two characters can be fixed, when
+they are adjacent, with the `C-t' command (`transpose-chars').
+Normally, `C-t' transposes the two characters on either side of point.
+When given at the end of a line, rather than transposing the last
+character of the line with the newline, which would be useless, `C-t'
+transposes the last two characters on the line. So, if you catch your
+transposition error right away, you can fix it with just a `C-t'. If
+you don't catch it so fast, you must move the cursor back to between
+the two transposed characters. If you transposed a space with the last
+character of the word before it, the word motion commands are a good
+way of getting there. Otherwise, a reverse search (`C-r') is often the
+best way. *Note Search::.
+
+ `Meta-t' (`transpose-words') transposes the word before point with
+the word after point. It moves point forward over a word, dragging the
+word preceding or containing point forward as well. The punctuation
+characters between the words do not move. For example, `FOO, BAR'
+transposes into `BAR, FOO' rather than `BAR FOO,'.
+
+ `C-M-t' (`transpose-sexps') is a similar command for transposing two
+expressions (*note Lists::.), and `C-x C-t' (`transpose-lines')
+exchanges lines. They work like `M-t' except in determining the
+division of the text into syntactic units.
+
+ A numeric argument to a transpose command serves as a repeat count:
+it tells the transpose command to move the character (word, sexp, line)
+before or containing point across several other characters (words,
+sexps, lines). For example, `C-u 3 C-t' moves the character before
+point forward across three other characters. This is equivalent to
+repeating `C-t' three times. `C-u - 4 M-t' moves the word before point
+backward across four words. `C-u - C-M-t' would cancel the effect of
+plain `C-M-t'.
+
+ A numeric argument of zero is assigned a special meaning (because
+otherwise a command with a repeat count of zero would do nothing): to
+transpose the character (word, sexp, line) ending after point with the
+one ending after the mark.
+
+
+File: emacs, Node: Fixing Case, Next: Spelling, Prev: Transpose, Up: Fixit
+
+Case Conversion
+===============
+
+`M-- M-l'
+ Convert last word to lower case. Note `Meta--' is Meta-minus.
+
+`M-- M-u'
+ Convert last word to all upper case.
+
+`M-- M-c'
+ Convert last word to lower case with capital initial.
+
+ A very common error is to type words in the wrong case. Because of
+this, the word case-conversion commands `M-l', `M-u' and `M-c' have a
+special feature when used with a negative argument: they do not move the
+cursor. As soon as you see you have mistyped the last word, you can
+simply case-convert it and go on typing. *Note Case::.
+
+
+File: emacs, Node: Spelling, Prev: Fixing Case, Up: Fixit
+
+Checking and Correcting Spelling
+================================
+
+`M-$'
+ Check and correct spelling of word (`spell-word').
+
+`M-x spell-buffer'
+ Check and correct spelling of each word in the buffer.
+
+`M-x spell-region'
+ Check and correct spelling of each word in the region.
+
+`M-x spell-string'
+ Check spelling of specified word.
+
+ To check the spelling of the word before point, and optionally
+correct it as well, use the command `M-$' (`spell-word'). This command
+runs an inferior process containing the `spell' program to see whether
+the word is correct English. If it is not, it asks you to edit the
+word (in the minibuffer) into a corrected spelling, and then does a
+`query-replace' to substitute the corrected spelling for the old one
+throughout the buffer.
+
+ If you exit the minibuffer without altering the original spelling, it
+means you do not want to do anything to that word. Then the
+`query-replace' is not done.
+
+ `M-x spell-buffer' checks each word in the buffer the same way that
+`spell-word' does, doing a `query-replace' if appropriate for every
+incorrect word.
+
+ `M-x spell-region' is similar but operates only on the region, not
+the entire buffer.
+
+ `M-x spell-string' reads a string as an argument and checks whether
+that is a correctly spelled English word. It prints in the echo area a
+message giving the answer.
+
+
+File: emacs, Node: Files, Next: Buffers, Prev: Fixit, Up: Top
+
+File Handling
+*************
+
+ The basic unit of stored data in Unix is the "file". To edit a file,
+you must tell Emacs to examine the file and prepare a buffer containing
+a copy of the file's text. This is called "visiting" the file. Editing
+commands apply directly to text in the buffer; that is, to the copy
+inside Emacs. Your changes appear in the file itself only when you
+"save" the buffer back into the file.
+
+ In addition to visiting and saving files, Emacs can delete, copy,
+rename, and append to files, and operate on file directories.
+
+* Menu:
+
+* File Names:: How to type and edit file name arguments.
+* Visiting:: Visiting a file prepares Emacs to edit the file.
+* Saving:: Saving makes your changes permanent.
+* Reverting:: Reverting cancels all the changes not saved.
+* Auto Save:: Auto Save periodically protects against loss of data.
+* ListDir:: Listing the contents of a file directory.
+* Dired:: "Editing" a directory to delete, rename, etc.
+ the files in it.
+* Misc File Ops:: Other things you can do on files.
+
+ \ No newline at end of file