]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fset_window_configuration): Be careful when you choose
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 12 Apr 2005 22:52:52 +0000 (22:52 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 12 Apr 2005 22:52:52 +0000 (22:52 +0000)
among several possible points for the new_current_buffer.

src/ChangeLog
src/window.c

index 2b3d6a0e5e0c5e759cc709ffc347180ba915436f..9a439dff8ca6139932959bd0d98a099b35583f14 100644 (file)
@@ -1,22 +1,25 @@
+2005-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * window.c (Fset_window_configuration): Be careful when you choose
+       among several possible points for the new_current_buffer.
+
 2005-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * 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  <rms@gnu.org>
 
@@ -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  <storm@cua.dk>
 
        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  <monnier@iro.umontreal.ca>
index 988b663cbba26826886e764a657d15ab7b3bdb80..1070f8cf37c303b91ed963bf9540f79153d47c38 100644 (file)
@@ -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;