diff options
author | Richard M. Stallman <rms@gnu.org> | 1994-05-07 08:38:28 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1994-05-07 08:38:28 +0000 |
commit | e7a8b7911b45c73cab0c17130517c3d401c6b6d0 (patch) | |
tree | c72e920584a2b30acbce94138aedbeec0d5ce803 /src/undo.c | |
parent | bad5d9129ffe7b02378130d5e0879cbbd7a905ff (diff) | |
download | emacs-e7a8b7911b45c73cab0c17130517c3d401c6b6d0.tar.gz |
(record_delete): Record the old point value only right after a boundary.
(record_delete): Test last_point_position_buffer.
Diffstat (limited to 'src/undo.c')
-rw-r--r-- | src/undo.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/undo.c b/src/undo.c index e9ba53f8631..4733694ff31 100644 --- a/src/undo.c +++ b/src/undo.c @@ -89,6 +89,7 @@ record_delete (beg, length) int beg, length; { Lisp_Object lbeg, lend, sbeg; + int at_boundary; if (EQ (current_buffer->undo_list, Qt)) return; @@ -101,6 +102,9 @@ record_delete (beg, length) Fundo_boundary (); XSET (last_undo_buffer, Lisp_Buffer, current_buffer); + at_boundary = (CONSP (current_buffer->undo_list) + && NILP (XCONS (current_buffer->undo_list)->car)); + if (MODIFF <= current_buffer->save_modified) record_first_change (); @@ -111,8 +115,11 @@ record_delete (beg, length) XFASTINT (lbeg) = beg; XFASTINT (lend) = beg + length; - /* If point wasn't at start of deleted range, record where it was. */ - if (last_point_position != XFASTINT (sbeg)) + /* If we are just after an undo boundary, and + point wasn't at start of deleted range, record where it was. */ + if (at_boundary + && last_point_position != XFASTINT (sbeg) + && current_buffer == XBUFFER (last_point_position_buffer)) current_buffer->undo_list = Fcons (make_number (last_point_position), current_buffer->undo_list); |