Mercurial > hg > xemacs-beta
annotate man/xemacs/undo.texi @ 5327:d1b17a33450b
Move the heavy lifting from cl-seq.el to C.
src/ChangeLog addition:
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
Move the heavy lifting from cl-seq.el to C, finally making those
functions first-class XEmacs citizens, with circularity checking,
built-in support for tests other than #'eql, and as much
compatibility with current Common Lisp as Paul Dietz' tests require.
* fns.c (check_eq_nokey, check_eq_key, check_eql_nokey)
(check_eql_key, check_equal_nokey, check_equal_key)
(check_equalp_nokey, check_equalp_key, check_string_match_nokey)
(check_string_match_key, check_other_nokey, check_other_key)
(check_if_nokey, check_if_key, check_match_eq_key)
(check_match_eql_key, check_match_equal_key)
(check_match_equalp_key, check_match_other_key): New. These are
basically to provide function pointers to be used by Lisp
functions that take TEST, TEST-NOT and KEY arguments.
(get_check_match_function_1, get_check_test_function)
(get_check_match_function): These functions work out which of the
previous list of functions to use, given the keywords supplied by
the user.
(count_with_tail): New. This is the bones of #'count.
(list_count_from_end, string_count_from_end): Utility functions
for #'count.
(Fcount): New, moved from cl-seq.el.
(list_position_cons_before): New. The implementation of #'member*,
and important in implementing various other functions.
(FmemberX, Fadjoin, FassocX, FrassocX, Fposition, Ffind)
(FdeleteX, FremoveX, Fdelete_duplicates, Fremove_duplicates)
(Fnsubstitute, Fsubstitute, Fsublis, Fnsublis, Fsubst, Fnsubst)
(Ftree_equal, Fmismatch, Fsearch, Fintersection, Fnintersection)
(Fsubsetp, Fset_difference, Fnset_difference, Fnunion, Funion)
(Fset_exclusive_or, Fnset_exclusive_or): New, moved here from
cl-seq.el.
(position): New. The implementation of #'find and #'position.
(list_delete_duplicates_from_end, subst, sublis, nsublis)
(tree_equal, mismatch_from_end, mismatch_list_list)
(mismatch_list_string, mismatch_list_array)
(mismatch_string_array, mismatch_string_string)
(mismatch_array_array, get_mismatch_func): Helper C functions for
the Lisp-visible functions.
(venn, nvenn): New. The implementation of the main Lisp functions that
treat lists as sets.
lisp/ChangeLog addition:
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
* cl-seq.el:
Move the heavy lifting from this file to C. Dump the
cl-parsing-keywords macro, but don't use defun* for the functions
we define that do take keywords, dynamic scope lossage makes that
not practical.
* subr.el (sort, fillarray): Move these aliases here.
(map-plist): #'nsublis is now built-in, but at this point #'eql
isn't necessarily available as a test; use #'eq.
* obsolete.el (cl-delete-duplicates): Make this available for old
compiler macros and old code.
(memql): Document that this is equivalent to #'member*, and worse.
* cl.el (adjoin, subst): Removed. These are in C.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Thu, 30 Dec 2010 01:59:52 +0000 |
parents | 376386a54a3c |
children |
rev | line source |
---|---|
0 | 1 |
2 @node Undo, Minibuffer, Basic, Top | |
3 @chapter Undoing Changes | |
4 @cindex undo | |
5 @cindex mistakes, correcting | |
6 | |
7 Emacs allows you to undo all changes you make to the text of a buffer, | |
8 up to a certain amount of change (8000 characters). Each buffer records | |
9 changes individually, and the undo command always applies to the | |
10 current buffer. Usually each editing command makes a separate entry | |
11 in the undo records, but some commands such as @code{query-replace} | |
12 make many entries, and very simple commands such as self-inserting | |
13 characters are often grouped to make undoing less tedious. | |
14 | |
15 @table @kbd | |
16 @item C-x u | |
17 Undo one batch of changes (usually, one command's worth) (@code{undo}). | |
18 @item C-_ | |
19 The same. | |
20 @end table | |
21 | |
22 @kindex C-x u | |
23 @kindex C-_ | |
24 @findex undo | |
25 The command @kbd{C-x u} or @kbd{C-_} allows you to undo changes. The | |
26 first time you give this command, it undoes the last change. Point | |
27 moves to the text affected by the undo, so you can see what was undone. | |
28 | |
29 Consecutive repetitions of the @kbd{C-_} or @kbd{C-x u} commands undo | |
30 earlier and earlier changes, back to the limit of what has been | |
31 recorded. If all recorded changes have already been undone, the undo | |
32 command prints an error message and does nothing. | |
33 | |
34 Any command other than an undo command breaks the sequence of undo | |
35 commands. Starting at this moment, the previous undo commands are | |
36 considered ordinary changes that can themselves be undone. Thus, you can | |
37 redo changes you have undone by typing @kbd{C-f} or any other command | |
38 that have no important effect, and then using more undo commands. | |
39 | |
40 If you notice that a buffer has been modified accidentally, the | |
41 easiest way to recover is to type @kbd{C-_} repeatedly until the stars | |
42 disappear from the front of the mode line. When that happens, all the | |
43 modifications you made have been canceled. If you do not remember | |
44 whether you changed the buffer deliberately, type @kbd{C-_} once. When | |
45 you see Emacs undo the last change you made, you probably remember why you | |
46 made it. If the change was an accident, leave it undone. If it was | |
47 deliberate, redo the change as described in the preceding paragraph. | |
48 | |
49 Whenever an undo command makes the stars disappear from the mode line, | |
50 the buffer contents is the same as it was when the file was last read in | |
51 or saved. | |
52 | |
53 Not all buffers record undo information. Buffers whose names start with | |
54 spaces don't; these buffers are used internally by Emacs and its extensions | |
55 to hold text that users don't normally look at or edit. Minibuffers, | |
56 help buffers, and documentation buffers also don't record undo information. | |
57 | |
58 Emacs can remember at most 8000 or so characters of deleted or | |
59 modified text in any one buffer for reinsertion by the undo command. | |
60 There is also a limit on the number of individual insert, delete, or | |
61 change actions that Emacs can remember. | |
62 | |
63 There are two keys to run the @code{undo} command, @kbd{C-x u} and | |
64 @kbd{C-_}, because on some keyboards, it is not obvious how to type | |
65 @kbd{C-_}. @kbd{C-x u} is an alternative you can type in the same | |
66 fashion on any terminal. |