* (Flive_window_p): New function.
(Qlive_window_p): New variable, to name it in type errors.
(syms_of_window): Defsubr Slive_window_p, init and staticpro
Qlive_window_p.
(decode_window): Use CHECK_LIVE_WINDOW instead of
CHECK_WINDOW; the only thing a user should be able to do to a dead
window is check its type.
(Fcoordinates_in_window_p, Fnext_window, Fprevious_window,
Fdelete_other_windows, Fselect_window, Fsplit_window,
Fscroll_other_window): Use CHECK_LIVE_WINDOW instead of
CHECK_WINDOW.
(Fdelete_window): If WINDOW is a deleted window, do nothing;
there's no harm in allowing people to delete deleted windows.
Delete all of WINDOW's subwindows, too.
(delete_all_subwindows): Set the buffer, vchild, and hchild of the
windows we delete all to nil.
* window.c (Fwindow_minibuffer_p): Make the WINDOW argument
optional, like all the other window-querying functions.
* window.c (Fpos_visible_in_window_p): Use decode_window to handle
the WINDOW argument, instead of writing out that function's code.
* window.c (check_frame_size): Don't define this extern; that
doesn't mean anything.
* window.c (Fdelete_window): Choose an alternative when we delete
any frame's selected window, not just when we delete the selected
frame's selected window.
keymap-scanning loop. Don't treat vectors as binding tables if
they're the wrong length.
* keymap.c (store_in_keymap): Don't forget to QUIT in the
keymap-scanning loop. Don't treat vectors as binding tables if
they're the wrong length.
an array of Lisp_Objects.
(this_command_keys_size): Deleted.
(echo, add_command_key, Fthis_command_keys): Adjusted
appropriately.
(init_keyboard): Don't allocate it here.
(syms_of_keyboard): Allocate it here, and staticpro it.
* keyboard.c (read_char): Call ourselves with the appropriate
number of arguments.
(read_char_menu_prompt): If USED_MOUSE_MENU is zero, don't try to
store things in it.
* keyboard.c (modify_event_symbol): Arrange to set the
click_modifier bit on otherwise unmodified mouse clicks.
* keyboard.c (kbd_buffer_get_event): Remember that
*mouse_position_hook may set *FRAME to 0; don't generate
switch-frame events in this case. Fix fencepost bug in fetching
events from keyboard buffer.
(XTread_socket): Pass it by reference to XLookupString.
* xterm.c: Clean up some of the caps lock handling:
(x_shift_lock_mask): New variable.
(x_find_modifier_mappings): Set it, based on the modifier mappings.
(x_convert_modifiers): Use x_shift_lock_mask, instead of assuming
that the lock bit always means to shift the character.
(XTread_socket): When handling KeyPress events, don't pass an
XComposeStatus structure along to XLookupString. When handling
MappingNotify events, call XRefreshKeyboardMapping for both
MappingModifier and MappingKeyboard events, not just the latter.
(check_memory_limits): New fn; most code from morecore_with_warning, but
only checks limits, doesn't do any work.
(memory_warnings): Set __after_morecore_hook to check_memory_limits;
don't set __morecore.
Removed elements `nruns' and `face_list'.
LINE_HEIGHT and LINE_WIDTH macros removed.
New struct face with associated typedef FACE declared, along with
accessing macros.
`nruns' and 'face_list' removed. Handle new element `max_ascent'.
(free_frame_glyphs): Don't free nonexistent elements `nruns' and
`face_list'; do free `max_ascent' element.
(make_frame_glyphs): Don't allocate nonexistent elements `nruns'
and `face_list'; do allocate `max_ascent' element.
(update_frame): Replaced use of macro LINE_HEIGHT with element
frame element `pix_height'.
[emacs]: Moved #undef NULL and #include "getpagesize.h" here.
[! emacs]: #include <unistd.h>, <malloc.h>, <string.h>.
(r_alloc_init): Use NIL, not NULL.
(real_morecore): New static variable.
(warnlevel, warn_function, check_memory_limits): Removed.
(obtain): Don't call check_memory_limits.
(obtain, relinquish, r_alloc_sbrk): Use (*real_morecore) in place of sbrk;
it returns 0 for errors, not -1.
(r_alloc_init): Set real_morecore to old value of __morecore.
Don't initialize lim_data or warnlevel, and don't call get_lim_data.
(memory_warnings): Function removed.
(memory_warnings): Renamed from malloc_init.
Don't set lim_data or warnlevel. Use start_of_data if start is 0.
[!emacs]: Don't include config.h or lisp.h;
instead, use stddef.h. Define POINTER, SIZE, EXCEEDS_LISP_PTR.
(morecore_with_warning): Use EXCEEDS_LISP_PTR.
(memory_warnings): New function; just set warning data.
Use start_of_data if start is 0.
[!emacs]: Don't include config.h or lisp.h;
instead, use stddef.h. Define POINTER, SIZE, EXCEEDS_LISP_PTR.
[!emacs] (safe_bcopy): Define as macro using memmove.
(r_alloc_free): Clear *ptr.
(r_alloc_init): Renamed from malloc_init. Take no args.
Make it static; declare at top of file.
(r_alloc): Call r_alloc_init, if not initialized yet.
(r_alloc_initialized): Renamed from malloc_initialized; moved to top.
(ROUNDUP): Subtract 1, in case arg is already aligned.
(check_memory_limits): EXCEEDS_LISP_PTR renamed from EXCEEDS_ELISP_PTR.
non-ascii keys.
* keymap.c (access_keymap): Treat bindings for Qt as default
bindings, when new argument T_OK is non-zero.
(get_keyelt, Fdefine_key, Flookup_key): Call access_keymap with
T_OK false.
when MULTI_FRAME isn't #defined. People might find it
necessary for writing correct programs, even when the programs
don't explicitly use multiple frames.
(read_char, kbd_buffer_store_event, kbd_buffer_get_event): No need
to test MULTI_FRAME before setting Vlast_event_frame.
(syms_of_keyboard): DEFVAR Vlast_event_frame whether or not
MULTI_FRAME is defined.
* keyboard.c: Add switch-frame events.
(Qswitch_frame): New event header symbol.
(head_table): Include Qswitch_frame in the table of event heads.
(kbd_buffer_get_event): Detect when a frame switch has occurred,
and return a frame switch event before the enqueued event.
(make_lispy_switch_frame): New function.
(unread_switch_frame): New variable.
(read_key_sequence): Don't throw away the key sequence if the user
switches frames in the middle of the sequence. Instead, when we
receive a switch-frame event in the middle of a key sequence, save
it, and stuff it into unread_switch_frame when the sequence
is complete.
(read_char): If unread_switch_frame is set, return that value.
(command_loop_1): No need to check Vlast_event_frame and select
new frames here; that's taken care of by switch-frame events now.
(syms_of_keyboard): Initialize and staticpro unread_switch_frame.
* keyboard.c (follow_key, read_key_sequence): Call access_keymap
with T_OK true.
* keyboard.c (apply_modifiers): Copy the value of BASE's
Qevent_kind property to the new symbol.
* keyboard.c (syms_of_keyboard): Qevent_kind should be initialized
to intern ("event-kind"), not intern ("event-type").
(Fselect_frame): Make this interactive, and accept
switch-frame events as arguments, so we can bind this function to
switch-frame events.
(keys_of_frame): New function; bind switch-frame to Fselect_frame.