From cbc1b668f313eac593d1de971d9c425629a41e28 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Tue, 24 Mar 1998 05:41:38 +0000 Subject: [PATCH] (record_delete): Record last_point_position when there's no record other than marker adjustment before undo boundary. --- src/undo.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/undo.c b/src/undo.c index af57c4352b..ceaf3b421d 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 (); -- 2.20.1