diff options
| author | Joakim Verona | 2013-04-13 08:30:33 +0200 |
|---|---|---|
| committer | Joakim Verona | 2013-04-13 08:30:33 +0200 |
| commit | 44399ce2917f50909cfcd7a82aa071e58cc81dae (patch) | |
| tree | 3d1cb6ff4b7934f9171f4f6a8c09f31b02be22e3 /src/window.c | |
| parent | ea0a8e9d270b2b0cfbc2b137b1e6c3922bc2ab5b (diff) | |
| parent | 011cddd649d81956ce13b9325b059dac78e61c4d (diff) | |
| download | emacs-44399ce2917f50909cfcd7a82aa071e58cc81dae.tar.gz emacs-44399ce2917f50909cfcd7a82aa071e58cc81dae.zip | |
auto upstream
Diffstat (limited to 'src/window.c')
| -rw-r--r-- | src/window.c | 10 |
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 | ||