diff options
author | Jim Blandy <jimb@redhat.com> | 1993-06-17 00:39:37 +0000 |
---|---|---|
committer | Jim Blandy <jimb@redhat.com> | 1993-06-17 00:39:37 +0000 |
commit | 75d8f6686c49706c474ac485c1786cea73a1b7c7 (patch) | |
tree | 483efbe7450ff22723590ed848fdda1d69a41416 /src | |
parent | 2b0f4ba538126e4ebcda851d5acac2b6fbf47c96 (diff) | |
download | emacs-75d8f6686c49706c474ac485c1786cea73a1b7c7.tar.gz |
Don't let the 'B' interactive spec default to buffers viewed in
any visible frame.
* buffer.c (Fother_buffer): Pass Qvisible as the second argument
to Fget_buffer_window.
* window.c (Qvisible): New symbol.
(window_loop): In GET_BUFFER_WINDOW case, if frames is Qvisible,
ignore non-visible frames.
(Fget_buffer_window): Expand doc string to mention that Qvisible
is an interesting value for FRAME argument.
(syms_of_window): Init and staticpro Qvisible.
* lisp.h (Qvisible): New declaration.
Diffstat (limited to 'src')
-rw-r--r-- | src/buffer.c | 2 | ||||
-rw-r--r-- | src/lisp.h | 2 | ||||
-rw-r--r-- | src/window.c | 28 |
3 files changed, 20 insertions, 12 deletions
diff --git a/src/buffer.c b/src/buffer.c index b19cfcaa737..f2d6ca37e74 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -585,7 +585,7 @@ If BUFFER is omitted or nil, some interesting buffer is returned.") if (XSTRING (XBUFFER (buf)->name)->data[0] == ' ') continue; if (NILP (visible_ok)) - tem = Fget_buffer_window (buf, Qnil); + tem = Fget_buffer_window (buf, Qvisible); else tem = Qnil; if (NILP (tem)) diff --git a/src/lisp.h b/src/lisp.h index 7acf63d6be9..0969bfb8f41 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -1213,7 +1213,7 @@ extern Lisp_Object get_keyelt (), get_keymap(); extern Lisp_Object Fvertical_motion (), Findent_to (), Fcurrent_column (); /* defined in window.c */ -extern Lisp_Object Qwindowp, Qwindow_live_p; +extern Lisp_Object Qwindowp, Qwindow_live_p, Qvisible; extern Lisp_Object Fget_buffer_window (); extern Lisp_Object Fsave_window_excursion (); extern Lisp_Object Fset_window_configuration (), Fcurrent_window_configuration (); diff --git a/src/window.c b/src/window.c index d7e91560d7c..4c182a6924d 100644 --- a/src/window.c +++ b/src/window.c @@ -30,6 +30,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "keyboard.h" Lisp_Object Qwindowp, Qwindow_live_p; +Lisp_Object Qvisible; Lisp_Object Fnext_window (), Fdelete_window (), Fselect_window (); Lisp_Object Fset_window_buffer (), Fsplit_window (), Frecenter (); @@ -1057,8 +1058,10 @@ argument ALL_FRAMES is non-nil, cycle through all frames.") /* Look at all windows, performing an operation specified by TYPE with argument OBJ. - If FRAMES is Qt, look at all frames, if Qnil, look at just the selected - frame. If FRAMES is a frame, just look at windows on that frame. + If FRAMES is Qt, look at all frames; + Qvisible, look at visible frames (GET_BUFFER_WINDOW only); + Qnil, look at just the selected frame; + a frame, just look at windows on that frame. If MINI is non-zero, perform the operation on minibuffer windows too. */ @@ -1126,6 +1129,8 @@ window_loop (type, obj, mini, frames) best_window = Qnil; for (;;) { + FRAME_PTR w_frame = XFRAME (WINDOW_FRAME (XWINDOW (w))); + /* Pick the next window now, since some operations will delete the current window. */ #ifdef MULTI_FRAME @@ -1137,17 +1142,16 @@ window_loop (type, obj, mini, frames) Or we know this isn't a MULTI_FRAME Emacs, so who cares? */ next_window = Fnext_window (w, mini ? Qt : Qnil, Qt); - if (!MINI_WINDOW_P (XWINDOW (w)) + if (! MINI_WINDOW_P (XWINDOW (w)) || (mini && minibuf_level > 0)) switch (type) { case GET_BUFFER_WINDOW: -#if 0 - /* Ignore invisible and iconified frames. */ - if (! FRAME_VISIBLE_P (XFRAME (WINDOW_FRAME (XWINDOW (w)))) - || FRAME_ICONIFIED_P (XFRAME (WINDOW_FRAME (XWINDOW (w))))) + /* Perhaps ignore invisible and iconified frames. */ + if (EQ (frames, Qvisible) + && (! FRAME_VISIBLE_P (w_frame) + || FRAME_ICONIFIED_P (w_frame))) break; -#endif if (XBUFFER (XWINDOW (w)->buffer) == XBUFFER (obj)) return w; break; @@ -1272,8 +1276,9 @@ frame, search only that frame.\n") DEFUN ("get-buffer-window", Fget_buffer_window, Sget_buffer_window, 1, 2, 0, "Return a window currently displaying BUFFER, or nil if none.\n\ -If optional argument FRAMES is t, search all frames. If FRAME is a\n\ -frame, search only that frame.\n") +If optional argument FRAME is t, search all frames.\n\ +If FRAME is `visible', search all visible frames.\n\ +If FRAME is a frame, search only that frame.\n") (buffer, frame) Lisp_Object buffer, frame; { @@ -2896,6 +2901,9 @@ syms_of_window () Qwindow_live_p = intern ("window-live-p"); staticpro (&Qwindow_live_p); + Qvisible = intern ("Qvisible"); + staticpro (&Qvisible); + #ifndef MULTI_FRAME /* Make sure all windows get marked */ staticpro (&minibuf_window); |