aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier <[email protected]>2005-04-12 22:52:52 +0000
committerStefan Monnier <[email protected]>2005-04-12 22:52:52 +0000
commit203eb0aa1d75155378080885ad4a1123fe355ba8 (patch)
tree599b6e2c1fd13d5eb6e67026942b93c4e9e599a3 /src
parentdc56fc01ff1ff4950432c445ac0325920a70d6e4 (diff)
(Fset_window_configuration): Be careful when you choose
among several possible points for the new_current_buffer.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog23
-rw-r--r--src/window.c19
2 files changed, 29 insertions, 13 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 2b3d6a0e5e..9a439dff8c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,22 +1,25 @@
+2005-04-12 Stefan Monnier <[email protected]>
+
+ * window.c (Fset_window_configuration): Be careful when you choose
+ among several possible points for the new_current_buffer.
+
2005-04-12 YAMAMOTO Mitsuharu <[email protected]>
* 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.
+ (syms_of_macterm): Delete DEFVAR_INT for mac-keyboard-text-encoding.
- * termhooks.h (enum event_kind) [MAC_OS]: Add
- LANGUAGE_CHANGE_EVENT.
+ * termhooks.h (enum event_kind) [MAC_OS]:
+ Add LANGUAGE_CHANGE_EVENT.
2005-04-10 Richard M. Stallman <[email protected]>
@@ -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 <[email protected]>
@@ -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 <[email protected]>
diff --git a/src/window.c b/src/window.c
index 988b663cbb..1070f8cf37 100644
--- a/src/window.c
+++ b/src/window.c
@@ -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 @@ the return value is nil. Otherwise the value is t. */)
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;