Commit e6b84b30 authored by Martin Rudalics's avatar Martin Rudalics Committed by Chong Yidong
Browse files

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.
parent 6e1dbaa9
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> 2011-01-16 Stefan Monnier <monnier@iro.umontreal.ca>
   
* image.c (syms_of_image): Don't access XSYMBOL's internals directly. * image.c (syms_of_image): Don't access XSYMBOL's internals directly.
......
...@@ -85,6 +85,7 @@ static int foreach_window_1 P_ ((struct window *, ...@@ -85,6 +85,7 @@ static int foreach_window_1 P_ ((struct window *,
int (* fn) (struct window *, void *), int (* fn) (struct window *, void *),
void *)); void *));
static Lisp_Object window_list_1 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); 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 /* This is the window in which the terminal's cursor should
be left when nothing is being done with it. This must be left when nothing is being done with it. This must
...@@ -158,11 +159,6 @@ static int sequence_number; ...@@ -158,11 +159,6 @@ static int sequence_number;
static int window_initialized; 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. */ /* Hook to run when window config changes. */
static Lisp_Object Qwindow_configuration_change_hook; static Lisp_Object Qwindow_configuration_change_hook;
...@@ -3585,21 +3581,16 @@ This function runs `window-scroll-functions' before running ...@@ -3585,21 +3581,16 @@ This function runs `window-scroll-functions' before running
return Qnil; return Qnil;
} }
/* Note that selected_window can be nil when this is called from /* If select_window is called with inhibit_point_swap non-zero it will
Fset_window_configuration. */ 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, static Lisp_Object
doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer. select_window (window, norecord, inhibit_point_swap)
If WINDOW is not already selected, make WINDOW's buffer current Lisp_Object window, norecord;
and make WINDOW the frame's selected window. Return WINDOW. int inhibit_point_swap;
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;
{ {
register struct window *w; register struct window *w;
register struct window *ow; register struct window *ow;
...@@ -3638,9 +3629,7 @@ selected window before each command. */) ...@@ -3638,9 +3629,7 @@ selected window before each command. */)
/* Store the current buffer's actual point into the /* Store the current buffer's actual point into the
old selected window. It belongs to that window, old selected window. It belongs to that window,
and when the window is not selected, must be in the window. */ and when the window is not selected, must be in the window. */
if (inhibit_point_swap) if (!inhibit_point_swap)
inhibit_point_swap = 0;
else
{ {
ow = XWINDOW (selected_window); ow = XWINDOW (selected_window);
if (! NILP (ow->buffer)) if (! NILP (ow->buffer))
...@@ -3676,6 +3665,26 @@ selected window before each command. */) ...@@ -3676,6 +3665,26 @@ selected window before each command. */)
return window; 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 static Lisp_Object
select_window_norecord (window) select_window_norecord (window)
Lisp_Object window; Lisp_Object window;
...@@ -6255,8 +6264,7 @@ the return value is nil. Otherwise the value is t. */) ...@@ -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 out point" in the old selected window using the buffer that
has been restored into it. We already swapped out that point has been restored into it. We already swapped out that point
from that window's old buffer. */ from that window's old buffer. */
inhibit_point_swap = 1; select_window (data->current_window, Qnil, 1);
Fselect_window (data->current_window, Qnil);
XBUFFER (XWINDOW (selected_window)->buffer)->last_selected_window XBUFFER (XWINDOW (selected_window)->buffer)->last_selected_window
= selected_window; = selected_window;
...@@ -7214,8 +7222,6 @@ syms_of_window () ...@@ -7214,8 +7222,6 @@ syms_of_window ()
window_scroll_preserve_hpos = -1; window_scroll_preserve_hpos = -1;
window_scroll_preserve_vpos = -1; window_scroll_preserve_vpos = -1;
inhibit_point_swap = 0;
DEFVAR_LISP ("temp-buffer-show-function", &Vtemp_buffer_show_function, DEFVAR_LISP ("temp-buffer-show-function", &Vtemp_buffer_show_function,
doc: /* Non-nil means call as function to display a help buffer. doc: /* Non-nil means call as function to display a help buffer.
The function is called with one argument, the buffer to be displayed. The function is called with one argument, the buffer to be displayed.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment