[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/undo.c
From: |
Richard M . Stallman |
Subject: |
[Emacs-diffs] Changes to emacs/src/undo.c |
Date: |
Sat, 29 Jan 2005 12:16:31 -0500 |
Index: emacs/src/undo.c
diff -c emacs/src/undo.c:1.63 emacs/src/undo.c:1.64
*** emacs/src/undo.c:1.63 Thu Dec 23 00:15:23 2004
--- emacs/src/undo.c Sat Jan 29 17:16:31 2005
***************
*** 519,525 ****
}
else if (EQ (car, Qnil))
{
! /* Element (nil prop val beg . end) is property change. */
Lisp_Object beg, end, prop, val;
prop = Fcar (cdr);
--- 519,525 ----
}
else if (EQ (car, Qnil))
{
! /* Element (nil PROP VAL BEG . END) is property change. */
Lisp_Object beg, end, prop, val;
prop = Fcar (cdr);
***************
*** 543,548 ****
--- 543,560 ----
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,595 ****
UNGCPRO;
return unbind_to (count, list);
}
!
void
syms_of_undo ()
{
--- 601,607 ----
UNGCPRO;
return unbind_to (count, list);
}
!
void
syms_of_undo ()
{
- [Emacs-diffs] Changes to emacs/src/undo.c,
Richard M . Stallman <=