(fill_gstring_body): Avoid compiler warnings.
[bpt/emacs.git] / src / ChangeLog
index 2eca7a9..c875980 100644 (file)
@@ -1,3 +1,412 @@
+2008-08-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * composite.c (fill_gstring_body): Avoid compiler warnings.
+
+       * font.c (font_fill_lglyph_metrics): Use EMACS_INT in
+       LGLYPH_SET_CODE to avoid compiler warnings.
+
+       * makefile.w32-in ($(BLD)/w32uniscribe.$(O)): Depend on composite.h
+
+       * composite.h (LGLYPH_SET_CODE): Cast `val' to EMACS_INT.
+
+       * w32uniscribe.c (uniscribe_shape): Shut up compiler warning in
+       LGLYPH_SET_CODE.
+
+2008-08-29  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (report_file_error): Don't downcase the first character
+       of errstring if it is still unibyte.
+
+2008-08-29  Kenichi Handa  <handa@m17n.org>
+
+       These changes are to re-implement the automatic composition so
+       that it doesn't use text properties.
+
+       * Makefile.in (ftfont.o): Depend on composite.h.
+       (composite.o): Depend dispextern.h, font.h, frame, and window.h.
+
+       * character.h (Vunicode_category_table): Extern it.
+
+       * character.c (Vunicode_category_table): New variable.
+       (syms_of_character): DEFVAR_LISP Vunicode_category_table.
+
+       * chartab.c (optimize_sub_char_table): Perform more greedy
+       optimization.
+
+       * composite.h (enum composition_method): Delete
+       COMPOSITION_WITH_GLYPH_STRING.
+       (COMPOSITION_METHOD): Dont' check COMPOSITION_WITH_GLYPH_STRING.
+       (Vcomposition_function_table): Extern it.
+       (LGSTRING_XXX, LGLYPH_XXX): Macros moved from font.h.
+       (composition_gstring_put_cache, composition_gstring_from_id)
+       (composition_gstring_p, composition_gstring_width)
+       (composition_compute_stop_pos, composition_reseat_it)
+       (composition_update_it, composition_adjust_point): Extern them.
+       (Fcomposition_get_gstring): EXFUN it.
+
+       * composite.c: Include window.h, frame.h, dispextern.h font.h.
+       (Vcomposition_function_table)
+       (get_composition_id): Don't handle COMPOSITION_WITH_GLYPH_STRING.
+       (gstring_hash_table, gstring_work, gstring_work_headers): New
+       variables.
+       (gstring_lookup_cache, composition_gstring_put_cache)
+       (composition_gstring_from_id, composition_gstring_p)
+       (composition_gstring_width, fill_gstring_header)
+       (fill_gstring_body, autocmp_chars, composition_compute_stop_pos)
+       (composition_reseat_it, composition_update_it)
+       (composition_adjust_point, Fcomposition_get_gstring): New
+       functions.
+       (syms_of_composite): Initialize gstring_hash_table, gstrint_work,
+       and gstring_work_headers.  DEFVAR_LISP composition-function-table.
+       Defsubr compostion_get_gstring.
+
+       * dispextern.h (struct glyph): New union u.cmp.  Delete the member
+       cmp_id.
+       (struct glyph_string): Delete the member gidx.  New members
+       cmp_id, cmp_from, and cmp_to.
+       (enum it_method): Delete GET_FROM_COMPOSITION.
+       (struct composition_it): New struct.
+       (struct it): New member cmp_it, and iterator_stack_entry.cmp_it.
+       Delete c, len, cmp_id, cmp_len in u.comp.
+
+       * font.h (enum lgstring_indices): Delete it.
+       (LGSTRING_XXX, LGLYPH_XXX): These macros moved to composite.h.
+       (enum lglyph_indices): Likewise.
+       (font_range): Extern adjusted.
+       (font_fill_lglyph_metrics): Extern it.
+
+       * font.c (QCf): New variable.
+       (check_gstring): Use LGSTRING_GLYPH_LEN, not LGSTRING_LENGTH.
+       (font_prepare_composition): Delete this function.
+       (font_range): Type and arguments changed.
+       (Ffont_make_gstring, Ffont_fill_gstring): Delete them.
+       (font_fill_lglyph_metrics): New function.
+       (Ffont_shape_text): Renamed to Ffont_shape_gstring and arguments
+       changed.
+       (syms_of_font): DEFSYM QCf.  Delete defsubr for
+       Sfont_make_gstring, Sfont_fill_gstring, Sfont_shape_text.  Defsubr
+       Sfont_shape_gstring.
+
+       * fontset.h (font_for_char): Extern it.
+
+       * fontset.c (font_for_char): New function.
+
+       * ftfont.c: Include composite.h.
+       (ftfont_resolve_generic_family): Add langset "en" to pattern.
+       (ftfont_shape_by_flt): Use LGSTRING_GLYPH_LEN, not
+       LGSTRING_LENGTH.
+
+       * indent.c: Include composite.h and dispextern.h.
+       (check_composition): Delete this function..
+       (scan_for_column): Handle composition by
+       composition_compute_stop_pos, composition_reseat_it, and
+       composition_update_it.
+       (compute_motion): Likewise.
+       (Fvertical_motion): Fix checking of composition.
+
+       * keyboard.c (adjust_point_for_property): Check composition by
+       composition_adjust_point.
+
+       * nsterm.m (ns_draw_glyph_string): Adjusted for the change of
+       struct glyph_string.
+
+       * term.c (encode_terminal_code): Adjusted for the change of struct
+       glyph.
+       (append_composite_glyph): Adjusted for the change of struct it and
+       struct glyph.
+       (produce_composite_glyph): Likewise.
+
+       * w32term.c (x_draw_composite_glyph_string_foreground): Adjusted
+       for the change of struct glyph_string.
+       (x_draw_glyph_string): Likewise.
+
+       * w32uniscribe.c (struct uniscribe_font_info): Include composite.h.
+       (uniscribe_shape): Use LGSTRING_GLYPH_LEN, not LGSTRING_LENGTH.
+
+       * xdisp.c: Include font.h.
+       (it_props): Delete the entry for Qauto_composed.
+       (init_iterator): Initialize it->cmp_it.id to -1.
+       (compute_stop_pos): Call composition_compute_stop_pos.
+       (face_before_or_after_it_pos): Adjusted for the change of struct
+       it.
+       (handle_auto_composed_prop): Delete it.
+       (handle_composition_prop): Handle only static composition.
+       (next_overlay_string): Remove it->method == GET_FROM_COMPOSITION
+       from xassert.  Initialize it->cmp_it.stop_pos.
+       (push_it): Adjusted for the change of struct it.
+       (pop_it): Likewise.
+       (get_next_element): Delete next_element_from_composition.
+       (CHAR_COMPOSED_P): New macro.
+       (get_next_display_element): For automatic composition, get a face
+       from the font in the glyph-string.
+       (set_iterator_to_next): For GET_FROM_BUFFER and GET_FROM_STRING,
+       check composition by it->cmp_it.id.  Delete GET_FROM_COMPOSITION
+       case.
+       (next_element_from_string): Check if the character at the current
+       position is composed by CHAR_COMPOSED_P.
+       (next_element_from_buffer): Likewise.
+       (next_element_from_composition): Adjusted for the change of struct
+       it.  Update it->cmp_it.
+       (dump_glyph): Adjusted for the change of struct glyph.
+       (fill_composite_glyph_string): Adjusted for the change of struct
+       it and struct glyph.  Don't handle automatic composition here.
+       (fill_gstring_glyph_string): New function.
+       (x_get_glyph_overhangs): Handle automatic composition.
+       (BUILD_COMPOSITE_GLYPH_STRING): Adjusted for the change of struct
+       glyph.
+       (BUILD_GSTRING_GLYPH_STRING): New macro.
+       (BUILD_GLYPH_STRINGS): Call BUILD_GSTRING_GLYPH_STRING for
+       automatic composition.
+       (append_composite_glyph): Adjusted for the change of struct it and
+       struct glyph.
+       (x_produce_glyphs): Adjusted for the change of struct it.
+
+       * xterm.c (x_draw_composite_glyph_string_foreground): Adjusted for
+       the change of struct glyph_string.
+       (x_draw_glyph_string): Likewise.
+
+2008-08-29  Glenn Morris  <rgm@gnu.org>
+
+       * buffer.c (word-wrap): Doc fix.
+       * xdisp.c (truncate-partial-width-windows): Doc fix.
+       Increase default to 50.
+
+2008-08-29  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (update_tool_bar_unwind): New function.
+       (update_tool_bar): Temporarily set selected frame before building
+       tool-bar items.
+
+2008-08-28  Michael Albinus  <michael.albinus@gmx.de>
+
+       * dbusbind.c (XD_ERROR, XD_DEBUG_MESSAGE): Use strncpy and
+       snprintf, respectively.
+       (xd_append_arg): Convert strings with Fstring_make_unibyte.
+
+2008-08-28  Chong Yidong  <cyd@stupidchicken.com>
+
+       * Makefile.in: Revert (undocumented) 2008-08-20 change adding
+       LDFLAGS to GNUstep CC invocation.
+
+2008-08-27  Chong Yidong  <cyd@stupidchicken.com>
+
+       * indent.c (Fvertical_motion): Revert last change.  Handle the
+       general case where we are moving forward, and PT spans multiple
+       screen lines.
+
+       * eval.c (find_handler_clause): Temporarily increase
+       max-lisp-eval-depth while printing the backtrace buffer, to
+       guarantee that help-mode code can run.
+
+2008-08-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * msdos.c (Fmsdos_remember_default_colors): Don't reverse frame
+       colors under -rv.
+       (IT_set_frame_parameters): Don't swap foreground and background
+       colors if `(reverse . t)' is present in the frame properties.
+       (internal_terminal_init): Call init_frame_faces only for the
+       initial frame.
+
+2008-08-27  Andreas Schwab  <schwab@suse.de>
+
+       * dired.c (Ffile_attributes): Avoid compiler warning in bitshift.
+
+2008-08-27  Andreas Schwab  <schwab@suse.de>
+
+       * search.c (search_buffer): Set char_base to zero only at the end.
+
+2008-08-27  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (report_file_error): Fix handling of multibyte error
+       string.
+
+2008-08-27  Andreas Seltenreich  <seltenreich@gmx.de>
+
+       * xterm.c (x_term_init): Temporarily hide the partially
+       initialized terminal while calling vendor-specific-keysyms.
+
+2008-08-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * msdos.c (internal_terminal_init): Most initializations done only
+       once, especially initial_screen_colors[] and termscript open.
+
+2008-08-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * eval.c (Fcondition_case): Doc fix.
+
+       * widgetprv.h (EmacsFramePart): Change font member to the new font
+       struct.
+
+       * widget.c: Include character.h and font.h for XSETFONT.
+       (setup_frame_gcs): Compute X font id from font struct, just once.
+
+2008-08-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * term.c (get_named_tty): Fix last change.
+
+2008-08-26  Chong Yidong  <cyd@stupidchicken.com>
+
+       * indent.c (Fvertical_motion): If moving forward starting from a
+       multi-line string, move the iterator to the last line of that
+       string.
+
+2008-08-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * frame.c (do_switch_frame): Mark previously displayed frame as
+       obscured for FRAME_MSDOS_P frames as well.
+
+2008-08-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * frame.c (make_terminal_frame): Initialize f->terminal,
+       f->terminal->reference_count, and scroll bars on MS-DOS as well.
+       Set the top frame to newly created frame.
+       (Fmake_terminal_frame): Reuse the_only_display_info.
+
+       * vm-limit.c (get_lim_data) [MSDOS]: Use alternative methods of
+       estimating available memory.
+
+2008-08-23  David Reitter <david.reitter@gmail.com>
+
+       * nsterm.m (ns_draw_window_cursor): Don't call
+       NSDisableScreenUpdates and NSEnableScreenUpdates on
+       non-NS_IMPL_COCOA systems.
+
+2008-08-23  Andreas Schwab  <schwab@suse.de>
+
+       * process.c (procfs_system_process_attributes): Fix use of
+       uninitialized variables.
+
+2008-08-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * emacs.c (main) [MSDOS]: Call syms_of_xmenu.
+
+       * dispnew.c (init_display): Remove MS-DOS specific conditions for
+       calling tty-set-up-initial-frame-faces.
+
+       * xmenu.c (Fx_popup_dialog, Fx_popup_menu, xmenu_show): Allow
+       MSDOS frames along with X frames.
+
+       * termhooks.h (TERMINAL_ACTIVE_P): Handle output_msdos_raw in
+       addition to output_termcap.
+
+       * xdisp.c (redisplay_internal) [MSDOS]: Don't call set_tty_color_mode.
+
+       * termchar.h (FRAME_TTY): Support output_msdos_raw.
+       (struct tty_display_info) [MSDOS]: Add fields related to mouse
+       highlight.
+
+       * process.c [!subprocesses]: Define QCname.
+       (syms_of_process): Intern and staticpro it.
+
+       * w16select.c (Fw16_set_clipboard_data, Fw16_get_clipboard_data):
+       Adjust for changes in encoding/decoding routines.  Use
+       encode_coding_object and decode_coding_object instead of
+       encode_coding and decode_coding.
+
+       * sysdep.c (init_sys_modes): Call dos_ttraw with tty_out as
+       argument.
+
+       * dosfns.c: Include frame.h before termhooks.h.
+       (dos_cleanup): Use CURTTY ()->termscript instead of a global
+       variable termscript.
+
+       * s/msdos.h (USER_FULL_NAME): Define.
+       (SYSTEM_PURESIZE_EXTRA): Bump up to 100K.
+
+       * editfns.c (USER_FULL_NAME): Define to pw->pw_gecos if undefined.
+       (Fuser_full_name): Use USER_FULL_NAME instead of a literal
+       pw->pw_gecos.
+
+       * keyboard.c (handle_interrupt) [MSDOS]: Call cursor_to with
+       SELECTED_FRAME as additional (1st) argument.
+       (tty_read_avail_input): Handle output_msdos_raw in
+       addition to output_termcap.
+
+       * msdos.c: Include frame.h before termhooks.h.
+       (mouse_on, mouse_off, mouse_moveto, mouse_init)
+       (msdos_set_cursor_shape, IT_set_face, IT_write_glyphs)
+       (show_mouse_face, IT_clear_end_of_line, IT_clear_screen)
+       (IT_clear_to_end, IT_cursor_to, IT_display_cursor, IT_cmgoto)
+       (IT_set_terminal_modes, IT_reset_terminal_modes)
+       (IT_set_frame_parameters): Use tty->termscript instead of a global
+       variable termscript.
+       (IT_write_glyphs): Use tty->terminal->terminal_coding instead of a
+       global variable terminal_coding.  Don't refer to
+       Vnonascii_translation_table.
+       (internal_terminal_init): Set Vwindow_system in current_kboard.
+       Don't use TTY_CHAR_INS_DEL_OK.  Set Vinitial_window_system.
+       Announce date and time of session start, if termscript is open.
+       Don't zero out the_only_display_info (it is done in
+       term.c:init_tty).  Open termscript only of not already open.  Log
+       "SCREEN SAVED" here, instead of IT_set_terminal_modes.  Init mouse
+       here instead of dos_ttraw.  Don't initialize display if this is an
+       initial tty.  Don't set FRAME_FONT.
+       (Vwindow_system_version): Bump to 23.
+       (dos_ttraw): Accept a TTY argument; all callers fixed.  If mouse
+       is available, set up mouse_position_hook.
+       (dos_ttraw, IT_set_terminal_modes): If called with initial
+       terminal, do nothing.
+       (IT_set_frame_parameters): Handle the Qtty_type frame
+       parameter by calling internal_terminal_init.
+       (dos_set_window_size, show_mouse_face)
+       (clear_mouse_face, IT_note_mode_line_highlight)
+       (IT_note_mouse_highlight, IT_update_begin, IT_frame_up_to_date)
+       (dos_rawgetc): Use tty_display_info instead of x_display_info.
+       (initialize_msdos_display): New function.
+       (IT_cursor_to, IT_clear_to_end, IT_clear_screen)
+       (IT_clear_end_of_line, IT_insert_glyphs, IT_write_glyphs)
+       (IT_delete_glyphs, IT_ring_bell, IT_reset_terminal_modes)
+       (IT_set_terminal_modes, IT_set_terminal_window, IT_update_begin):
+       Accept additional argument: a pointer to a frame.  All callers
+       changed.
+       (request_sigio, unrequest_sigio): Don't define, now defined on
+       sysdep.c.
+       (IT_write_glyphs): Rewrite to use encode_terminal_code.
+
+       * term.c [MSDOS]: Include msdos.h.
+       (init_tty) [MSDOS]: Reuse most of WINDOWSNT branch.  Change cpp
+       conditional to DOS_NT.  Allow only one call to this function in a
+       session.  Don't allocate a new struct tty_display_info; instead,
+       reuse the_only_display_info.  Call get_tty_size to get screen
+       dimensions.  Call init_baud_rate to set bad_rate.
+       (dissociate_if_controlling_tty) [MSDOS]: Ifdef away function body.
+       (Fsuspend_tty) [MSDOS]: Don't close input and output.
+       (Fresume_tty) [MSDOS]: Don't reopen the TTY; instead, use
+       stdin/stdout.
+       (get_tty_terminal, get_named_tty, Ftty_type)
+       (Fcontrolling_tty_p): Handle output_msdos_raw in addition to
+       output_termcap.
+       (Fresume_tty, Fsuspend_tty, init_tty, delete_tty): Call
+       add_keyboard_wait_descriptor and delete_keyboard_wait_descriptor
+       only when subprocesses are supported
+
+       * frame.c (make_terminal_frame) [MSDOS]: Adjust initialization of
+       f->output_data.x.
+       (Fmake_terminal_frame) [MSDOS]: Don't allow creation of new
+       terminal devices.
+
+       * msdos.h Remove definition of struct x_display_info and struct
+       x_output.
+       (FRAME_FONT): Use output_data.tty.
+       (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL): Don't define.
+       (struct x_display_info): Renamed from display_info.  All users in
+       msdos.c changed.
+       (struct x_output): Remove background_pixel and foreground_pixel.
+       (the_only_display_info): Renamed from the_only_x_display.
+       (dos_ttraw): Update prototype.
+
+       * Makefile.in (MSDOS_OBJ): Add xmenu.o.
+       (SOME_MACHINE_LISP): Add ../lisp/term/pc-win.elc.
+
+2008-08-23  Jason Rumney  <jasonr@gnu.org>
+
+       * image.c (enum tiff_keyword_index, tiff_format): Add :index keyword.
+       (fn_TIFFSetDirectory): New library function used.
+       (init_tiff_functions) [HAVE_NTGUI]: Initialize it.
+       (tiff_load): Use :index to select among multiple images.  Set count
+       property when multiple images exist.
+       (gif_format): Use :index, not :image.
+
 2008-08-23  Chong Yidong  <cyd@stupidchicken.com>
 
        * xdisp.c (try_scrolling): Check INT_MAX instead of