[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/undo.c
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] Changes to emacs/src/undo.c |
Date: |
Tue, 08 Feb 2005 15:49:18 -0500 |
Index: emacs/src/undo.c
diff -c emacs/src/undo.c:1.69 emacs/src/undo.c:1.70
*** emacs/src/undo.c:1.69 Mon Feb 7 11:44:00 2005
--- emacs/src/undo.c Tue Feb 8 20:49:16 2005
***************
*** 556,571 ****
}
else if (EQ (car, Qapply))
{
! /* Element (apply FUNNAME . ARGS) means call FUNNAME to undo.
*/
car = Fcar (cdr);
if (INTEGERP (car))
{
! /* Long format: (apply DELTA START END FUNNAME . ARGS).
*/
! cdr = Fcdr (Fcdr (Fcdr (cdr)));
! car = Fcar (cdr);
}
! cdr = Fcdr (cdr);
! apply1 (car, cdr);
did_apply = 1;
}
else if (STRINGP (car) && INTEGERP (cdr))
--- 556,587 ----
}
else if (EQ (car, Qapply))
{
! /* Element (apply FUN . ARGS) means call FUN to undo. */
car = Fcar (cdr);
+ cdr = Fcdr (cdr);
if (INTEGERP (car))
{
! /* Long format: (apply DELTA START END FUN . ARGS). */
! Lisp_Object delta = car;
! Lisp_Object start = Fcar (cdr);
! Lisp_Object end = Fcar (Fcdr (cdr));
! Lisp_Object start_mark = Fcopy_marker (start, Qnil);
! Lisp_Object end_mark = Fcopy_marker (end, Qt);
!
! cdr = Fcdr (Fcdr (cdr));
! apply1 (Fcar (cdr), Fcdr (cdr));
!
! /* Check that the function did what the entry said it
! would do. */
! if (!EQ (start, Fmarker_position (start_mark))
! || (XINT (delta) + XINT (end)
! != marker_position (end_mark)))
! error ("Changes to be undone by function different than
announced");
! Fset_marker (start_mark, Qnil, Qnil);
! Fset_marker (end_mark, Qnil, Qnil);
}
! else
! apply1 (car, cdr);
did_apply = 1;
}
else if (STRINGP (car) && INTEGERP (cdr))