Widely used frame validity and checking functions.
* frame.h (decode_live_frame, decode_any_frame): Add prototypes. * frame.c (decode_live_frame, decode_any_frame): New functions. (delete_frame, Fredirect_frame_focus, Fframe_parameters) (Fframe_parameter, Fframe_char_height, Fframe_char_width) (Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width) (Fframe_pointer_visible_p): Use decode_any_frame. (Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame) (Fraise_frame, Flower_frame, Fmodify_frame_parameters) (Fset_frame_height, Fset_frame_width): Use decode_live_frame. (Fframe_focus): Likewise. Allow zero number of arguments. Adjust docstring. (frame_buffer_list, frame_buffer_predicate): Remove. * lisp.h (frame_buffer_predicate): Remove prototype. * buffer.c (Fother_buffer): Use decode_any_frame. * xdisp.c (Ftool_bar_lines_needed): Likewise. * xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise. * font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font) (Fclose_font, Ffont_info): Use decode_live_frame. * fontset.c (check_fontset_name): Likewise. * terminal.c (Fframe_terminal): Likewise. * w32fns.c (check_x_frame): Likewise. * window.c (Fminibuffer_window, Fwindow_at) (Fcurrent_window_configuration): Likewise. (Frun_window_configuration_change_hook, Fwindow_resize_apply): Likewise. Allow zero number of arguments. Adjust docstring. * dispnew.c (Fredraw_frame): Likewise. * xfaces.c (frame_or_selected_frame): Remove. (Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font) (Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p) (Fframe_face_alist): Use decode_live_frame. * xfns.c (check_x_frame): Likewise.
This commit is contained in:
parent
8e6a67b7fa
commit
d9f07150fc
14 changed files with 172 additions and 348 deletions
|
@ -1,3 +1,38 @@
|
|||
2012-11-06 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Widely used frame validity and checking functions.
|
||||
* frame.h (decode_live_frame, decode_any_frame): Add prototypes.
|
||||
* frame.c (decode_live_frame, decode_any_frame): New functions.
|
||||
(delete_frame, Fredirect_frame_focus, Fframe_parameters)
|
||||
(Fframe_parameter, Fframe_char_height, Fframe_char_width)
|
||||
(Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width)
|
||||
(Fframe_pointer_visible_p): Use decode_any_frame.
|
||||
(Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame)
|
||||
(Fraise_frame, Flower_frame, Fmodify_frame_parameters)
|
||||
(Fset_frame_height, Fset_frame_width): Use decode_live_frame.
|
||||
(Fframe_focus): Likewise. Allow zero number of arguments.
|
||||
Adjust docstring.
|
||||
(frame_buffer_list, frame_buffer_predicate): Remove.
|
||||
* lisp.h (frame_buffer_predicate): Remove prototype.
|
||||
* buffer.c (Fother_buffer): Use decode_any_frame.
|
||||
* xdisp.c (Ftool_bar_lines_needed): Likewise.
|
||||
* xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise.
|
||||
* font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font)
|
||||
(Fclose_font, Ffont_info): Use decode_live_frame.
|
||||
* fontset.c (check_fontset_name): Likewise.
|
||||
* terminal.c (Fframe_terminal): Likewise.
|
||||
* w32fns.c (check_x_frame): Likewise.
|
||||
* window.c (Fminibuffer_window, Fwindow_at)
|
||||
(Fcurrent_window_configuration): Likewise.
|
||||
(Frun_window_configuration_change_hook, Fwindow_resize_apply):
|
||||
Likewise. Allow zero number of arguments. Adjust docstring.
|
||||
* dispnew.c (Fredraw_frame): Likewise.
|
||||
* xfaces.c (frame_or_selected_frame): Remove.
|
||||
(Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font)
|
||||
(Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p)
|
||||
(Fframe_face_alist): Use decode_live_frame.
|
||||
* xfns.c (check_x_frame): Likewise.
|
||||
|
||||
2012-11-06 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* window.c (quad): New function.
|
||||
|
|
12
src/buffer.c
12
src/buffer.c
|
@ -1543,17 +1543,11 @@ list first, followed by the list of all buffers. If no other buffer
|
|||
exists, return the buffer `*scratch*' (creating it if necessary). */)
|
||||
(register Lisp_Object buffer, Lisp_Object visible_ok, Lisp_Object frame)
|
||||
{
|
||||
Lisp_Object tail, buf, pred;
|
||||
Lisp_Object notsogood = Qnil;
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
Lisp_Object tail = f->buffer_list, pred = f->buffer_predicate;
|
||||
Lisp_Object buf, notsogood = Qnil;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
|
||||
CHECK_FRAME (frame);
|
||||
|
||||
pred = frame_buffer_predicate (frame);
|
||||
/* Consider buffers that have been seen in the frame first. */
|
||||
tail = XFRAME (frame)->buffer_list;
|
||||
for (; CONSP (tail); tail = XCDR (tail))
|
||||
{
|
||||
buf = XCAR (tail);
|
||||
|
|
|
@ -3071,14 +3071,12 @@ window_to_frame_hpos (struct window *w, int hpos)
|
|||
Redrawing Frames
|
||||
**********************************************************************/
|
||||
|
||||
DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 1, 1, 0,
|
||||
doc: /* Clear frame FRAME and output again what is supposed to appear on it. */)
|
||||
DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 0, 1, 0,
|
||||
doc: /* Clear frame FRAME and output again what is supposed to appear on it.
|
||||
If FRAME is omitted or nil, the selected frame is used. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
/* Ignore redraw requests, if frame has no glyphs yet.
|
||||
(Implementation note: It still has to be checked why we are
|
||||
|
|
40
src/font.c
40
src/font.c
|
@ -3993,16 +3993,11 @@ The optional argument FRAME specifies the frame that the face attributes
|
|||
are to be displayed on. If omitted, the selected frame is used. */)
|
||||
(Lisp_Object font, Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
Lisp_Object plist[10];
|
||||
Lisp_Object val;
|
||||
int n = 0;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
if (STRINGP (font))
|
||||
{
|
||||
int fontset = fs_query_fontset (font, 0);
|
||||
|
@ -4152,18 +4147,15 @@ how close they are to PREFER. */)
|
|||
|
||||
DEFUN ("font-family-list", Ffont_family_list, Sfont_family_list, 0, 1, 0,
|
||||
doc: /* List available font families on the current frame.
|
||||
Optional argument FRAME, if non-nil, specifies the target frame. */)
|
||||
If FRAME is omitted or nil, the selected frame is used. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
FRAME_PTR f;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
struct font_driver_list *driver_list;
|
||||
Lisp_Object list;
|
||||
Lisp_Object list = Qnil;
|
||||
|
||||
XSETFRAME (frame, f);
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
list = Qnil;
|
||||
for (driver_list = f->font_driver_list; driver_list;
|
||||
driver_list = driver_list->next)
|
||||
if (driver_list->driver->list_family)
|
||||
|
@ -4531,11 +4523,9 @@ DEFUN ("open-font", Fopen_font, Sopen_font, 1, 3, 0,
|
|||
(Lisp_Object font_entity, Lisp_Object size, Lisp_Object frame)
|
||||
{
|
||||
EMACS_INT isize;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
CHECK_FONT_ENTITY (font_entity);
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
|
||||
if (NILP (size))
|
||||
isize = XINT (AREF (font_entity, FONT_SIZE_INDEX));
|
||||
|
@ -4543,7 +4533,7 @@ DEFUN ("open-font", Fopen_font, Sopen_font, 1, 3, 0,
|
|||
{
|
||||
CHECK_NUMBER_OR_FLOAT (size);
|
||||
if (FLOATP (size))
|
||||
isize = POINT_TO_PIXEL (XFLOAT_DATA (size), XFRAME (frame)->resy);
|
||||
isize = POINT_TO_PIXEL (XFLOAT_DATA (size), f->resy);
|
||||
else
|
||||
isize = XINT (size);
|
||||
if (! (INT_MIN <= isize && isize <= INT_MAX))
|
||||
|
@ -4551,7 +4541,7 @@ DEFUN ("open-font", Fopen_font, Sopen_font, 1, 3, 0,
|
|||
if (isize == 0)
|
||||
isize = 120;
|
||||
}
|
||||
return font_open_entity (XFRAME (frame), font_entity, isize);
|
||||
return font_open_entity (f, font_entity, isize);
|
||||
}
|
||||
|
||||
DEFUN ("close-font", Fclose_font, Sclose_font, 1, 2, 0,
|
||||
|
@ -4559,10 +4549,7 @@ DEFUN ("close-font", Fclose_font, Sclose_font, 1, 2, 0,
|
|||
(Lisp_Object font_object, Lisp_Object frame)
|
||||
{
|
||||
CHECK_FONT_OBJECT (font_object);
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
font_close_object (XFRAME (frame), font_object);
|
||||
font_close_object (decode_live_frame (frame), font_object);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
@ -4847,7 +4834,7 @@ where
|
|||
If the named font is not yet loaded, return nil. */)
|
||||
(Lisp_Object name, Lisp_Object frame)
|
||||
{
|
||||
FRAME_PTR f;
|
||||
struct frame *f;
|
||||
struct font *font;
|
||||
Lisp_Object info;
|
||||
Lisp_Object font_object;
|
||||
|
@ -4856,10 +4843,7 @@ If the named font is not yet loaded, return nil. */)
|
|||
|
||||
if (! FONTP (name))
|
||||
CHECK_STRING (name);
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
f = decode_live_frame (frame);
|
||||
|
||||
if (STRINGP (name))
|
||||
{
|
||||
|
|
|
@ -1326,17 +1326,14 @@ static Lisp_Object
|
|||
check_fontset_name (Lisp_Object name, Lisp_Object *frame)
|
||||
{
|
||||
int id;
|
||||
struct frame *f = decode_live_frame (*frame);
|
||||
|
||||
if (NILP (*frame))
|
||||
*frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (*frame);
|
||||
XSETFRAME (*frame, f);
|
||||
|
||||
if (EQ (name, Qt))
|
||||
return Vdefault_fontset;
|
||||
if (NILP (name))
|
||||
{
|
||||
id = FRAME_FONTSET (XFRAME (*frame));
|
||||
}
|
||||
id = FRAME_FONTSET (f);
|
||||
else
|
||||
{
|
||||
CHECK_STRING (name);
|
||||
|
|
235
src/frame.c
235
src/frame.c
|
@ -131,7 +131,24 @@ fset_minibuffer_window (struct frame *f, Lisp_Object val)
|
|||
f->minibuffer_window = val;
|
||||
}
|
||||
|
||||
|
||||
struct frame *
|
||||
decode_live_frame (register Lisp_Object frame)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
return XFRAME (frame);
|
||||
}
|
||||
|
||||
struct frame *
|
||||
decode_any_frame (register Lisp_Object frame)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_FRAME (frame);
|
||||
return XFRAME (frame);
|
||||
}
|
||||
|
||||
static void
|
||||
set_menu_bar_lines_1 (Lisp_Object window, int n)
|
||||
{
|
||||
|
@ -1118,23 +1135,12 @@ other_visible_frames (FRAME_PTR f)
|
|||
Lisp_Object
|
||||
delete_frame (Lisp_Object frame, Lisp_Object force)
|
||||
{
|
||||
struct frame *f;
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
struct frame *sf = SELECTED_FRAME ();
|
||||
struct kboard *kb;
|
||||
|
||||
int minibuffer_selected, is_tooltip_frame;
|
||||
|
||||
if (EQ (frame, Qnil))
|
||||
{
|
||||
f = sf;
|
||||
XSETFRAME (frame, f);
|
||||
}
|
||||
else
|
||||
{
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
}
|
||||
|
||||
if (! FRAME_LIVE_P (f))
|
||||
return Qnil;
|
||||
|
||||
|
@ -1146,9 +1152,11 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
|
|||
if (NILP (XCDR (Vframe_list)) && !EQ (force, Qnoelisp))
|
||||
error ("Attempt to delete the only frame");
|
||||
|
||||
XSETFRAME (frame, f);
|
||||
|
||||
/* Does this frame have a minibuffer, and is it the surrogate
|
||||
minibuffer for any other frame? */
|
||||
if (FRAME_HAS_MINIBUF_P (XFRAME (frame)))
|
||||
if (FRAME_HAS_MINIBUF_P (f))
|
||||
{
|
||||
Lisp_Object frames;
|
||||
|
||||
|
@ -1663,25 +1671,23 @@ DEFUN ("make-frame-visible", Fmake_frame_visible, Smake_frame_visible,
|
|||
If omitted, FRAME defaults to the currently selected frame. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
/* I think this should be done with a hook. */
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (FRAME_WINDOW_P (XFRAME (frame)))
|
||||
if (FRAME_WINDOW_P (f))
|
||||
{
|
||||
FRAME_SAMPLE_VISIBILITY (XFRAME (frame));
|
||||
x_make_frame_visible (XFRAME (frame));
|
||||
FRAME_SAMPLE_VISIBILITY (f);
|
||||
x_make_frame_visible (f);
|
||||
}
|
||||
#endif
|
||||
|
||||
make_frame_visible_1 (XFRAME (frame)->root_window);
|
||||
make_frame_visible_1 (f->root_window);
|
||||
|
||||
/* Make menu bar update for the Buffers and Frames menus. */
|
||||
windows_or_buffers_changed++;
|
||||
|
||||
XSETFRAME (frame, f);
|
||||
return frame;
|
||||
}
|
||||
|
||||
|
@ -1722,16 +1728,13 @@ always considered visible, whether or not they are currently being
|
|||
displayed in the terminal. */)
|
||||
(Lisp_Object frame, Lisp_Object force)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
|
||||
if (NILP (force) && !other_visible_frames (XFRAME (frame)))
|
||||
if (NILP (force) && !other_visible_frames (f))
|
||||
error ("Attempt to make invisible the sole visible or iconified frame");
|
||||
|
||||
/* Don't allow minibuf_window to remain on a deleted frame. */
|
||||
if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window))
|
||||
if (EQ (f->minibuffer_window, minibuf_window))
|
||||
{
|
||||
struct frame *sf = XFRAME (selected_frame);
|
||||
/* Use set_window_buffer instead of Fset_window_buffer (see
|
||||
|
@ -1743,8 +1746,8 @@ displayed in the terminal. */)
|
|||
|
||||
/* I think this should be done with a hook. */
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (FRAME_WINDOW_P (XFRAME (frame)))
|
||||
x_make_frame_invisible (XFRAME (frame));
|
||||
if (FRAME_WINDOW_P (f))
|
||||
x_make_frame_invisible (f);
|
||||
#endif
|
||||
|
||||
/* Make menu bar update for the Buffers and Frames menus. */
|
||||
|
@ -1759,19 +1762,10 @@ DEFUN ("iconify-frame", Ficonify_frame, Siconify_frame,
|
|||
If omitted, FRAME defaults to the currently selected frame. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
|
||||
#if 0 /* This isn't logically necessary, and it can do GC. */
|
||||
/* Don't let the frame remain selected. */
|
||||
if (EQ (frame, selected_frame))
|
||||
Fhandle_switch_frame (next_frame (frame, Qt));
|
||||
#endif
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
/* Don't allow minibuf_window to remain on an iconified frame. */
|
||||
if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window))
|
||||
if (EQ (f->minibuffer_window, minibuf_window))
|
||||
{
|
||||
struct frame *sf = XFRAME (selected_frame);
|
||||
/* Use set_window_buffer instead of Fset_window_buffer (see
|
||||
|
@ -1783,8 +1777,8 @@ If omitted, FRAME defaults to the currently selected frame. */)
|
|||
|
||||
/* I think this should be done with a hook. */
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (FRAME_WINDOW_P (XFRAME (frame)))
|
||||
x_iconify_frame (XFRAME (frame));
|
||||
if (FRAME_WINDOW_P (f))
|
||||
x_iconify_frame (f);
|
||||
#endif
|
||||
|
||||
/* Make menu bar update for the Buffers and Frames menus. */
|
||||
|
@ -1848,13 +1842,9 @@ If Emacs is displaying on an ordinary terminal or some other device which
|
|||
doesn't support multiple overlapping frames, this function selects FRAME. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
|
||||
f = XFRAME (frame);
|
||||
XSETFRAME (frame, f);
|
||||
|
||||
if (FRAME_TERMCAP_P (f))
|
||||
/* On a text terminal select FRAME. */
|
||||
|
@ -1877,14 +1867,7 @@ If Emacs is displaying on an ordinary terminal or some other device which
|
|||
doesn't support multiple overlapping frames, this function does nothing. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
|
||||
f = XFRAME (frame);
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
if (FRAME_TERMINAL (f)->frame_raise_lower_hook)
|
||||
(*FRAME_TERMINAL (f)->frame_raise_lower_hook) (f, 0);
|
||||
|
@ -1920,18 +1903,14 @@ is affected by `select-frame', while the latter is not.
|
|||
The redirection lasts until `redirect-frame-focus' is called to change it. */)
|
||||
(Lisp_Object frame, Lisp_Object focus_frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
/* Note that we don't check for a live frame here. It's reasonable
|
||||
to redirect the focus of a frame you're about to delete, if you
|
||||
know what other frame should receive those keystrokes. */
|
||||
CHECK_FRAME (frame);
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
|
||||
if (! NILP (focus_frame))
|
||||
CHECK_LIVE_FRAME (focus_frame);
|
||||
|
||||
f = XFRAME (frame);
|
||||
|
||||
fset_focus_frame (f, focus_frame);
|
||||
|
||||
if (FRAME_TERMINAL (f)->frame_rehighlight_hook)
|
||||
|
@ -1941,15 +1920,14 @@ The redirection lasts until `redirect-frame-focus' is called to change it. */)
|
|||
}
|
||||
|
||||
|
||||
DEFUN ("frame-focus", Fframe_focus, Sframe_focus, 1, 1, 0,
|
||||
DEFUN ("frame-focus", Fframe_focus, Sframe_focus, 0, 1, 0,
|
||||
doc: /* Return the frame to which FRAME's keystrokes are currently being sent.
|
||||
This returns nil if FRAME's focus is not redirected.
|
||||
If FRAME is omitted or nil, the selected frame is used.
|
||||
Return nil if FRAME's focus is not redirected.
|
||||
See `redirect-frame-focus'. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
|
||||
return FRAME_FOCUS_FRAME (XFRAME (frame));
|
||||
return FRAME_FOCUS_FRAME (decode_live_frame (frame));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1972,22 +1950,6 @@ get_frame_param (register struct frame *frame, Lisp_Object prop)
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Return the buffer-predicate of the selected frame. */
|
||||
|
||||
Lisp_Object
|
||||
frame_buffer_predicate (Lisp_Object frame)
|
||||
{
|
||||
return XFRAME (frame)->buffer_predicate;
|
||||
}
|
||||
|
||||
/* Return the buffer-list of the selected frame. */
|
||||
|
||||
static Lisp_Object
|
||||
frame_buffer_list (Lisp_Object frame)
|
||||
{
|
||||
return XFRAME (frame)->buffer_list;
|
||||
}
|
||||
|
||||
/* Discard BUFFER from the buffer-list and buried-buffer-list of each frame. */
|
||||
|
||||
void
|
||||
|
@ -2166,20 +2128,14 @@ DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0,
|
|||
doc: /* Return the parameters-alist of frame FRAME.
|
||||
It is a list of elements of the form (PARM . VALUE), where PARM is a symbol.
|
||||
The meaningful PARMs depend on the kind of frame.
|
||||
If FRAME is omitted, return information on the currently selected frame. */)
|
||||
If FRAME is omitted or nil, return information on the currently selected frame. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
Lisp_Object alist;
|
||||
FRAME_PTR f;
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
int height, width;
|
||||
struct gcpro gcpro1;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
if (!FRAME_LIVE_P (f))
|
||||
return Qnil;
|
||||
|
||||
|
@ -2240,9 +2196,8 @@ If FRAME is omitted, return information on the currently selected frame. */)
|
|||
: 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, Qbuffer_list, frame_buffer_list (frame));
|
||||
store_in_alist (&alist, Qburied_buffer_list,
|
||||
XFRAME (frame)->buried_buffer_list);
|
||||
store_in_alist (&alist, Qbuffer_list, f->buffer_list);
|
||||
store_in_alist (&alist, Qburied_buffer_list, f->buried_buffer_list);
|
||||
|
||||
/* I think this should be done with a hook. */
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
|
@ -2267,17 +2222,12 @@ DEFUN ("frame-parameter", Fframe_parameter, Sframe_parameter, 2, 2, 0,
|
|||
If FRAME is nil, describe the currently selected frame. */)
|
||||
(Lisp_Object frame, Lisp_Object parameter)
|
||||
{
|
||||
struct frame *f;
|
||||
Lisp_Object value;
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
Lisp_Object value = Qnil;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
else
|
||||
CHECK_FRAME (frame);
|
||||
CHECK_SYMBOL (parameter);
|
||||
|
||||
f = XFRAME (frame);
|
||||
value = Qnil;
|
||||
XSETFRAME (frame, f);
|
||||
|
||||
if (FRAME_LIVE_P (f))
|
||||
{
|
||||
|
@ -2357,14 +2307,9 @@ Note that this functionality is obsolete as of Emacs 22.2, and its
|
|||
use is not recommended. Explicitly check for a frame-parameter instead. */)
|
||||
(Lisp_Object frame, Lisp_Object alist)
|
||||
{
|
||||
FRAME_PTR f;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
register Lisp_Object tail, prop, val;
|
||||
|
||||
if (EQ (frame, Qnil))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
/* I think this should be done with a hook. */
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (FRAME_WINDOW_P (f))
|
||||
|
@ -2419,18 +2364,13 @@ use is not recommended. Explicitly check for a frame-parameter instead. */)
|
|||
DEFUN ("frame-char-height", Fframe_char_height, Sframe_char_height,
|
||||
0, 1, 0,
|
||||
doc: /* Height in pixels of a line in the font in frame FRAME.
|
||||
If FRAME is omitted, the selected frame is used.
|
||||
If FRAME is omitted or nil, the selected frame is used.
|
||||
For a terminal frame, the value is always 1. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
|
||||
if (FRAME_WINDOW_P (f))
|
||||
return make_number (x_char_height (f));
|
||||
else
|
||||
|
@ -2442,19 +2382,14 @@ For a terminal frame, the value is always 1. */)
|
|||
DEFUN ("frame-char-width", Fframe_char_width, Sframe_char_width,
|
||||
0, 1, 0,
|
||||
doc: /* Width in pixels of characters in the font in frame FRAME.
|
||||
If FRAME is omitted, the selected frame is used.
|
||||
If FRAME is omitted or nil, the selected frame is used.
|
||||
On a graphical screen, the width is the standard width of the default font.
|
||||
For a terminal screen, the value is always 1. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
|
||||
if (FRAME_WINDOW_P (f))
|
||||
return make_number (x_char_width (f));
|
||||
else
|
||||
|
@ -2465,7 +2400,7 @@ For a terminal screen, the value is always 1. */)
|
|||
DEFUN ("frame-pixel-height", Fframe_pixel_height,
|
||||
Sframe_pixel_height, 0, 1, 0,
|
||||
doc: /* Return a FRAME's height in pixels.
|
||||
If FRAME is omitted, the selected frame is used. The exact value
|
||||
If FRAME is omitted or nil, the selected frame is used. The exact value
|
||||
of the result depends on the window-system and toolkit in use:
|
||||
|
||||
In the Gtk+ version of Emacs, it includes only any window (including
|
||||
|
@ -2480,12 +2415,7 @@ result is really in characters rather than pixels (i.e., is identical
|
|||
to `frame-height'). */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (FRAME_WINDOW_P (f))
|
||||
|
@ -2499,15 +2429,10 @@ DEFUN ("frame-pixel-width", Fframe_pixel_width,
|
|||
Sframe_pixel_width, 0, 1, 0,
|
||||
doc: /* Return FRAME's width in pixels.
|
||||
For a terminal frame, the result really gives the width in characters.
|
||||
If FRAME is omitted, the selected frame is used. */)
|
||||
If FRAME is omitted or nil, the selected frame is used. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (FRAME_WINDOW_P (f))
|
||||
|
@ -2521,17 +2446,15 @@ DEFUN ("tool-bar-pixel-width", Ftool_bar_pixel_width,
|
|||
Stool_bar_pixel_width, 0, 1, 0,
|
||||
doc: /* Return width in pixels of FRAME's tool bar.
|
||||
The result is greater than zero only when the tool bar is on the left
|
||||
or right side of FRAME. If FRAME is omitted, the selected frame is
|
||||
used. */)
|
||||
or right side of FRAME. If FRAME is omitted or nil, the selected frame
|
||||
is used. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_FRAME (frame);
|
||||
|
||||
#ifdef FRAME_TOOLBAR_WIDTH
|
||||
if (FRAME_WINDOW_P (XFRAME (frame)))
|
||||
return make_number (FRAME_TOOLBAR_WIDTH (XFRAME (frame)));
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
|
||||
if (FRAME_WINDOW_P (f))
|
||||
return make_number (FRAME_TOOLBAR_WIDTH (f));
|
||||
#endif
|
||||
return make_number (0);
|
||||
}
|
||||
|
@ -2542,13 +2465,9 @@ Optional third arg non-nil means that redisplay should use LINES lines
|
|||
but that the idea of the actual height of the frame should not be changed. */)
|
||||
(Lisp_Object frame, Lisp_Object lines, Lisp_Object pretend)
|
||||
{
|
||||
register struct frame *f;
|
||||
register struct frame *f = decode_live_frame (frame);
|
||||
|
||||
CHECK_TYPE_RANGED_INTEGER (int, lines);
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
/* I think this should be done with a hook. */
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
|
@ -2570,12 +2489,9 @@ Optional third arg non-nil means that redisplay should use COLS columns
|
|||
but that the idea of the actual width of the frame should not be changed. */)
|
||||
(Lisp_Object frame, Lisp_Object cols, Lisp_Object pretend)
|
||||
{
|
||||
register struct frame *f;
|
||||
register struct frame *f = decode_live_frame (frame);
|
||||
|
||||
CHECK_TYPE_RANGED_INTEGER (int, cols);
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
/* I think this should be done with a hook. */
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
|
@ -4292,12 +4208,7 @@ Otherwise it returns nil. FRAME omitted or nil means the
|
|||
selected frame. This is useful when `make-pointer-invisible' is set. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
|
||||
CHECK_FRAME (frame);
|
||||
|
||||
return (XFRAME (frame)->pointer_invisible ? Qnil : Qt);
|
||||
return decode_any_frame (frame)->pointer_invisible ? Qnil : Qt;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -943,6 +943,8 @@ extern Lisp_Object Qnoelisp;
|
|||
extern struct frame *last_nonminibuf_frame;
|
||||
|
||||
extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
|
||||
extern struct frame *decode_live_frame (Lisp_Object);
|
||||
extern struct frame *decode_any_frame (Lisp_Object);
|
||||
extern struct frame *make_initial_frame (void);
|
||||
extern struct frame *make_frame (int);
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
|
|
|
@ -3298,7 +3298,6 @@ extern Lisp_Object do_switch_frame (Lisp_Object, int, int, Lisp_Object);
|
|||
#if HAVE_NS
|
||||
extern Lisp_Object get_frame_param (struct frame *, Lisp_Object);
|
||||
#endif
|
||||
extern Lisp_Object frame_buffer_predicate (Lisp_Object);
|
||||
extern void frames_discard_buffer (Lisp_Object);
|
||||
extern void syms_of_frame (void);
|
||||
|
||||
|
|
|
@ -360,14 +360,7 @@ If FRAME is nil, the selected frame is used.
|
|||
The terminal device is represented by its integer identifier. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct terminal *t;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
|
||||
t = FRAME_TERMINAL (XFRAME (frame));
|
||||
struct terminal *t = FRAME_TERMINAL (decode_live_frame (frame));
|
||||
|
||||
if (!t)
|
||||
return Qnil;
|
||||
|
|
|
@ -264,12 +264,8 @@ have_menus_p (void)
|
|||
FRAME_PTR
|
||||
check_x_frame (Lisp_Object frame)
|
||||
{
|
||||
FRAME_PTR f;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
if (! FRAME_W32_P (f))
|
||||
error ("Non-W32 frame used");
|
||||
return f;
|
||||
|
|
46
src/window.c
46
src/window.c
|
@ -340,10 +340,7 @@ DEFUN ("minibuffer-window", Fminibuffer_window, Sminibuffer_window, 0, 1, 0,
|
|||
If FRAME is omitted or nil, it defaults to the selected frame. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
return FRAME_MINIBUF_WINDOW (XFRAME (frame));
|
||||
return FRAME_MINIBUF_WINDOW (decode_live_frame (frame));
|
||||
}
|
||||
|
||||
DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p,
|
||||
|
@ -1371,12 +1368,7 @@ The top left corner of the frame is considered to be row 0,
|
|||
column 0. */)
|
||||
(Lisp_Object x, Lisp_Object y, Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
/* Check that arguments are integers or floats. */
|
||||
CHECK_NUMBER_OR_FLOAT (x);
|
||||
|
@ -3109,12 +3101,12 @@ run_window_configuration_change_hook (struct frame *f)
|
|||
}
|
||||
|
||||
DEFUN ("run-window-configuration-change-hook", Frun_window_configuration_change_hook,
|
||||
Srun_window_configuration_change_hook, 1, 1, 0,
|
||||
doc: /* Run `window-configuration-change-hook' for FRAME. */)
|
||||
Srun_window_configuration_change_hook, 0, 1, 0,
|
||||
doc: /* Run `window-configuration-change-hook' for FRAME.
|
||||
If FRAME is omitted or nil, it defaults to the selected frame. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
run_window_configuration_change_hook (XFRAME (frame));
|
||||
run_window_configuration_change_hook (decode_live_frame (frame));
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
@ -3641,10 +3633,12 @@ window_resize_apply (struct window *w, int horflag)
|
|||
}
|
||||
|
||||
|
||||
DEFUN ("window-resize-apply", Fwindow_resize_apply, Swindow_resize_apply, 1, 2, 0,
|
||||
DEFUN ("window-resize-apply", Fwindow_resize_apply, Swindow_resize_apply, 0, 2, 0,
|
||||
doc: /* Apply requested size values for window-tree of FRAME.
|
||||
Optional argument HORIZONTAL omitted or nil means apply requested height
|
||||
values. HORIZONTAL non-nil means apply requested width values.
|
||||
If FRAME is omitted or nil, it defaults to the selected frame.
|
||||
|
||||
Optional argument HORIZONTAL omitted or nil means apply requested
|
||||
height values. HORIZONTAL non-nil means apply requested width values.
|
||||
|
||||
This function checks whether the requested values sum up to a valid
|
||||
window layout, recursively assigns the new sizes of all child windows
|
||||
|
@ -3655,17 +3649,10 @@ Note: This function does not check any of `window-fixed-size-p',
|
|||
be applied on the Elisp level. */)
|
||||
(Lisp_Object frame, Lisp_Object horizontal)
|
||||
{
|
||||
struct frame *f;
|
||||
struct window *r;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
struct window *r = XWINDOW (FRAME_ROOT_WINDOW (f));
|
||||
int horflag = !NILP (horizontal);
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
|
||||
f = XFRAME (frame);
|
||||
r = XWINDOW (FRAME_ROOT_WINDOW (f));
|
||||
|
||||
if (!window_resize_check (r, horflag)
|
||||
|| ! EQ (r->new_total,
|
||||
(horflag ? r->total_cols : r->total_lines)))
|
||||
|
@ -6148,12 +6135,7 @@ saved by this function. */)
|
|||
register int n_windows;
|
||||
register struct save_window_data *data;
|
||||
register int i;
|
||||
FRAME_PTR f;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f)));
|
||||
data = ALLOCATE_PSEUDOVECTOR (struct save_window_data, frame_cols,
|
||||
|
|
11
src/xdisp.c
11
src/xdisp.c
|
@ -11916,19 +11916,14 @@ tool_bar_lines_needed (struct frame *f, int *n_rows)
|
|||
|
||||
DEFUN ("tool-bar-lines-needed", Ftool_bar_lines_needed, Stool_bar_lines_needed,
|
||||
0, 1, 0,
|
||||
doc: /* Return the number of lines occupied by the tool bar of FRAME. */)
|
||||
doc: /* Return the number of lines occupied by the tool bar of FRAME.
|
||||
If FRAME is nil or omitted, use the selected frame. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
struct frame *f = decode_any_frame (frame);
|
||||
struct window *w;
|
||||
int nlines = 0;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
else
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
if (WINDOWP (f->tool_bar_window)
|
||||
&& (w = XWINDOW (f->tool_bar_window),
|
||||
WINDOW_TOTAL_LINES (w) > 0))
|
||||
|
|
98
src/xfaces.c
98
src/xfaces.c
|
@ -669,23 +669,6 @@ x_free_gc (struct frame *f, GC gc)
|
|||
}
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
/* If FRAME is nil, return a pointer to the selected frame.
|
||||
Otherwise, check that FRAME is a live frame, and return a pointer
|
||||
to it. NPARAM is the parameter number of FRAME, for
|
||||
CHECK_LIVE_FRAME. This is here because it's a frequent pattern in
|
||||
Lisp function definitions. */
|
||||
|
||||
static struct frame *
|
||||
frame_or_selected_frame (Lisp_Object frame, int nparam)
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
return XFRAME (frame);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
Frames and faces
|
||||
***********************************************************************/
|
||||
|
@ -1204,15 +1187,9 @@ FRAME specifies the frame and thus the display for interpreting COLOR.
|
|||
If FRAME is nil or omitted, use the selected frame. */)
|
||||
(Lisp_Object color, Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
CHECK_STRING (color);
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
else
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
return face_color_gray_p (f, SSDATA (color)) ? Qt : Qnil;
|
||||
return (face_color_gray_p (decode_any_frame (frame), SSDATA (color))
|
||||
? Qt : Qnil);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1225,17 +1202,10 @@ If FRAME is nil or omitted, use the selected frame.
|
|||
COLOR must be a valid color name. */)
|
||||
(Lisp_Object color, Lisp_Object frame, Lisp_Object background_p)
|
||||
{
|
||||
struct frame *f;
|
||||
|
||||
CHECK_STRING (color);
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
else
|
||||
CHECK_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
if (face_color_supported_p (f, SSDATA (color), !NILP (background_p)))
|
||||
return Qt;
|
||||
return Qnil;
|
||||
return (face_color_supported_p (decode_any_frame (frame),
|
||||
SSDATA (color), !NILP (background_p))
|
||||
? Qt : Qnil);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1683,9 +1653,7 @@ the WIDTH times as wide as FACE on FRAME. */)
|
|||
|
||||
/* We can't simply call check_x_frame because this function may be
|
||||
called before any frame is created. */
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
f = frame_or_selected_frame (frame, 2);
|
||||
f = decode_live_frame (frame);
|
||||
if (! FRAME_WINDOW_P (f))
|
||||
{
|
||||
/* Perhaps we have not yet created any frame. */
|
||||
|
@ -1693,6 +1661,8 @@ the WIDTH times as wide as FACE on FRAME. */)
|
|||
frame = Qnil;
|
||||
face = Qnil;
|
||||
}
|
||||
else
|
||||
XSETFRAME (frame, f);
|
||||
|
||||
/* Determine the width standard for comparison with the fonts we find. */
|
||||
|
||||
|
@ -3679,21 +3649,12 @@ frame. If FRAME is t, report on the defaults for face SYMBOL (for new
|
|||
frames). If FRAME is omitted or nil, use the selected frame. */)
|
||||
(Lisp_Object symbol, Lisp_Object keyword, Lisp_Object frame)
|
||||
{
|
||||
Lisp_Object lface, value = Qnil;
|
||||
struct frame *f = EQ (frame, Qt) ? NULL : decode_live_frame (frame);
|
||||
Lisp_Object lface = lface_from_face_name (f, symbol, 1), value = Qnil;
|
||||
|
||||
CHECK_SYMBOL (symbol);
|
||||
CHECK_SYMBOL (keyword);
|
||||
|
||||
if (EQ (frame, Qt))
|
||||
lface = lface_from_face_name (NULL, symbol, 1);
|
||||
else
|
||||
{
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
lface = lface_from_face_name (XFRAME (frame), symbol, 1);
|
||||
}
|
||||
|
||||
if (EQ (keyword, QCfamily))
|
||||
value = LFACE_FAMILY (lface);
|
||||
else if (EQ (keyword, QCfoundry))
|
||||
|
@ -3876,7 +3837,7 @@ return the font name used for CHARACTER. */)
|
|||
}
|
||||
else
|
||||
{
|
||||
struct frame *f = frame_or_selected_frame (frame, 1);
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
int face_id = lookup_named_face (f, face, 1);
|
||||
struct face *fface = FACE_FROM_ID (f, face_id);
|
||||
|
||||
|
@ -3963,14 +3924,11 @@ If FRAME is omitted or nil, use the selected frame. */)
|
|||
struct frame *f;
|
||||
Lisp_Object lface1, lface2;
|
||||
|
||||
if (EQ (frame, Qt))
|
||||
f = NULL;
|
||||
else
|
||||
/* Don't use check_x_frame here because this function is called
|
||||
before X frames exist. At that time, if FRAME is nil,
|
||||
selected_frame will be used which is the frame dumped with
|
||||
Emacs. That frame is not an X frame. */
|
||||
f = frame_or_selected_frame (frame, 2);
|
||||
/* Don't use check_x_frame here because this function is called
|
||||
before X frames exist. At that time, if FRAME is nil,
|
||||
selected_frame will be used which is the frame dumped with
|
||||
Emacs. That frame is not an X frame. */
|
||||
f = EQ (frame, Qt) ? NULL : decode_live_frame (frame);
|
||||
|
||||
lface1 = lface_from_face_name (f, face1, 1);
|
||||
lface2 = lface_from_face_name (f, face2, 1);
|
||||
|
@ -3988,20 +3946,10 @@ If FRAME is t, report on the defaults for face FACE (for new frames).
|
|||
If FRAME is omitted or nil, use the selected frame. */)
|
||||
(Lisp_Object face, Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
Lisp_Object lface;
|
||||
struct frame *f = EQ (frame, Qt) ? NULL : decode_live_frame (frame);
|
||||
Lisp_Object lface = lface_from_face_name (f, face, 1);
|
||||
int i;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
if (EQ (frame, Qt))
|
||||
lface = lface_from_face_name (NULL, face, 1);
|
||||
else
|
||||
lface = lface_from_face_name (f, face, 1);
|
||||
|
||||
for (i = 1; i < LFACE_VECTOR_SIZE; ++i)
|
||||
if (!UNSPECIFIEDP (AREF (lface, i)))
|
||||
break;
|
||||
|
@ -4016,8 +3964,7 @@ DEFUN ("frame-face-alist", Fframe_face_alist, Sframe_face_alist,
|
|||
For internal use only. */)
|
||||
(Lisp_Object frame)
|
||||
{
|
||||
struct frame *f = frame_or_selected_frame (frame, 0);
|
||||
return f->face_alist;
|
||||
return decode_live_frame (frame)->face_alist;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4205,14 +4152,9 @@ or lists of the form (RED GREEN BLUE).
|
|||
If FRAME is unspecified or nil, the current frame is used. */)
|
||||
(Lisp_Object color1, Lisp_Object color2, Lisp_Object frame)
|
||||
{
|
||||
struct frame *f;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
XColor cdef1, cdef2;
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
|
||||
if (!(CONSP (color1) && parse_rgb_list (color1, &cdef1))
|
||||
&& !(STRINGP (color1) && defined_color (f, SSDATA (color1), &cdef1, 0)))
|
||||
signal_error ("Invalid color", color1);
|
||||
|
|
|
@ -164,12 +164,8 @@ have_menus_p (void)
|
|||
FRAME_PTR
|
||||
check_x_frame (Lisp_Object frame)
|
||||
{
|
||||
FRAME_PTR f;
|
||||
struct frame *f = decode_live_frame (frame);
|
||||
|
||||
if (NILP (frame))
|
||||
frame = selected_frame;
|
||||
CHECK_LIVE_FRAME (frame);
|
||||
f = XFRAME (frame);
|
||||
if (! FRAME_X_P (f))
|
||||
error ("Non-X frame used");
|
||||
return f;
|
||||
|
|
Loading…
Add table
Reference in a new issue