# HG changeset patch # User Stefan Monnier # Date 1113346372 0 # Node ID db63a29e7669aafde2041d5a276708f335d9713b # Parent 1a65ed49d9181852267cb79a5ac4e0c963bbdcc1 (Fset_window_configuration): Be careful when you choose among several possible points for the new_current_buffer. diff -r 1a65ed49d918 -r db63a29e7669 src/ChangeLog --- a/src/ChangeLog Tue Apr 12 22:52:19 2005 +0000 +++ b/src/ChangeLog Tue Apr 12 22:52:52 2005 +0000 @@ -1,22 +1,25 @@ +2005-04-12 Stefan Monnier + + * window.c (Fset_window_configuration): Be careful when you choose + among several possible points for the new_current_buffer. + 2005-04-12 YAMAMOTO Mitsuharu * keyboard.c (poll_for_input) [SYNC_INPUT]: Don't call poll_for_input_1. Set interrupt_input_pending to 1 instead. (Qlanguage_change) [MAC_OS]: New variable. (syms_of_keyboard) [MAC_OS]: Intern and staticpro it. - (kbd_buffer_get_event) [MAC_OS]: Make event for - LANGUAGE_CHANGE_EVENT. + (kbd_buffer_get_event) [MAC_OS]: Make event for LANGUAGE_CHANGE_EVENT. * macterm.c (mac_keyboard_text_encoding) (current_mac_keyboard_text_encoding): Remove variables. (XTread_socket): Store language-change event if keyboard script change is detected. Don't convert input to `mac_keyboard_text_encoding'. - (syms_of_macterm): Delete DEFVAR_INT for - mac-keyboard-text-encoding. - - * termhooks.h (enum event_kind) [MAC_OS]: Add - LANGUAGE_CHANGE_EVENT. + (syms_of_macterm): Delete DEFVAR_INT for mac-keyboard-text-encoding. + + * termhooks.h (enum event_kind) [MAC_OS]: + Add LANGUAGE_CHANGE_EVENT. 2005-04-10 Richard M. Stallman @@ -68,8 +71,8 @@ * mac.c (cfdate_to_lisp): Add `const' for variable `epoch_gdate'. (Fmac_get_preference): Doc fix. - * macfns.c (Fx_create_frame, x_create_tip_frame): Add - "fontset-mac" to fallback font/fontsets. + * macfns.c (Fx_create_frame, x_create_tip_frame): + Add "fontset-mac" to fallback font/fontsets. 2005-04-04 Kim F. Storm @@ -100,8 +103,8 @@ Vascii_downcase_table. (fast_string_match_ignore_case): Likewise. (search_buffer): Fix checking of boyer-moore usability. - (boyer_moore): Calculate translate_prev_byte1/2/3 in advance. No - need of tranlating characters in PAT. Fix calculation of + (boyer_moore): Calculate translate_prev_byte1/2/3 in advance. + No need of tranlating characters in PAT. Fix calculation of simple_translate. 2005-03-31 Stefan Monnier diff -r 1a65ed49d918 -r db63a29e7669 src/window.c --- a/src/window.c Tue Apr 12 22:52:19 2005 +0000 +++ b/src/window.c Tue Apr 12 22:52:52 2005 +0000 @@ -1,7 +1,7 @@ /* Window creation, deletion and examination for GNU Emacs. Does not include redisplay. - Copyright (C) 1985,86,87, 1993,94,95,96,97,98, 2000,01,02,03,04 - Free Software Foundation, Inc. + Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 2000, + 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -5594,7 +5594,20 @@ if (XBUFFER (new_current_buffer) == current_buffer) old_point = PT; else - old_point = BUF_PT (XBUFFER (new_current_buffer)); + /* BUF_PT (XBUFFER (new_current_buffer)) gives us the position of + point in new_current_buffer as of the last time this buffer was + used. This can be non-deterministic since it can be changed by + things like jit-lock by mere temporary selection of some random + window that happens to show this buffer. + So if possible we want this arbitrary choice of "which point" to + be the one from the to-be-selected-window so as to prevent this + window's cursor from being copied from another window. */ + if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer) + /* If current_window = selected_window, its point is in BUF_PT. */ + && !EQ (selected_window, data->current_window)) + old_point = XMARKER (XWINDOW (data->current_window)->pointm)->charpos; + else + old_point = BUF_PT (XBUFFER (new_current_buffer)); } frame = XWINDOW (SAVED_WINDOW_N (saved_windows, 0)->window)->frame;