Initial version of string reordering. Tested only on mode line and
[bpt/emacs.git] / src / ChangeLog
index 199c270..3ca0241 100644 (file)
@@ -1,3 +1,242 @@
+2011-06-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (next_element_from_buffer): Improve commentary for when
+       the iterator is before prev_stop.
+       (init_iterator): Initialize bidi_p from the default value of
+       bidi-display-reordering, not from buffer-local value.  Use the
+       buffer-local value only if initializing for buffer iteration.
+       (handle_invisible_prop): Support invisible properties on strings
+       that are being bidi-reordered.
+       (reseat_to_string): Enable bidi-related code.
+       (set_iterator_to_next): Support bidi reordering of C strings and
+       Lisp strings.
+       (next_element_from_string): Support bidi reordering of Lisp
+       strings.
+       (handle_stop_backwards): Support Lisp strings as well.
+       (display_mode_line, display_mode_element): Temporarily force L2R
+       paragraph direction.
+       (display_string): Support display of R2L glyph rows.  Use
+       IT_STRING_CHARPOS when displaying from a Lisp string.
+
+2011-06-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize
+       itb.string.lstring.
+       (compute_display_string_pos, compute_display_string_end):
+       Fix calculation of the object to scan.  Fixes an error when using
+       arrow keys.
+       (next_element_from_buffer): Don't abort when IT_CHARPOS is before
+       base_level_stop; instead, set base_level_stop to BEGV.  Fixes
+       crashes in vertical-motion.
+
+2011-06-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (compute_display_string_pos): First arg is now struct
+       `text_pos *'; all callers changed.  Support display properties on
+       Lisp strings.
+       (compute_display_string_end): Support display properties on Lisp
+       strings.
+       (init_iterator, reseat_1, reseat_to_string): Initialize the
+       string.bufpos member to 0 (zero, for compatibility with IT_CHARPOS
+       when iterating on a string not from display properties).
+
+       * bidi.c (bidi_fetch_char): Support strings with display
+       properties.
+
+       * dispextern.h (struct bidi_string_data): New member bufpos.
+       (compute_display_string_pos): Update prototype.
+
+2011-06-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * bidi.c (bidi_level_of_next_char): Allow the sentinel "position"
+       to pass the test for valid cached positions.
+
+       * xdisp.c (init_iterator): Call bidi_init_it only of a valid
+       buffer position was specified.  Initialize paragraph_embedding to
+       L2R.
+       (reseat_to_string): Initialize the bidi iterator (for now ifdef'ed
+       out).
+       (display_string): If we need to ignore text properties of
+       LISP_STRING, set IT->stop_charpos to IT->end_charpos.  (The
+       original value of -1 will not work with bidi.)
+
+       * dispextern.h (struct bidi_string_data): New member lstring.
+
+2011-06-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize
+       itb.string.s to NULL (avoids a crash in bidi_paragraph_init).
+
+2011-06-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * bidi.c (bidi_paragraph_info): Delete unused struct.
+       (bidi_cache_idx, bidi_cache_last_idx): Declare EMACS_INT.
+       (bidi_cache_start): New variable.
+       (bidi_cache_reset): Reset bidi_cache_idx to bidi_cache_start, not
+       to zero.
+       (bidi_cache_fetch_state, bidi_cache_search)
+       (bidi_cache_find_level_change, bidi_cache_iterator_state)
+       (bidi_cache_find, bidi_peek_at_next_level)
+       (bidi_level_of_next_char, bidi_find_other_level_edge)
+       (bidi_move_to_visually_next): Compare cache index with
+       bidi_cache_start rather than with zero.
+       (bidi_fetch_char): Accept new argument STRING; all callers
+       changed.  Support iteration over a string.
+       (bidi_paragraph_init, bidi_resolve_explicit_1)
+       (bidi_resolve_explicit, bidi_resolve_weak)
+       (bidi_level_of_next_char, bidi_move_to_visually_next): Support
+       iteration over a string.
+       (bidi_set_sor_type, bidi_resolve_explicit_1)
+       (bidi_resolve_explicit, bidi_type_of_next_char): ignore_bn_limit
+       can now be zero (for strings); special values 0 and -1 were
+       changed to -1 and -2, respectively.
+       (bidi_char_at_pos): New function.
+       (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak):
+       Call it instead of FETCH_MULTIBYTE_CHAR.
+       (bidi_move_to_visually_next): Abort if charpos or bytepos were not
+       initialized to valid values.
+       (bidi_init_it): Don't initialize charpos and bytepos with invalid
+       values.
+
+       * xdisp.c (compute_display_string_pos)
+       (compute_display_string_end): Accept additional argument STRING.
+       (init_iterator, reseat_1): Initialize bidi_it->string.s to NULL.
+       (reseat_to_string): Initialize bidi_it->string.s and
+       bidi_it->string.schars.
+
+       * dispextern.h (struct bidi_string_data): New structure.
+       (struct bidi_it): New member `string'.  Make flag members be 1-bit
+       fields, and put them last in the struct.
+       (compute_display_string_pos, compute_display_string_end): Update
+       prototypes.
+
+2011-06-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * bidi.c (bidi_level_of_next_char): clen should be EMACS_NT, not int.
+
+2011-06-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * bidi.c (bidi_fetch_char_advance): Remove unused and
+       unimplemented function.
+
+2011-05-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (set_cursor_from_row): Set start and stop points
+       according to the row's direction when priming the loop that looks
+       for the glyph on which to display cursor.
+       (single_display_spec_intangible_p): Function deleted.
+       (display_prop_intangible_p): Reimplement to call
+       handle_display_spec instead of single_display_spec_intangible_p.
+       Accept 3 additional arguments needed by handle_display_spec.  This
+       fixes incorrect cursor motion across display property with complex
+       values: lists, `(when COND...)' forms, etc.
+       (single_display_spec_string_p): Support property values that are
+       lists with the argument STRING its top-level element.
+       (display_prop_string_p): Fix the condition for processing a
+       property that is a list to be consistent with handle_display_spec.
+
+       * keyboard.c (adjust_point_for_property): Adjust the call to
+       display_prop_intangible_p to its new signature.
+
+       * dispextern.h (display_prop_intangible_p): Adjust prototype.
+
+2011-05-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (handle_display_spec): New function, refactored from the
+       last portion of handle_display_prop.
+       (compute_display_string_pos): Accept additional argument
+       FRAME_WINDOW_P.  Call handle_display_spec to determine whether the
+       value of a `display' property is a "replacing spec".
+       (handle_single_display_spec): Accept 2 additional arguments BUFPOS
+       and FRAME_WINDOW_P.  If IT is NULL, don't set up the iterator from
+       the display property, but just return a value indicating whether
+       the display property will replace the characters it covers.
+       (Fcurrent_bidi_paragraph_direction): Initialize the nchars and
+       frame_window_p members of struct bidi_it.
+
+       * bidi.c (bidi_fetch_char): Accept additional argument
+       FRAME_WINDOW_P and pass it to compute_display_string_pos.  All
+       callers changed.
+       (bidi_init_it): Accept additional argument FRAME_WINDOW_P and use
+       it to initialize the frame_window_p member of struct bidi_it.
+
+       * dispextern.h (struct bidi_it): New member frame_window_p.
+       (bidi_init_it, compute_display_string_pos): Update prototypes.
+
+2011-05-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (compute_display_string_pos): Non-trivial implementation.
+       (compute_display_string_end): New function.
+       (push_it): Accept second argument POSITION, where pop_it should
+       jump to continue iteration.
+
+       * dispextern.h (compute_display_string_end): Declare prototype.
+
+       * bidi.c (bidi_resolve_explicit_1): Use ZV for disp_pos.
+       (bidi_fetch_char): Implement support for runs of characters
+       covered by display strings.
+
+       * bidi.c (bidi_fetch_char): Accept also character position
+       corresponding to BYTEPOS.  DISP_POS is now a character position,
+       not a byte position.  All callers changed.
+       (bidi_cache_iterator_state, bidi_resolve_explicit_1)
+       (bidi_resolve_explicit, bidi_resolve_weak)
+       (bidi_level_of_next_char, bidi_move_to_visually_next): Abort if
+       bidi_it->nchars is non-positive.
+       (bidi_level_of_next_char): Don't try to lookup the cache for the
+       next/previous character if nothing is cached there yet, or if we
+       were just reseat()'ed to a new position.
+       (bidi_paragraph_init, bidi_resolve_explicit_1)
+       (bidi_level_of_next_char): Fix arguments in the calls to
+       bidi_fetch_char.
+
+2011-05-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (compute_display_string_pos): New function.
+       (reseat_1): Initialize bidi_it.disp_pos.
+
+       * bidi.c (bidi_copy_it): Use offsetof.
+       (bidi_fetch_char, bidi_fetch_char_advance): New functions.
+       (bidi_cache_search, bidi_cache_iterator_state)
+       (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak)
+       (bidi_level_of_next_char, bidi_move_to_visually_next): Support
+       character positions inside a run of characters covered by a
+       display string.
+       (bidi_paragraph_init, bidi_resolve_explicit_1)
+       (bidi_level_of_next_char): Call bidi_fetch_char and
+       bidi_fetch_char_advance instead of FETCH_CHAR and
+       FETCH_CHAR_ADVANCE.
+       (bidi_init_it): Initialize new members.
+       (LRE_CHAR, RLE_CHAR, PDF_CHAR, LRO_CHAR, RLO_CHAR): Remove macro
+       definitions.
+       (bidi_explicit_dir_char): Lookup character type in bidi_type_table,
+       instead of using explicit *_CHAR codes.
+       (bidi_resolve_explicit, bidi_resolve_weak): Use
+       FETCH_MULTIBYTE_CHAR instead of FETCH_CHAR, as reordering of
+       bidirectional text is supported only in multibyte buffers.
+
+       * dispextern.h (struct bidi_it): New members nchars and disp_pos.
+       ch_len is now EMACS_INT.
+       (compute_display_string_pos): Declare prototype.
+
+2011-05-09  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * w32menu.c (set_frame_menubar): Fix submenu allocation.
+
+2011-05-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32console.c (Fset_screen_color): Doc fix.
+       (Fget_screen_color): New function.
+       (syms_of_ntterm): Defsubr it.
+
+       * callproc.c (call_process_cleanup): Don't close and unlink the
+       temporary file if Fcall_process didn't create it in the first
+       place.
+       (Fcall_process): Don't create tempfile if stdout of the child
+       process will be redirected to a file specified with `:file'.
+       Don't try to re-open tempfile in that case, and set fd[0] to -1 as
+       cue to call_process_cleanup not to close that handle.
+
 2011-05-07  Ben Key  <bkey76@gmail.com>
 
        * makefile.w32-in: The bootstrap-temacs rule now makes use of