Commit e3678b64 authored by Karl Heuer's avatar Karl Heuer

Removed support for !MULTI_FRAME.

parent 8c09486a
......@@ -572,12 +572,6 @@ otherobj= $(termcapobj) lastfile.o $(mallocobj) $(allocaobj) $(widgetobj)
#define FLOAT_SUPPORT
#endif
#ifdef MULTI_FRAME
#define FRAME_SUPPORT ${lispsource}frame.elc
#else
#define FRAME_SUPPORT
#endif
#ifdef HAVE_MOUSE
#define MOUSE_SUPPORT ${lispsource}menu-bar.elc ${lispsource}mouse.elc \
${lispsource}select.elc ${lispsource}scroll-bar.elc
......@@ -631,7 +625,7 @@ lisp= \
FACE_SUPPORT \
MOUSE_SUPPORT \
FLOAT_SUPPORT \
FRAME_SUPPORT \
${lispsource}frame.elc\
X_WINDOWS_SUPPORT \
${lispsource}help.elc \
${lispsource}indent.elc \
......
......@@ -1802,7 +1802,6 @@ mark_object (argptr)
objptr = (Lisp_Object *) &ptr1->contents[COMPILED_CONSTANTS];
goto loop;
}
#ifdef MULTI_FRAME
else if (GC_FRAMEP (obj))
{
/* See comment above under Lisp_Vector for why this is volatile. */
......@@ -1826,7 +1825,6 @@ mark_object (argptr)
mark_object (&ptr->menu_bar_vector);
mark_object (&ptr->buffer_predicate);
}
#endif /* MULTI_FRAME */
else if (GC_BOOL_VECTOR_P (obj))
{
register struct Lisp_Vector *ptr = XVECTOR (obj);
......
......@@ -853,7 +853,6 @@ If BUFFER is omitted or nil, some interesting buffer is returned.")
continue;
if (XSTRING (XBUFFER (buf)->name)->data[0] == ' ')
continue;
#ifdef MULTI_FRAME
/* If the selected frame has a buffer_predicate,
disregard buffers that don't fit the predicate. */
tem = frame_buffer_predicate ();
......@@ -863,7 +862,6 @@ If BUFFER is omitted or nil, some interesting buffer is returned.")
if (NILP (tem))
continue;
}
#endif
if (NILP (visible_ok))
tem = Fget_buffer_window (buf, Qt);
......
......@@ -225,11 +225,8 @@ for example, (type-of 1) returns `integer'.")
return Qchar_table;
if (GC_BOOL_VECTOR_P (object))
return Qbool_vector;
#ifdef MULTI_FRAME
if (GC_FRAMEP (object))
return Qframe;
#endif
return Qvector;
#ifdef LISP_FLOAT_TYPE
......
......@@ -99,9 +99,7 @@ typedef int FACE;
struct frame_glyphs
{
#ifdef MULTI_FRAME
struct frame *frame; /* Frame these glyphs belong to. */
#endif /* MULTI_FRAME */
int height;
int width;
......
......@@ -144,18 +144,6 @@ FRAME_PTR selected_frame;
the address of the_only_frame. */
FRAME_PTR last_nonminibuf_frame;
/* In a single-frame version, the information that would otherwise
exist inside frame objects lives in the following structure instead.
NOTE: the_only_frame is not checked for garbage collection; don't
store collectible objects in any of its fields!
You're not/The only frame in town/... */
#ifndef MULTI_FRAME
struct frame the_only_frame;
#endif
/* This is a vector, made larger whenever it isn't large enough,
which is used inside `update_frame' to hold the old contents
of the FRAME_PHYS_LINES of the frame being updated. */
......@@ -169,8 +157,6 @@ struct cm Wcm; /* Structure for info on cursor positioning */
int delayed_size_change; /* 1 means SIGWINCH happened when not safe. */
#ifdef MULTI_FRAME
DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 1, 1, 0,
"Clear frame FRAME and output again what is supposed to appear on it.")
(frame)
......@@ -203,30 +189,6 @@ redraw_frame (f)
Fredraw_frame (frame);
}
#else
DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 1, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
update_begin (0);
set_terminal_modes ();
clear_frame ();
update_end (0);
fflush (stdout);
clear_frame_records (0);
windows_or_buffers_changed++;
/* Mark all windows as INaccurate,
so that every window will have its redisplay done. */
mark_window_display_accurate (FRAME_ROOT_WINDOW (0), 0);
return Qnil;
}
#endif
DEFUN ("redraw-display", Fredraw_display, Sredraw_display, 0, 0, "",
"Clear and redisplay all visible frames.")
()
......@@ -2589,9 +2551,7 @@ For types not defined in VMS, use define emacs_term \"TYPE\".\n\
syms_of_display ()
{
#ifdef MULTI_FRAME
defsubr (&Sredraw_frame);
#endif
defsubr (&Sredraw_display);
defsubr (&Sframe_or_buffer_changed_p);
defsubr (&Sopen_termscript);
......
......@@ -62,8 +62,6 @@ Boston, MA 02111-1307, USA. */
(setq symbol-list (cdr symbol-list)))))
*/
/* We need most of these symbols even if not MULTI_FRAME;
easiest to define them all, all of the time. */
/*&&& symbols declared here &&&*/
Lisp_Object Qframep;
Lisp_Object Qframe_live_p;
......@@ -172,7 +170,7 @@ set_menu_bar_lines (f, value, oldval)
/* Right now, menu bars don't work properly in minibuf-only frames;
most of the commands try to apply themselves to the minibuffer
frame itslef, and get an error because you can't switch buffers
frame itself, and get an error because you can't switch buffers
in or split the minibuffer window. */
if (FRAME_MINIBUF_ONLY_P (f))
return;
......@@ -191,8 +189,6 @@ set_menu_bar_lines (f, value, oldval)
}
}
#ifdef MULTI_FRAME
#include "buffer.h"
/* These help us bind and responding to switch-frame events. */
......@@ -2133,427 +2129,3 @@ keys_of_frame ()
initial_define_lispy_key (global_map, "iconify-frame", "ignore-event");
initial_define_lispy_key (global_map, "make-frame-visible", "ignore-event");
}
#else /* not MULTI_FRAME */
/* If we're not using multi-frame stuff, we still need to provide some
support functions. */
/* Unless this function is defined, providing set-frame-height and
set-frame-width doesn't help compatibility any, since they both
want this as their first argument. */
DEFUN ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
()
{
/* For your possible information, this code is unfolded into the
second WINDOW_FRAME in frame.h. */
Lisp_Object tem;
XSETFASTINT (tem, 0);
return tem;
}
DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
Sactive_minibuffer_window, 0, 0, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
()
{
return minibuf_level ? minibuf_window : Qnil;
}
DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(window)
Lisp_Object window;
{
/* For your possible information, this code is unfolded into the
second WINDOW_FRAME in frame.h. */
Lisp_Object tem;
XSETFASTINT (tem, 0);
return tem;
}
DEFUN ("frame-first-window", Fframe_first_window, Sframe_first_window, 0, 1, 0,
0)
(frame)
Lisp_Object frame;
{
Lisp_Object w;
w = FRAME_ROOT_WINDOW (selected_frame);
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 ("framep", Fframep, Sframep, 1, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(object)
Lisp_Object object;
{
#ifdef MSDOS
if (FRAME_X_P (object))
return intern ("pc");
#endif
return Qnil;
}
DEFUN ("set-frame-height", Fset_frame_height, Sset_frame_height, 2, 3, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame, rows, pretend)
Lisp_Object frame, rows, pretend;
{
CHECK_NUMBER (rows, 0);
change_frame_size (0, XINT (rows), 0, !NILP (pretend), 0);
return Qnil;
}
DEFUN ("set-frame-width", Fset_frame_width, Sset_frame_width, 2, 3, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame, cols, pretend)
Lisp_Object frame, cols, pretend;
{
CHECK_NUMBER (cols, 0);
change_frame_size (0, 0, XINT (cols), !NILP (pretend), 0);
return Qnil;
}
DEFUN ("set-frame-size", Fset_frame_size, Sset_frame_size, 3, 3, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame, cols, rows)
Lisp_Object frame, cols, rows;
{
CHECK_NUMBER (cols, 2);
CHECK_NUMBER (rows, 1);
change_frame_size (0, XINT (rows), XINT (cols), 0, 0);
return Qnil;
}
DEFUN ("frame-height", Fframe_height, Sframe_height, 0, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
return make_number (FRAME_HEIGHT (selected_frame));
}
DEFUN ("frame-width", Fframe_width, Sframe_width, 0, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
return make_number (FRAME_WIDTH (selected_frame));
}
DEFUN ("frame-char-height", Fframe_char_height, Sframe_char_height,
0, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
return make_number (1);
}
DEFUN ("frame-char-width", Fframe_char_width, Sframe_char_width,
0, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
return make_number (1);
}
DEFUN ("frame-pixel-height", Fframe_pixel_height,
Sframe_pixel_height, 0, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
return make_number (FRAME_HEIGHT (f));
}
DEFUN ("frame-pixel-width", Fframe_pixel_width,
Sframe_pixel_width, 0, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
return make_number (FRAME_WIDTH (f));
}
/* These are for backward compatibility with Emacs 18. */
DEFUN ("set-screen-height", Fset_screen_height, Sset_screen_height, 1, 2, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(lines, pretend)
Lisp_Object lines, pretend;
{
CHECK_NUMBER (lines, 0);
change_frame_size (0, XINT (lines), 0, !NILP (pretend), 0);
return Qnil;
}
DEFUN ("set-screen-width", Fset_screen_width, Sset_screen_width, 1, 2, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(cols, pretend)
Lisp_Object cols, pretend;
{
CHECK_NUMBER (cols, 0);
change_frame_size (0, 0, XINT (cols), !NILP (pretend), 0);
return Qnil;
}
DEFUN ("mouse-position", Fmouse_position, Smouse_position, 0, 0, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
()
{
#ifdef HAVE_MOUSE
if (mouse_position_hook)
{
FRAME_PTR f;
Lisp_Object lispy_dummy;
enum scroll_bar_part party_dummy;
Lisp_Object x, y;
unsigned long long_dummy;
(*mouse_position_hook) (&f, 0,
&lispy_dummy, &party_dummy,
&x, &y,
&long_dummy);
return Fcons (Fselected_frame (), Fcons (x, y));
}
#endif
return Fcons (Qnil, Fcons (Qnil, Qnil));
}
void
store_in_alist (alistptr, prop, val)
Lisp_Object *alistptr, val;
Lisp_Object prop;
{
register Lisp_Object tem;
tem = Fassq (prop, *alistptr);
if (EQ (tem, Qnil))
*alistptr = Fcons (Fcons (prop, val), *alistptr);
else
Fsetcdr (tem, val);
}
DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
Lisp_Object alist;
FRAME_PTR f;
int height, width;
if (EQ (frame, Qnil))
f = selected_frame;
else
{
CHECK_FRAME (frame, 0);
f = XFRAME (frame);
}
if (!FRAME_LIVE_P (f))
return Qnil;
alist = Qnil;
#ifdef MSDOS
if (FRAME_X_P (f))
{
static char *colornames[16] =
{
"black", "blue", "green", "cyan", "red", "magenta", "brown",
"lightgray", "darkgray", "lightblue", "lightgreen", "lightcyan",
"lightred", "lightmagenta", "yellow", "white"
};
store_in_alist (&alist, intern ("foreground-color"),
build_string (colornames[FRAME_FOREGROUND_PIXEL (f)]));
store_in_alist (&alist, intern ("background-color"),
build_string (colornames[FRAME_BACKGROUND_PIXEL (f)]));
}
#endif
store_in_alist (&alist, intern ("font"), build_string ("default"));
store_in_alist (&alist, Qname, build_string ("emacs"));
height = (FRAME_NEW_HEIGHT (f) ? FRAME_NEW_HEIGHT (f) : FRAME_HEIGHT (f));
store_in_alist (&alist, Qheight, make_number (height));
width = (FRAME_NEW_WIDTH (f) ? FRAME_NEW_WIDTH (f) : FRAME_WIDTH (f));
store_in_alist (&alist, Qwidth, make_number (width));
store_in_alist (&alist, Qmodeline, (FRAME_WANTS_MODELINE_P (f) ? Qt : Qnil));
store_in_alist (&alist, Qminibuffer, FRAME_MINIBUF_WINDOW (f));
store_in_alist (&alist, Qunsplittable, (FRAME_NO_SPLIT_P (f) ? Qt : Qnil));
store_in_alist (&alist, Qmenu_bar_lines, (FRAME_MENU_BAR_LINES (f)));
return alist;
}
DEFUN ("modify-frame-parameters", Fmodify_frame_parameters,
Smodify_frame_parameters, 2, 2, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame, alist)
Lisp_Object frame, alist;
{
Lisp_Object tail, elt, prop, val;
FRAME_PTR f;
if (NILP (frame))
f = selected_frame;
else
{
CHECK_LIVE_FRAME (frame, 0);
f = XFRAME (frame);
}
#ifdef MSDOS
if (FRAME_X_P (frame))
IT_set_frame_parameters (XFRAME (frame), alist);
else
#endif
for (tail = alist; !EQ (tail, Qnil); tail = Fcdr (tail))
{
elt = Fcar (tail);
prop = Fcar (elt);
val = Fcdr (elt);
if (EQ (prop, Qmenu_bar_lines))
set_menu_bar_lines (f, val, make_number (FRAME_MENU_BAR_LINES (f)));
}
return Qnil;
}
DEFUN ("frame-live-p", Fframe_live_p, Sframe_live_p, 1, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
return Qt;
}
DEFUN ("frame-visible-p", Fframe_visible_p, Sframe_visible_p, 1, 1, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
(frame)
Lisp_Object frame;
{
return Qt;
}
DEFUN ("frame-list", Fframe_list, Sframe_list, 0, 0, 0,
/* Don't confuse make-docfile by having two doc strings for this function.
make-docfile does not pay attention to #if, for good reason! */
0)
()
{
return Fcons (Fselected_frame (), Qnil);
}
syms_of_frame ()
{
syms_of_frame_1 ();
DEFVAR_LISP ("terminal-frame", &Vterminal_frame,
/* Don't confuse make-docfile by having two doc strings for this variable.
make-docfile does not pay attention to #if, for good reason! */
0);
XSETFASTINT (Vterminal_frame, 0);
defsubr (&Sselected_frame);
defsubr (&Sactive_minibuffer_window);
defsubr (&Swindow_frame);
defsubr (&Sframe_first_window);
defsubr (&Sframep);
defsubr (&Sframe_char_height);
defsubr (&Sframe_char_width);
defsubr (&Sframe_pixel_height);
defsubr (&Sframe_pixel_width);
defsubr (&Sset_frame_height);
defsubr (&Sset_frame_width);
defsubr (&Sset_frame_size);
defsubr (&Sset_screen_height);
defsubr (&Sset_screen_width);
defsubr (&Sframe_height);
Ffset (intern ("screen-height"), intern ("frame-height"));
defsubr (&Sframe_width);
Ffset (intern ("screen-width"), intern ("frame-width"));
defsubr (&Smouse_position);
Ffset (intern ("mouse-pixel-position"), intern ("mouse-position"));
defsubr (&Sframe_parameters);
defsubr (&Smodify_frame_parameters);
defsubr (&Sframe_live_p);
defsubr (&Sframe_visible_p);
defsubr (&Sframe_list);
#ifdef MSDOS
/* A comment in dispnew.c says the_only_frame is not protected. */
the_only_frame.face_alist = Qnil;
staticpro (&the_only_frame.face_alist);
the_only_frame.menu_bar_items = Qnil;
staticpro (&the_only_frame.menu_bar_items);
the_only_frame.menu_bar_vector = Qnil;
staticpro (&the_only_frame.menu_bar_vector);
the_only_frame.menu_bar_items = menu_bar_items (Qnil);
#endif
}
keys_of_frame ()
{
}
#endif /* not MULTI_FRAME */
......@@ -30,12 +30,7 @@ extern int frame_garbaged;
extern int message_buf_print;
/* The structure representing a frame.
We declare this even if MULTI_FRAME is not defined, because when
we lack multi-frame support, we use one instance of this structure
to represent the one frame we support. This is cleaner than
having miscellaneous random variables scattered about. */
/* The structure representing a frame. */
enum output_method
{ output_termcap, output_x_window, output_msdos_raw, output_win32 };
......@@ -294,14 +289,12 @@ struct frame
char mouse_moved;
};
#ifdef MULTI_KBOARD /* Note that MULTI_KBOARD implies MULTI_FRAME */
#ifdef MULTI_KBOARD
#define FRAME_KBOARD(f) ((f)->kboard)
#else
#define FRAME_KBOARD(f) (&the_only_kboard)
#endif
#ifdef MULTI_FRAME
typedef struct frame *FRAME_PTR;
#define XFRAME(p) ((struct frame *) XPNTR (p))
......@@ -422,8 +415,9 @@ typedef struct frame *FRAME_PTR;
should be a Lisp_Object too; it is used to iterate through the
Vframe_list.
If MULTI_FRAME isn't defined, then this loop expands to something which
executes the statement once. */
This macro is a holdover from a time when multiple frames weren't always
supported. An alternate definition of the macro would expand to
something which executes the statement once. */
#define FOR_EACH_FRAME(list_var, frame_var) \
for ((list_var) = Vframe_list; \
(CONSP (list_var) \
......@@ -446,105 +440,7 @@ extern Lisp_Object Vdefault_frame_alist;
extern Lisp_Object Vterminal_frame;
#else /* not MULTI_FRAME */
/* These definitions are used in a single-frame version of Emacs. */
/* A frame we use to store all the data concerning the screen when we
don't have multiple frames. Remember, if you store any data in it
which needs to be protected from GC, you should staticpro that
element explicitly. */
extern struct frame the_only_frame;
typedef struct frame *FRAME_PTR;
#ifdef __GNUC__
/* A function call for always getting 0 is overkill, so... */