code, in favor of 'e'; that's a better name.
* callint.c (Fcall_interactively): Don't try to get the
`enable-recursive-minibuffers' property from FUNCTION unless
FUNCTION is actually a symbol; there are some cases where a key
sequence is bound directly to a lambda form, and there's no reason
to break these.
value, function, and property list rather than before; this way,
symbols' names are readable, giving us a chance to detect some
kinds of heap corruption.
(Ffile_name_as_directory, Fdirectory_file_name, Fexpand_file_name):
Call find_file_handler.
(syms_of_fileio): Set up Qfile_name_directory, etc.
(Fcopy_file): Call find_file_handler for newname as well as for filename.
(read_char): Use num_nonmacro_input_chars to decide on auto-save & gc.
Increment it when appropriate.
(record_auto_save): Use num_nonmacro_input_chars.
end of the heap, copying the data to it, and then freeing the
original bloc, just expand the original block. This saves a copy
and a call to sbrk, and also removes the large spike in memory
allocation that would occur when resizing large buffers. And it's
less code.
Don't modify comstyle inside that loop.
If string quotes don't match up, don't take value from OFROM;
instead, parse forward using scan_sexps_forward.
(scan_sexps_forward): Return value via a pointer passed in.
New element in state contains char addr of last comment-starter seen.
(Fparse_partial_sexp): Change call to scan_sexps_forward.
(syms_of_keyboard): New Lisp var.
(read_key_sequence): Use that instead of prev_event.
(read_char): Call read_char_menu_prompt here.
Accept 4 new args to pass to it. Include them in recursive call.
Don't delay before starting echo if prev_event was a mouse event.
Test for eof in batch mode now understands C is a Lisp_Object.
(read_key_sequence): Don't call it here; always call read_char.
Don't change last_event_buffer after a mouse menu input.
(read_char_menu_prompt): Arg PROMPT deleted.
Return nil if nothing to do.
(read_key_sequence): Keep track of prev_event.
Pass new proper args to read_char_menu_prompt.
(read_char_menu_prompt): New arg prev_event. Use Fx_popup_menu.
Handle any number of keymaps, not just LOCAL and GLOBAL.
Invert meaning of arg PROMPT. Test of menu_prompting was backwards.
(keymap_table): No longer static.
(Fx_popup_menu): Treat coords relative to spec'd window.
(single_keymap_panes): New function; contains guts of keymap_panes.
If a command binding for submenu has a prompt string starting with @,
make a separate pane for it at this level.
(keymap_panes): New function.
(Fx_popup_menu): Accept keymap or list of keymaps as MENU argument.
Accept mouse button event as POSITION argument.
return value of XWithdrawWindow; it could indicate that the window
wasn't successfully redrawn.
* xterm.c (x_make_frame_invisible): Use XWithdrawWindow when
available [HAVE_X11R4]; send the UnmapNotify event when
appropriate [HAVE_X11]; just unmap the window if that's all that's
needed [not HAVE_X11].
* xterm.c (x_set_text_property): Removed; it's only called from
one place. Who wants *another* layer of indirection?
* xterm.c: Use the FRAME_X_WINDOW macro, for readability.
* xterm.c (x_death_handler): Renamed to x_connection_closed.
(x_term_init): Use x_connection_closed as the SIGPIPE handler.
* xterm.c (acceptable_x_error_p, x_handler_error_gracefully,
x_error_handler): Removed; you can't catch X errors this way,
since you can't perform X operations from within an X error
handler, and even though we call error, we're still within an X
error handler.
(x_error_quitter, x_error_catcher): New functions, for panicking
on and catching X protocol errors.
(x_caught_error_message): Buffer for caught X errors.
(x_catch_errors, x_check_errors, x_uncatch_errors): New functions
for catching errors.
(x_term_init): Set the error handler to x_error_quitter, rather
than x_error_handler.
* xterm.c (x_death_handler): Renamed to x_connection_closed.
(x_term_init): Use x_connection_closed as the SIGPIPE handler.
* xterm.c (acceptable_x_error_p, x_handler_error_gracefully,
x_error_handler): Removed; you can't catch X errors this way,
since you can't perform X operations from within an X error
handler, and even though we call error, we're still within an X
error handler.
(x_error_quitter, x_error_catcher): New functions, for panicking
on and catching X protocol errors.
(x_caught_error_message): Buffer for caught X errors.
(x_catch_errors, x_check_errors, x_uncatch_errors): New functions
for catching errors.
(x_term_init): Set the error handler to x_error_quitter, rather
than x_error_handler.
hasn't specified the icon position. Let the window manager put
the icon where it likes.
* xfns.c (x_set_name): Use XSetWM{Name,IconName} when available
[HAVE_X11R4], or XSetIconName and XStoreName otherwise.
* xfns.c: Use the FRAME_X_WINDOW for readability.
* xfns.c (x_set_mouse_color): Use x_catch_errors, x_check_errors,
and x_uncatch errors to avoid crashing if the user selects an
odd cursor.
* xfns.c (select_visual): Use XVisualIDFromVisual when available
[HAVE_X11R4].
one-line windows are the minibuffer, or that all minibuffers are
one line high. Use MINI_WINDOW_P.
* window.c (change_window_height): If the size of the window will
shrink below the minimum, this code would only try to delete it if
it had a parent. Well, even if the window doesn't have a parent,
you want Fdelete_window to signal an error, since you're trying to
resize one of the undeleteable windows into nothingness. So call
Fdelete_window even if the window doesn't have a parent.
* window.c (MINSIZE): Add kludge so that the minibuffer is always
allowed to shrink to one line in height.
(MINSIZE, CURBEG, CURSIZE): Change these so that their argument
are always Lisp_Objects, not struct window *'s.
(change_window_height): Changed accordingly.
test TERMIOS before TERMIO; when two options might both be
defined, test the most recent first, so that the most recent
functions get used.
* sysdep.c [HAVE_TERMIO] (init_baud_rate): Don't use tcgetattr
unless HAVE_TCATTR is defined. Only very rarely do termio systems
have the tc{get,set}attr macros.
* sysdep.c: #include "systty.h", not "systerm.h".
* dispnew.c (update_frame): Change the way we handle
cursor_in_echo_area. Firstly, ignore this if the frame we're
updating doesn't have a minibuffer. Secondly, don't handle the
selected frame specially. Thirdly, don't assume that the
minibuffer is only one line high. If cursor_in_echo_area < 0, put
the cursor in the upper-left corner; if cursor_in_echo_area > 0,
put it on the lowest non-empty line in the minibuffer window, or
on the top line.
* dispnew.c (direct_output_for_insert): Fail if
cursor_in_echo_area is set; we don't want to do the typing there.
(direct_output_for_insert): Same.