aboutsummaryrefslogtreecommitdiffstats
path: root/src/window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/window.c b/src/window.c
index ee3feb90b7b..ed2505a893f 100644
--- a/src/window.c
+++ b/src/window.c
@@ -490,7 +490,10 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
490 Fset_buffer (w->contents); 490 Fset_buffer (w->contents);
491 491
492 if (EQ (window, selected_window) && !inhibit_point_swap) 492 if (EQ (window, selected_window) && !inhibit_point_swap)
493 return window; 493 /* `switch-to-buffer' uses (select-window (selected-window)) as a "clever"
494 way to call record_buffer from Elisp, so it's important that we call
495 record_buffer before returning here. */
496 goto record_and_return;
494 497
495 sf = SELECTED_FRAME (); 498 sf = SELECTED_FRAME ();
496 if (XFRAME (WINDOW_FRAME (w)) != sf) 499 if (XFRAME (WINDOW_FRAME (w)) != sf)
@@ -509,7 +512,10 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
509 fset_selected_window (sf, window); 512 fset_selected_window (sf, window);
510 513
511 select_window_1 (window, inhibit_point_swap); 514 select_window_1 (window, inhibit_point_swap);
515 bset_last_selected_window (XBUFFER (w->contents), window);
516 windows_or_buffers_changed++;
512 517
518 record_and_return:
513 /* record_buffer can run QUIT, so make sure it is run only after we have 519 /* record_buffer can run QUIT, so make sure it is run only after we have
514 re-established the invariant between selected_window and selected_frame, 520 re-established the invariant between selected_window and selected_frame,
515 otherwise the temporary broken invariant might "escape" (bug#14161). */ 521 otherwise the temporary broken invariant might "escape" (bug#14161). */
@@ -519,8 +525,6 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
519 record_buffer (w->contents); 525 record_buffer (w->contents);
520 } 526 }
521 527
522 bset_last_selected_window (XBUFFER (w->contents), window);
523 windows_or_buffers_changed++;
524 return window; 528 return window;
525} 529}
526 530