emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r115276: * src/window.c (Fset_window_configuration):


From: Stefan Monnier
Subject: [Emacs-diffs] trunk r115276: * src/window.c (Fset_window_configuration): Move select_window later.
Date: Fri, 29 Nov 2013 01:14:14 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 115276
revision-id: address@hidden
parent: address@hidden
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Thu 2013-11-28 20:14:01 -0500
message:
  * src/window.c (Fset_window_configuration): Move select_window later.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/window.c                   window.c-20091113204419-o5vbwnq5f7feedwu-231
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-11-28 22:43:09 +0000
+++ b/src/ChangeLog     2013-11-29 01:14:01 +0000
@@ -1,3 +1,7 @@
+2013-11-29  Stefan Monnier  <address@hidden>
+
+       * window.c (Fset_window_configuration): Move select_window later.
+
 2013-11-28  Stefan Monnier  <address@hidden>
 
        Refine redisplay optimizations to only redisplay *some* frames/windows

=== modified file 'src/window.c'
--- a/src/window.c      2013-11-28 22:43:09 +0000
+++ b/src/window.c      2013-11-29 01:14:01 +0000
@@ -5742,14 +5742,6 @@
                               make_number (old_point),
                               XWINDOW (data->current_window)->contents);
 
-      /* In the following call to `select-window', prevent "swapping out
-        point" in the old selected window using the buffer that has
-        been restored into it.  We already swapped out that point from
-        that window's old buffer.  */
-      select_window (data->current_window, Qnil, 1);
-      BVAR (XBUFFER (XWINDOW (selected_window)->contents), 
last_selected_window)
-       = selected_window;
-
       if (NILP (data->focus_frame)
          || (FRAMEP (data->focus_frame)
              && FRAME_LIVE_P (XFRAME (data->focus_frame))))
@@ -5800,6 +5792,20 @@
            delete_deletable_window (window);
        }
 
+      /* In the following call to `select-window', prevent "swapping out
+        point" in the old selected window using the buffer that has
+        been restored into it.  We already swapped out that point from
+        that window's old buffer.  */
+      /* This `select_window' calls record_buffer which calls Fdelq which
+        invokes QUIT, so we do it here at the end rather than earlier,
+        to minimize the risk of interrupting the Fset_window_configuration
+        in an inconsistent state (e.g. before frame-focus redirection is
+        canceled).  */
+      select_window (data->current_window, Qnil, 1);
+      BVAR (XBUFFER (XWINDOW (selected_window)->contents),
+           last_selected_window)
+       = selected_window;
+
       /* Fselect_window will have made f the selected frame, so we
         reselect the proper frame here.  Fhandle_switch_frame will change the
         selected window too, but that doesn't make the call to


reply via email to

[Prev in Thread] Current Thread [Next in Thread]