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