use XrmSetDatabase only when HAVE_X11R5 is defined.
* xfns.c (Vx_resource_name): Renamed from Vxrdb_name, and made a
lisp-visible variable, so lisp/term/x-win.el can set it. Doc it
for "internal use only"; no need for NEWS entry.
(validate_x_resource_name): New function.
(Fx_get_resource): Doc fix. References to Vxrdb_name renamed. Call
validate_x_resource_name.
(x_window): References to Vxrdb_name renamed. Call
validate_x_resource_name.
(Fx_open_connection): References to Vxrdb_name renamed. Instead
of setting and validating its value here, just call
validate_x_resource_name.
(syms_of_xfns): Add DEFVAR_LISP for Vx_resource_name.
* xfns.c (x_set_frame_parameters): Don't set the frame's size and
position unless those parameters are actually specified in ALIST.
* xrdb.c: Implement search for app-defaults directory and
localized default databases, along with some other functionality
provided by Xt.
#include <stdio.h>, since we call sprintf.
[emacs] (malloc, realloc, free): #define these to xmalloc,
xrealloc, and xfree.
(x_get_string_resource, file_p): Add forward declarations for
these.
(x_customization_string): New variable.
(x_get_customization_string): New function.
(gethomedir): Return malloc'ed space of the right size, instead of
writing into a fixed-size buffer; this means that our callers do
not impose an arbitrary limit on file name length.
(magic_file_p): Rewrite of decode_magic; actually do the
substitutions, instead of expanding all %-escapes to "". Support
the customization string. Return 0 or the expanded file name,
instead of just zero or one. Allocate the space for the expanded
file name ourselves, instead of writing into a fixed-size buffer
passed to us; this removes an arbitrary limit.
(search_magic_path): Rewrite of magic_searchpath_decoder. Return
0 or the expanded file name, instead of just zero or one.
Allocate the space for the expanded file name ourselves, instead
of writing into a fixed-size buffer passed to us; this means that
our callers do not impose an arbitrary limit on file name length.
(get_system_app): Changed to work with search_magic_path.
(get_user_app): Rewritten to work with search_magic_path, and not
to assume that the values of XAPPLRESDIR is a single directory.
(get_user_db): Properly use the new version of gethomedir.
(get_environ_db): Remove arbitrary limit on length of host name.
(x_load_resources): Take a new argument, myname. Call get_user_db
early to obtain the customization string.
Changes to stand-alone testing code.
* xfns.c (Fx_open_connection): Set Vxrdb_name early, and pass it
to x_load_resources.
argument to Qt, instead of trying to typecheck it.
* window.c (Fdelete_windows_on): New optional argument FRAME; if
nil, delete windows on all frames. If t, delete windows on the
selected frame only. If a frame, delete windows on that frame
only.
* window.c (Fnext_window, Fprevious_window): Put these docstrings
in comments; the strings are too long for some C compilers.
OFFSET argument of these functions to be origin 0, not origin 1.
This is what all the callers currently want.
* intervals.c, textprop.c: All callers changed.
* textprop.c (Ftext_property_not_all): Renamed from
Ftext_property_all, and changed sense of return value, so that it
returns useful information if not all characters have properties
EQ to value. Now all the existential and universal questions can
be asked.
* textprop.c (syms_of_textprop): Don't forget defsubr for
Stext_property_all.
* textprop.c (Ftext_property_any, Ftext_property_all): Use EQ to
compare property values, not Fequal.
* textprop.c (Ftext_property_any, Ftext_property_all): New
functions, from David Gillespie.
* intervals.h (Ftext_property_any, Ftext_property_all): Declare them.
(which contains Lisp_Objects) in those .c files which need access
to the terminal hooks but don't #include lisp.h (like cm.c), test
to see if the macro CONSP is #defined. We used to test XINT, but
config.h will #define that everywhere on systems that use tailored
tagging schemes.
zero and an omitted precision. Do allow %.0f to produce strings
containing no decimal point or exponent.
(syms_of_print): Doc fix for float-output-format.
to say whether or not the interval tree has been visited (and skip
it when revisited), and the mark bit of the plist field to say
whether or not that interval has been visited (and abort if
revisited); don't try to use the plist mark bit for both
meanings.
* alloc.c (mark_interval_tree): Don't test if the interval tree
has already been visited here; let the MARK_INTERVAL_TREE macro do
that; avoid function call overhead. Mark the interval tree as
having been visited by setting TREE->parent's mark bit.
(MARK_INTERVAL_TREE): If the tree has been visited (according to
I->parent's mark bit), don't call mark_interval_tree.
(gc_sweep): Rebalance the interval trees of those large strings
which are still alive. This also clears the mark bits of those
trees' root intervals' parent fields.
(compact_strings): Rebalance the interval tree of each small
strings which is still alive. This also clears the mark bits of
that tree's root interval's parent field. Since the string has
moved, update the root interval's parent pointer to contain the
new address.
* lisp.h (struct interval): Doc fix; explain the roles of the mark
bits of the parent and plist members.
as bindings in function-key-map.
* keymap.c (Vfunction_key_map in syms_of_keymap): Doc fix.
* keyboard.c (Fsuspend_emacs): Pass selected_frame as the first
argument to change_frame_size, not 0. This function may be called
in an Emacs compiled with multi-frame support.
OFFSET argument of these functions to be origin 0, not origin 1.
This is what all the callers currently want.
* intervals.c, textprop.c: All callers changed.
* intervals.c (graft_intervals_into_buffer): Properly compute
length of buffer.
return t. This makes read_char also return t.
(read_key_sequence): If read_char returned t, return -1.
(Fread_key_sequence): If read_key_sequence returned -1, quit.
(command_loop_1): If read_key_sequence returned -1, loop around.
symbol `undefined', don't try to take that symbol's cdr before
passing it to menu_bar_item; pass the `undefined' binding itself,
so menu_bar_item can remove bindings for the same key from result.
(syms_of_textprop): Set them up.
(set_properties): Call modify_region.
(remove_properties): Call modify_region before record_property_change.
(add_properties): Likewise.
(syms_of_keyboard): Set up Qundefined.
(menu_bar_items): Don't reverse the items.
Process the maps in reverse order.
(menu_bar_item): If definition is `undefined',
delete any menu bar item already made, and don't make one.
Insert newline at end, if inserted anything else.
(describe_buffer_bindings): Corresponding changes.
For minor mode maps, build up a title string,
then let describe_map_tree insert it.
argument list passed to doprnt, we must use separate indices for
the array of arguments passed to Fformat, and the array of
arguments to be passed to doprnt.
validate_interval_range; that function increments its arguments,
which isn't what we want.
* intervals.c (find_interval): Consistently treat POSITION as an
actual buffer position, i.e. origin 1. The old code seemed
undecided on this point. Treat the end of the buffer as being
part of the rightmost interval.
(adjust_intervals_for_insertion): Consistently treat POSITION as
origin 1.
(interval_deletion_adjustment): The exception: FROM should be
origin zero here. Consistently treat it as such. Simplify code
which shrinks and possibly deletes intervals.
(adjust_intervals_for_deletion): Treat start as origin 1; our
caller does.
(set_point): Use buffer positions throughout, not a mix of buffer
posns and origin zero posns.
(get_local_map): Remove special case for POSITION at end of buffer;
find_interval handles that case correctly.
(verify_interval_modification): Remove special case for START at
end of buffer.
* textprop.c (validate_interval_range): End-of-buffer/string
positions no longer need special handling.
* textprop.c (copy_text_properties): New function, from David
Gillespie.
* intervals.h: Declare copy_text_properties.
* fns.c: #include "intervals.h".
(Fsubstring): Copy text properties to result string.
(concat): Copy text properties to result string.
* ymakefile (fns.o): Note that this depends on INTERVAL_SRC.
Gillespie.
* intervals.h: Declare copy_text_properties.
* fns.c: #include "intervals.h".
(Fsubstring): Copy text properties to result string.
(concat): Copy text properties to result string.
* ymakefile (fns.o): Note that this depends on INTERVAL_SRC.
tree->position rearranged for clarity.
* intervals.c (find_interval): Consistently treat POSITION as an
actual buffer position, i.e. origin 1. The old code seemed
undecided on this point. Treat the end of the buffer as being
part of the rightmost interval.
(adjust_intervals_for_insertion): Consistently treat POSITION as
origin 1.
(interval_deletion_adjustment): The exception: FROM should be
origin zero here. Consistently treat it as such. Simplify code
which shrinks and possibly deletes intervals.
(adjust_intervals_for_deletion): Treat start as origin 1; our
caller does.
(set_point): Use buffer positions throughout, not a mix of buffer
posns and origin zero posns.
(get_local_map): Remove special case for POSITION at end of buffer;
find_interval handles that case correctly.
(verify_interval_modification): Remove special case for START at
end of buffer.
* textprop.c (validate_interval_range): End-of-buffer/string
positions no longer need special handling.
* intervals.c (make_new_interval): #if 0 this out. Nobody calls it.
copy_text_properties.
* textprop.c (copy_text_properties): New function, from David
Gillespie.
* intervals.h: Declare copy_text_properties.
* fns.c: #include "intervals.h".
(Fsubstring): Copy text properties to result string.
(concat): Copy text properties to result string.
* ymakefile (fns.o): Note that this depends on INTERVAL_SRC.