summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Moellmann <gerd@gnu.org>2000-11-19 15:20:27 +0000
committerGerd Moellmann <gerd@gnu.org>2000-11-19 15:20:27 +0000
commitcd2904bd2c06864bc02f3e454caccdeb3f0e03f2 (patch)
tree20b1d71e9eabc2e5dcd63adcbed3dea1bb79753d
parentb95b34e5decc2280a749123f9ee85b428cd0f400 (diff)
downloademacs-cd2904bd2c06864bc02f3e454caccdeb3f0e03f2.tar.gz
(Fwindow_list): Change parameter list to be XEmacs
compatible. (window_list_1): New function. (window_loop): Use it instead of Fwindow_list.
-rw-r--r--src/window.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/window.c b/src/window.c
index 4c755a3f03e..d3386c31a2a 100644
--- a/src/window.c
+++ b/src/window.c
@@ -79,6 +79,7 @@ static void decode_next_window_args P_ ((Lisp_Object *, Lisp_Object *,
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));
/* This is the window in which the terminal's cursor should
be left when nothing is being done with it. This must
@@ -1549,9 +1550,35 @@ argument ALL_FRAMES is non-nil, cycle through all frames.")
DEFUN ("window-list", Fwindow_list, Swindow_list, 0, 3, 0,
- "Return a list of windows in canonical ordering.\n\
-Arguments are like for `next-window'.")
- (window, minibuf, all_frames)
+ "Return a list of windows on FRAME, starting with WINDOW.\n\
+FRAME nil or omitted means use the selected frame.\n\
+WINDOW nil or omitted means use the selected window.\n\
+MINIBUF t means include the minibuffer window, even if it isn't active.\n\
+MINIBUF nil or omitted means include the minibuffer window only\n\
+if it's active.\n\
+MINIBUF neither nil nor t means never include the minibuffer window.")
+ (frame, minibuf, window)
+ Lisp_Object frame, minibuf, window;
+{
+ Lisp_Object list;
+
+ if (NILP (window))
+ window = selected_window;
+ if (NILP (frame))
+ frame = selected_frame;
+
+ if (!EQ (frame, XWINDOW (window)->frame))
+ error ("Window is on a different frame");
+
+ return window_list_1 (window, minibuf, frame);
+}
+
+
+/* Return a list of windows in canonical ordering. Arguments are like
+ for `next-window'. */
+
+static Lisp_Object
+window_list_1 (window, minibuf, all_frames)
Lisp_Object window, minibuf, all_frames;
{
Lisp_Object tail, list;
@@ -1637,7 +1664,7 @@ window_loop (type, obj, mini, frames)
We can't just wait until we hit the first window again, because
it might be deleted. */
- windows = Fwindow_list (window, mini ? Qt : Qnil, frame_arg);
+ windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
GCPRO1 (windows);
best_window = Qnil;