else break;
}
}
- /* Which windows are acceptible?
+ /* Which windows are acceptable?
Exit the loop and accept this window if
this isn't a minibuffer window,
or we're accepting all minibuffer windows,
due to limits in the Unix cpp.
DEFUN ("previous-window", Ffoo, Sfoo, 0, 3, 0,
- "Return the window preceeding WINDOW in canonical ordering of windows.\n\
+ "Return the window preceding WINDOW in canonical ordering of windows.\n\
If omitted, WINDOW defaults to the selected window.\n\
\n\
Optional second arg MINIBUF t means count the minibuffer window even\n\
window = tem;
}
}
- /* Which windows are acceptible?
+ /* Which windows are acceptable?
Exit the loop and accept this window if
this isn't a minibuffer window,
or we're accepting all minibuffer windows,
}
return Qnil;
}
+
+/* Replace BUFFER with some other buffer in all windows
+ of all frames, even those on other keyboards. */
+
+void
+replace_buffer_in_all_windows (buffer)
+ Lisp_Object buffer;
+{
+ Lisp_Object tail, frame;
+
+#ifdef MULTI_FRAME
+ Lisp_Object old_selected;
+
+ old_selected = selected_window;
+
+ /* A single call to window_loop won't do the job
+ because it only considers frames on the current keyboard.
+ So loop manually over frames, and handle each one. */
+ FOR_EACH_FRAME (tail, frame)
+ {
+ Fselect_window (FRAME_SELECTED_WINDOW (XFRAME (frame)));
+
+ window_loop (UNSHOW_BUFFER, buffer, 0, frame);
+ }
+
+ if (!NILP (Fwindow_live_p (old_selected)))
+ Fselect_window (old_selected);
+#else
+ window_loop (UNSHOW_BUFFER, buffer, 0, Qt);
+#endif
+}
\f
/* Set the height of WINDOW and all its inferiors. */
DEFUN ("split-window", Fsplit_window, Ssplit_window, 0, 3, "",
"Split WINDOW, putting SIZE lines in the first of the pair.\n\
WINDOW defaults to selected one and SIZE to half its size.\n\
-If optional third arg HOR-FLAG is non-nil, split side by side\n\
+If optional third arg HORFLAG is non-nil, split side by side\n\
and put SIZE columns in the first of the pair.")
- (window, chsize, horflag)
- Lisp_Object window, chsize, horflag;
+ (window, size, horflag)
+ Lisp_Object window, size, horflag;
{
register Lisp_Object new;
register struct window *o, *p;
- register int size;
+ FRAME_PTR fo;
+ register int size_int;
+ int internal_width;
+ int separator_width = 1;
if (NILP (window))
window = selected_window;
CHECK_LIVE_WINDOW (window, 0);
o = XWINDOW (window);
+ fo = XFRAME (WINDOW_FRAME (o));
+ if (FRAME_HAS_VERTICAL_SCROLL_BARS (fo))
+ separator_width = FRAME_SCROLL_BAR_COLS (fo);
+ internal_width = window_internal_width (o);
- if (NILP (chsize))
+ if (NILP (size))
{
if (!NILP (horflag))
- /* Round odd size up, since this is for the left-hand window,
- and it will lose a column for the separators. */
- size = ((XFASTINT (o->width) + 1) & -2) >> 1;
+ /* Calculate the size of the left-hand window, by dividing
+ the usable space in columns by two. */
+ size_int = (internal_width - separator_width) >> 1;
else
- size = XFASTINT (o->height) >> 1;
+ size_int = XFASTINT (o->height) >> 1;
}
else
{
- CHECK_NUMBER (chsize, 1);
- size = XINT (chsize);
+ CHECK_NUMBER (size, 1);
+ size_int = XINT (size);
}
if (MINI_WINDOW_P (o))
error ("Attempt to split minibuffer window");
- else if (FRAME_NO_SPLIT_P (XFRAME (WINDOW_FRAME (o))))
+ else if (FRAME_NO_SPLIT_P (fo))
error ("Attempt to split unsplittable frame");
check_min_window_sizes ();
if (NILP (horflag))
{
- if (size < window_min_height)
- error ("Window height %d too small (after splitting)", size);
- if (size + window_min_height > XFASTINT (o->height))
+ if (size_int < window_min_height)
+ error ("Window height %d too small (after splitting)", size_int);
+ if (size_int + window_min_height > XFASTINT (o->height))
error ("Window height %d too small (after splitting)",
- XFASTINT (o->height) - size);
+ XFASTINT (o->height) - size_int);
if (NILP (o->parent)
|| NILP (XWINDOW (o->parent)->vchild))
{
}
else
{
- if (size < window_min_width)
- error ("Window width %d too small (after splitting)", size);
- if (size + window_min_width > XFASTINT (o->width))
+ if (size_int < window_min_width)
+ error ("Window width %d too small (after splitting)", size_int);
+ if (internal_width - size_int - separator_width < window_min_width)
error ("Window width %d too small (after splitting)",
- XFASTINT (o->width) - size);
+ internal_width - size_int - separator_width);
if (NILP (o->parent)
|| NILP (XWINDOW (o->parent)->hchild))
{
if we are making side-by-side windows */
windows_or_buffers_changed++;
- FRAME_WINDOW_SIZES_CHANGED (XFRAME (WINDOW_FRAME (o))) = 1;
+ FRAME_WINDOW_SIZES_CHANGED (fo) = 1;
new = make_window ();
p = XWINDOW (new);
{
p->height = o->height;
p->top = o->top;
- XSETFASTINT (p->width, XFASTINT (o->width) - size);
- XSETFASTINT (o->width, size);
- XSETFASTINT (p->left, XFASTINT (o->left) + size);
+ size_int += separator_width;
+ XSETFASTINT (p->width, internal_width - size_int);
+ XSETFASTINT (o->width, size_int);
+ XSETFASTINT (p->left, XFASTINT (o->left) + size_int);
}
else
{
p->left = o->left;
p->width = o->width;
- XSETFASTINT (p->height, XFASTINT (o->height) - size);
- XSETFASTINT (o->height, size);
- XSETFASTINT (p->top, XFASTINT (o->top) + size);
+ XSETFASTINT (p->height, XFASTINT (o->height) - size_int);
+ XSETFASTINT (o->height, size_int);
+ XSETFASTINT (p->top, XFASTINT (o->top) + size_int);
}
return new;
((struct saved_window *) (XVECTOR ((swv)->contents[(n)])))
DEFUN ("window-configuration-p", Fwindow_configuration_p, Swindow_configuration_p, 1, 1, 0,
- "T if OBJECT is a window-configration object.")
+ "T if OBJECT is a window-configuration object.")
(obj)
Lisp_Object obj;
{