diff options
| author | Eli Zaretskii | 2011-06-04 10:41:44 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2011-06-04 10:41:44 +0300 |
| commit | fec2107c58835163dc3b08c0a833a5072aa1fca9 (patch) | |
| tree | fa112f71d61bd4166aa56fb80da80357455906ab /src/ChangeLog | |
| parent | ea9fafe0937ebd99780610a7c1451ca08b013702 (diff) | |
| parent | 57f97249c8e8673df19219e1f5cba478ea23024d (diff) | |
| download | emacs-fec2107c58835163dc3b08c0a833a5072aa1fca9.tar.gz emacs-fec2107c58835163dc3b08c0a833a5072aa1fca9.zip | |
Support bidi reordering of text covered by display properties.
src/bidi.c (bidi_copy_it): Use offsetof instead of emulating it.
(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.
(bidi_init_it): Accept additional argument FRAME_WINDOW_P and use
it to initialize the frame_window_p member of struct bidi_it.
(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.
src/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.
(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.
(compute_display_string_pos, compute_display_string_end): New
functions.
(push_it): Accept second argument POSITION, where pop_it should
jump to continue iteration.
(reseat_1): Initialize bidi_it.disp_pos.
src/keyboard.c (adjust_point_for_property): Adjust the call to
display_prop_intangible_p to its new signature.
src/dispextern.h (struct bidi_it): New member frame_window_p.
(bidi_init_it): Update prototypes.
(display_prop_intangible_p): Update prototype.
(compute_display_string_pos, compute_display_string_end): Declare
prototypes.
(struct bidi_it): New members nchars and disp_pos. ch_len is now
EMACS_INT.
Diffstat (limited to 'src/ChangeLog')
| -rw-r--r-- | src/ChangeLog | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 45d8e38738a..4c33bcc4e67 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,77 @@ | |||
| 1 | 2011-06-03 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | Support bidi reordering of text covered by display properties. | ||
| 4 | |||
| 5 | * bidi.c (bidi_copy_it): Use offsetof instead of emulating it. | ||
| 6 | (bidi_fetch_char, bidi_fetch_char_advance): New functions. | ||
| 7 | (bidi_cache_search, bidi_cache_iterator_state) | ||
| 8 | (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak) | ||
| 9 | (bidi_level_of_next_char, bidi_move_to_visually_next): Support | ||
| 10 | character positions inside a run of characters covered by a | ||
| 11 | display string. | ||
| 12 | (bidi_paragraph_init, bidi_resolve_explicit_1) | ||
| 13 | (bidi_level_of_next_char): Call bidi_fetch_char and | ||
| 14 | bidi_fetch_char_advance instead of FETCH_CHAR and | ||
| 15 | FETCH_CHAR_ADVANCE. | ||
| 16 | (bidi_init_it): Initialize new members. | ||
| 17 | (LRE_CHAR, RLE_CHAR, PDF_CHAR, LRO_CHAR, RLO_CHAR): Remove macro | ||
| 18 | definitions. | ||
| 19 | (bidi_explicit_dir_char): Lookup character type in bidi_type_table, | ||
| 20 | instead of using explicit *_CHAR codes. | ||
| 21 | (bidi_resolve_explicit, bidi_resolve_weak): Use | ||
| 22 | FETCH_MULTIBYTE_CHAR instead of FETCH_CHAR, as reordering of | ||
| 23 | bidirectional text is supported only in multibyte buffers. | ||
| 24 | (bidi_init_it): Accept additional argument FRAME_WINDOW_P and use | ||
| 25 | it to initialize the frame_window_p member of struct bidi_it. | ||
| 26 | (bidi_cache_iterator_state, bidi_resolve_explicit_1) | ||
| 27 | (bidi_resolve_explicit, bidi_resolve_weak) | ||
| 28 | (bidi_level_of_next_char, bidi_move_to_visually_next): Abort if | ||
| 29 | bidi_it->nchars is non-positive. | ||
| 30 | (bidi_level_of_next_char): Don't try to lookup the cache for the | ||
| 31 | next/previous character if nothing is cached there yet, or if we | ||
| 32 | were just reseat()'ed to a new position. | ||
| 33 | |||
| 34 | * xdisp.c (set_cursor_from_row): Set start and stop points | ||
| 35 | according to the row's direction when priming the loop that looks | ||
| 36 | for the glyph on which to display cursor. | ||
| 37 | (single_display_spec_intangible_p): Function deleted. | ||
| 38 | (display_prop_intangible_p): Reimplement to call | ||
| 39 | handle_display_spec instead of single_display_spec_intangible_p. | ||
| 40 | Accept 3 additional arguments needed by handle_display_spec. This | ||
| 41 | fixes incorrect cursor motion across display property with complex | ||
| 42 | values: lists, `(when COND...)' forms, etc. | ||
| 43 | (single_display_spec_string_p): Support property values that are | ||
| 44 | lists with the argument STRING its top-level element. | ||
| 45 | (display_prop_string_p): Fix the condition for processing a | ||
| 46 | property that is a list to be consistent with handle_display_spec. | ||
| 47 | (handle_display_spec): New function, refactored from the | ||
| 48 | last portion of handle_display_prop. | ||
| 49 | (compute_display_string_pos): Accept additional argument | ||
| 50 | FRAME_WINDOW_P. Call handle_display_spec to determine whether the | ||
| 51 | value of a `display' property is a "replacing spec". | ||
| 52 | (handle_single_display_spec): Accept 2 additional arguments BUFPOS | ||
| 53 | and FRAME_WINDOW_P. If IT is NULL, don't set up the iterator from | ||
| 54 | the display property, but just return a value indicating whether | ||
| 55 | the display property will replace the characters it covers. | ||
| 56 | (Fcurrent_bidi_paragraph_direction): Initialize the nchars and | ||
| 57 | frame_window_p members of struct bidi_it. | ||
| 58 | (compute_display_string_pos, compute_display_string_end): New | ||
| 59 | functions. | ||
| 60 | (push_it): Accept second argument POSITION, where pop_it should | ||
| 61 | jump to continue iteration. | ||
| 62 | (reseat_1): Initialize bidi_it.disp_pos. | ||
| 63 | |||
| 64 | * keyboard.c (adjust_point_for_property): Adjust the call to | ||
| 65 | display_prop_intangible_p to its new signature. | ||
| 66 | |||
| 67 | * dispextern.h (struct bidi_it): New member frame_window_p. | ||
| 68 | (bidi_init_it): Update prototypes. | ||
| 69 | (display_prop_intangible_p): Update prototype. | ||
| 70 | (compute_display_string_pos, compute_display_string_end): Declare | ||
| 71 | prototypes. | ||
| 72 | (struct bidi_it): New members nchars and disp_pos. ch_len is now | ||
| 73 | EMACS_INT. | ||
| 74 | |||
| 1 | 2011-06-02 Paul Eggert <eggert@cs.ucla.edu> | 75 | 2011-06-02 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 76 | ||
| 3 | Malloc failure behavior now depends on size of allocation. | 77 | Malloc failure behavior now depends on size of allocation. |