From 727e958ef0548f3d8ce02a4a971247f52cc548ce Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Mon, 6 Jun 2011 15:57:49 +0200 Subject: [PATCH] Move some window-related functions from frame.c to window.c. * lisp.h: Move EXFUNS for Fframe_root_window, Fframe_first_window and Fset_frame_selected_window to window.h. * window.h: Move EXFUNS for Fframe_root_window, Fframe_first_window and Fset_frame_selected_window here from lisp.h. * frame.c (Fwindow_frame, Fframe_first_window) (Fframe_root_window, Fframe_selected_window) (Fset_frame_selected_window): Move to window.c. (Factive_minibuffer_window): Move to minibuf.c. (Fother_visible_frames_p): New function. * minibuf.c (Factive_minibuffer_window): Move here from frame.c. * window.c (Fwindow_frame): Move here from frame.c. Accept any window as argument. (Fframe_root_window, Fframe_first_window) (Fframe_selected_window): Move here from frame.c. Accept frame or arbitrary window as argument. Update doc-strings. (Fminibuffer_window): Move up in code. (Fwindow_minibuffer_p): Move up in code and simplify. (Fset_frame_selected_window): Move here from frame.c. Marginal rewrite. (Fselected_window, select_window, Fselect_window): Move up in code. Minor doc-string fixes. --- src/ChangeLog | 26 ++++ src/frame.c | 123 ++--------------- src/lisp.h | 4 - src/minibuf.c | 9 ++ src/window.c | 376 +++++++++++++++++++++++++++++++++----------------- src/window.h | 9 +- 6 files changed, 299 insertions(+), 248 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e3ae905bac6..37fd595e270 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,11 +1,37 @@ 2011-06-06 Martin Rudalics + * lisp.h: Move EXFUNS for Fframe_root_window, + Fframe_first_window and Fset_frame_selected_window to window.h. + + * window.h: Move EXFUNS for Fframe_root_window, + Fframe_first_window and Fset_frame_selected_window here from + lisp.h. + + * frame.c (Fwindow_frame, Fframe_first_window) + (Fframe_root_window, Fframe_selected_window) + (Fset_frame_selected_window): Move to window.c. + (Factive_minibuffer_window): Move to minibuf.c. + (Fother_visible_frames_p): New function. + + * minibuf.c (Factive_minibuffer_window): Move here from frame.c. + * window.c (decode_window, decode_any_window): Move up in code. (Fwindowp, Fwindow_live_p): Rewrite doc-strings. (inhibit_frame_unsplittable): Remove unused variable. (Fwindow_buffer): Move up and rewrite doc-string. (Fwindow_parent, Fwindow_vchild, Fwindow_hchild, Fwindow_next) (Fwindow_prev): New functions. + (Fwindow_frame): Move here from frame.c. Accept any window as + argument. + (Fframe_root_window, Fframe_first_window) + (Fframe_selected_window): Move here from frame.c. Accept frame + or arbitrary window as argument. Update doc-strings. + (Fminibuffer_window): Move up in code. + (Fwindow_minibuffer_p): Move up in code and simplify. + (Fset_frame_selected_window): Move here from frame.c. Marginal + rewrite. + (Fselected_window, select_window, Fselect_window): Move up in + code. Minor doc-string fixes. 2011-06-06 Paul Eggert diff --git a/src/frame.c b/src/frame.c index 6008ba9567a..68984a68d52 100644 --- a/src/frame.c +++ b/src/frame.c @@ -903,111 +903,6 @@ DEFUN ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0, { return selected_frame; } - -DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0, - doc: /* Return the frame object that window WINDOW is on. */) - (Lisp_Object window) -{ - CHECK_LIVE_WINDOW (window); - return XWINDOW (window)->frame; -} - -DEFUN ("frame-first-window", Fframe_first_window, Sframe_first_window, 0, 1, 0, - doc: /* Returns the topmost, leftmost window of FRAME. -If omitted, FRAME defaults to the currently selected frame. */) - (Lisp_Object frame) -{ - Lisp_Object w; - - if (NILP (frame)) - w = SELECTED_FRAME ()->root_window; - else - { - CHECK_LIVE_FRAME (frame); - w = XFRAME (frame)->root_window; - } - while (NILP (XWINDOW (w)->buffer)) - { - if (! NILP (XWINDOW (w)->hchild)) - w = XWINDOW (w)->hchild; - else if (! NILP (XWINDOW (w)->vchild)) - w = XWINDOW (w)->vchild; - else - abort (); - } - return w; -} - -DEFUN ("active-minibuffer-window", Factive_minibuffer_window, - Sactive_minibuffer_window, 0, 0, 0, - doc: /* Return the currently active minibuffer window, or nil if none. */) - (void) -{ - return minibuf_level ? minibuf_window : Qnil; -} - -DEFUN ("frame-root-window", Fframe_root_window, Sframe_root_window, 0, 1, 0, - doc: /* Returns the root-window of FRAME. -If omitted, FRAME defaults to the currently selected frame. */) - (Lisp_Object frame) -{ - Lisp_Object window; - - if (NILP (frame)) - window = SELECTED_FRAME ()->root_window; - else - { - CHECK_LIVE_FRAME (frame); - window = XFRAME (frame)->root_window; - } - - return window; -} - -DEFUN ("frame-selected-window", Fframe_selected_window, - Sframe_selected_window, 0, 1, 0, - doc: /* Return the selected window of FRAME. -FRAME defaults to the currently selected frame. */) - (Lisp_Object frame) -{ - Lisp_Object window; - - if (NILP (frame)) - window = SELECTED_FRAME ()->selected_window; - else - { - CHECK_LIVE_FRAME (frame); - window = XFRAME (frame)->selected_window; - } - - return window; -} - -DEFUN ("set-frame-selected-window", Fset_frame_selected_window, - Sset_frame_selected_window, 2, 3, 0, - doc: /* Set selected window of FRAME to WINDOW. -If FRAME is nil, use the selected frame. If FRAME is the -selected frame, this makes WINDOW the selected window. -Optional argument NORECORD non-nil means to neither change the -order of recently selected windows nor the buffer list. -Return WINDOW. */) - (Lisp_Object frame, Lisp_Object window, Lisp_Object norecord) -{ - if (NILP (frame)) - frame = selected_frame; - - CHECK_LIVE_FRAME (frame); - CHECK_LIVE_WINDOW (window); - - if (! EQ (frame, WINDOW_FRAME (XWINDOW (window)))) - error ("In `set-frame-selected-window', WINDOW is not on FRAME"); - - if (EQ (frame, selected_frame)) - return Fselect_window (window, norecord); - - return XFRAME (frame)->selected_window = window; -} - DEFUN ("frame-list", Fframe_list, Sframe_list, 0, 0, 0, @@ -1265,6 +1160,17 @@ other_visible_frames (FRAME_PTR f) return 1; } +DEFUN ("other-visible-frames-p", Fother_visible_frames_p, Sother_visible_frames_p, 0, 1, 0, + doc: /* Return t if there are other visible frames beside FRAME. +FRAME defaults to the selected frame. */) + (Lisp_Object frame) +{ + if (NILP (frame)) + frame = selected_frame; + CHECK_LIVE_FRAME (frame); + return other_visible_frames (XFRAME (frame)) ? Qt : Qnil; +} + /* Delete FRAME. When FORCE equals Qnoelisp, delete FRAME unconditionally. x_connection_closed and delete_terminal use this. Any other value of FORCE implements the semantics @@ -4605,7 +4511,6 @@ automatically. See also `mouse-autoselect-window'. */); staticpro (&Vframe_list); - defsubr (&Sactive_minibuffer_window); defsubr (&Sframep); defsubr (&Sframe_live_p); defsubr (&Swindow_system); @@ -4613,14 +4518,10 @@ automatically. See also `mouse-autoselect-window'. */); defsubr (&Shandle_switch_frame); defsubr (&Sselect_frame); defsubr (&Sselected_frame); - defsubr (&Swindow_frame); - defsubr (&Sframe_root_window); - defsubr (&Sframe_first_window); - defsubr (&Sframe_selected_window); - defsubr (&Sset_frame_selected_window); defsubr (&Sframe_list); defsubr (&Snext_frame); defsubr (&Sprevious_frame); + defsubr (&Sother_visible_frames_p); defsubr (&Sdelete_frame); defsubr (&Smouse_position); defsubr (&Smouse_pixel_position); diff --git a/src/lisp.h b/src/lisp.h index a9e7354f9fc..7145c1a689b 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3181,16 +3181,12 @@ extern Lisp_Object get_frame_param (struct frame *, Lisp_Object); extern Lisp_Object frame_buffer_predicate (Lisp_Object); EXFUN (Fselect_frame, 2); EXFUN (Fselected_frame, 0); -EXFUN (Fwindow_frame, 1); -EXFUN (Fframe_root_window, 1); -EXFUN (Fframe_first_window, 1); EXFUN (Fmake_frame_visible, 1); EXFUN (Ficonify_frame, 1); EXFUN (Fframe_parameter, 2); EXFUN (Fmodify_frame_parameters, 2); EXFUN (Fraise_frame, 1); EXFUN (Fredirect_frame_focus, 2); -EXFUN (Fset_frame_selected_window, 3); extern Lisp_Object frame_buffer_list (Lisp_Object); extern void frames_discard_buffer (Lisp_Object); extern void set_frame_buffer_list (Lisp_Object, Lisp_Object); diff --git a/src/minibuf.c b/src/minibuf.c index ba8729bdff2..8f1987298b3 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -143,6 +143,14 @@ choose_minibuf_frame_1 (Lisp_Object ignore) return Qnil; } +DEFUN ("active-minibuffer-window", Factive_minibuffer_window, + Sactive_minibuffer_window, 0, 0, 0, + doc: /* Return the currently active minibuffer window, or nil if none. */) + (void) +{ + return minibuf_level ? minibuf_window : Qnil; +} + DEFUN ("set-minibuffer-window", Fset_minibuffer_window, Sset_minibuffer_window, 1, 1, 0, doc: /* Specify which minibuffer window to use for the minibuffer. @@ -2181,6 +2189,7 @@ properties. */); doc: /* Minibuffer keymap used for reading Lisp expressions. */); Vread_expression_map = Qnil; + defsubr (&Sactive_minibuffer_window); defsubr (&Sset_minibuffer_window); defsubr (&Sread_from_minibuffer); defsubr (&Seval_minibuffer); diff --git a/src/window.c b/src/window.c index 894775d6aa3..4e8b98a3237 100644 --- a/src/window.c +++ b/src/window.c @@ -168,7 +168,248 @@ A live window is a window that displays a buffer. */) { return WINDOW_LIVE_P (object) ? Qt : Qnil; } + +/* Frames and windows. */ +DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0, + doc: /* Return the frame that window WINDOW is on. +WINDOW can be any window and defaults to the selected one. */) + (Lisp_Object window) +{ + return decode_any_window (window)->frame; +} + +DEFUN ("frame-root-window", Fframe_root_window, Sframe_root_window, 0, 1, 0, + doc: /* Return the root window of FRAME_OR_WINDOW. +If omitted, FRAME_OR_WINDOW defaults to the currently selected frame. +Else if FRAME_OR_WINDOW denotes any window, return the root window of +that window's frame. If FRAME_OR_WINDOW denotes a live frame, return +the root window of that frame. */) + (Lisp_Object frame_or_window) +{ + Lisp_Object window; + + if (NILP (frame_or_window)) + window = SELECTED_FRAME ()->root_window; + else if (WINDOWP (frame_or_window)) + window = XFRAME (WINDOW_FRAME (XWINDOW (frame_or_window)))->root_window; + else + { + CHECK_LIVE_FRAME (frame_or_window); + window = XFRAME (frame_or_window)->root_window; + } + + return window; +} + +DEFUN ("minibuffer-window", Fminibuffer_window, Sminibuffer_window, 0, 1, 0, + doc: /* Return the window used now for minibuffers. +If the optional argument FRAME is specified, return the minibuffer window +used by that frame. */) + (Lisp_Object frame) +{ + if (NILP (frame)) + frame = selected_frame; + CHECK_LIVE_FRAME (frame); + return FRAME_MINIBUF_WINDOW (XFRAME (frame)); +} + +DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, + Swindow_minibuffer_p, 0, 1, 0, + doc: /* Return non-nil if WINDOW is a minibuffer window. +WINDOW can be any window and defaults to the selected one. */) + (Lisp_Object window) +{ + return MINI_WINDOW_P (decode_any_window (window)) ? Qt : Qnil; +} + +/* Don't move this to window.el - this must be a safe routine. */ +DEFUN ("frame-first-window", Fframe_first_window, Sframe_first_window, 0, 1, 0, + doc: /* Return the topmost, leftmost live window on FRAME_OR_WINDOW. +If omitted, FRAME_OR_WINDOW defaults to the currently selected frame. +Else if FRAME_OR_WINDOW denotes any window, return the first window of +that window's frame. If FRAME_OR_WINDOW denotes a live frame, return +the first window of that frame. */) + (Lisp_Object frame_or_window) +{ + Lisp_Object window; + + if (NILP (frame_or_window)) + window = SELECTED_FRAME ()->root_window; + else if (WINDOWP (frame_or_window)) + window = XFRAME (WINDOW_FRAME (XWINDOW (frame_or_window)))->root_window; + else + { + CHECK_LIVE_FRAME (frame_or_window); + window = XFRAME (frame_or_window)->root_window; + } + + while (NILP (XWINDOW (window)->buffer)) + { + if (! NILP (XWINDOW (window)->hchild)) + window = XWINDOW (window)->hchild; + else if (! NILP (XWINDOW (window)->vchild)) + window = XWINDOW (window)->vchild; + else + abort (); + } + + return window; +} + +DEFUN ("frame-selected-window", Fframe_selected_window, + Sframe_selected_window, 0, 1, 0, + doc: /* Return the selected window of FRAME_OR_WINDOW. +If omitted, FRAME_OR_WINDOW defaults to the currently selected frame. +Else if FRAME_OR_WINDOW denotes any window, return the selected window +of that window's frame. If FRAME_OR_WINDOW denotes a live frame, return +the selected window of that frame. */) + (Lisp_Object frame_or_window) +{ + Lisp_Object window; + + if (NILP (frame_or_window)) + window = SELECTED_FRAME ()->selected_window; + else if (WINDOWP (frame_or_window)) + window = XFRAME (WINDOW_FRAME (XWINDOW (frame_or_window)))->selected_window; + else + { + CHECK_LIVE_FRAME (frame_or_window); + window = XFRAME (frame_or_window)->selected_window; + } + + return window; +} + +DEFUN ("set-frame-selected-window", Fset_frame_selected_window, + Sset_frame_selected_window, 2, 3, 0, + doc: /* Set selected window of FRAME to WINDOW. +FRAME must be a live frame and defaults to the selected one. If FRAME +is the selected frame, this makes WINDOW the selected window. Optional +argument NORECORD non-nil means to neither change the order of recently +selected windows nor the buffer list. WINDOW must denote a live window. +Return WINDOW. */) + (Lisp_Object frame, Lisp_Object window, Lisp_Object norecord) +{ + if (NILP (frame)) + frame = selected_frame; + + CHECK_LIVE_FRAME (frame); + CHECK_LIVE_WINDOW (window); + + if (! EQ (frame, WINDOW_FRAME (XWINDOW (window)))) + error ("In `set-frame-selected-window', WINDOW is not on FRAME"); + + if (EQ (frame, selected_frame)) + return Fselect_window (window, norecord); + else + return XFRAME (frame)->selected_window = window; +} + +DEFUN ("selected-window", Fselected_window, Sselected_window, 0, 0, 0, + doc: /* Return the selected window. +The selected window is the window in which the standard cursor for +selected windows appears and to which many commands apply. */) + (void) +{ + return selected_window; +} + +/* 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. */ +static Lisp_Object +select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap) +{ + register struct window *w; + register struct window *ow; + struct frame *sf; + + CHECK_LIVE_WINDOW (window); + + w = XWINDOW (window); + w->frozen_window_start_p = 0; + + if (NILP (norecord)) + { + ++window_select_count; + XSETFASTINT (w->use_time, window_select_count); + record_buffer (w->buffer); + } + + if (EQ (window, selected_window) && !inhibit_point_swap) + return window; + + sf = SELECTED_FRAME (); + if (XFRAME (WINDOW_FRAME (w)) != sf) + { + XFRAME (WINDOW_FRAME (w))->selected_window = window; + /* Use this rather than Fhandle_switch_frame + so that FRAME_FOCUS_FRAME is moved appropriately as we + move around in the state where a minibuffer in a separate + frame is active. */ + Fselect_frame (WINDOW_FRAME (w), norecord); + /* Fselect_frame called us back so we've done all the work already. */ + eassert (EQ (window, selected_window)); + return window; + } + else + sf->selected_window = window; + + /* 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) + { + ow = XWINDOW (selected_window); + if (! NILP (ow->buffer)) + set_marker_both (ow->pointm, ow->buffer, + BUF_PT (XBUFFER (ow->buffer)), + BUF_PT_BYTE (XBUFFER (ow->buffer))); + } + + selected_window = window; + + Fset_buffer (w->buffer); + + BVAR (XBUFFER (w->buffer), last_selected_window) = window; + + /* Go to the point recorded in the window. + This is important when the buffer is in more + than one window. It also matters when + redisplay_window has altered point after scrolling, + because it makes the change only in the window. */ + { + register EMACS_INT new_point = marker_position (w->pointm); + if (new_point < BEGV) + SET_PT (BEGV); + else if (new_point > ZV) + SET_PT (ZV); + else + SET_PT (new_point); + } + + windows_or_buffers_changed++; + return window; +} + +DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0, + doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer. +Also 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 buffer list and do not make this window the most recently +selected one. +Note that the main editor command loop sets the current buffer to the +buffer of the selected window before each command. */) + (register Lisp_Object window, Lisp_Object norecord) +{ + return select_window (window, norecord, 0); +} + DEFUN ("window-buffer", Fwindow_buffer, Swindow_buffer, 0, 1, 0, doc: /* Return the buffer that WINDOW is displaying. WINDOW can be any window and defaults to the selected one. @@ -276,36 +517,6 @@ make_window (void) return val; } -DEFUN ("selected-window", Fselected_window, Sselected_window, 0, 0, 0, - doc: /* Return the window that the cursor now appears in and commands apply to. */) - (void) -{ - return selected_window; -} - -DEFUN ("minibuffer-window", Fminibuffer_window, Sminibuffer_window, 0, 1, 0, - doc: /* Return the window used now for minibuffers. -If the optional argument FRAME is specified, return the minibuffer window -used by that frame. */) - (Lisp_Object frame) -{ - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - return FRAME_MINIBUF_WINDOW (XFRAME (frame)); -} - -DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, - Swindow_minibuffer_p, 0, 1, 0, - doc: /* Return non-nil if WINDOW is a minibuffer window. -WINDOW defaults to the selected window. */) - (Lisp_Object window) -{ - struct window *w = decode_window (window); - return MINI_WINDOW_P (w) ? Qt : Qnil; -} - - DEFUN ("pos-visible-in-window-p", Fpos_visible_in_window_p, Spos_visible_in_window_p, 0, 3, 0, doc: /* Return non-nil if position POS is currently on the frame in WINDOW. @@ -3527,106 +3738,6 @@ This function runs `window-scroll-functions' before running return Qnil; } -/* 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. */ - -static Lisp_Object -select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap) -{ - register struct window *w; - register struct window *ow; - struct frame *sf; - - CHECK_LIVE_WINDOW (window); - - w = XWINDOW (window); - w->frozen_window_start_p = 0; - - if (NILP (norecord)) - { - ++window_select_count; - XSETFASTINT (w->use_time, window_select_count); - record_buffer (w->buffer); - } - - if (EQ (window, selected_window) && !inhibit_point_swap) - return window; - - sf = SELECTED_FRAME (); - if (XFRAME (WINDOW_FRAME (w)) != sf) - { - XFRAME (WINDOW_FRAME (w))->selected_window = window; - /* Use this rather than Fhandle_switch_frame - so that FRAME_FOCUS_FRAME is moved appropriately as we - move around in the state where a minibuffer in a separate - frame is active. */ - Fselect_frame (WINDOW_FRAME (w), norecord); - /* Fselect_frame called us back so we've done all the work already. */ - eassert (EQ (window, selected_window)); - return window; - } - else - sf->selected_window = window; - - /* 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) - { - ow = XWINDOW (selected_window); - if (! NILP (ow->buffer)) - set_marker_both (ow->pointm, ow->buffer, - BUF_PT (XBUFFER (ow->buffer)), - BUF_PT_BYTE (XBUFFER (ow->buffer))); - } - - selected_window = window; - - Fset_buffer (w->buffer); - - BVAR (XBUFFER (w->buffer), last_selected_window) = window; - - /* Go to the point recorded in the window. - This is important when the buffer is in more - than one window. It also matters when - redisplay_window has altered point after scrolling, - because it makes the change only in the window. */ - { - register EMACS_INT new_point = marker_position (w->pointm); - if (new_point < BEGV) - SET_PT (BEGV); - else if (new_point > ZV) - SET_PT (ZV); - else - SET_PT (new_point); - } - - windows_or_buffers_changed++; - 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. */) - (register Lisp_Object window, Lisp_Object norecord) -{ - return select_window (window, norecord, 0); -} - static Lisp_Object select_window_norecord (Lisp_Object window) { @@ -7156,6 +7267,11 @@ frame to be redrawn only if it is a tty frame. */); defsubr (&Swindow_minibuffer_p); defsubr (&Swindowp); defsubr (&Swindow_live_p); + defsubr (&Swindow_frame); + defsubr (&Sframe_root_window); + defsubr (&Sframe_first_window); + defsubr (&Sframe_selected_window); + defsubr (&Sset_frame_selected_window); defsubr (&Spos_visible_in_window_p); defsubr (&Swindow_line_height); defsubr (&Swindow_buffer); diff --git a/src/window.h b/src/window.h index b1f6560445e..ac3335bfba4 100644 --- a/src/window.h +++ b/src/window.h @@ -844,11 +844,14 @@ struct glyph *get_phys_cursor_glyph (struct window *w); extern Lisp_Object Qwindowp, Qwindow_live_p; extern Lisp_Object Vwindow_list; -EXFUN (Fselected_window, 0); -EXFUN (Fwindow_minibuffer_p, 1); -EXFUN (Fdelete_window, 1); EXFUN (Fwindow_buffer, 1); EXFUN (Fget_buffer_window, 2); +EXFUN (Fwindow_minibuffer_p, 1); +EXFUN (Fselected_window, 0); +EXFUN (Fframe_root_window, 1); +EXFUN (Fframe_first_window, 1); +EXFUN (Fset_frame_selected_window, 3); +EXFUN (Fdelete_window, 1); EXFUN (Fset_window_configuration, 1); EXFUN (Fcurrent_window_configuration, 1); extern int compare_window_configurations (Lisp_Object, Lisp_Object, int); -- 2.39.2