From 91e25f5e6f7c70de2e17cd4911bb07869cc9583f Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 26 Dec 2005 16:33:05 +0000 Subject: [PATCH] Depend on window.h. (record_point): Save old point from the correct window. --- src/ChangeLog | 11 +++++++++++ src/undo.c | 16 ++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1fca3cc1ba..43cfd1e5e1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +2005-12-26 Richard M. Stallman + + * undo.c: Depend on window.h. + (record_point): Save old point from the correct window. + + * keyboard.c (last_point_position_window): New variable. + (command_loop_1): Set last_point_position_window. + (syms_of_keyboard): Init it. + + * Makefile.in (undo.o): Depend on window.h. + 2005-12-25 Richard M. Stallman * eval.c (un_autoload): Expect (0 . OFEATURES) in Vautoload_queue diff --git a/src/undo.c b/src/undo.c index ecbb714fdd..bf774affac 100644 --- a/src/undo.c +++ b/src/undo.c @@ -24,6 +24,7 @@ Boston, MA 02110-1301, USA. */ #include "lisp.h" #include "buffer.h" #include "commands.h" +#include "window.h" /* Limits controlling how much undo information to keep. */ @@ -100,12 +101,19 @@ record_point (pt) /* 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 != pt - /* If we're called from batch mode, this could be nil. */ && BUFFERP (last_point_position_buffer) + /* If we're called from batch mode, this could be nil. */ && current_buffer == XBUFFER (last_point_position_buffer)) - current_buffer->undo_list - = Fcons (make_number (last_point_position), current_buffer->undo_list); + { + /* If we have switched windows, use the point value + from the window we are in. */ + if (! EQ (last_point_position_window, selected_window)) + last_point_position = marker_position (XWINDOW (selected_window)->pointm); + + if (last_point_position != pt) + current_buffer->undo_list + = Fcons (make_number (last_point_position), current_buffer->undo_list); + } } /* Record an insertion that just happened or is about to happen, -- 2.39.2