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:
parent
6e1dbaa90f
commit
e6b84b30bc
2 changed files with 39 additions and 26 deletions
|
@ -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.
|
||||
|
|
58
src/window.c
58
src/window.c
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue