annotate src/undo.c @ 1016:817b0ce337d7

* window.c (Fset_window_configuration): Removed #if 0'd code which assumes that minibuf_window is on the same frame as the window configuration. Removed special case for windows whose prevs point to themselves. * window.c (Fset_window_configuration): Rename the argument from ARG to CONFIGURATION, so it matches the docstring. The make-docfile program cares. * window.c [MULTI_FRAME] (syms_of_window): Don't staticpro minibuf_window; the frame list will take care of it. * window.c (window_loop): This used to keep track of the first window processed and wait until we came back around to it. Sadly, this doesn't work if that window gets deleted. So instead, use Fprevious_window to find the last window to process, and loop until we've done that one. * window.c [not MULTI_FRAME] (init_window_once): Don't forget to set the `mini_p' flag on the new minibuffer window to t. * window.c (Fwindow_at): Don't check the type of the frame argument. * window.c [not MULTI_FRAME] (window_loop): Set frame to zero, instead of trying to decode it. * window.c (init_window_once): Initialize minibuf_window before FRAME_ROOT_WINDOW, so the latter actually points to something.
author Jim Blandy <jimb@redhat.com>
date Wed, 19 Aug 1992 06:40:02 +0000
parents 47f6041d85e6
children 68c77558d34b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* undo handling for GNU Emacs.
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2 Copyright (C) 1990 Free Software Foundation, Inc.
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is distributed in the hope that it will be useful,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 but WITHOUT ANY WARRANTY. No author or distributor
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 accepts responsibility to anyone for the consequences of using it
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 or for whether it serves any particular purpose or works at all,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 unless he says so in writing. Refer to the GNU Emacs General Public
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 License for full details.
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 Everyone is granted permission to copy, modify and redistribute
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU Emacs, but only under the conditions described in the
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 GNU Emacs General Public License. A copy of this license is
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 supposed to have been given to you along with GNU Emacs so you
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 can know your rights and responsibilities. It should be in a
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 file named COPYING. Among other things, the copyright notice
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 and this notice must be preserved on all copies. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 #include "config.h"
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include "lisp.h"
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include "buffer.h"
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 /* Last buffer for which undo information was recorded. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 Lisp_Object last_undo_buffer;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29 /* Record an insertion that just happened or is about to happen,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 for LENGTH characters at position BEG.
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 (It is possible to record an insertion before or after the fact
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 because we don't need to record the contents.) */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 record_insert (beg, length)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 Lisp_Object beg, length;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 Lisp_Object lbeg, lend;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 if (current_buffer != XBUFFER (last_undo_buffer))
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 Fundo_boundary ();
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 XSET (last_undo_buffer, Lisp_Buffer, current_buffer);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 if (EQ (current_buffer->undo_list, Qt))
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 return;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 if (MODIFF <= current_buffer->save_modified)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 record_first_change ();
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 /* If this is following another insertion and consecutive with it
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 in the buffer, combine the two. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 if (XTYPE (current_buffer->undo_list) == Lisp_Cons)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 Lisp_Object elt;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 elt = XCONS (current_buffer->undo_list)->car;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 if (XTYPE (elt) == Lisp_Cons
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 && XTYPE (XCONS (elt)->car) == Lisp_Int
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 && XTYPE (XCONS (elt)->cdr) == Lisp_Int
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 && XINT (XCONS (elt)->cdr) == beg)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 XSETINT (XCONS (elt)->cdr, beg + length);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 return;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 XFASTINT (lbeg) = beg;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 XFASTINT (lend) = beg + length;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 current_buffer->undo_list = Fcons (Fcons (lbeg, lend), current_buffer->undo_list);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 /* Record that a deletion is about to take place,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 for LENGTH characters at location BEG. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 record_delete (beg, length)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 int beg, length;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 Lisp_Object lbeg, lend, sbeg;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 if (current_buffer != XBUFFER (last_undo_buffer))
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 Fundo_boundary ();
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 XSET (last_undo_buffer, Lisp_Buffer, current_buffer);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 if (EQ (current_buffer->undo_list, Qt))
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 return;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 if (MODIFF <= current_buffer->save_modified)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 record_first_change ();
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 if (point == beg + length)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 XSET (sbeg, Lisp_Int, -beg);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 else
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 XFASTINT (sbeg) = beg;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 XFASTINT (lbeg) = beg;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 XFASTINT (lend) = beg + length;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 current_buffer->undo_list
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 = Fcons (Fcons (Fbuffer_substring (lbeg, lend), sbeg),
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 current_buffer->undo_list);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 /* Record that a replacement is about to take place,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 for LENGTH characters at location BEG.
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 The replacement does not change the number of characters. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 record_change (beg, length)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 int beg, length;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 record_delete (beg, length);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 record_insert (beg, length);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 /* Record that an unmodified buffer is about to be changed.
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 Record the file modification date so that when undoing this entry
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 we can tell whether it is obsolete because the file was saved again. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 record_first_change ()
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 Lisp_Object high, low;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 XFASTINT (high) = (current_buffer->modtime >> 16) & 0xffff;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 XFASTINT (low) = current_buffer->modtime & 0xffff;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 current_buffer->undo_list = Fcons (Fcons (Qt, Fcons (high, low)), current_buffer->undo_list);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 DEFUN ("undo-boundary", Fundo_boundary, Sundo_boundary, 0, 0, 0,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 "Mark a boundary between units of undo.\n\
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 An undo command will stop at this point,\n\
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 but another undo command will undo to the previous boundary.")
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 ()
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 Lisp_Object tem;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 if (EQ (current_buffer->undo_list, Qt))
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 return Qnil;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 tem = Fcar (current_buffer->undo_list);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 241
diff changeset
130 if (!NILP (tem))
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 current_buffer->undo_list = Fcons (Qnil, current_buffer->undo_list);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 return Qnil;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 /* At garbage collection time, make an undo list shorter at the end,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 returning the truncated list.
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 MINSIZE and MAXSIZE are the limits on size allowed, as described below.
761
4dffad9d353d entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 544
diff changeset
138 In practice, these are the values of undo-limit and
4dffad9d353d entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 544
diff changeset
139 undo-strong-limit. */
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 Lisp_Object
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 truncate_undo_list (list, minsize, maxsize)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 Lisp_Object list;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 int minsize, maxsize;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 Lisp_Object prev, next, last_boundary;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 int size_so_far = 0;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 prev = Qnil;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 next = list;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 last_boundary = Qnil;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 /* Always preserve at least the most recent undo record.
241
f108a48f6e86 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 223
diff changeset
154 If the first element is an undo boundary, skip past it.
f108a48f6e86 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 223
diff changeset
155
f108a48f6e86 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 223
diff changeset
156 Skip, skip, skip the undo, skip, skip, skip the undo,
970
47f6041d85e6 Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 761
diff changeset
157 Skip, skip, skip the undo, skip to the undo bound'ry.
47f6041d85e6 Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 761
diff changeset
158 (Get it? "Skip to my Loo?") */
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 if (XTYPE (next) == Lisp_Cons
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 && XCONS (next)->car == Qnil)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 /* Add in the space occupied by this element and its chain link. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 size_so_far += sizeof (struct Lisp_Cons);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 /* Advance to next element. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 prev = next;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 next = XCONS (next)->cdr;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 while (XTYPE (next) == Lisp_Cons
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 && XCONS (next)->car != Qnil)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 Lisp_Object elt;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 elt = XCONS (next)->car;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 /* Add in the space occupied by this element and its chain link. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 size_so_far += sizeof (struct Lisp_Cons);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 if (XTYPE (elt) == Lisp_Cons)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 size_so_far += sizeof (struct Lisp_Cons);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 if (XTYPE (XCONS (elt)->car) == Lisp_String)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 size_so_far += (sizeof (struct Lisp_String) - 1
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 + XSTRING (XCONS (elt)->car)->size);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 /* Advance to next element. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 prev = next;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 next = XCONS (next)->cdr;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 if (XTYPE (next) == Lisp_Cons)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 last_boundary = prev;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 while (XTYPE (next) == Lisp_Cons)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 Lisp_Object elt;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 elt = XCONS (next)->car;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 /* When we get to a boundary, decide whether to truncate
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 either before or after it. The lower threshold, MINSIZE,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 tells us to truncate after it. If its size pushes past
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 the higher threshold MAXSIZE as well, we truncate before it. */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 241
diff changeset
201 if (NILP (elt))
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 if (size_so_far > maxsize)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 break;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 last_boundary = prev;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 if (size_so_far > minsize)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 break;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 /* Add in the space occupied by this element and its chain link. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 size_so_far += sizeof (struct Lisp_Cons);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 if (XTYPE (elt) == Lisp_Cons)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 size_so_far += sizeof (struct Lisp_Cons);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 if (XTYPE (XCONS (elt)->car) == Lisp_String)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 size_so_far += (sizeof (struct Lisp_String) - 1
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 + XSTRING (XCONS (elt)->car)->size);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 /* Advance to next element. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 prev = next;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 next = XCONS (next)->cdr;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 /* If we scanned the whole list, it is short enough; don't change it. */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 241
diff changeset
226 if (NILP (next))
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 return list;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 /* Truncate at the boundary where we decided to truncate. */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 241
diff changeset
230 if (!NILP (last_boundary))
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 XCONS (last_boundary)->cdr = Qnil;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 return list;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 else
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 return Qnil;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 DEFUN ("primitive-undo", Fprimitive_undo, Sprimitive_undo, 2, 2, 0,
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 "Undo N records from the front of the list LIST.\n\
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 Return what remains of the list.")
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 (count, list)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 Lisp_Object count, list;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 register int arg = XINT (count);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 #if 0 /* This is a good feature, but would make undo-start
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 unable to do what is expected. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 Lisp_Object tem;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 /* If the head of the list is a boundary, it is the boundary
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 preceding this command. Get rid of it and don't count it. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 tem = Fcar (list);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 241
diff changeset
253 if (NILP (tem))
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 list = Fcdr (list);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 #endif
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 while (arg > 0)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 while (1)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 Lisp_Object next, car, cdr;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 next = Fcar (list);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 list = Fcdr (list);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 241
diff changeset
264 if (NILP (next))
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 break;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 car = Fcar (next);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 cdr = Fcdr (next);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 if (EQ (car, Qt))
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 Lisp_Object high, low;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 int mod_time;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 high = Fcar (cdr);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 low = Fcdr (cdr);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 mod_time = (high << 16) + low;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 /* If this records an obsolete save
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 (not matching the actual disk file)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 then don't mark unmodified. */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 if (mod_time != current_buffer->modtime)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 break;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 #ifdef CLASH_DETECTION
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 Funlock_buffer ();
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 #endif /* CLASH_DETECTION */
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 Fset_buffer_modified_p (Qnil);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 else if (XTYPE (car) == Lisp_Int && XTYPE (cdr) == Lisp_Int)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 Lisp_Object end;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 if (XINT (car) < BEGV
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 || XINT (cdr) > ZV)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 error ("Changes to be undone are outside visible portion of buffer");
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 Fdelete_region (car, cdr);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 Fgoto_char (car);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 else if (XTYPE (car) == Lisp_String && XTYPE (cdr) == Lisp_Int)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 Lisp_Object membuf;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 int pos = XINT (cdr);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 membuf = car;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 if (pos < 0)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 if (-pos < BEGV || -pos > ZV)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 error ("Changes to be undone are outside visible portion of buffer");
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 SET_PT (-pos);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 Finsert (1, &membuf);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 else
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 if (pos < BEGV || pos > ZV)
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 error ("Changes to be undone are outside visible portion of buffer");
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 SET_PT (pos);
544
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
311
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
312 /* Insert before markers so that if the mark is
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
313 currently on the boundary of this deletion, it
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
314 ends up on the other side of the now-undeleted
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
315 text from point. Since undo doesn't even keep
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
316 track of the mark, this isn't really necessary,
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
317 but it may lead to better behavior in certain
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
318 situations. */
054dfe2f6327 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
319 Finsert_before_markers (1, &membuf);
223
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 SET_PT (pos);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 arg--;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 return list;
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 }
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 syms_of_undo ()
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 {
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 defsubr (&Sprimitive_undo);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 defsubr (&Sundo_boundary);
dbc50aaa4f08 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 }