+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>
* 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.
* 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.
* 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.
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.
* 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.
* 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
(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.
* 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>
* 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
(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.
(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.
* 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.
(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.