(free_bloc): This can now be simplified.
* ralloc.c (r_alloc_sbrk): When we allocate new space for the
malloc heap, zero it out even if we don't have any blocs in the
free list.
Added VMS changes from Roland Roberts.
* process.c (read_process_output): Save, widen, insert the process
output, and then restore the restriction if inserting text outside
the visible region.
* process.c (Fstart_process): Establish an unwind-protect to
remove PROC from the process list if an error occurs while
starting it.
(start_process_unwind): New function to help with that.
(create_process): There's no need to explicitly call
remove_process if the fork fails; the record_unwind_protect in
Fstart_process will take care of it.
* process.c (wait_reading_process_input): Test the C preprocessor
symbol "ultrix", not "__ultrix__" to see if we should ignore
ENOMEM errors from select.
* process.c (process_send_signal): On systems which have both
the TIOCGETC and TCGETA ioctls, just use the former.
* s/bsd4-2.h, s/bsd4-3.h: #define SIGNALS_VIA_CHARACTERS.
* process.c (process_send_signal): Put all the code for sending
signals via characters in a #ifdef SIGNALS_VIA_CHARACTERS. Decide
whether to use the Berkeley-style or SYSV-style ioctls by seeing
which ioctl commands are #defined.
* process.c (process_send_signal): Doc fix.
unread_command_char to unread_command_event.
* minibuf.c (read_minibuf): If get_minibuffer gives the
new minibuffer a nil default directory, find another buffer with a
better default directory and use that one's instead.
(Fread_char, Fread_char_exclusive): Don't signal an
error for or throw away switch-frame events; instead, put them off
until after we've found a character we can respond to.
Rename unread_command_char to unread_command_event; it has
subtly different semantics now, and we should use
`make-obsolete-variable' to warn people.
* lread.c (Fread_char): Change reference.
* keyboard.c (Vlast_event_frame): Doc fix.
* keyboard.c (read_char): Write composite events to the dribble
file properly.
* keyboard.c (init_keyboard): Initialize Vlast_event_frame to
Qnil, rather than the selected frame.
* keyboard.c (lispy_modifier_list): Added sanity check before
indexing into modifier_symbols.
* keyboard.c (add_command_key): When copying the contents of the
old this_command_keys to new_keys, remember to multiply size by
sizeof (Lisp_Object) to get the amount we really need to copy.
Rename unread_command_char to unread_command_event; it has
subtly different semantics now, and we should use
`make-obsolete-variable' to warn people.
* keyboard.c (unread_command_char): Rename.
(command_loop_1, read_char, Finput_pending, Fdiscard_input,
quit_throw_to_read_char, init_keyboard, syms_of_keyboard): Change
references.
* keyboard.c (read_key_sequence): Don't use
save_excursion_{save,restore} to protect the caller against buffer
switches; use Fset_buffer and Fcurrent_buffer; redisplay might
change point, and we don't want to undo that.
* keyboard.c (kbd_buffer_get_event): When checking a mouse
movement for a frame switch, don't assume Vlast_event_frame
contains a Lisp_Frame object.
number of arguments to mark_window_display_accurate.
* dispnew.c (safe_bcopy): Use the right terminating condition in
the loop which uses multiple bcopy calls to transfer a block to an
overlapping higher block.
* buffer.c (Fbury_buffer): Make this behave as in 18.59, although
that behavior is very odd - only remove the buffer from the
selected window if BUFFER was nil or omitted.
* process.c (process_send_signal): Put all the code for sending
signals via characters in a #ifdef SIGNALS_VIA_CHARACTERS. Decide
whether to use the Berkeley-style or SYSV-style ioctls by seeing
which ioctl commands are #defined.
replay_sequence_new_buffer label; replay_sequence should be here
instead.
* keyboard.c (Vlast_event_frame): Arrange for this to exist iff
MULTI_FRAME is defined.
[not MULTI_FRAME] (syms_of_keyboard): Don't DEFVAR Vlast_event_frame.
[not MULTI_FRAME] (read_char): Don't try to set Vlast_event_frame.
[not MULTI_FRAME] (kbd_buffer_store_event): Don't try to set
Vlast_event_frame for quit characters.
[not MULTI_FRAME] (kbd_buffer_get_event): Don't try to generate
switch-frame events.
fact that (eq TYPE 'keymap) means FUNCTION will become a keymap
when loaded.
(Fmacroexpand): Instead of assuming that every autoload
form with a fifth element is a macro, actually check the fifth
element against t and `macro', which are the only values which
denote macroness.
unsigned int, not a Lisp_Object. Remember that the quiescent
value for part is Qnil, not zero, that x_mouse_x and x_mouse_y
are ints, not Lisp_Objects, and that RESULT->x and RESULT->y are
Lisp_Objects, not ints.
(XTread_socket): Declare this to return int, not Lisp_Object.
When calling construct_mouse_click on a non-scrollbar click, pass
PART as Qnil, not zero.
(x_calc_absolute_position): Remember that x_screen_width and
x_screen_height are ints, not Lisp_Objects.
e
an int, not a Lisp_Object.
(x_set_mouse_color): Give separate error messages for the
different cursors we try to set.
(Fx_geometry): Declare STRING to be a Lisp_Object.
(Fx_create_frame): No need to use XSET to assign NAME to f->name;
they're both Lisp_Objects.
(adjust_scrollbars): Use XINT to access w->hscroll.
(Fx_open_connection): x_screen_count, x_release, x_screen_height,
x_screen_height_mm, x_screen_width, x_screen_width_mm,
x_save_under, and x_screen_planes are integers, not Lisp_Objects.
(syms_of_xfns): x_mouse_x, x_mouse_y, and mouse_buffer_offset are
integers, not Lisp_Objects.
positions, not !=.
(mark_window_display_accurate): Barf if WINDOW isn't a window.
(display_string): Test buffer_defaults.ctl_arrow using NILP,
instead of comparing it with zero.
* xdisp.c (last_arrow_position, last_arrow_string): Make these
static.
* xdisp.c (message): Re-write this in terms of message1.
(message1): Move code to clear out echo_area_glyphs and
previous_echo_glyphs from message to here.
w->width, w->left, w->hscroll, and arguments.
(replace_window): Use EQ, not ==.
(Fdelete_window): p->top and p->left are not C integers.
(Fnext_window, Fprevious_window): Use EQ, not ==.
Lisp_Object at the top of the file.
(decode_status): Don't untag XCONS (tem)->cdr before storing it in
tem; tem is a Lisp_Object, too.
(process_send_signal): Declare this to be static void. Don't
return Qnil; nobody cares.
(sigchld_handler): Use XFASTINT to manipulate p->infd.
* process.c (pty_process): Variable deleted; it's no longer used.
(syms_of_process): Don't initialize it.
Fmake_byte_code, Fverify_visited_file_modtime, Ffile_exists_p,
Fdirectory_file_name, Ffile_name_directory,
expand_and_dir_to_file, Ffile_accessible_directory_p, Fbyte_code,
Fundo_boundary, truncate_undo_list): Add extern declarations for
these.
* lisp.h (DEFVARLISP, DEFVARBOOL, DEFVARINT, DEFVARPERBUFFER):
Removed these definitions; we should be using the versions whose
names use underscores.
that Flength returns an integer.
* keymap.c: Deal with autoloaded keymaps properly.
(get_keymap_1): Renamed to inner_get_keymap; made
static. New argument AUTOLOAD says to pursue autoloads if
non-zero.
(Fkeymapp, get_keymap, get_keyelt, Flookup_key): Ask get_keymap_1
not to perform autoloads.
(Fdefine_key): Ask get_keymap_1 to perform autoloads. Since
autoloading may GC, remember that we have to GCPRO our local
variables now.
(Fminor_mode_key_binding): Call get_keymap instead of calling
get_keymap_1 with equivalent arguments.
(recursive_edit_unwind, command_loop, Fthis_command_keys): Declare
these to return Lisp_Objects at the very top of the file, to avoid
having them implicitly declared as ints.
(echo_char): Use EQ to compare C to help_char.
(read_char): Remember to apply XFASTINT to the return value of
Flength before using it. Apply XINT to c when clearing its high
bits and meta bits, and when writing it to the dribble file.
(read_char_menu_prompt): Use EQ to compare obj with
menu_prompt_more_char and its control-character analog.
(read_key_sequence): Declare PROMPT to be char *, not a
Lisp_Object. Use the appropriate accessors on keybuf when looking
for ASCII function key sequences.
* keyboard.c (echobuf): Make this 300 characters, not 100. This
isn't a real fix, but it's quick.
* keyboard.c (read_char): When returning an unread switch-frame
event, jump to reread_first to return it, rather than reread; this
makes sure the event gets echoed (if appropriate) and goes into
this_command_keys.
* keyboard.c (read_key_sequence): If the key sequence starts with
a mouse click, read the key sequence using the keymaps of the
buffer clicked on, not the current buffer.
* keyboard.c (unread_switch_frame): Make this static, to indicate
that nobody outside of this file uses it.
* keyboard.c (follow_key): Ask get_keymap_1 to perform autoloads.
(read_key_sequence): When pursuing potential bindings in the
function key map, ask get_keymap_1 to perform autoloading. This
is hardly important, but it's consistent.