Mercurial > emacs
changeset 99277:d10f49e09034
(Fnext_window, Fprevious_window): Rewrite doc-string.
(Fother_window): Rename argument and rewrite doc-string.
(select_window_norecord): Fix return value. (Bug#1276)
author | Martin Rudalics <rudalics@gmx.at> |
---|---|
date | Fri, 31 Oct 2008 14:05:59 +0000 |
parents | a4d60fa85641 |
children | 4bcd60d09e1c |
files | src/window.c |
diffstat | 1 files changed, 58 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/src/window.c Fri Oct 31 13:39:37 2008 +0000 +++ b/src/window.c Fri Oct 31 14:05:59 2008 +0000 @@ -1910,7 +1910,7 @@ } -/* Return the next or previous window of WINDOW in canonical ordering +/* Return the next or previous window of WINDOW in cyclic ordering of windows. NEXT_P non-zero means return the next window. See the documentation string of next-window for the meaning of MINIBUF and ALL_FRAMES. */ @@ -1982,26 +1982,36 @@ DEFUN ("next-window", Fnext_window, Snext_window, 0, 3, 0, - doc: /* Return next window after WINDOW in canonical ordering of windows. -If omitted, WINDOW defaults to the selected window. - -Optional second arg MINIBUF t means count the minibuffer window even -if not active. MINIBUF nil or omitted means count the minibuffer iff -it is active. MINIBUF neither t nor nil means not to count the -minibuffer even if it is active. + doc: /* Return window following WINDOW in cyclic ordering of windows. +WINDOW defaults to the selected window. The optional arguments +MINIBUF and ALL-FRAMES specify the set of windows to consider. + +MINIBUF t means consider the minibuffer window even if the +minibuffer is not active. MINIBUF nil or omitted means consider +the minibuffer window only if the minibuffer is active. Any +other value means do not consider the minibuffer window even if +the minibuffer is active. Several frames may share a single minibuffer; if the minibuffer -counts, all windows on all frames that share that minibuffer count -too. Therefore, `next-window' can be used to iterate through the -set of windows even when the minibuffer is on another frame. If the -minibuffer does not count, only windows from WINDOW's frame count. - -Optional third arg ALL-FRAMES t means include windows on all frames. -ALL-FRAMES nil or omitted means cycle within the frames as specified -above. ALL-FRAMES = `visible' means include windows on all visible frames. -ALL-FRAMES = 0 means include windows on all visible and iconified frames. -If ALL-FRAMES is a frame, restrict search to windows on that frame. -Anything else means restrict to WINDOW's frame. +is active, all windows on all frames that share that minibuffer +are considered too. Therefore, if you are using a separate +minibuffer frame and the minibuffer is active and MINIBUF says it +counts, `next-window' considers the windows in the frame from +which you entered the minibuffer, as well as the minibuffer +window. + +ALL-FRAMES nil or omitted means consider all windows on WINDOW's + frame, plus the minibuffer window if specified by the MINIBUF + argument, see above. If the minibuffer counts, consider all + windows on all frames that share that minibuffer too. +ALL-FRAMES t means consider all windows on all existing frames. +ALL-FRAMES `visible' means consider all windows on all visible + frames. +ALL-FRAMES 0 means consider all windows on all visible and + iconified frames. +ALL-FRAMES a frame means consider all windows on that frame only. +Anything else means consider all windows on WINDOW's frame and no + others. If you use consistent values for MINIBUF and ALL-FRAMES, you can use `next-window' to iterate through the entire cycle of acceptable @@ -2015,31 +2025,16 @@ DEFUN ("previous-window", Fprevious_window, Sprevious_window, 0, 3, 0, - doc: /* Return the window preceding WINDOW in canonical ordering of windows. -If omitted, WINDOW defaults to the selected window. - -Optional second arg MINIBUF t means count the minibuffer window even -if not active. MINIBUF nil or omitted means count the minibuffer iff -it is active. MINIBUF neither t nor nil means not to count the -minibuffer even if it is active. - -Several frames may share a single minibuffer; if the minibuffer -counts, all windows on all frames that share that minibuffer count -too. Therefore, `previous-window' can be used to iterate through -the set of windows even when the minibuffer is on another frame. If -the minibuffer does not count, only windows from WINDOW's frame count - -Optional third arg ALL-FRAMES t means include windows on all frames. -ALL-FRAMES nil or omitted means cycle within the frames as specified -above. ALL-FRAMES = `visible' means include windows on all visible frames. -ALL-FRAMES = 0 means include windows on all visible and iconified frames. -If ALL-FRAMES is a frame, restrict search to windows on that frame. -Anything else means restrict to WINDOW's frame. - -If you use consistent values for MINIBUF and ALL-FRAMES, you can use -`previous-window' to iterate through the entire cycle of acceptable -windows, eventually ending up back at the window you started with. -`next-window' traverses the same cycle, in the reverse order. */) + doc: /* Return window preceding WINDOW in cyclic ordering of windows. +WINDOW defaults to the selected window. The optional arguments +MINIBUF and ALL-FRAMES specify the set of windows to consider. +For the precise meaning of these arguments see `next-window'. + +If you use consistent values for MINIBUF and ALL-FRAMES, you can +use `previous-window' to iterate through the entire cycle of +acceptable windows, eventually ending up back at the window you +started with. `next-window' traverses the same cycle, in the +reverse order. */) (window, minibuf, all_frames) Lisp_Object window, minibuf, all_frames; { @@ -2048,21 +2043,28 @@ DEFUN ("other-window", Fother_window, Sother_window, 1, 2, "p", - doc: /* Select the ARG'th different window on this frame. -All windows on current frame are arranged in a cyclic order. -This command selects the window ARG steps away in that order. -A negative ARG moves in the opposite order. The optional second -argument ALL-FRAMES has the same meaning as in `next-window', which see. */) - (arg, all_frames) - Lisp_Object arg, all_frames; + doc: /* Select another window in cyclic ordering of windows. +COUNT specifies the number of windows to skip, starting with the +selected window, before making the selection. If COUNT is +positive, skip COUNT windows forwards. If COUNT is negative, +skip -COUNT windows backwards. COUNT zero means do not skip any +window, so select the selected window. In an interactive call, +COUNT is the numeric prefix argument. Return nil. + +This function uses `next-window' for finding the window to select. +The argument ALL-FRAMES has the same meaning as in `next-window', +but the MINIBUF argument of `next-window' is always effectively +nil. */) + (count, all_frames) + Lisp_Object count, all_frames; { Lisp_Object window; int i; - CHECK_NUMBER (arg); + CHECK_NUMBER (count); window = selected_window; - for (i = XINT (arg); i > 0; --i) + for (i = XINT (count); i > 0; --i) window = Fnext_window (window, Qnil, all_frames); for (; i < 0; ++i) window = Fprevious_window (window, Qnil, all_frames); @@ -2096,7 +2098,7 @@ } -/* Return a list of windows in canonical ordering. Arguments are like +/* Return a list of windows in cyclic ordering. Arguments are like for `next-window'. */ static Lisp_Object @@ -3643,7 +3645,8 @@ select_window_norecord (window) Lisp_Object window; { - return Fselect_window (window, Qt); + return WINDOW_LIVE_P (window) + ? Fselect_window (window, Qt) : selected_window; } Lisp_Object