Make Emacs functions such as Fatom 'static' by default.
[bpt/emacs.git] / src / frame.c
index 20bad4c..6e0e9c4 100644 (file)
@@ -225,7 +225,7 @@ return values.  */)
          : Qnil);
 }
 
-DEFUN ("window-system", Fwindow_system, Swindow_system, 0, 1, 0,
+DEFUE ("window-system", Fwindow_system, Swindow_system, 0, 1, 0,
        doc: /* The name of the window system that FRAME is displaying through.
 The value is a symbol:
  nil for a termcap frame (a character-only terminal),
@@ -428,20 +428,20 @@ make_frame_without_minibuffer (register Lisp_Object mini_window, KBOARD *kb, Lis
   if (NILP (mini_window))
     {
       /* Use default-minibuffer-frame if possible.  */
-      if (!FRAMEP (kb->Vdefault_minibuffer_frame)
-         || ! FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame)))
+      if (!FRAMEP (KVAR (kb, Vdefault_minibuffer_frame))
+         || ! FRAME_LIVE_P (XFRAME (KVAR (kb, Vdefault_minibuffer_frame))))
        {
           Lisp_Object frame_dummy;
 
           XSETFRAME (frame_dummy, f);
           GCPRO1 (frame_dummy);
          /* If there's no minibuffer frame to use, create one.  */
-         kb->Vdefault_minibuffer_frame =
+         KVAR (kb, Vdefault_minibuffer_frame) =
            call1 (intern ("make-initial-minibuffer-frame"), display);
           UNGCPRO;
        }
 
-      mini_window = XFRAME (kb->Vdefault_minibuffer_frame)->minibuffer_window;
+      mini_window = XFRAME (KVAR (kb, Vdefault_minibuffer_frame))->minibuffer_window;
     }
 
   f->minibuffer_window = mini_window;
@@ -856,7 +856,7 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor
   return frame;
 }
 
-DEFUN ("select-frame", Fselect_frame, Sselect_frame, 1, 2, "e",
+DEFUE ("select-frame", Fselect_frame, Sselect_frame, 1, 2, "e",
        doc: /* Select FRAME.
 Subsequent editing commands apply to its selected window.
 Optional argument NORECORD means to neither change the order of
@@ -889,19 +889,19 @@ to that frame.  */)
   (Lisp_Object event)
 {
   /* Preserve prefix arg that the command loop just cleared.  */
-  current_kboard->Vprefix_arg = Vcurrent_prefix_arg;
-  call1 (Vrun_hooks, Qmouse_leave_buffer_hook);
+  KVAR (current_kboard, Vprefix_arg) = Vcurrent_prefix_arg;
+  Frun_hooks (1, &Qmouse_leave_buffer_hook);
   return do_switch_frame (event, 0, 0, Qnil);
 }
 
-DEFUN ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0,
+DEFUE ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0,
        doc: /* Return the frame that is now selected.  */)
   (void)
 {
   return selected_frame;
 }
 \f
-DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0,
+DEFUE ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0,
        doc: /* Return the frame object that window WINDOW is on.  */)
   (Lisp_Object window)
 {
@@ -909,7 +909,7 @@ DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0,
   return XWINDOW (window)->frame;
 }
 
-DEFUN ("frame-first-window", Fframe_first_window, Sframe_first_window, 0, 1, 0,
+DEFUE ("frame-first-window", Fframe_first_window, Sframe_first_window, 0, 1, 0,
        doc: /* Returns the topmost, leftmost window of FRAME.
 If omitted, FRAME defaults to the currently selected frame.  */)
   (Lisp_Object frame)
@@ -943,7 +943,7 @@ DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
   return minibuf_level ? minibuf_window : Qnil;
 }
 
-DEFUN ("frame-root-window", Fframe_root_window, Sframe_root_window, 0, 1, 0,
+DEFUE ("frame-root-window", Fframe_root_window, Sframe_root_window, 0, 1, 0,
        doc: /* Returns the root-window of FRAME.
 If omitted, FRAME defaults to the currently selected frame.  */)
   (Lisp_Object frame)
@@ -980,7 +980,7 @@ FRAME defaults to the currently selected frame.  */)
   return window;
 }
 
-DEFUN ("set-frame-selected-window", Fset_frame_selected_window,
+DEFUE ("set-frame-selected-window", Fset_frame_selected_window,
        Sset_frame_selected_window, 2, 3, 0,
        doc: /* Set selected window of FRAME to WINDOW.
 If FRAME is nil, use the selected frame.  If FRAME is the
@@ -1526,7 +1526,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
   /* If we've deleted this keyboard's default_minibuffer_frame, try to
      find another one.  Prefer minibuffer-only frames, but also notice
      frames with other windows.  */
-  if (kb != NULL && EQ (frame, kb->Vdefault_minibuffer_frame))
+  if (kb != NULL && EQ (frame, KVAR (kb, Vdefault_minibuffer_frame)))
     {
       Lisp_Object frames;
 
@@ -1575,11 +1575,11 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
          if (NILP (frame_with_minibuf))
            abort ();
 
-         kb->Vdefault_minibuffer_frame = frame_with_minibuf;
+         KVAR (kb, Vdefault_minibuffer_frame) = frame_with_minibuf;
        }
       else
        /* No frames left on this kboard--say no minibuffer either.  */
-       kb->Vdefault_minibuffer_frame = Qnil;
+       KVAR (kb, Vdefault_minibuffer_frame) = Qnil;
     }
 
   /* Cause frame titles to update--necessary if we now have just one frame.  */
@@ -1776,7 +1776,7 @@ before calling this function on it, like this.
 \f
 static void make_frame_visible_1 (Lisp_Object);
 
-DEFUN ("make-frame-visible", Fmake_frame_visible, Smake_frame_visible,
+DEFUE ("make-frame-visible", Fmake_frame_visible, Smake_frame_visible,
        0, 1, "",
        doc: /* Make the frame FRAME visible (assuming it is an X window).
 If omitted, FRAME defaults to the currently selected frame.  */)
@@ -1817,7 +1817,7 @@ make_frame_visible_1 (Lisp_Object window)
       w = XWINDOW (window);
 
       if (!NILP (w->buffer))
-       XBUFFER (w->buffer)->display_time = Fcurrent_time ();
+       BVAR (XBUFFER (w->buffer), display_time) = Fcurrent_time ();
 
       if (!NILP (w->vchild))
        make_frame_visible_1 (w->vchild);
@@ -1876,7 +1876,7 @@ displayed in the terminal.  */)
   return Qnil;
 }
 
-DEFUN ("iconify-frame", Ficonify_frame, Siconify_frame,
+DEFUE ("iconify-frame", Ficonify_frame, Siconify_frame,
        0, 1, "",
        doc: /* Make the frame FRAME into an icon.
 If omitted, FRAME defaults to the currently selected frame.  */)
@@ -1961,7 +1961,7 @@ DEFUN ("visible-frame-list", Fvisible_frame_list, Svisible_frame_list,
 }
 
 
-DEFUN ("raise-frame", Fraise_frame, Sraise_frame, 0, 1, "",
+DEFUE ("raise-frame", Fraise_frame, Sraise_frame, 0, 1, "",
        doc: /* Bring FRAME to the front, so it occludes any frames it overlaps.
 If FRAME is invisible or iconified, make it visible.
 If you don't specify a frame, the selected frame is used.
@@ -2014,7 +2014,7 @@ doesn't support multiple overlapping frames, this function does nothing.  */)
 }
 
 \f
-DEFUN ("redirect-frame-focus", Fredirect_frame_focus, Sredirect_frame_focus,
+DEFUE ("redirect-frame-focus", Fredirect_frame_focus, Sredirect_frame_focus,
        1, 2, 0,
        doc: /* Arrange for keystrokes typed at FRAME to be sent to FOCUS-FRAME.
 In other words, switch-frame events caused by events in FRAME will
@@ -2208,15 +2208,23 @@ store_frame_param (struct frame *f, Lisp_Object prop, Lisp_Object val)
   register Lisp_Object old_alist_elt;
 
   /* The buffer-list parameters are stored in a special place and not
-     in the alist.  */
+     in the alist.  All buffers must be live.  */
   if (EQ (prop, Qbuffer_list))
     {
-      f->buffer_list = val;
+      Lisp_Object list = Qnil;
+      for (; CONSP (val); val = XCDR (val))
+       if (!NILP (Fbuffer_live_p (XCAR (val))))
+         list = Fcons (XCAR (val), list);
+      f->buffer_list = Fnreverse (list);
       return;
     }
   if (EQ (prop, Qburied_buffer_list))
     {
-      f->buried_buffer_list = val;
+      Lisp_Object list = Qnil;
+      for (; CONSP (val); val = XCDR (val))
+       if (!NILP (Fbuffer_live_p (XCAR (val))))
+         list = Fcons (XCAR (val), list);
+      f->buried_buffer_list = Fnreverse (list);
       return;
     }
 
@@ -2384,7 +2392,7 @@ If FRAME is omitted, return information on the currently selected frame.  */)
 }
 
 
-DEFUN ("frame-parameter", Fframe_parameter, Sframe_parameter, 2, 2, 0,
+DEFUE ("frame-parameter", Fframe_parameter, Sframe_parameter, 2, 2, 0,
        doc: /* Return FRAME's value for parameter PARAMETER.
 If FRAME is nil, describe the currently selected frame.  */)
   (Lisp_Object frame, Lisp_Object parameter)
@@ -2462,7 +2470,7 @@ If FRAME is nil, describe the currently selected frame.  */)
 }
 
 
-DEFUN ("modify-frame-parameters", Fmodify_frame_parameters,
+DEFUE ("modify-frame-parameters", Fmodify_frame_parameters,
        Smodify_frame_parameters, 2, 2, 0,
        doc: /* Modify the parameters of frame FRAME according to ALIST.
 If FRAME is nil, it defaults to the selected frame.
@@ -2521,7 +2529,7 @@ use is not recommended.  Explicitly check for a frame-parameter instead.  */)
        }
 
       /* Now process them in reverse of specified order.  */
-      for (i--; i >= 0; i--)
+      while (--i >= 0)
        {
          prop = parms[i];
          val = values[i];
@@ -2894,7 +2902,7 @@ x_set_frame_parameters (FRAME_PTR f, Lisp_Object alist)
   /* Record in these vectors all the parms specified.  */
   Lisp_Object *parms;
   Lisp_Object *values;
-  int i, p;
+  size_t i, p;
   int left_no_change = 0, top_no_change = 0;
   int icon_left_no_change = 0, icon_top_no_change = 0;
   int size_changed = 0;
@@ -2967,7 +2975,7 @@ x_set_frame_parameters (FRAME_PTR f, Lisp_Object alist)
     }
 
   /* Now process them in reverse of specified order.  */
-  for (i--; i >= 0; i--)
+  while (i-- != 0)
     {
       Lisp_Object prop, val;
 
@@ -3275,12 +3283,12 @@ x_set_screen_gamma (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
   bgcolor = Fassq (Qbackground_color, f->param_alist);
   if (CONSP (bgcolor) && (bgcolor = XCDR (bgcolor), STRINGP (bgcolor)))
     {
-      Lisp_Object index = Fget (Qbackground_color, Qx_frame_parameter);
-      if (NATNUMP (index)
-         && (XFASTINT (index)
+      Lisp_Object parm_index = Fget (Qbackground_color, Qx_frame_parameter);
+      if (NATNUMP (parm_index)
+         && (XFASTINT (parm_index)
              < sizeof (frame_parms)/sizeof (frame_parms[0]))
-         && FRAME_RIF (f)->frame_parm_handlers[XFASTINT (index)])
-         (*FRAME_RIF (f)->frame_parm_handlers[XFASTINT (index)])
+         && FRAME_RIF (f)->frame_parm_handlers[XFASTINT (parm_index)])
+         (*FRAME_RIF (f)->frame_parm_handlers[XFASTINT (parm_index)])
            (f, bgcolor, Qnil);
     }
 
@@ -3705,8 +3713,7 @@ validate_x_resource_name (void)
     return;
 
   /* If name is entirely invalid, or nearly so, use `emacs'.  */
-  if (good_count == 0
-      || (good_count == 1 && bad_count > 0))
+  if (good_count < 2)
     {
       Vx_resource_name = build_string ("emacs");
       return;