(syms_of_xfaces): defsubr Scolor_gray_p and
[bpt/emacs.git] / src / ChangeLog
index f3c17e8..99e667e 100644 (file)
@@ -1,3 +1,804 @@
+2000-01-04  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xfaces.c (syms_of_xfaces): defsubr Scolor_gray_p and
+       Scolor_supported_p even if HAVE_X_WINDOWS is not defined.
+
+2000-01-04  Kenichi Handa  <handa@etl.go.jp>
+
+       * fileio.c (Finsert_file_contents): Signal error if visiting file
+       in a non-empty buffer. 
+
+       * term.c (encode_terminal_code): Fix the previous change.
+
+2000-01-03  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfaces.c (syms_of_xfaces): Change Sface_color_gray_p to
+       Scolor_gray_p, Sface_color_supported_p to Scolor_supported_p.
+
+       * s/hpux9.h (NO_EDITRES): Define even if HAVE_LIBXMU.
+
+2000-01-03  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xdisp.c (handle_single_display_prop) [HAVE_WINDOW_SYSTEM]: No
+       need to test for MSDOS frames.
+
+2000-01-03  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * dosfns.c (unspecified_colors): Remove.
+       (msdos_stdcolor_idx): Use global variables unspecified_fg and
+       unspecified_bg.
+       (msdos_stdcolor_name): Return strings for unspecified fore- and
+       back-ground colors.
+
+       * xfaces.c (Qunspecified_fg, Qunspecified_bg): Remove.
+       (syms_of_xfaces): Remove theit staticpro's.
+       (tty_color_name): Return Lisp strings for unspecified fore- and
+       back-ground colors.
+       (Finternal_set_lisp_face_attribute): Remove the special treatment
+       for Qunspecified_{f,b}g.
+       (realize_default_face): Replace Qunspecified_{f,b}g with a Lisp
+       string.
+
+2000-01-03  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (reseat_at_next_visible_line_start): Position before
+       newline only if ending up on a newline.
+       (next_element_from_ellipsis): Return success.  Handle case of
+       displaying no ellipsis.  Fix case of ellipsis defined in display
+       table.
+       (next_element_from_buffer): Return 0 if next_element_from_ellipsis
+       returns 0.
+
+2000-01-03  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xfaces.c (Fcolor_gray_p): Renamed from face-color-gray-p.
+       (Fcolor_supported_p): Renamed from face-color-supported-p.
+
+2000-01-02  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xfaces.c (tty_defined_color): Pass frame to tty-color-desc.  The
+       list of colors renamed to tty-defined-color-alist.
+       (tty_color_name): Pass the frame to tty-color-by-index.
+       (realize_tty_face): tty-color-alist is now a function which
+       accepts the frame as argument.
+
+       * term.c (Ftty_display_color_p): Accept an optional argument
+       FRAME.
+
+2000-01-02  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * term.c (insert_glyphs): Pass glyph, not &glyph, to
+       encode_terminal_code.
+
+2000-01-02  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * dispnew.c (mode_line_string): Support termcap frames as well.
+
+2000-01-01  Gerd Moellmann  <gerd@gnu.org>
+
+       * syntax.c (Fforward_word): Undo previous change.
+
+       * editfns.c (Fconstrain_to_field): Don't constrain if
+       inhibit-field-text-motion is non-nil.
+       (Fline_beginning_position): Undo previous change.
+       (Fline_end_position): Ditto.
+
+       * syntax.c (Fforward_word): Notice field boundaries only if
+       inhibit-field-text-motion is nil.
+
+       * lisp.h: Add extern declaration for Vinhibit_field_text_motion.
+
+       * editfns.c (Vinhibit_field_text_motion): New variable.
+       (inhibit-field-text-motion): New DEFVAR_LISP.
+       (Fline_beginning_position, Fline_end_position): Notice field
+       boundaries only if inhibit-field-text-motion is nil.
+
+       * xfns.c (x_create_x_image_and_pixmap): Remove parameter FILE.
+       All calls adjusted.
+       (x_build_heuristic_mask): Likewise.
+       (xbm_load_image_from_file): Change error output.
+       (xbm_load, xpm_load, pbm_load, png_load, jpeg_load, tiff_load)
+       (gif_load, gs_load, x_kill_gs_process): Ditto.
+
+       * xfns.c (gif_load): Avoid sign extension and thus out of bounds
+       color indices when accessing raster pixels.
+       (gif_image_p, png_image_p, jpeg_image_p, tiff_image_p): Allow only
+       one of :file or :data.
+       (enum pbm_keyword_index): Add PBM_DATA.
+       (pbm_format): Add :data.
+       (pbm_image_p): Allow either :file or :data.
+       (pbm_read_file): New function.
+       (pbm_scan_number): Rewritten to read from string.
+       (pbm_load): Support :data.
+
+1999-12-31  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfns.c: New image functions adapted to Emacs conventions.
+       (png_load, tiff_load, jpeg_load, gif_load): Always GCPRO local
+       variable `file'.
+
+1999-12-31  William M. Perry  <wmperry@aventail.com>
+
+       * xfns.c (jpeg_format): Added the :data keyword
+       (jpeg_image_p): JPEG is valid with :file _or_ :data
+       (jpeg_memory_src): Defined new JPEG image source to read from a
+       memory buffer.
+       (jpeg_load): Pay attention to the :data keyword if specified.
+       Instantiates a jpeg_memory_src instead of jpeg_stdio_src if
+       found.
+       (png_format): Added the :data keyword
+       (png_image_p): PNG is valid with :file _or_ :data
+       (png_read_from_memory): New PNG read function to read from a
+       memory buffer.
+       (png_load): Pay attention to the :data keyword if specified.  Uses
+       png_set_read_fn() instead of png_init_io() if specified.
+       (tiff_format): Added the :data keyword for TIFF images.
+       (tiff_image_p): TIFF is valid with :file _or_ :data
+       (tiff_read_from_memory): Defined new TIFF I/O functions to read
+       from a memory buffer.
+       (tiff_load): Pay attention to the :data keyword if specified.
+       Uses TIFFClientOpen() instead of TIFFOpen() if specified.
+       (gif_format): Added the :data keyword
+       (gif_image_p): GIF is valid with :file _or_ :data
+       (gif_read_from_memory): New GIF input function to read from a
+       memory buffer.
+       (gif_load): Pay attention tot he :data keyword.  Uses DGifOpen()
+       instead of DGifOpenFileName() if specified.
+
+1999-12-31  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (next_element_from_buffer): Change assertion at the end
+       because it doesn't hold when there's an overlay string at the end
+       from which we deliver an image.
+
+1999-12-30  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (IT_update_begin): Don't dereference members of struct
+       window for deleted windows.
+
+1999-12-30  Gerd Moellmann  <gerd@gnu.org>
+
+       * abbrev.c (Fexpand_abbrev): If expanding an abbrev which has only
+       a hook, and the hook has a non-nil `no-self-insert' property, let
+       the return value of the hook specify whether an expansion took
+       place.  If it returns nil, no expansion has been performed.
+
+       * xterm.c (x_make_frame_visible): Wait for frame becoming visible
+       differently.
+
+1999-12-30  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (IT_write_glyphs): Track last changes to struct glyph.
+
+1999-12-29  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * dispnew.c (mode_line_string): Support MS-DOS frames.
+
+1999-12-29  Gerd Moellmann  <gerd@gnu.org>
+
+       * eval.c (syms_of_eval): Initialize debugger_may_continue.
+
+1999-12-29  Kenichi Handa  <handa@etl.go.jp>
+
+       * process.c (read_process_output): Fix the args CHARPOS and LENINS
+       to signal_after_change.
+
+1999-12-28  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (dos_set_window_size) [__DJGPP__ > 1]: If the frame
+       dimensions changed, invalidate the mouse highlight info.
+       (disable_mouse_highlight, help_echo, previous_help_echo): New
+       variables.
+       (IT_set_mouse_pointer, show_mouse_face, clear_mouse_face)
+       (fast_find_position, IT_note_mode_line_highlight)
+       (IT_note_mouse_highlight): New functions.
+       (IT_update_begin): If the redisplay affects the window where the
+       mouse highlight is, clear the highlight.  If the frame where the
+       highlight was displayed was killed, invalidate the highlight
+       info.
+       (IT_update_end): Reset the highlight flag.  Reset the mouse
+       highlight-defer flag.
+       (IT_frame_up_to_date): New function, if mouse highlight was
+       deferred due to GC, do it now.
+       (internal_terminal_init): Initialize mouse-highlight related
+       members of the_only_x_display.  Assign IT_frame_up_to_date to
+       frame_up_to_date_hook.
+       (dos_rawgetc): If the mouse moved, update mouse highlight.  If
+       help_echo changed value, generate a HELP_EVENT event.
+       (syms_of_msdos): Staticpro help_echo and previous_help_echo.
+
+       * msdos.h (struct display_info): New.
+       (struct x_output): Add the display_info member.
+       (FRAME_X_DISPLAY_INFO): New macro.
+
+1999-12-28  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (try_window_id): Compute BEG_UNCHANGED and END_UNCHANGED
+       if MODIFF > 1.
+       (dump_glyph_row): Adapt to changes in struct glyph.
+
+       * buffer.c (modify_overlay): Always compute unchanged info.
+
+1999-12-27  Kenichi Handa  <handa@etl.go.jp>
+
+       * dispextern.h (FACE_FROM_ID): Cast the arg ID to `unsigned'.
+
+1999-12-27  Kenichi Handa  <handa@etl.go.jp>
+
+       The following changes are to use more bits for face IDs.
+
+       * lisp.h (GLYPH): Defined as `int', not `unsigned int'.  Now the
+       lowest 8 bits are single byte character code, the bits above are
+       face ID.
+       (GLYPH_MASK_FACE, GLYPH_MASK_CHAR): Adjusted for the change
+       above.
+       (FAST_MAKE_GLYPH, FSST_GLYPH_FACE): Likewise.
+       (GLYPH_MASK_REV_DIR, GLYPH_MASK_PADDING): Macros deleted.
+
+       * charset.h (CHAR_BYTES): Use ((1 << CHARACTERBITS) - 1) instead
+       of GLYPH_MASK_CHAR.
+
+       * charset.c (char_bytes): Use ((1 << CHARACTERBITS) - 1) instead
+       of GLYPH_MASK_CHAR.
+
+       * dispextern.h (struct glyph): Make face_id and padding_p the top
+       level members.  Change members in union `u'.
+       (GLYPH_EQUAL_P): Check also members face_id and padding_p.
+       (GLYPH_CHAR_AND_FACE_EQUAL_P): New macro.
+       (SET_CHAR_GLYPH): Adjusted for the change of struct glyph.
+       (CHAR_GLYPH_PADDING_P): Likewise.
+       (GLYPH_FROM_CHAR_GLYPH): Likewise.  Always return -1 for multibyte
+       characters.
+
+       * dispnew.c (line_hash_code, direct_output_for_insert): Adjusted
+       for the change of struct glyph.
+       (line_draw_cost): Adjusted for the change of
+       GLYPH_FROM_CHAR_GLYPH.
+       (count_match): Use macro GLYPH_CHAR_AND_FACE_EQUAL_P.
+
+       * term.c (encode_terminal_code): Adjusted for the change of struct
+       glyph and GLYPH_FROM_CHAR_GLYPH.
+       (write_glyphs, insert_glyphs, append_glyph): Adjusted for the
+       change of struct glyph.
+
+       * xdisp.c: All codes adjusted for the change of struct glyph.
+
+       * xterm.c: All codes adjusted for the change of struct glyph.
+
+1999-12-27  Kenichi Handa  <handa@etl.go.jp>
+
+       * composite.h (struct composition): Change the order of declaring
+       members to reduce the byte size of the structure.
+
+1999-12-25  Gerd Moellmann  <gerd@gnu.org>
+
+       * search.c (looking_at_1): Reset immediate_quit before modifying
+       global data.
+
+1999-12-24  Kenichi Handa  <handa@etl.go.jp>
+
+       * process.c (read_process_output): Fix the arg FROM to
+       update_compositions.
+
+1999-12-22  Richard M. Stallman  <rms@caffeine.ai.mit.edu>
+
+       * search.c (Freplace_match): For nonliteral replacement in buffer,
+       construct all the new text first, then insert all at once.
+
+1999-12-22  Dave Love  <fx@gnu.org>
+
+       * xfns.c (Fx_show_tip): Gcpro `timeout' too.
+
+1999-12-22  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfns.c (Fx_create_frame): Move x_default_parameter calls that
+       lead to size changes to after the X window has been created.
+
+       * xfaces.c (realize_x_face): Don't use uninitialized local
+       variable in xassert.
+
+1999-12-22  Kenichi Handa  <handa@etl.go.jp>
+
+       * xfaces.c (face_color_supported_p): Check by tty_defined_color
+       only when the frame is not for a window system.
+
+1999-12-22  Gerd Moellmann  <gerd@gnu.org>
+
+       * buffer.c (Fset_buffer_multibyte): Arrange for a thorough
+       redisplay after changing the multibyteness of a buffer.
+
+       * xterm.c (XTread_socket): At the beginning of the loop, pass the
+       frame's X window to XFilterEvent instead of None because that's
+       the X window for which the IC was created.  This makes dead
+       accents work when the pointer is not in Emacs' frame.
+       (XTread_socket) <KeyPress>: Don't call XFilterEvent here.
+
+1999-12-20  Dave Love  <fx@gnu.org>
+
+       * xfns.c (Fx_show_tip): Add missing UNGCPRO.
+
+1999-12-19  Gerd Moellmann  <gerd@gnu.org>
+
+       * eval.c (debugger_may_continue): New variable.
+       (syms_of_eval): Add a DEFVAR_BOOL for it.
+       (call_debugger): Bind it.
+
+1999-12-19  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (IT_set_face): Don't swap face colors when highlight or
+       fp->tty_reverse_p is set, unless the computed colors are identical
+       to frame colors.  Print both original and computed colors to
+       termscript file.
+       (IT_write_glyphs): Track the changes in handling of composite
+       characters.
+       (IT_set_frame_parameters): Don't set frame colors from
+       unspecified-fg and unspecified-bg pseudo-colors.
+
+1999-12-17  Dave Love  <fx@gnu.org>
+
+       * data.c (Fkeywordp): New function.
+       (syms_of_data): Install it.
+
+1999-12-16  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * xfaces.c (tty_defined_color): Fix last change.
+
+1999-12-15  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (redisplay_window) <optional new window start>: Check
+       that window start is in [BEGV..ZV].
+
+1999-12-15  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * dispextern.h (FACE_TTY_DEFAULT_FG_COLOR)
+       (FACE_TTY_DEFAULT_BG_COLOR):  New macros.
+
+       * xfaces.c (Qunspecified_fg, Qunspecified_bg): New variables.
+       (syms_of_xfaces): Initialize and staticpro them.
+       (tty_defined_color): If the color name is unspecified-fg or
+       unspecified-bg, return FACE_TTY_DEFAULT_FG_COLOR and
+       FACE_TTY_DEFAULT_BG_COLOR, respectively, as the pixel value.
+       (tty_color_name): If the color pixel value is either
+       FACE_TTY_DEFAULT_FG_COLOR or FACE_TTY_DEFAULT_BG_COLOR, return
+       Qunspecified_fg or Qunspecified_bg, respectively.
+       (Finternal_set_lisp_face_attribute): Allow values Qunspecified_fg
+       and Qunspecified_bg for foreground and background colors.
+       (realize_default_face): If the foreground and background colors
+       are not specified, default to Qunspecified_fg and Qunspecified_bg.
+       (realize_tty_face): By default, set the face colors to
+       FACE_TTY_DEFAULT_FG_COLOR and FACE_TTY_DEFAULT_BG_COLOR.
+       [MSDOS]: Handle FACE_TTY_DEFAULT_FG_COLOR and
+       FACE_TTY_DEFAULT_BG_COLOR when face colors are not defined.
+       Reverse the colors if the default colors were reversed.
+
+       * dispnew.c (init_display): Initialize the frame pixels of the
+       initial frame to FACE_TTY_DEFAULT_FG_COLOR and
+       FACE_TTY_DEFAULT_BG_COLOR.
+
+       * term.c (turn_on_face): If the default fore- and background
+       colors are reversed, enter inverse video mode.  Don't send color
+       escape sequences for unspecified foreground and background colors.
+       (turn_off_face): Handle unspecified-fg and unspecified-bg colors.
+
+       * dosfns.c (unspecified_colors): New variable.
+       (msdos_stdcolor_idx): Handle unspecified-fg and unspecified-bg
+       color names, return FACE_TTY_DEFAULT_FG_COLOR and
+       FACE_TTY_DEFAULT_BG_COLOR, respectively.
+       (msdos_stdcolor_name): Handle FACE_TTY_DEFAULT_FG_COLOR and
+       FACE_TTY_DEFAULT_BG_COLOR, return Qunspecified_fg and
+       Qunspecified_bg, respectively.
+
+       * msdos.c (IT_set_face): Support FACE_TTY_DEFAULT_FG_COLOR and
+       FACE_TTY_DEFAULT_BG_COLOR as pixel values.
+
+1999-12-15  Kenichi Handa  <handa@etl.go.jp>
+
+       * coding.c (code_convert_region): Fix the secoding arg to
+       update_compositions.
+
+1999-12-15  Kenichi Handa  <handa@etl.go.jp>
+
+       The following changes are for the new composition mechanism.  We
+       have deleted `composition' charset and composite characters,
+       instead introduced a special text property `composition'.
+
+       * Makefile.in (INTERVAL_SRC): Include composite.h.
+       (INTERVAL_OBJ): Include composite.o.
+       (SOME_MACHINE_OBJECTS): Include composite.o.
+       (casefiddle.o) (dispnew.o) (indent.o) (process.o) (search.o)
+       (syntax.o) (window.o) (xdisp.o) (xfaces.o) (xterm.o) (print.o):
+       Depend on composite.h.
+       (doc.o): Depend on charset.h.
+       (keyboard.o) (textprop.o) (intervals.o): Depend on INTERVAL_SRC.
+       (composite.o): New target.
+       
+       * alloc.c (Fmake_string): Adjusted for the change of CHAR_STRING.
+
+       * callproc.c (Fcall_process): Call code_convert_string to encode
+       arguments.  Use CODING_REQUIRE_DECODING to check if the process
+       output should be decoded.
+
+       * casefiddle.c: Include composite.h.
+       (casify_object): Use MAX_MULTIBYTE_LENGTH to allocate memory for a
+       multibyte character.  Adjusted for the change of CHAR_STRING.
+       (casify_region): Likewise.  Call update_compositions.
+
+       * category.h (CATEGORY_SET): Delete codes for a composite
+       character.
+
+       * category.c (word_boundary_p): Delete codes for a composite
+       character.
+       (Fmake_category_table): New function.
+       (syms_of_category): Defsubr it.
+
+       * ccl.c (CCL_WRITE_CHAR): Adjusted for the change of CHAR_STRING.
+       (ccl_driver): Delete codes for a composite character.
+
+       * charset.h: In this entry, just `Modified' means that codes for a
+       composite character is deleted.
+       (LEADING_CODE_COMPOSITION) (CHARSET_COMPOSITION)
+       (charset_composition) (MIN_CHAR_COMPOSITION)
+       (MAX_CHAR_COMPOSITION) (GENERIC_COMPOSITION_CHAR)
+       (COMPOSITE_CHAR_P) (MAKE_COMPOSITE_CHAR) (COMPOSITE_CHAR_ID)
+       (PARSE_COMPOSITE_SEQ) (PARSE_CHARACTER_SEQ): Deleted.
+       (MAX_CHAR) (CHARSET_VALID_P) (CHARSET_DEFINED_P) (CHARSET_AT)
+       (FIRST_CHARSET_AT) (SAME_CHARSET_P) (MAKE_NON_ASCII_CHAR)
+       (PARSE_MULTIBYTE_SEQ) (SPLIT_NON_ASCII_CHAR) (CHAR_PRINTABLE_P):
+       Modified.
+       (SPLIT_STRING): Call split_string, not split_non_ascii_string.
+       (CHAR_STRING): Delete WORKBUF argument.  Call char_string, not
+       non_ascii_char_to_string.
+       (STRING_CHAR): Call string_to_char, not string_to_non_ascii_char.
+       (STRING_CHAR_AND_LENGTH): Likewise.
+       (FETCH_CHAR_ADVANCE): New macro.
+       (MAX_COMPONENT_COUNT) (struct cmpchar_info): Deleted.
+       (MAX_MULTIBYTE_LENGTH): New macro.
+       (MAX_LENGTH_OF_MULTI_BYTE_FORM): Deleted.
+       (find_charset_in_str): Argument adjusted.
+       (CHAR_LEN): Modified.
+       
+       * charset.c: In this entry, just `Modified' means that codes for a
+       composite character is deleted.
+       (Qcomposition) (leading_code_composition)
+       (charset_composition) (min_composite_char) (cmpchar_table)
+       (cmpchar_table_size) (n_cmpchars): Deleted.
+       (SPLIT_COMPOSITE_SEQ): Deleted.
+       (SPLIT_MULTIBYTE_SEQ): Modified.
+       (char_to_string): Renamed from non_ascii_char_to_string.
+       Modified.
+       (string_to_char): Renamed from string_to_non_ascii_char.
+       (split_string): Renamed from split_non_ascii_string.
+       (char_printable_p) (Fsplit_char)
+       (Ffind_charset_region) (Ffind_charset_string) (char_valid_p)
+       (char_bytes) (Fchar_width) (strwidth): Modified.
+       (find_charset_in_str): Argument CMPCHARP deleted.  Modified.
+       (Fstring): Adjusted for the change of CHAR_STRING.  Modified.
+       (hash_string) (CMPCHAR_HASH_TABLE_SIZE) (cmpchar_hash_table)
+       (CMPCHAR_HASH_SIZE) (CMPCHAR_HASH_USED) (CMPCHAR_HASH_CMPCHAR_ID)
+       (str_cmpchar_id) (cmpchar_component) (Fcmpcharp)
+       (Fcmpchar_component) (Fcmpchar_cmp_rule) (Fcmpchar_cmp_rule_p)
+       (Fcmpchar_cmp_count): Deleted.
+       (Fcompose_string): Implemented by Emacs Lisp in composite.el.
+       (init_charset_once): Modified.
+       (syms_of_charset): Modified.
+
+       * cmds.c (internal_self_insert): Adjusted for the change of
+       CHAR_STRING.
+
+       * coding.h (emacs_code_class_type): Delete the member
+       EMACS_leading_code_composition.
+       (COMPOSING_NO) (COMPOSING_WITH_RULE_HEAD) (COMPOSING_NO_RULE_HEAD)
+       (COMPOSING_WITH_RULE_TAIL) (COMPOSING_NO_RULE_TAIL)
+       (COMPOSING_WITH_RULE_RULE) (COMPOSING_HEAD_P)
+       (COMPOSING_WITH_RULE_P): Macros deleted.
+       (COMPOSITION_DATA_SIZE) (COMPOSITION_DATA_MAX_BUNCH_LENGTH): New
+       macros.
+       (struct composition_data): New structure.
+       (CODING_FINISH_INSUFFICIENT_CMP): New macro.
+       (struct coding_system): New members composition_rule_follows,
+       cmp_data, cmp_data_start, cmp_data_index.
+       (coding_save_composition) (coding_free_composition_data)
+       (coding_adjust_composition_offset): Extern them.
+
+       * coding.c: Include composite.h.
+       (DECODE_CHARACTER_ASCII): Don't handle composition here.
+       (DECODE_CHARACTER_DIMENSION1): Likewise.  Don't check the validity
+       of multibyte code here.
+       (DECODE_CHARACTER_DIMENSION2): Likewise.
+       (detect_coding_emacs_mule): Change the case label from
+       EMACS_leading_code_composition to 0x80.
+       (detect_coding_iso2022): Handle new composition sequence.
+       (DECODE_ISO_CHARACTER): Likewise.
+       (check_composing_code): Deleted.
+       (coding_allocate_composition_data): New function.
+       (CODING_ADD_COMPOSITION_START) (CODING_ADD_COMPOSITION_END)
+       (CODING_ADD_COMPOSITION_COMPONENT) (DECODE_COMPOSITION_START)
+       (DECODE_COMPOSITION_END) (DECODE_COMPOSITION_RULE): New macros.
+       (decode_coding_iso2022): Handle new composition sequence.
+       (ENCODE_ISO_CHARACTER): Don't check composition here.
+       (ENCODE_COMPOSITION_RULE) (ENCODE_COMPOSITION_START): New macros.
+       (ENCODE_COMPOSITION_NO_RULE_START)
+       (ENCODE_COMPOSITION_WITH_RULE_START): Deleted.
+       (ENCODE_COMPOSITION_END): Handle new composition sequence.
+       (ENCODE_COMPOSITION_FAKE_START): New macro.
+       (encode_coding_iso2022): Handle new composition sequence.
+       (ENCODE_SJIS_BIG5_CHARACTER): Delete superfluous `;' at the tail.
+       (encode_coding_sjis_big5): Ignore composition.
+       (setup_coding_system): Initialize new members of struct
+       coding_system.  Enable composition only when the coding system has
+       `composition' property t.
+       (coding_free_composition_data) (coding_adjust_composition_offset)
+       (coding_save_composition) (coding_restore_composition): New
+       functions.
+       (code_convert_region): Call coding_save_composition for encoding
+       and coding_allocate_composition_data for decoding.  Don't skip
+       ASCII characters if we handle composition on encoding.  Call
+       signal_after_change with Check_BORDER.
+       (code_convert_string): Call coding_save_composition for encoding
+       and coding_allocate_composition_data for decoding.  Don't skip
+       ASCII characters if we handle composition on encoding.
+       (code_convert_string1): Set Vlast_coding_system_used after calling
+       code_convert_string.
+       (code_convert_string_norecord): Disable composition.
+       (Fset_terminal_coding_system_internal): Likewise.
+       (Fset_safe_terminal_coding_system_internal): Likewise.
+       (Fset_keyboard_coding_system_internal): Likewise.
+       (init_coding_once): Set emacs_code_class[0x80] to
+       EMACS_invalid_code.
+
+       * composite.h: New file.
+
+       * composite.c: New file.
+
+       * data.c (Faref): Delete codes for a composite character..
+       (Faset): Likewise.  Adjusted for the change of CHAR_STRING.
+
+       * dispextern.h (enum glyph_type): New member COMPOSITE_GLYPH.
+       (struct glyph): Add new sub-structure cmp to the union `u'.
+       (enum display_element_type): New member IT_COMPOSITION.
+       (enum prop_idx): New member COMPOSITION_PROP_IDX.
+       (struct it): New members cmp_id, cmp_len.
+
+       * dispnew.c (direct_output_forward_char): Check point moving into
+       or out of a composition.  If so, give up direct method.
+
+       * doprnt.c (doprnt1): Adjusted for the change of CHAR_STRING.
+
+       * editfns.c (Fchar_to_string): Adjusted for the change of
+       CHAR_STRING.
+       (general_insert_function): Likewise.
+       (Finsert_char): Likewise.
+       (Fsubst_char_in_region): Likewise.  Call update_compositions.
+       (Ftranslate_region): Call update_compositions.
+       (Ftranspose_regions): Call update_compositions.
+
+       * emacs.c (main): Call syms_of_composite.
+
+       * fileio.c (Fsubstitute_in_file_name): Adjusted for the change of
+       CHAR_STRING.
+       (Finsert_file_contents): Set Vlast_coding_system_used before
+       calling signal_after_change.  Call update_compositions if some
+       texts are inserted..
+       (Fwrite_region): Adjusted for the change of a_write and e_write.
+       (a_write): Argument changed.  Work based on character position,
+       not byte position.
+       (e_write): Argument changed.  Handle new way of composition.
+
+       * fns.c (Flength): The length of char-table is MAX_CHAR.
+       (concat): Adjusted for the change of CHAR_STRING.
+       (Ffillarray): Adjusted for the change of CHAR_STRING.
+       (Fset_char_table_default): Delete codes for a composite character.
+       (hash_put): Return hash index.
+
+       * fontset.h (struct font_info): New member vertical_centering.
+       (Vvertical_centering_font_regexp): Extern it.
+
+       * fontset.c (Vvertical_centering_font_regexp): New variable.
+       (syms_of_fontset): Declare it as a Lisp variable and initialize.
+       Set Vignore_relative_composition to nil.
+       (fs_load_font): Initialize `vertical_centering' of struct
+       font_info.
+
+       * indent.c (check_composition): New function.
+       (MULTIBYTE_BYTES_WIDTH): Call STRING_CHAR_AND_LENGTH with
+       MAX_MULTIBYTE_LENGTH, not MAX_LENGTH_OF_MULTI_BYTE_FORM.
+       (current_column_1): Handle new way of composition.
+       (Fmove_to_column): Likewise.
+       (compute_motion): Likewise.
+
+       * insdel.c (copy_text): Adjusted for the change of CHAR_STRING.
+       (insert_char): Likewise.
+       (insert): Call update_compositions.
+       (insert_and_inherit): Likewise.
+       (insert_before_markers): Likewise.
+       (insert_before_markers_and_inherit): Likewise.
+       (insert_from_string): Likewise.
+       (insert_from_string_before_markers): Likewise.
+       (insert_from_buffer): Likewise.
+       (replace_range): Likewise.
+       (count_combining_composition): Deleted.
+       (count_combining_before): Delete codes for a composite character.
+       (count_combining_after): Likewise.
+       (del_range_1): Call update_compositions.
+       (del_range_byte): Likewise.
+       (del_range_both): Likewise.
+       (Fcombine_after_change_execute): Likewise.
+
+       * intervals.h: Include composite.h.
+       (get_property_and_range): Extern it.
+       (Vtext_property_default_nonsticky): Extern it.
+       
+       * intervals.c (adjust_intervals_for_insertion): To check stickines
+       of properties, pay attention to text-property-default-nonsticky.
+       (merge_properties_sticky): Likewise.
+       (get_property_and_range): New function.
+
+       * keyboard.c (Vdisable_point_adjustment): New variable.
+       (Vglobal_disable_point_adjustment): New variable.
+       (syms_of_keyboard): Declare them as Lisp variables.
+       (command_loop_1): Check them and call adjust_point_for_property if
+       necessary.
+       (adjust_point_for_property): New function.
+
+       * keymap.c (push_key_description): Adjusted for the change of
+       CHAR_STRING.
+       (Ftext_char_description): Likewise.
+
+       * lisp.h (QCtest, QCweakness, Qequal): Extern them.
+       (hash_put): Adjusted for the change of the definition.
+       (signal_after_change): Likewise.
+       (check_point_in_composition): Extern it.
+
+       * lread.c (readchar): Adjusted for the change of CHAR_STRING.
+       Delete a code that handles an invalid too-long multibyte sequence
+       because we are now sure that we never encounter with such a
+       sequence.
+       (read_multibyte): Use macro MAX_MULTIBYTE_LENGTH, not
+       MAX_LENGTH_OF_MULTI_BYTE_FORM.
+       (init_obarray): Likewise.
+       (read1): Likewise.  Adjusted for the change of CHAR_STRING.
+
+       * print.c (printchar): Adjusted for the change of CHAR_STRING.
+
+       * process.c: Include composite.h.
+       (read_process_output): Call update_compositions.
+
+       * regex.c (regex_compile): Adjusted for the change of CHAR_STRING.
+
+       * search.c (search_buffer): Adjusted for the change of CHAR_STRING.
+
+       * syntax.h (SYNTAX_ENTRY_INT): Delete codes for a composite
+       character.
+
+       * term.c (encode_terminal_code): Delete codes for a composite
+       character.  Adjusted for the change of CHAR_STRING.
+       (produce_glyphs): When called, it->what can be IT_COMPOSITION.
+       Delete codes for a composite character.
+
+       * textprop.c (Vtext_property_default_nonsticky): New variable
+       (syms_of_textprop): Declare it as a Lisp variable.
+
+       * window.c (Frecenter): Clear all caches of compositions.
+
+       * xdisp.c (it_props): Add an entry for composition.
+       (face_before_or_after_it_pos): For composition, check face of a
+       character after the composition.
+       (handle_composition_prop): New function.
+       (get_next_display_element): Adjusted for the change of
+       CHAR_STRING.
+       (set_iterator_to_next): Handle the case that it->method ==
+       next_element_from_composition.
+       (next_element_from_composition): New function.
+       (message_dolog): Adjusted for the change of CHAR_STRING.
+       (set_message_1): Likewise.
+       (check_point_in_composition): New function.
+       (reconsider_clip_changes): If point moved into or out of
+       composition, set b->clip_changed to 1 to force updating of the
+       screen.
+       (disp_char_vector): Delete codes for a composite character.
+       (decode_mode_spec_coding): Adjusted for the change of CHAR_STRING.
+
+       * xfaces.c (choose_face_fontset_font): Delete codes for a
+       composite character.
+       (realize_x_face): Likewise.  Change a place to set local variable
+       `f' to avoid a bug of GCC 2.8.1 on Solaris.
+
+       * xfns.c: Include intervals.h.
+       (syms_of_xfns): Make `display' property nonsticky by default.
+
+       * xselect.c (lisp_data_to_selection_data): Adjusted for the change
+       for find_charset_in_str.
+
+       * xterm.h (struct x_output): Change member font_baseline to
+       baseline_offset.
+
+       * xterm.c (x_append_glyph): Setup members of struct glyph properly
+       for composition.
+       (x_append_composite_glyph): New function.
+       (VCENTER_BASELINE_OFFSET): New macro.
+       (x_produce_glyphs): If it->what == IT_COMPOSITION, setup members
+       of struct it for the composition.  Cache pixel offsets in the
+       struct composition.  Delete codes for a composite character.
+       Handle Vignore_relative_composition in composition code.
+       (struct glyph_string): Delete member cmpcharp, add new member cmp.
+       (x_set_cursor_gc): Check s->cmp, not s->cmpcharp.
+       (x_compute_glyph_string_overhangs): Likewise.
+       (x_get_glyph_overhangs): Delete codes for a composite character.
+       (x_right_overwritten): Check s->cmp, not s->cmpcharp.
+       (x_draw_glyph_string_background): Likewise.  Delete codes for
+       checking s->gidx for a composition.
+       (x_draw_glyph_string_foreground): Delete code for a composite
+       character.
+       (x_draw_composite_glyph_string_foreground): New function.
+       (x_draw_glyph_string_box): Check s->cmp, not s->cmpcharp.
+       (x_draw_glyph_string): Handle the case of COMPOSITE_GLYPH.
+       (struct work): Deleted.
+       (x_fill_composite_glyph_string): Argument changed.  Mostly
+       rewritten for that.
+       (x_fill_glyph_string): Don't check CHARSET_COMPOSITION.
+       (BUILD_CHAR_GLYPH_STRINGS): Don't handle composition here.
+       (BUILD_COMPOSITE_GLYPH_STRING): New macro.
+       (BUILD_GLYPH_STRINGS): For composition, call
+       BUILD_COMPOSITE_GLYPH_STRING.
+       (x_new_font): Initialize f->output_data.x->baseline_offset, not
+       f->output_data.x->font_baseline.
+
+1999-12-14  Gerd Moellmann  <gerd@gnu.org>
+
+       * xterm.c (show_mouse_face): Don't use updated_area, use
+       TEXT_AREA.
+
+1999-12-12  Richard M. Stallman  <rms@caffeine.ai.mit.edu>
+
+       * minibuf.c (Fall_completions): Doc fix.
+
+1999-12-12  Richard M. Stallman  <rms@caffeine.ai.mit.edu>
+
+       * macros.c (Fstart_kbd_macro): Handle case where last-kbd-macro
+       has been changed by the Lisp code.
+
+1999-12-12  Gerd Moellmann  <gerd@gnu.org>
+
+       * xfns.c: Indentation fixes.
+
+1999-12-10  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xterm.c (x_initialize): Only setup xaw3d_* if they've been declared.
+
+1999-12-10  Gerd Moellmann  <gerd@gnu.org>
+
+       * frame.h (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL)
+       [!MSDOS && !WINDOWSNT && !macintosh]: Moved here from xterm.h.
+
+       * xterm.h (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL): Moved
+       to frame.h.
+
+1999-12-09  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (Qratio): New symbol.
+       (scroll_bar_parts): Add `Qratio' to it.
+       (syms_of_keyboard): Init `Qratio'.
+       * termhooks.h (scroll_bar_part): Add `scroll_bar_move_ratio'.
+       * xterm.c (#includes): Allow compilation with only Xaw.
+       (xaw3d_arrow_scroll, xaw3d_pick_top): New variables.
+       (xt_action_hook): Replace XAW3D by XAW.
+       (xaw3d_jump_callback): Renamed to xaw_jump_callback.
+       (xaw_jump_callback): Renamed from xaw3d_jump_callback.
+       Determine epsilon dynamically and don't try to be too clever.
+       (xaw3d_scroll_callback): Renamed to xaw_scroll_callback.
+       (xaw_scroll_callback): Renamed from xaw3d_scroll_callback.
+       Handle both Xaw3d with arrow-scrollbars and with Xaw-style
+       scrollbar (using `ratio').
+       (x_create_toolkit_scroll_bar): Try to detect which style of Xaw3d
+       scrollbar we have so as to set it up more optimally and to fix
+       xaw3d_arrow_scroll and xaw3d_pick_top.
+       (x_set_toolkit_scroll_bar_thumb): Try to maintain 2 spare pixels at the
+       bottom of the Xaw3d scrollbar, to work around its tendency to refuse
+       shrinking the thumb.  Also make sure that `XawScrollbarSetThumb'
+       is not ignored, using a major gross hack.
+       (x_initialize): Init default values for xaw3d_arrow_scroll and
+       xaw3d_pick_top.
+
 1999-12-09  Dave Love  <fx@gnu.org>
 
        * frame.h: (PIX_TYPE) [! HAVE_X_WINDOWS]: Define PIX_TYPE.
 
        * coding.c (code_convert_region): Update `dst' correctly.
 
-1999-10-28  Richard M. Stallman  <rms@caffeine.ai.mit.edu>
-
-       * regex.c (POP_FAILURE_POINT): Use failure_id.integer
-       as arg to DEBUG_POP and DEBUG_PRINT.
-
 1999-10-28  Gerd Moellmann  <gerd@gnu.org>
 
        * fns.c (Fmemq, Fassq, Frassq, assq_no_quit, Fassoc)
 
 1999-10-08  Stefan Monnier  <monnier@cs.yale.edu>
 
-       * fileio.c (Fmake_temp_name): add a reference to `make-temp-file'
+       * fileio.c (Fmake_temp_name): Add a reference to `make-temp-file'
        in the docstring.
 
 1999-10-08  Gerd Moellmann  <gerd@gnu.org>
@@ -9023,7 +9819,7 @@ Sun Jan  3 08:41:10 1999  Masatake Yamato  <masata-y@is.aist-nara.ac.jp>
 
        * xterm.c (XTclear_end_of_line): Respect right_to_left_p.
 
-       * xdisp.c (try_window_id): clear desired matrix if not successul.
+       * xdisp.c (try_window_id): Clear desired matrix if not successul.
 
        * xdisp.c (try_window_id): Call update_window_begin_hook/end_hook.
 
@@ -9117,7 +9913,7 @@ Sun Jan  3 08:41:10 1999  Masatake Yamato  <masata-y@is.aist-nara.ac.jp>
 
        * window.h: Comments for window_end_pos/vpos.
 
-       * xdisp.c (skip_to): assert current_buffer is the buffer
+       * xdisp.c (skip_to): Assert current_buffer is the buffer
        of the window in which we are skipping.
 
        * dispnew.c (update_window_line): Optimized clear_end_of_line.
@@ -9193,7 +9989,7 @@ Sun Jan  3 08:41:10 1999  Masatake Yamato  <masata-y@is.aist-nara.ac.jp>
        * xterm.c (XTmouse_position): Calculate LAST_MOUSE_GLYPH 
        rectangle based on minimum character bounds.
 
-       * keyboard.c (make_lispy_event): mouse clicks; don't do frame
+       * keyboard.c (make_lispy_event): Mouse clicks; don't do frame
        glyph position calculations.
        (make_lispy_movement): Use buffer_posn_from_coords and window
        relative coordinates.
@@ -9222,7 +10018,7 @@ Sun Jan  3 08:41:10 1999  Masatake Yamato  <masata-y@is.aist-nara.ac.jp>
        cursor positioning on partially visible lines.
        (set_window_cursor_after_update): Ditto.
 
-       * dispextern.h (MATRIX_ROW_PARTIALLY_VISIBLE_P): bug fix.
+       * dispextern.h (MATRIX_ROW_PARTIALLY_VISIBLE_P): Bug fix.
 
        * window.h (struct window): start_y removed.
 
@@ -9346,7 +10142,7 @@ Fri Aug 22 18:46:43 1997  Gerd Moellmann  <gerd@acm.org>
 
        * xterm.c (do_line_dance): Only one parameter.
 
-       * xdisp.c (display_line): set continued_p.
+       * xdisp.c (display_line): Set continued_p.
 
        * dispextern.h (struct glyph_row): New flag continued_p.
        Fix truncated_on_left_p and truncated_on_right_p to be bits.
@@ -9389,7 +10185,7 @@ Wed Aug 20 11:23:28 1997  Gerd Moellmann  <gerd@acm.org>
        * dispnew.c (update_window_line): If rows have different height
        or y, write entire line.
 
-       * xdisp.c (compute_line_metrics): reset max_ascent and max_descent
+       * xdisp.c (compute_line_metrics): Reset max_ascent and max_descent
        of info struct.
 
        * xfaces.c (Fset_face_attribute_internal): Don't call 
@@ -9482,7 +10278,7 @@ Sat Aug 16 13:13:32 1997  Gerd Moellmann  <gerd@acm.org>
        (get_leaf_windows): Build vector of leaf windows.
        Corrupted archive restored from v77.
 
-       * xdisp.c (display_string): stop at >= last_visible_x if truncating
+       * xdisp.c (display_string): Stop at >= last_visible_x if truncating
        like display_line does.
 
        * xdisp.c (display_mode_line): Don't hscroll mode line.
@@ -9497,7 +10293,7 @@ Sat Aug 16 13:13:32 1997  Gerd Moellmann  <gerd@acm.org>
        * dispextern.h (struct display_cursor): New member string_length.
 
        * xdisp.c (next_display_element): Return padding spaces.
-       (init_string_cursor): take precision and field_width
+       (init_string_cursor): Take precision and field_width
        (display_string): Use string cursor, skip over invisible text.
 
 Thu Aug 14 10:41:41 1997  Gerd Moellmann  <gerd@acm.org>
@@ -9520,13 +10316,13 @@ Thu Aug 14 10:41:41 1997  Gerd Moellmann  <gerd@acm.org>
        * dispnew.c (direct_output_for_insert): Give up for hscrolled 
        mini window.
 
-       * xdisp.c (display_line): don't scroll mini prompt.
+       * xdisp.c (display_line): Don't scroll mini prompt.
 
        * xdisp.c (echo_area_display): Call update_single_window if 
        possible. 
 
        * dispnew.c (update_window_line):  Call scrolling_window.
-       (scrolling_window): work on enabled desired lines only.
+       (scrolling_window): Work on enabled desired lines only.
        (update_single_window): Update a single window like update_frame
        does for all windows.
        (update_window, update_window_tree): Additional argument 
@@ -9539,23 +10335,23 @@ Thu Aug 14 10:41:41 1997  Gerd Moellmann  <gerd@acm.org>
        (x_display_and_set_cursor): Do nothing if cursor glyph row 
        not enabled.  Draw bar cursor 1 pixel smaller.
 
-       * dispnew.c (adjust_frame_glyphs): don't set frame garbaged
+       * dispnew.c (adjust_frame_glyphs): Don't set frame garbaged
        since update will follow soon.
 
        * xdisp.c (echo_area_display): Unitialized variable.
 
-       * xterm.c (draw_bitmap): previously draw_truncation; draw
+       * xterm.c (draw_bitmap): Previously draw_truncation; draw
        overlay arrow bitmap.
 
-       * xdisp.c (display_line): for truncated lines, consider everything
+       * xdisp.c (display_line): For truncated lines, consider everything
        up to the final \n as part of the line for cursor positioning. 
 
-       * xterm.c (draw_truncation): take FRAME_X_TRUNC_WIDTH into account.
-       (x_after_update_window_line): clear trunc marks.
+       * xterm.c (draw_truncation): Take FRAME_X_TRUNC_WIDTH into account.
+       (x_after_update_window_line): Clear trunc marks.
 
        * xterm.h (FRAME_X_TRUNC_WIDTH).
 
-       * frame.h (FRAME_TRUNC_WIDTH):  width of area at the left margin
+       * frame.h (FRAME_TRUNC_WIDTH):  Width of area at the left margin
        of a window reserved for truncation mark.
 
        * dispextern.h: Take FRAME_TRUNC_WIDTH into account. 
@@ -9577,7 +10373,7 @@ Thu Aug 14 10:41:41 1997  Gerd Moellmann  <gerd@acm.org>
        (x_display_cursor): Use default font width if width not
        known. 
 
-       * xdisp.c (echo_area_display): set row->y.
+       * xdisp.c (echo_area_display): Set row->y.
 
        * dispnew.c (set_window_cursor_after_update): Don't assume
        all rows are enabled.
@@ -10476,7 +11272,7 @@ Wed Jun 25 15:22:58 1997  Gerd Moellmann  <gerd@acm.org>
        * alloc.c: Include dispextern.h
        (mark_object): Mark objects referenced from glyphs.
 
-       * frame.c (make_frame): initialize DECODE_MODE_SPEC_BUFFER.
+       * frame.c (make_frame): Initialize DECODE_MODE_SPEC_BUFFER.
 
        * scroll.c (do_direct_scrolling): Remove TEMP_MATRIX.
        (do_scrolling): Ditto.
@@ -10504,9 +11300,9 @@ Wed Jun 25 15:22:58 1997  Gerd Moellmann  <gerd@acm.org>
        (Fdelete_frame): Free glyphs.
        (make_frame): Initialize matrix fields in frame.
 
-       * config.in (PROTO): added.
+       * config.in (PROTO): Added.
 
-       * emacs.c (shut_down_emacs): check glyph memory.
+       * emacs.c (shut_down_emacs): Check glyph memory.
 
        * window.c (Fdelete_window): Free window matrices.
        (Fset_window_configuration): Ditto.