summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1994-04-28 06:16:11 +0000
committerKarl Heuer <kwzh@gnu.org>1994-04-28 06:16:11 +0000
commitf769f1b2d2e830ba55c887ada20d23b7c31966d3 (patch)
tree522d21eda3b7cc0ede7a17fc10b0454a1fc4f925 /src
parent5b633aeb249902d98d1cc79cc2d7f980065a1a31 (diff)
downloademacs-f769f1b2d2e830ba55c887ada20d23b7c31966d3.tar.gz
(Fframe_parameters) [!MULTI_FRAME]: Unstub it again.
Diffstat (limited to 'src')
-rw-r--r--src/frame.c80
1 files changed, 70 insertions, 10 deletions
diff --git a/src/frame.c b/src/frame.c
index 2a065833e07..0d692c3d18a 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -23,11 +23,11 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "lisp.h"
#include "frame.h"
#include "termhooks.h"
+#include "window.h"
#ifdef MULTI_FRAME
#include "buffer.h"
-#include "window.h"
/* These help us bind and responding to switch-frame events. */
#include "commands.h"
@@ -1337,7 +1337,7 @@ If FRAME is omitted, return information on the currently selected frame.")
Lisp_Object frame;
{
Lisp_Object alist;
- struct frame *f;
+ FRAME_PTR f;
if (EQ (frame, Qnil))
f = selected_frame;
@@ -1347,19 +1347,19 @@ If FRAME is omitted, return information on the currently selected frame.")
f = XFRAME (frame);
}
- if (f->display.nothing == 0)
+ if (!FRAME_LIVE_P (f))
return Qnil;
alist = Fcopy_alist (f->param_alist);
store_in_alist (&alist, Qname, f->name);
- store_in_alist (&alist, Qheight, make_number (f->height));
- store_in_alist (&alist, Qwidth, make_number (f->width));
- store_in_alist (&alist, Qmodeline, (f->wants_modeline ? Qt : Qnil));
+ store_in_alist (&alist, Qheight, make_number (FRAME_HEIGHT (f)));
+ store_in_alist (&alist, Qwidth, make_number (FRAME_WIDTH (f)));
+ store_in_alist (&alist, Qmodeline, (FRAME_WANTS_MODELINE_P (f) ? Qt : Qnil));
store_in_alist (&alist, Qminibuffer,
(! FRAME_HAS_MINIBUF_P (f) ? Qnil
- : (FRAME_MINIBUF_ONLY_P (f) ? Qonly
- : FRAME_MINIBUF_WINDOW (f))));
- store_in_alist (&alist, Qunsplittable, (f->no_split ? Qt : Qnil));
+ : FRAME_MINIBUF_ONLY_P (f) ? Qonly
+ : 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)));
/* I think this should be done with a hook. */
@@ -1768,6 +1768,14 @@ keys_of_frame ()
/* If we're not using multi-frame stuff, we still need to provide some
support functions. */
+Lisp_Object Qheight;
+Lisp_Object Qminibuffer;
+Lisp_Object Qmodeline;
+Lisp_Object Qname;
+Lisp_Object Qunsplittable;
+Lisp_Object Qmenu_bar_lines;
+Lisp_Object Qwidth;
+
Lisp_Object Vterminal_frame;
/* Unless this function is defined, providing set-frame-height and
@@ -1934,6 +1942,20 @@ DEFUN ("mouse-position", Fmouse_position, Smouse_position, 0, 0, 0,
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! */
@@ -1941,7 +1963,30 @@ DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0,
(frame)
Lisp_Object frame;
{
- return Qnil;
+ Lisp_Object alist;
+ FRAME_PTR f;
+
+ if (EQ (frame, Qnil))
+ f = selected_frame;
+ else
+ {
+ CHECK_FRAME (frame, 0);
+ f = XFRAME (frame);
+ }
+
+ if (!FRAME_LIVE_P (f))
+ return Qnil;
+
+ alist = Qnil;
+ store_in_alist (&alist, Qname, build_string ("emacs"));
+ store_in_alist (&alist, Qheight, make_number (FRAME_HEIGHT (f)));
+ store_in_alist (&alist, Qwidth, make_number (FRAME_WIDTH (f)));
+ 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,
@@ -1957,6 +2002,21 @@ DEFUN ("modify-frame-parameters", Fmodify_frame_parameters,
syms_of_frame ()
{
+ Qheight = intern ("height");
+ staticpro (&Qheight);
+ Qminibuffer = intern ("minibuffer");
+ staticpro (&Qminibuffer);
+ Qmodeline = intern ("modeline");
+ staticpro (&Qmodeline);
+ Qname = intern ("name");
+ staticpro (&Qname);
+ Qunsplittable = intern ("unsplittable");
+ staticpro (&Qunsplittable);
+ Qmenu_bar_lines = intern ("menu-bar-lines");
+ staticpro (&Qmenu_bar_lines);
+ Qwidth = intern ("width");
+ staticpro (&Qwidth);
+
DEFVAR_LISP ("terminal-frame", &Vterminal_frame,
"The initial frame-object, which represents Emacs's stdout.");
XFASTINT (Vterminal_frame) = 0;