aboutsummaryrefslogtreecommitdiffstats
path: root/src/window.c
diff options
context:
space:
mode:
authorStefan Monnier2013-04-12 13:32:52 -0400
committerStefan Monnier2013-04-12 13:32:52 -0400
commit562c6ee9450073547ae45e88116cfc213c2254e0 (patch)
tree39a80f3fc5dc0b59fa068ea2d44c7028c53c328c /src/window.c
parent320742098b941833731b20d4bd2de7cc4c93ec76 (diff)
downloademacs-562c6ee9450073547ae45e88116cfc213c2254e0.tar.gz
emacs-562c6ee9450073547ae45e88116cfc213c2254e0.zip
* src/window.c (select_window): `record_buffer' even if window is
already selected. Fixes: debbugs:14191
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 fe5b5ec1e6e..7cf35a480f7 100644
--- a/src/window.c
+++ b/src/window.c
@@ -489,7 +489,10 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
489 Fset_buffer (w->contents); 489 Fset_buffer (w->contents);
490 490
491 if (EQ (window, selected_window) && !inhibit_point_swap) 491 if (EQ (window, selected_window) && !inhibit_point_swap)
492 return window; 492 /* `switch-to-buffer' uses (select-window (selected-window)) as a "clever"
493 way to call record_buffer from Elisp, so it's important that we call
494 record_buffer before returning here. */
495 goto record_and_return;
493 496
494 sf = SELECTED_FRAME (); 497 sf = SELECTED_FRAME ();
495 if (XFRAME (WINDOW_FRAME (w)) != sf) 498 if (XFRAME (WINDOW_FRAME (w)) != sf)
@@ -508,7 +511,10 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
508 fset_selected_window (sf, window); 511 fset_selected_window (sf, window);
509 512
510 select_window_1 (window, inhibit_point_swap); 513 select_window_1 (window, inhibit_point_swap);
514 bset_last_selected_window (XBUFFER (w->contents), window);
515 windows_or_buffers_changed++;
511 516
517 record_and_return:
512 /* record_buffer can run QUIT, so make sure it is run only after we have 518 /* record_buffer can run QUIT, so make sure it is run only after we have
513 re-established the invariant between selected_window and selected_frame, 519 re-established the invariant between selected_window and selected_frame,
514 otherwise the temporary broken invariant might "escape" (bug#14161). */ 520 otherwise the temporary broken invariant might "escape" (bug#14161). */
@@ -518,8 +524,6 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
518 record_buffer (w->contents); 524 record_buffer (w->contents);
519 } 525 }
520 526
521 bset_last_selected_window (XBUFFER (w->contents), window);
522 windows_or_buffers_changed++;
523 return window; 527 return window;
524} 528}
525 529