mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-07 04:10:27 -08:00
(Fprimitive_undo): Handle (FUNNAME . ARGS) by calling FUNNAME.
This commit is contained in:
parent
2da637a538
commit
6887bce515
1 changed files with 14 additions and 2 deletions
16
src/undo.c
16
src/undo.c
|
|
@ -519,7 +519,7 @@ Return what remains of the list. */)
|
|||
}
|
||||
else if (EQ (car, Qnil))
|
||||
{
|
||||
/* Element (nil prop val beg . end) is property change. */
|
||||
/* Element (nil PROP VAL BEG . END) is property change. */
|
||||
Lisp_Object beg, end, prop, val;
|
||||
|
||||
prop = Fcar (cdr);
|
||||
|
|
@ -543,6 +543,18 @@ Return what remains of the list. */)
|
|||
Fgoto_char (car);
|
||||
Fdelete_region (car, cdr);
|
||||
}
|
||||
else if (SYMBOLP (car))
|
||||
{
|
||||
Lisp_Object oldlist = current_buffer->undo_list;
|
||||
/* Element (FUNNAME . ARGS) means call FUNNAME to undo. */
|
||||
apply1 (car, cdr);
|
||||
/* Make sure this produces at least one undo entry,
|
||||
so the test in `undo' for continuing an undo series
|
||||
will work right. */
|
||||
if (EQ (oldlist, current_buffer->undo_list))
|
||||
current_buffer->undo_list
|
||||
= Fcons (list2 (Qcdr, Qnil), current_buffer->undo_list);
|
||||
}
|
||||
else if (STRINGP (car) && INTEGERP (cdr))
|
||||
{
|
||||
/* Element (STRING . POS) means STRING was deleted. */
|
||||
|
|
@ -589,7 +601,7 @@ Return what remains of the list. */)
|
|||
UNGCPRO;
|
||||
return unbind_to (count, list);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
syms_of_undo ()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue