From: Kenichi Handa Date: Tue, 24 Mar 1998 05:41:38 +0000 (+0000) Subject: (record_delete): Record last_point_position when there's X-Git-Tag: emacs-20.3~1802 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=cbc1b668f313eac593d1de971d9c425629a41e28;p=emacs.git (record_delete): Record last_point_position when there's no record other than marker adjustment before undo boundary. --- diff --git a/src/undo.c b/src/undo.c index af57c4352b1..ceaf3b421d2 100644 --- a/src/undo.c +++ b/src/undo.c @@ -105,8 +105,24 @@ record_delete (beg, string) Fundo_boundary (); XSETBUFFER (last_undo_buffer, current_buffer); - at_boundary = (CONSP (current_buffer->undo_list) - && NILP (XCONS (current_buffer->undo_list)->car)); + if (CONSP (current_buffer->undo_list)) + { + /* Set AT_BOUNDARY to 1 only when we have nothing other than + marker adjustment before undo boundary. */ + + Lisp_Object tail = current_buffer->undo_list, elt; + + while (1) + { + elt = XCONS (tail)->car; + if (NILP (elt) || ! (CONSP (elt) && MARKERP (XCONS (elt)->car))) + break; + tail = XCONS (tail)->cdr; + } + at_boundary = NILP (elt); + } + else + at_boundary = 0; if (MODIFF <= SAVE_MODIFF) record_first_change ();