Rework 2011-01-15 changes to window.c.

* src/window.c (select_window): New function.
(Fselect_window): Call it.
(inhibit_point_swap): Variable deleted.
(Fset_window_configuration): Call select_window directly.
This commit is contained in:
Martin Rudalics 2011-01-21 21:44:53 -05:00 committed by Chong Yidong
parent 6e1dbaa90f
commit e6b84b30bc
2 changed files with 39 additions and 26 deletions

View file

@ -1,3 +1,10 @@
2011-01-22 Martin Rudalics <rudalics@gmx.at>
* window.c (select_window): New function.
(Fselect_window): Call it.
(inhibit_point_swap): Variable deleted.
(Fset_window_configuration): Call select_window directly.
2011-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
* image.c (syms_of_image): Don't access XSYMBOL's internals directly.

View file

@ -85,6 +85,7 @@ static int foreach_window_1 P_ ((struct window *,
int (* fn) (struct window *, void *),
void *));
static Lisp_Object window_list_1 P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
static Lisp_Object select_window _P ((Lisp_Object, Lisp_Object, int));
/* This is the window in which the terminal's cursor should
be left when nothing is being done with it. This must
@ -158,11 +159,6 @@ static int sequence_number;
static int window_initialized;
/* Set in `set-window-configuration' to prevent "swapping out point"
in the old selected window. */
static int inhibit_point_swap;
/* Hook to run when window config changes. */
static Lisp_Object Qwindow_configuration_change_hook;
@ -3585,21 +3581,16 @@ This function runs `window-scroll-functions' before running
return Qnil;
}
/* Note that selected_window can be nil when this is called from
Fset_window_configuration. */
/* If select_window is called with inhibit_point_swap non-zero it will
not store point of the old selected window's buffer back into that
window's pointm slot. This is needed by Fset_window_configuration to
avoid that the display routine is called with selected_window set to
Qnil causing a subsequent crash. */
DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0,
doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer.
If WINDOW is not already selected, make WINDOW's buffer current
and make WINDOW the frame's selected window. Return WINDOW.
Optional second arg NORECORD non-nil means do not put this buffer
at the front of the list of recently selected ones and do not
make this window the most recently selected one.
Note that the main editor command loop selects the buffer of the
selected window before each command. */)
(window, norecord)
register Lisp_Object window, norecord;
static Lisp_Object
select_window (window, norecord, inhibit_point_swap)
Lisp_Object window, norecord;
int inhibit_point_swap;
{
register struct window *w;
register struct window *ow;
@ -3638,9 +3629,7 @@ selected window before each command. */)
/* Store the current buffer's actual point into the
old selected window. It belongs to that window,
and when the window is not selected, must be in the window. */
if (inhibit_point_swap)
inhibit_point_swap = 0;
else
if (!inhibit_point_swap)
{
ow = XWINDOW (selected_window);
if (! NILP (ow->buffer))
@ -3676,6 +3665,26 @@ selected window before each command. */)
return window;
}
/* Note that selected_window can be nil when this is called from
Fset_window_configuration. */
DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0,
doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer.
If WINDOW is not already selected, make WINDOW's buffer current
and make WINDOW the frame's selected window. Return WINDOW.
Optional second arg NORECORD non-nil means do not put this buffer
at the front of the list of recently selected ones and do not
make this window the most recently selected one.
Note that the main editor command loop selects the buffer of the
selected window before each command. */)
(window, norecord)
register Lisp_Object window, norecord;
{
select_window (window, norecord, 0);
}
static Lisp_Object
select_window_norecord (window)
Lisp_Object window;
@ -6255,8 +6264,7 @@ the return value is nil. Otherwise the value is t. */)
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. */
inhibit_point_swap = 1;
Fselect_window (data->current_window, Qnil);
select_window (data->current_window, Qnil, 1);
XBUFFER (XWINDOW (selected_window)->buffer)->last_selected_window
= selected_window;
@ -7214,8 +7222,6 @@ syms_of_window ()
window_scroll_preserve_hpos = -1;
window_scroll_preserve_vpos = -1;
inhibit_point_swap = 0;
DEFVAR_LISP ("temp-buffer-show-function", &Vtemp_buffer_show_function,
doc: /* Non-nil means call as function to display a help buffer.
The function is called with one argument, the buffer to be displayed.