#include <config.h>
+#define FRAME_INLINE EXTERN_INLINE
+
#include <stdio.h>
-#include <ctype.h>
#include <errno.h>
#include <limits.h>
#include <setjmp.h>
+
+#include <c-ctype.h>
+
#include "lisp.h"
#include "character.h"
#ifdef HAVE_X_WINDOWS
static void x_report_frame_params (struct frame *, Lisp_Object *);
#endif
+/* These setters are used only in this file, so they can be private. */
+static inline void
+fset_buffer_predicate (struct frame *f, Lisp_Object val)
+{
+ f->buffer_predicate = val;
+}
+static inline void
+fset_minibuffer_window (struct frame *f, Lisp_Object val)
+{
+ f->minibuffer_window = val;
+}
+
\f
static void
set_menu_bar_lines_1 (Lisp_Object window, int n)
/* Initialize Lisp data. Note that allocate_frame initializes all
Lisp data to nil, so do it only for slots which should not be nil. */
- FSET (f, tool_bar_position, Qtop);
+ fset_tool_bar_position (f, Qtop);
/* Initialize non-Lisp data. Note that allocate_frame zeroes out all
non-Lisp data, so do it only for slots which should not be zero.
WSET (XWINDOW (mini_window), prev, root_window);
XWINDOW (mini_window)->mini = 1;
WSET (XWINDOW (mini_window), frame, frame);
- FSET (f, minibuffer_window, mini_window);
+ fset_minibuffer_window (f, mini_window);
}
else
{
mini_window = Qnil;
WSET (XWINDOW (root_window), next, Qnil);
- FSET (f, minibuffer_window, Qnil);
+ fset_minibuffer_window (f, Qnil);
}
WSET (XWINDOW (root_window), frame, frame);
etc. Running Lisp functions at this point surely ends in a
SEGV. */
set_window_buffer (root_window, buf, 0, 0);
- FSET (f, buffer_list, Fcons (buf, Qnil));
+ fset_buffer_list (f, Fcons (buf, Qnil));
}
if (mini_p)
0, 0);
}
- FSET (f, root_window, root_window);
- FSET (f, selected_window, root_window);
+ fset_root_window (f, root_window);
+ fset_selected_window (f, root_window);
/* Make sure this window seems more recently used than
a newly-created, never-selected window. */
XWINDOW (f->selected_window)->use_time = ++window_select_count;
= XFRAME (KVAR (kb, Vdefault_minibuffer_frame))->minibuffer_window;
}
- FSET (f, minibuffer_window, mini_window);
+ fset_minibuffer_window (f, mini_window);
/* Make the chosen minibuffer window display the proper minibuffer,
unless it is already showing a minibuffer. */
if (NILP (Fmemq (XWINDOW (mini_window)->buffer, Vminibuffer_list)))
- Fset_window_buffer (mini_window,
- (NILP (Vminibuffer_list)
- ? get_minibuffer (0)
- : Fcar (Vminibuffer_list)), Qnil);
+ /* Use set_window_buffer instead of Fset_window_buffer (see
+ discussion of bug#11984, bug#12025, bug#12026). */
+ set_window_buffer (mini_window,
+ (NILP (Vminibuffer_list)
+ ? get_minibuffer (0)
+ : Fcar (Vminibuffer_list)), 0, 0);
return f;
}
Avoid infinite looping on the window chain by marking next pointer
as nil. */
- mini_window = FSET (f, minibuffer_window, f->root_window);
+ mini_window = f->root_window;
+ fset_minibuffer_window (f, mini_window);
XWINDOW (mini_window)->mini = 1;
WSET (XWINDOW (mini_window), next, Qnil);
WSET (XWINDOW (mini_window), prev, Qnil);
/* Put the proper buffer in that window. */
- Fset_window_buffer (mini_window,
- (NILP (Vminibuffer_list)
- ? get_minibuffer (0)
- : Fcar (Vminibuffer_list)), Qnil);
+ /* Use set_window_buffer instead of Fset_window_buffer (see
+ discussion of bug#11984, bug#12025, bug#12026). */
+ set_window_buffer (mini_window,
+ (NILP (Vminibuffer_list)
+ ? get_minibuffer (0)
+ : Fcar (Vminibuffer_list)), 0, 0);
return f;
}
#endif /* HAVE_WINDOW_SYSTEM */
Vframe_list = Fcons (frame, Vframe_list);
tty_frame_count = 1;
- FSET (f, name, build_pure_c_string ("F1"));
+ fset_name (f, build_pure_c_string ("F1"));
f->visible = 1;
f->async_visible = 1;
XSETFRAME (frame, f);
Vframe_list = Fcons (frame, Vframe_list);
- FSET (f, name, make_formatted_string (name, "F%"pMd, ++tty_frame_count));
+ fset_name (f, make_formatted_string (name, "F%"pMd, ++tty_frame_count));
f->visible = 1; /* FRAME_SET_VISIBLE wd set frame_garbaged. */
f->async_visible = 1; /* Don't let visible be cleared later. */
/* Make the frame face alist be frame-specific, so that each
frame could change its face definitions independently. */
- FSET (f, face_alist, Fcopy_alist (sf->face_alist));
+ fset_face_alist (f, Fcopy_alist (sf->face_alist));
/* Simple Fcopy_alist isn't enough, because we need the contents of
the vectors which are the CDRs of associations in face_alist to
be copied as well. */
/* Don't allow minibuf_window to remain on a deleted frame. */
if (EQ (f->minibuffer_window, minibuf_window))
{
- Fset_window_buffer (sf->minibuffer_window,
- XWINDOW (minibuf_window)->buffer, Qnil);
+ /* Use set_window_buffer instead of Fset_window_buffer (see
+ discussion of bug#11984, bug#12025, bug#12026). */
+ set_window_buffer (sf->minibuffer_window,
+ XWINDOW (minibuf_window)->buffer, 0, 0);
minibuf_window = sf->minibuffer_window;
/* If the dying minibuffer window was selected,
/* Mark all the windows that used to be on FRAME as deleted, and then
remove the reference to them. */
delete_all_child_windows (f->root_window);
- FSET (f, root_window, Qnil);
+ fset_root_window (f, Qnil);
Vframe_list = Fdelq (frame, Vframe_list);
FRAME_SET_VISIBLE (f, 0);
garbage collection. The frame object itself may not be garbage
collected until much later, because recent_keys and other data
structures can still refer to it. */
- FSET (f, menu_bar_vector, Qnil);
+ fset_menu_bar_vector (f, Qnil);
free_font_driver_list (f);
xfree (f->namebuf);
if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window))
{
struct frame *sf = XFRAME (selected_frame);
- Fset_window_buffer (sf->minibuffer_window,
- XWINDOW (minibuf_window)->buffer, Qnil);
+ /* Use set_window_buffer instead of Fset_window_buffer (see
+ discussion of bug#11984, bug#12025, bug#12026). */
+ set_window_buffer (sf->minibuffer_window,
+ XWINDOW (minibuf_window)->buffer, 0, 0);
minibuf_window = sf->minibuffer_window;
}
Fhandle_switch_frame (next_frame (frame, Qt));
#endif
- /* Don't allow minibuf_window to remain on a deleted frame. */
+ /* Don't allow minibuf_window to remain on an iconified frame. */
if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window))
{
struct frame *sf = XFRAME (selected_frame);
- Fset_window_buffer (sf->minibuffer_window,
- XWINDOW (minibuf_window)->buffer, Qnil);
+ /* Use set_window_buffer instead of Fset_window_buffer (see
+ discussion of bug#11984, bug#12025, bug#12026). */
+ set_window_buffer (sf->minibuffer_window,
+ XWINDOW (minibuf_window)->buffer, 0, 0);
minibuf_window = sf->minibuffer_window;
}
f = XFRAME (frame);
- FSET (f, focus_frame, focus_frame);
+ fset_focus_frame (f, focus_frame);
if (FRAME_TERMINAL (f)->frame_rehighlight_hook)
(*FRAME_TERMINAL (f)->frame_rehighlight_hook) (f);
FOR_EACH_FRAME (tail, frame)
{
- FSET (XFRAME (frame), buffer_list,
- Fdelq (buffer, XFRAME (frame)->buffer_list));
- FSET (XFRAME (frame), buried_buffer_list,
- Fdelq (buffer, XFRAME (frame)->buried_buffer_list));
+ fset_buffer_list
+ (XFRAME (frame), Fdelq (buffer, XFRAME (frame)->buffer_list));
+ fset_buried_buffer_list
+ (XFRAME (frame), Fdelq (buffer, XFRAME (frame)->buried_buffer_list));
}
}
error ("Frame names of the form F<num> are usurped by Emacs");
}
- FSET (f, name, name);
+ fset_name (f, name);
update_mode_lines = 1;
}
for (; CONSP (val); val = XCDR (val))
if (!NILP (Fbuffer_live_p (XCAR (val))))
list = Fcons (XCAR (val), list);
- FSET (f, buffer_list, Fnreverse (list));
+ fset_buffer_list (f, Fnreverse (list));
return;
}
if (EQ (prop, Qburied_buffer_list))
for (; CONSP (val); val = XCDR (val))
if (!NILP (Fbuffer_live_p (XCAR (val))))
list = Fcons (XCAR (val), list);
- FSET (f, buried_buffer_list, Fnreverse (list));
+ fset_buried_buffer_list (f, Fnreverse (list));
return;
}
case SYMBOL_PLAINVAL: case SYMBOL_FORWARDED: break;
case SYMBOL_LOCALIZED:
{ struct Lisp_Buffer_Local_Value *blv = sym->val.blv;
- if (blv->frame_local && BLV_FOUND (blv) && XFRAME (blv->where) == f)
+ if (blv->frame_local && blv_found (blv) && XFRAME (blv->where) == f)
swap_in_global_binding (sym);
break;
}
/* Update the frame parameter alist. */
old_alist_elt = Fassq (prop, f->param_alist);
if (EQ (old_alist_elt, Qnil))
- FSET (f, param_alist, Fcons (Fcons (prop, val), f->param_alist));
+ fset_param_alist (f, Fcons (Fcons (prop, val), f->param_alist));
else
Fsetcdr (old_alist_elt, val);
in addition to the alist. */
if (EQ (prop, Qbuffer_predicate))
- FSET (f, buffer_predicate, val);
+ fset_buffer_predicate (f, val);
if (! FRAME_WINDOW_P (f))
{
error ("Can't change the surrogate minibuffer of a frame with its own minibuffer");
/* Install the chosen minibuffer window, with proper buffer. */
- FSET (f, minibuffer_window, val);
+ fset_minibuffer_window (f, val);
}
}
new_value = Qnil;
while (*p0)
{
- while (*p1 && ! isspace (*p1) && *p1 != ',') p1++;
+ while (*p1 && ! c_isspace (*p1) && *p1 != ',') p1++;
if (p0 < p1)
new_value = Fcons (Fintern (make_string (p0, p1 - p0), Qnil),
new_value);
{
int c;
- while ((c = *++p1) && isspace (c));
+ while ((c = *++p1) && c_isspace (c));
}
p0 = p1;
}