(print_partial_compiled_pattern, re_compile_fastmap): Handle new opcode.
(regex_compile): Use on_failure_jump_nastyloop for non-greedy loops.
(re_match_2_internal): Add code for on_failure_jump_nastyloop when
executing it as well as when popping it off the stack to find infinite
loops in non-greedy repetition operators.
(syms_of_doc): Initialize Qfunction_documentation.
(Fdocumentation): If FUNCTION is a symbol with non-nil
`function-documentation' property, return a documentation derived
from that.
(max_buffer_local_idx): New variable.
(reset_buffer_local_variables, Fbuffer_local_variables): Rewritten
for new handling of per-buffer variables.
(buffer_slot_type_mismatch): Use new macros for per-buffer vars.
(init_buffer_once): Initialize per-buffer vars differently.
Set max_buffer_local_idx.
(find_defun_start): Consider an open parenthesis in column 0
a defun start only if open_paren_in_column_0_is_defun_start is set.
(syms_of_syntax): New variable open-paren-in-column-0-is-defun-start.
(w32_menu_show): Set help string correctly.
(add-menu-item): Set help string in MIIM_DATA for menu item.
Load SetMenuItemInfoA explicitly.
(w32_menu_display_help): New function.
(QCdata): Moved to xdisp.c.
Include fontset.h after dispextern.h.
(Fx_create_frame): Do not create fontset.
(w32_load_system_font): Doc fix.
(Fx_close_connection): Free full_name if it is not shared.
regarding the "parent" handle. These just separate out the different
usages based on the type of parent (interval vs lisp object); later
changes will do type checking and enforcement.
* intervals.h (NULL_INTERVAL): Cast to INTERVAL type.
(INT_LISPLIKE): New macro.
(NULL_INTERVAL_P): Use it.
(INTERVAL_HAS_PARENT, INTERVAL_HAS_OBJECT, SET_INTERVAL_PARENT,
SET_INTERVAL_OBJECT, INTERVAL_PARENT, COPY_INTERVAL_PARENT,
GET_INTERVAL_OBJECT, INTERVAL_PARENT_OR_NULL): New macros.
* alloc.c (make_interval, gc_sweep): Use new macros; eliminate all
explicit references to "parent" field of struct interval and
associated unclean type conversions.
* intervals.c (create_root_interval, root_interval, rotate_right,
rotate_left, balance_possible_root_interval, split_interval_right,
split_interval_left, interval_start_pos, find_interval,
next_interval, previous_interval, update_interval,
adjust_intervals_for_insertion, delete_node, delete_interval,
adjust_intervals_for_deletion, merge_interval_right,
merge_interval_left, reproduce_tree, graft_intervals_into_buffer,
copy_intervals_to_string): Likewise.
* intervals.h (AM_LEFT_CHILD, AM_RIGHT_CHILD, RESET_INTERVAL):
Likewise.
* syntax.c (update_syntax_table): Likewise.
* intervals.c (reproduce_tree_obj): New function, like
reproduce_tree but takes a Lisp_Object for the parent. Declare
with prototype.
(graft_intervals_into_buffer): Use it when appropriate.
(reproduce_tree): Declare with prototype.
(balance_possible_root_interval): Check that the parent is a lisp
object before trying to examine its type.
definitions for non-Emacs compilation.
(enum re_opcode_t): Remove (not)wordchar and move (not)syntaxspec
outside of `#ifdef emacs'.
(print_partial_compiled_pattern): Update.
(regex_compile): Use (not)syntaxspec(Sword) instead of (not)wordchar.
(re_compile_fastmap): Merge handling of charset and charset_not (for
emacs and non-emacs compilation as well).
Similarly for (not)categoryspec and (not)syntaxspec.
Don't use the fastmap when reaching `anychar' since the added
complexity is not justified.
(re_match_2_internal): Merge (not)wordchar (emacs and non-emacs)
and (not)syntaxspec. Merge (not)categoryspec.
(lface_fully_specified_p): Don't check contents of
LFACE_FONT_INDEX because that attribute is optional.
(realize_x_face): Remove now unwarranted xassert.
(x_per_char_metric): Don't try FONT->default_char. Even if
pcm->width is zero, glyph bits may exist.
(x_encode_char): Always initialize char2b->byte1.
(x_get_char_face_and_encoding): Call FACE_FOR_CHAR to get face_id.
(x_get_glyph_face_and_encoding): New arg two_byte_p. Caller
changed.
(x_append_glyph): Set glyph->glyph_not_available_p.
(x_produce_glyphs): Set it->glyph_not_available_p. Don't set
it->charset. Handle the case that per char metric is not
available. If it->multibyte_p is zero and it->c is a multibyte
character, convert it to a unibyte character.
(struct glyph_string): Delete member `charset'.
(x_set_mouse_face_gc): Call FACE_FOR_CHAR to get face_id. Handle
the case that per char metric is not available correctly.
(x_fill_glyph_string): Handle the case that the specific glyph is
not available correctly.
(BUILD_CHAR_GLYPH_STRINGS): Don't set s->charset.
(BUILD_COMPOSITE_GLYPH_STRING): Likewise.
(x_new_font): Call FS_LOAD_FONT, not fs_load_font.
(x_new_fontset): Call fontset_ascii to get ASCII font name of the
fontset. Don't call FS_LOAD_FONT.
Variables removed.
(clear_font_table, frame_update_line_height, load_face_font):
Adjusted for the change of fontset implementation.
(load_face_fontset_font): Function removed.
(pixel_point_size): New function.
(font_list): Argument type changed. Caller changed.
(LFACE_FONT): New macro.
(check_lface_attrs): Check attr[LFACE_FONT_INDEX].
(set_lface_from_font_name): Type of arg FONTNAME is changed to
Lisp_Object. Determine the font name by actually loading a font
by the specified pattern. Set LFACE_FONT (lface) to the specified
pattern. Even if a font is not found, don't try alternatives.
(Finternal_set_lisp_face_attribute): Handle `font' slot in lface.
(set_font_frame_param): If `font' is specified in lface, use it.
(Finternal_get_lisp_face_attribute): Handle `font' slot in lface.
(lface_same_font_attributes_p): Likewise.
(make_realized_face): Arguent changed. Caller changed. Set
face->ascii_face to face itself.
(free_realized_face): Free face->fontset if face is for ASCII.
(face_suitable_for_iso8859_1_p, face_suitable_for_charset_p,
deduce_unibyte_registry, x_charset_registry): Functions removed.
(free_realized_multibyte_face): New function.
(lookup_face, lookup_named_face, lookup_derived_face): Argument
changed. Caller changed.
(try_font_list): Argument type changed.
(face_fontset): Check `font' slot of ATTRS, not `family' slot.
(choose_face_font): Argument changed. Handle fontset properly.
(choose_face_fontset_font): Function removed.
(realize_default_face, realize_named_face): Don't remove the
former face here.
(realize_face): Argument changed. Caller changed. Remove face
with the arg former_face_id in advance. Load font for the new
face.
(realize_x_face): Argument changed. Caller changed. For a
multibyte character, share fontset with base_face. For a single
byte character, make a new realized fontset. Don't load a font
here.
(realize_tty_face): Argument changed. Caller changed.
(compute_char_face): Call FACE_FOR_CHAR, not FACE_FOR_CHARSET.
(face_at_buffer_position): Don't check multibyte_p for returning
DEFAULT_FACE_ID.
(face_at_string_position): Call FACE_SUITABLE_FOR_CHAR_P, not
FACE_SUITABLE_FOR_CHARSET_P.
(syms_of_xfaces): Remove code for Qx_charset_registry and
Vface_default_registry.