diff options
| author | Eli Zaretskii | 2010-03-30 05:02:07 -0400 |
|---|---|---|
| committer | Eli Zaretskii | 2010-03-30 05:02:07 -0400 |
| commit | 4d6ea387e7527aa73d7664e98bfd2e2c24b1628d (patch) | |
| tree | b9d840f26f6c43c191d33b3263cc502753a780d0 /src | |
| parent | f4b6ba46b857e140c6482c0542c70fc989b1fe85 (diff) | |
| download | emacs-4d6ea387e7527aa73d7664e98bfd2e2c24b1628d.tar.gz emacs-4d6ea387e7527aa73d7664e98bfd2e2c24b1628d.zip | |
Removed src/ChangeLog.bidi from bzr.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog.bidi | 582 |
1 files changed, 0 insertions, 582 deletions
diff --git a/src/ChangeLog.bidi b/src/ChangeLog.bidi deleted file mode 100644 index 33982c21450..00000000000 --- a/src/ChangeLog.bidi +++ /dev/null | |||
| @@ -1,582 +0,0 @@ | |||
| 1 | 2010-03-29 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * doc/emacs/mule.texi (International): Mention support of | ||
| 4 | bidirectional editing. | ||
| 5 | (Bidirectional Editing): New section. | ||
| 6 | |||
| 7 | 2010-03-28 Eli Zaretskii <eliz@gnu.org> | ||
| 8 | |||
| 9 | * etc/HELLO: Reorder Arabic and Hebrew into logical order, and | ||
| 10 | insert RLM before the opening paren, to make the display more | ||
| 11 | reasonable. Add setting for bidi-display-reordering in the local | ||
| 12 | variables section. | ||
| 13 | |||
| 14 | * lisp/files.el: Make bidi-display-reordering safe variable for | ||
| 15 | boolean values. | ||
| 16 | |||
| 17 | * xdisp (append_glyph): If the glyph row is reversed, prepend the | ||
| 18 | glyph rather than appending it. | ||
| 19 | |||
| 20 | * makefile.w32-in (OBJ1): Add $(BLD)/bidi.$(O). | ||
| 21 | ($(BLD)/bidi.$(O)): New target. | ||
| 22 | |||
| 23 | * bidi.c (bidi_get_next_char_visually): Improve commentary. | ||
| 24 | |||
| 25 | * dispextern.h (PRODUCE_GLYPHS): Set the reversed_p flag in the | ||
| 26 | iterator's glyph_row here. | ||
| 27 | |||
| 28 | * xdisp.c (handle_invisible_prop, set_iterator_to_next) | ||
| 29 | (next_element_from_buffer): Don't set the reversed_p flag in the | ||
| 30 | iterator's glyph_row here. | ||
| 31 | |||
| 32 | 2010-03-20 Eli Zaretskii <eliz@gnu.org> | ||
| 33 | |||
| 34 | * xdisp.c (set_cursor_from_row): Don't miss a candidate row whose | ||
| 35 | glyph->charpos is an exact match for point. | ||
| 36 | (try_cursor_movement): Don't give up if rows are bidi-reordered | ||
| 37 | and point moved backwards. Instead, back up to the row that is | ||
| 38 | not a continuation line. | ||
| 39 | |||
| 40 | 2010-03-13 Eli Zaretskii <eliz@gnu.org> | ||
| 41 | |||
| 42 | * xdisp.c (try_cursor_movement): Give up if rows are | ||
| 43 | bidi-reordered and point moved backwards. Examine all the | ||
| 44 | candidate rows that occlude point, to return the best match. | ||
| 45 | (row_containing_pos): With bidi-reordered rows, don't return the | ||
| 46 | first one that occludes point; rather, examine all candidates and | ||
| 47 | return the best match, with he glyph that's closest to point. | ||
| 48 | (display_line): When looking for min position, don't consider | ||
| 49 | negative values of glyph->charpos. (Fixes a crash with "C-x 3" at | ||
| 50 | ZV.) Record the position after EOL in it->eol_pos, and use it to | ||
| 51 | set end_pos of the last row produced for a continued line. Fix | ||
| 52 | the condition for passing candidate rows to set_cursor_from_row: | ||
| 53 | check ends_at_zv_p flag of the best candidate row, not of the | ||
| 54 | current row. | ||
| 55 | |||
| 56 | * dispextern.h (struct it): New member eol_pos. | ||
| 57 | |||
| 58 | * .gdbinit (prowlims): Display the ends_at_zv_p flag. | ||
| 59 | |||
| 60 | 2010-03-06 Eli Zaretskii <eliz@gnu.org> | ||
| 61 | |||
| 62 | * .gdbinit (prowlims, pmtxrows): New commands. | ||
| 63 | |||
| 64 | * xdisp.c (display_line): Special-case the calculation of row->end | ||
| 65 | in rows that end at ZV, to avoid abort in CHAR_TO_BYTE. Handle | ||
| 66 | empty lines correctly when calculating row's max and min pos. | ||
| 67 | Display cursor at the first glyph row that has its ends_at_zv_p | ||
| 68 | flag set. | ||
| 69 | |||
| 70 | 2010-02-20 Eli Zaretskii <eliz@gnu.org> | ||
| 71 | |||
| 72 | * xdisp.c (set_cursor_from_row): Compare candidate cursor | ||
| 73 | positions only in rows whose buffer positions occlude point. | ||
| 74 | (display_line): Fix computation of row->start and row->end for | ||
| 75 | empty lines. | ||
| 76 | |||
| 77 | * dispnew.c (row_equal_p): Compare the reversed_p attributes as | ||
| 78 | well. | ||
| 79 | |||
| 80 | 2010-02-13 Eli Zaretskii <eliz@gnu.org> | ||
| 81 | |||
| 82 | * xdisp.c (set_cursor_from_row): Don't overwrite cursor position | ||
| 83 | if it is not a better candidate than what we already have. | ||
| 84 | (display_line): Keep calling set_cursor_from_row for | ||
| 85 | bidi-reordered rows even if we already have a possible candidate | ||
| 86 | for cursor position. Undo the row_end setting throughout the | ||
| 87 | code, and instead do it after all the row's glyphs have been | ||
| 88 | produced, by looping over the glyphs. | ||
| 89 | |||
| 90 | 2010-02-06 Eli Zaretskii <eliz@gnu.org> | ||
| 91 | |||
| 92 | Start working on cursor movement in continuation lines. | ||
| 93 | * xdisp.c (move_it_in_display_line_to): New variables prev_method | ||
| 94 | and prev_pos. Compare for strict equality in | ||
| 95 | BUFFER_POS_REACHED_P. | ||
| 96 | |||
| 97 | 2010-01-30 Eli Zaretskii <eliz@gnu.org> | ||
| 98 | |||
| 99 | Fix fallout from changes to managing glyph row reversed_p flag. | ||
| 100 | * xdisp.c (init_iterator): Initialize it->glyph_row->reversed_p | ||
| 101 | flag. | ||
| 102 | |||
| 103 | 2010-01-25 Eli Zaretskii <eliz@gnu.org> | ||
| 104 | |||
| 105 | Clean up the mess with setting the glyph row reversed_p flag. | ||
| 106 | * dispnew.c (prepare_desired_row): Preserve the reversed_p flag. | ||
| 107 | |||
| 108 | * bidi.c (bidi_cache_find): Use bidi_copy_it instead of copying | ||
| 109 | the whole struct (which includes uninitialized parts). | ||
| 110 | (bidi_init_it): Don't initialize bidi_it->paragraph_dir. | ||
| 111 | |||
| 112 | * xdisp.c (display_line): Remove misplaced setting of | ||
| 113 | row->reversed_p flags. Copy the reversed_p flag to the next glyph | ||
| 114 | row. | ||
| 115 | (next_element_from_buffer): Check bidi_it.paragraph_dir rather | ||
| 116 | than level_stack[0].level. Reset the reversed_p flag for non-R2L | ||
| 117 | paragraphs. | ||
| 118 | |||
| 119 | Fix display of invisible text. | ||
| 120 | * xdisp.c (handle_invisible_prop): If we are `reseat'ed, init the | ||
| 121 | paragraph direction and set the `reversed_p' flag in the IT's | ||
| 122 | glyph row. Fix exit conditions of the loop that skips invisible | ||
| 123 | text. Update IT->prev_stop after skipping invisible text. Check | ||
| 124 | for additional overlays at IT->stop_charpos, not at start_pos. | ||
| 125 | |||
| 126 | 2010-01-16 Eli Zaretskii <eliz@gnu.org> | ||
| 127 | |||
| 128 | * xdisp.c (handle_invisible_prop): Under bidi iteration, skip | ||
| 129 | invisible text using bidi_get_next_char_visually. | ||
| 130 | (handle_stop_backwards): Restore it->bidi_p, it->current and | ||
| 131 | it->position before calling handle_stop. | ||
| 132 | (next_element_from_buffer): Fix formatting. | ||
| 133 | |||
| 134 | 2010-01-09 Eli Zaretskii <eliz@gnu.org> | ||
| 135 | |||
| 136 | * xdisp.c (handle_stop_backwards): Add a prototype. | ||
| 137 | (reseat): call handle_stop_backwards to recompute prev_stop and | ||
| 138 | base_level_stop for the new position. Solves the crash when | ||
| 139 | scrolling backwards. | ||
| 140 | |||
| 141 | 2010-01-02 Eli Zaretskii <eliz@gnu.org> | ||
| 142 | |||
| 143 | * .gdbinit (pitx): Display some bidi information about the | ||
| 144 | iterator. | ||
| 145 | |||
| 146 | * dispextern.h (BIDI_AT_BASE_LEVEL): Enclose definition in | ||
| 147 | parentheses. | ||
| 148 | |||
| 149 | * xdisp.c (handle_stop_backwards): Save and restore it->current | ||
| 150 | and it->position, instead of expecting the caller to do that. | ||
| 151 | (next_element_from_buffer): When moving across stop_charpos, | ||
| 152 | record it in prev_stop. When IT_CHARPOS backs up, call | ||
| 153 | handle_stop_backwards only if above the base embedding level. | ||
| 154 | This solves the crash while displaying etc/HELLO in bidi mode. | ||
| 155 | |||
| 156 | 2009-12-26 Eli Zaretskii <eliz@gnu.org> | ||
| 157 | |||
| 158 | * xdisp.c (handle_stop_backwards): Call compute_stop_pos in the | ||
| 159 | loop, instead of calling handle_stop. Call handle_stop only once, | ||
| 160 | after the loop. | ||
| 161 | (next_element_from_buffer): Don't call handle_stop_backwards if at | ||
| 162 | stop position. If base_level_stop is zero, set it to 1. | ||
| 163 | |||
| 164 | * term.c (append_glyph): Fill resolved_level and bidi_type slots | ||
| 165 | of struct glyph for unidirectional display. | ||
| 166 | |||
| 167 | * xdisp.c (set_cursor_from_row): Handle zero-width characters. | ||
| 168 | |||
| 169 | * bidi.c (bidi_mirror_char): More efficient code (suggested by | ||
| 170 | Ehud Karni <ehud@unix.mvs.co.il>). Don't even try to mirror | ||
| 171 | non-ASCII characters. | ||
| 172 | |||
| 173 | 2009-12-19 Eli Zaretskii <eliz@gnu.org> | ||
| 174 | |||
| 175 | * buffer.c (Fbuffer_swap_text): Swap the values of | ||
| 176 | bidi_display_reordering and bidi_paragraph_direction. | ||
| 177 | |||
| 178 | * bidi.c (bidi_resolve_weak): Fix nesting of conditions for Wn | ||
| 179 | processing. Move W3 after W1 and W2. Simplify W4 because it is | ||
| 180 | now always after W1. | ||
| 181 | |||
| 182 | * .gdbinit (pbiditype): New command. | ||
| 183 | (pgx): Use it to display bidi level and type of the glyph. | ||
| 184 | |||
| 185 | 2009-12-12 Eli Zaretskii <eliz@gnu.org> | ||
| 186 | |||
| 187 | * dispextern.h (struct it): New members prev_stop and | ||
| 188 | base_level_stop. | ||
| 189 | |||
| 190 | * xdisp.c (handle_stop_backwards): New function. | ||
| 191 | (next_element_from_buffer): Handle the situation where we | ||
| 192 | overstepped stop_charpos due to non-linearity of the bidi | ||
| 193 | iteration. Likewise for when we back up beyond the previous | ||
| 194 | stop_charpos. | ||
| 195 | (reseat_1, pop_it, push_it): Set prev_stop and base_level_stop. | ||
| 196 | |||
| 197 | * dispextern.h (BIDI_AT_BASE_LEVEL): New macro. | ||
| 198 | |||
| 199 | * bidi.c (bidi_copy_it): Fix compiler warning due to cast of a | ||
| 200 | pointer to `int'. Don't preserve the first_elt member, as it is | ||
| 201 | no longer copied, because its position in the structure was | ||
| 202 | changed, see below. | ||
| 203 | |||
| 204 | * dispextern.h (struct bidi_it): Move first_elt, new_paragraph, | ||
| 205 | separator_limit, and paragraph_dir to after bidi_stack. Add a | ||
| 206 | note that anything beyond the level stack is not preserved when | ||
| 207 | the bidi iterator state is copied/saved. | ||
| 208 | |||
| 209 | 2009-11-21 Eli Zaretskii <eliz@gnu.org> | ||
| 210 | |||
| 211 | * xdisp.c (set_cursor_from_row): Fix cursor positioning on empty | ||
| 212 | lines when integer values of `cursor' property is used on display | ||
| 213 | strings. | ||
| 214 | |||
| 215 | 2009-11-14 Eli Zaretskii <eliz@gnu.org> | ||
| 216 | |||
| 217 | * xdisp.c (init_iterator, text_outside_line_unchanged_p) | ||
| 218 | (try_window_id): Rename paragraph_direction to | ||
| 219 | bidi_paragraph_direction. | ||
| 220 | (set_cursor_from_row): Handle integer values of `cursor' property | ||
| 221 | on display strings. | ||
| 222 | |||
| 223 | * buffer.c (init_buffer_once, syms_of_buffer): Rename | ||
| 224 | paragraph_direction to bidi_paragraph_direction. | ||
| 225 | |||
| 226 | * buffer.h (struct buffer): Rename paragraph_direction to | ||
| 227 | bidi_paragraph_direction. | ||
| 228 | |||
| 229 | 2009-11-07 Eli Zaretskii <eliz@gnu.org> | ||
| 230 | |||
| 231 | * bidi.c (bidi_paragraph_init): Don't overstep end of buffer. | ||
| 232 | Treat end of buffer as a NEUTRAL_B character. | ||
| 233 | (bidi_resolve_explicit): Don't special-case ZV when bidi_it->type | ||
| 234 | is NEUTRAL_B, since bidi_set_paragraph_end no longer sets the | ||
| 235 | new_paragraph flag. | ||
| 236 | |||
| 237 | 2009-10-31 Eli Zaretskii <eliz@gnu.org> | ||
| 238 | |||
| 239 | * xdisp.c (display_line): Always extend reversed_p rows to the end | ||
| 240 | of line. | ||
| 241 | (set_cursor_from_row): In R2L rows that don't display text, put | ||
| 242 | the cursor on the rightmost glyph. | ||
| 243 | |||
| 244 | 2009-10-24 Eli Zaretskii <eliz@gnu.org> | ||
| 245 | |||
| 246 | * xdisp.c (set_cursor_from_row): Fix off-by-one error when | ||
| 247 | skipping over non-character glyphs at end of a reversed row. | ||
| 248 | |||
| 249 | * dispextern.h (struct glyph): The `resolved_level' member needs | ||
| 250 | only 5 bits, not 6. The `bidi_type' member needs only 3 bits. | ||
| 251 | (bidi_type_t): Rearrange so that types that can appear in the | ||
| 252 | resolved type are at the beginning and have values less than 8. | ||
| 253 | |||
| 254 | 2009-10-23 Eli Zaretskii <eliz@gnu.org> | ||
| 255 | |||
| 256 | * bidi.c: Include setjmp.h. | ||
| 257 | |||
| 258 | 2009-10-17 Eli Zaretskii <eliz@gnu.org> | ||
| 259 | |||
| 260 | * dispextern.h (struct glyph): New members resolved_level and | ||
| 261 | bidi_type. | ||
| 262 | |||
| 263 | * xdisp.c (append_glyph, append_composite_glyph) | ||
| 264 | (produce_image_glyph, append_stretch_glyph): Set them. | ||
| 265 | |||
| 266 | * term.c (append_glyph): Ditto. | ||
| 267 | |||
| 268 | * xdisp.c (display_line, next_element_from_buffer): Set the glyph | ||
| 269 | row's reversed_p flag if the paragraph base direction is odd. | ||
| 270 | (extend_face_to_end_of_line): Don't reverse the glyphs here. | ||
| 271 | |||
| 272 | * term.c (append_glyph): Reverse glyphs here. | ||
| 273 | |||
| 274 | * bidi.c (bidi_get_next_char_visually): Don't exit early when at | ||
| 275 | ZV. | ||
| 276 | (bidi_paragraph_init): Don't step over a newline if at BEGV. | ||
| 277 | |||
| 278 | 2009-10-16 Eli Zaretskii <eliz@gnu.org> | ||
| 279 | |||
| 280 | * bidi.c (bidi_paragraph_init): Handle empty buffers. | ||
| 281 | |||
| 282 | 2009-10-10 Eli Zaretskii <eliz@gnu.org> | ||
| 283 | |||
| 284 | * xdisp.c (set_cursor_from_row): Skip over glyphs near end of row | ||
| 285 | with integer OBJECT even if their CHARPOS is zero. | ||
| 286 | |||
| 287 | * bidi.c (bidi_cache_iterator_state): Don't cache NEW_PARAGRAPH. | ||
| 288 | Abort if someone tries to add a cached state whose position is not | ||
| 289 | the immediate successor to that of the last cached state. | ||
| 290 | (bidi_paragraph_init): Don't bail out too early after a reseat. | ||
| 291 | |||
| 292 | 2009-10-09 Eli Zaretskii <eliz@gnu.org> | ||
| 293 | |||
| 294 | * xdisp.c (text_outside_line_unchanged_p, try_window_id): Disable | ||
| 295 | optimizations if we are reordering bidirectional text and the | ||
| 296 | paragraph direction can be affected by the change. | ||
| 297 | |||
| 298 | 2009-10-08 Eli Zaretskii <eliz@gnu.org> | ||
| 299 | |||
| 300 | * xdisp.c (string_buffer_position_lim): New function. | ||
| 301 | (string_buffer_position): Most of code moved to | ||
| 302 | string_buffer_position_lim. Last argument and return value are | ||
| 303 | now EMACS_INT; all callers changed. | ||
| 304 | (set_cursor_from_row): Rewritten to support bidirectional text and | ||
| 305 | reversed glyph rows. | ||
| 306 | |||
| 307 | dispextern.h <string_buffer_position>: Update prototype. | ||
| 308 | |||
| 309 | 2009-10-07 Eli Zaretskii <eliz@gnu.org> | ||
| 310 | |||
| 311 | * bidi.c (bidi_paragraph_init): Fix initialization of POS. | ||
| 312 | |||
| 313 | * dispextern.h (struct glyph_row): New member reversed_p. | ||
| 314 | |||
| 315 | 2009-10-06 Eli Zaretskii <eliz@gnu.org> | ||
| 316 | |||
| 317 | * buffer.c (syms_of_buffer): Remove DEFVAR_LISP_NOPRO for | ||
| 318 | default-direction-reversed, default-bidi-display-reordering, and | ||
| 319 | default-paragraph-direction. | ||
| 320 | |||
| 321 | 2009-10-05 Eli Zaretskii <eliz@gnu.org> | ||
| 322 | |||
| 323 | * buffer.h (struct buffer): New member paragraph_direction. | ||
| 324 | * buffer.c (init_buffer_once): Initialize it. | ||
| 325 | (syms_of_buffer): Declare Lisp variables | ||
| 326 | default-paragraph-direction and paragraph-direction. | ||
| 327 | |||
| 328 | * dispextern.h (struct it): New member paragraph_embedding. | ||
| 329 | * xdisp.c (init_iterator): Initialize it from the buffer's value | ||
| 330 | of paragraph-direction. | ||
| 331 | <Qright_to_left, Qleft_to_right>: New variables. | ||
| 332 | (syms_of_xdisp): Initialize and staticpro them. | ||
| 333 | (set_iterator_to_next, next_element_from_buffer): Use the value of | ||
| 334 | paragraph_embedding to determine the paragraph direction. | ||
| 335 | |||
| 336 | * bidi.c (bidi_line_init): Fix second argument to | ||
| 337 | bidi_set_sor_type. | ||
| 338 | (bidi_init_it): Initialize paragraph_dir to NEUTRAL_DIR. | ||
| 339 | (bidi_get_next_char_visually): Record the last character of the | ||
| 340 | separator in separator_limit, not the character after that. | ||
| 341 | (bidi_find_paragraph_start): Accept character and byte positions | ||
| 342 | instead of the whole iterator stricture. All callers changed. | ||
| 343 | |||
| 344 | 2009-10-04 Eli Zaretskii <eliz@gnu.org> | ||
| 345 | |||
| 346 | * bidi.c (bidi_at_paragraph_end): Check for paragraph-start if | ||
| 347 | paragraph-separate failed to match. Return the length of the | ||
| 348 | matched separator. | ||
| 349 | (bidi_line_init): New function. | ||
| 350 | (bidi_paragraph_init): Use bidi_line_init. Do nothing if in the | ||
| 351 | middle of a paragraph-separate sequence. Don't override existing | ||
| 352 | paragraph direction if no strong characters found in this | ||
| 353 | paragraph. Set separator_limit according to what | ||
| 354 | bidi_at_paragraph_end returns. Reset new_paragraph flag when a | ||
| 355 | new paragraph is found. | ||
| 356 | (bidi_init_it): Reset separator_limit. | ||
| 357 | |||
| 358 | * dispextern.h (struct bidi_it): New member separator_limit. | ||
| 359 | |||
| 360 | * bidi.c (bidi_find_paragraph_start): Return the byte position of | ||
| 361 | the paragraph beginning. | ||
| 362 | |||
| 363 | * xdisp.c (set_iterator_to_next): Call bidi_paragraph_init if the | ||
| 364 | new_paragraph flag is set in the bidi iterator. | ||
| 365 | |||
| 366 | * bidi.c (bidi_at_paragraph_end, bidi_find_paragraph_start): Use | ||
| 367 | the buffer-local value of paragraph-start and paragraph-separate. | ||
| 368 | |||
| 369 | 2009-10-03 Eli Zaretskii <eliz@gnu.org> | ||
| 370 | |||
| 371 | * bidi.c (bidi_set_paragraph_end): Don't set the new_paragraph | ||
| 372 | flag in the iterator. | ||
| 373 | (bidi_init_it): Set the new_paragraph flag. | ||
| 374 | (bidi_at_paragraph_end): Arguments are now character and byte | ||
| 375 | position of the next character. All callers changed. | ||
| 376 | (bidi_resolve_explicit): Don't call bidi_at_paragraph_end, and | ||
| 377 | don't behave as if at paragraph end if it returns true. | ||
| 378 | (bidi_get_next_char_visually): Don't call bidi_paragraph_init if | ||
| 379 | new_paragraph flags is set. Set new_paragraph flag when at end of | ||
| 380 | a paragraph. | ||
| 381 | <fallback_paragraph_start_re, fallback_paragraph_separate_re>: New | ||
| 382 | variables. | ||
| 383 | <Qparagraph_start, Qparagraph_separate>: New variables. | ||
| 384 | (bidi_initialize): Initialize and staticpro them. | ||
| 385 | |||
| 386 | * dispextern.h <struct bidi_it>: New element paragraph_dir. Make | ||
| 387 | positional elements EMACS_INT. | ||
| 388 | |||
| 389 | * bidi.c <bidi_overriding_paragraph_direction>: Delete. | ||
| 390 | |||
| 391 | 2009-09-28 Eli Zaretskii <eliz@gnu.org> | ||
| 392 | |||
| 393 | * bidi.c (bidi_init_it): Initialize charpos, bytepos, and | ||
| 394 | first_elt before calling bidi_set_paragraph_end. | ||
| 395 | (bidi_resolve_explicit): Don't call bidi_set_paragraph_end at | ||
| 396 | EOB. | ||
| 397 | (bidi_at_paragraph_end): Don't set new_paragraph flag at EOB. | ||
| 398 | (bidi_get_type): Accept an additional argument OVERRIDE, per UAX#9 | ||
| 399 | "Explicit Overrides". All callers changed. | ||
| 400 | |||
| 401 | 2009-09-27 Eli Zaretskii <eliz@gnu.org> | ||
| 402 | |||
| 403 | * xdisp.c (next_element_from_buffer): If called not at line | ||
| 404 | beginning, start bidi iteration from line beginning. | ||
| 405 | |||
| 406 | * bidi.c (bidi_paragraph_init): Use | ||
| 407 | bidi_overriding_paragraph_direction instead of a literal zero. | ||
| 408 | (bidi_initialize): Fix some character types, per Unicode 5.x. | ||
| 409 | (bidi_get_type): Abort if called with invalid character code. | ||
| 410 | |||
| 411 | * dispextern.h: Add prototype of bidi_mirror_char. | ||
| 412 | |||
| 413 | * xdisp.c (get_next_display_element): Mirror characters whose | ||
| 414 | resolved type is STRONG_R. | ||
| 415 | |||
| 416 | 2009-09-26 Eli Zaretskii <eliz@gnu.org> | ||
| 417 | |||
| 418 | * bidi.c (bidi_paragraph_init): Don't set bidi_it->ch_len. Abort | ||
| 419 | if called not at beginning of a new paragraph. | ||
| 420 | (bidi_get_next_char_visually): Prepare and use a sentinel iterator | ||
| 421 | state when first_elt flag is set. | ||
| 422 | |||
| 423 | * dispextern.h (struct bidi_it): New struct member first_elt. | ||
| 424 | |||
| 425 | * bidi.c (bidi_init_it): Initialize bidi_it->first_elt. | ||
| 426 | (bidi_copy_it): Don't copy the first_elt flag. | ||
| 427 | |||
| 428 | * xdisp.c (reseat_1): Initialize bidi_it.first_elt. Move bidi | ||
| 429 | scan start code from here... | ||
| 430 | (next_element_from_buffer): ...to here. Use bidi_it.first_elt | ||
| 431 | flag. | ||
| 432 | |||
| 433 | 2009-09-20 Eli Zaretskii <eliz@gnu.org> | ||
| 434 | |||
| 435 | * xdisp.c (reseat_1): Handle position < BEGV. | ||
| 436 | |||
| 437 | * bidi.c (bidi_paragraph_init): Set bidi_it->ch_len. Handle ZV. | ||
| 438 | (bidi_init_it): Don't initialize bidi_it->ch_len. | ||
| 439 | (bidi_resolve_explicit_1): Abort if bidi_it->ch_len was not | ||
| 440 | initialized. | ||
| 441 | (bidi_at_paragraph_end, bidi_resolve_explicit_1) | ||
| 442 | (bidi_resolve_weak, bidi_level_of_next_char): Handle bytepos at | ||
| 443 | ZV_BYTE. | ||
| 444 | (bidi_resolve_explicit_1): Handle position < BEGV. | ||
| 445 | |||
| 446 | 2009-09-19 Eli Zaretskii <eliz@gnu.org> | ||
| 447 | |||
| 448 | * xdisp.c (init_iterator): Call bidi_init_it. Set | ||
| 449 | bidi_it->bytepos if buffer position specified. | ||
| 450 | (reseat_1): Don't call bidi_init_it. Call bidi_paragraph_init | ||
| 451 | instead. Move back to preceding character before the call to | ||
| 452 | bidi_get_next_char_visually. | ||
| 453 | |||
| 454 | * bidi.c: Remove all STANDALONE parts. | ||
| 455 | (bidi_init_it): Init bidi_it->charpos and bidi_it->bytepos to -1. | ||
| 456 | Don't call bidi_paragraph_init. Change arguments. | ||
| 457 | (bidi_paragraph_init): Remove code for negative pos. | ||
| 458 | |||
| 459 | * dispextern.h <bidi_it>: Rename orig_type to type_after_w1 and | ||
| 460 | pristine_type to orig_type. | ||
| 461 | |||
| 462 | 2009-09-12 Eli Zaretskii <eliz@gnu.org> | ||
| 463 | |||
| 464 | * dispnew.c (direct_output_for_insert): Give up if we are | ||
| 465 | reordering bidirectional text. | ||
| 466 | |||
| 467 | * dispextern.h (IT_STACK_SIZE): Enlarge to 5. | ||
| 468 | |||
| 469 | * xdisp.c (display_line): Set row->end and it->start for the next | ||
| 470 | row to the next character in logical order. If we are reordering | ||
| 471 | bidi text, push and pop the iterator before and after momentarily | ||
| 472 | iterating in logical order. | ||
| 473 | |||
| 474 | 2009-09-11 Eli Zaretskii <eliz@gnu.org> | ||
| 475 | |||
| 476 | Note: The following changes were undone on 2009-09-12. | ||
| 477 | |||
| 478 | * xdisp.c (set_iterator_to_next, reseat, reseat_1) | ||
| 479 | (reseat_at_next_visible_line_start): Accept additional argument | ||
| 480 | force_logical_p; all callers changed. If force_logical_p is | ||
| 481 | non-zero, force iteration in buffer's logical order even in bidi | ||
| 482 | buffers. | ||
| 483 | |||
| 484 | * dispnew.c (direct_output_for_insert): Call set_iterator_to_next | ||
| 485 | with additional argument zero. | ||
| 486 | |||
| 487 | * dispextern.h (set_iterator_to_next): Now accepts an additional | ||
| 488 | argument. | ||
| 489 | |||
| 490 | 2009-08-29 Eli Zaretskii <eliz@gnu.org> | ||
| 491 | |||
| 492 | * xdisp.c (set_cursor_from_row): Don't assume glyph->charpos | ||
| 493 | increments linearly. | ||
| 494 | (try_window_reusing_current_matrix): Don't assume glyph->charpos | ||
| 495 | increments linearly. | ||
| 496 | |||
| 497 | 2009-08-28 Eli Zaretskii <eliz@gnu.org> | ||
| 498 | |||
| 499 | * bidi.c <bidi_overriding_paragraph_direction>: Default to L2R, | ||
| 500 | for now. | ||
| 501 | |||
| 502 | 2009-08-22 Eli Zaretskii <eliz@gnu.org> | ||
| 503 | |||
| 504 | * bidi.c (bidi_initialize): staticpro bidi_char_table. | ||
| 505 | (bidi_check_type): New function. | ||
| 506 | (bidi_cache_iterator_state, bidi_remember_char) | ||
| 507 | (bidi_resolve_explicit_1, bidi_resolve_explicit) | ||
| 508 | (bidi_resolve_weak, bidi_resolve_neutral) | ||
| 509 | (bidi_level_of_next_char): Use it to validate the bidi type | ||
| 510 | assigned to the iterator. | ||
| 511 | |||
| 512 | 2009-08-15 Eli Zaretskii <eliz@gnu.org> | ||
| 513 | |||
| 514 | * bidi.c (bidi_initialize): Fix initialization of bidi_type_table. | ||
| 515 | |||
| 516 | * xdisp.c (set_iterator_to_next): Fix position setting after call | ||
| 517 | to bidi_get_next_char_visually. | ||
| 518 | |||
| 519 | 2005-12-03 Eli Zaretskii <eliz@gnu.org> | ||
| 520 | |||
| 521 | * bidi.c: Include stdio.h unconditionally. Fix and elaborate | ||
| 522 | commentary. Add Copyright blurb. | ||
| 523 | |||
| 524 | 2004-03-08 Kenichi Handa <handa@m17n.org> | ||
| 525 | |||
| 526 | * xdisp.c (reseat_1): Call bidi_init_it with a previous position. | ||
| 527 | |||
| 528 | * bidi.c (bidi_init_it): Set bidi_it->ch_len even if POS > 0. | ||
| 529 | |||
| 530 | 2004-03-04 Kenichi Handa <handa@m17n.org> | ||
| 531 | |||
| 532 | The following changes are to support bidirectional text display. | ||
| 533 | |||
| 534 | * Makefile.in (obj): Include bidi.o. | ||
| 535 | (bidi.o): New target. | ||
| 536 | |||
| 537 | * bidi.c: New file. | ||
| 538 | |||
| 539 | * buffer.h (struct buffer): New member bidi_display_reordering. | ||
| 540 | |||
| 541 | * buffer.c (init_buffer_once): Initialize bidi_display_reordering. | ||
| 542 | (syms_of_buffer): Declarations of Lisp variables | ||
| 543 | default-bidi-display-reordering and bidi-display-reordering. | ||
| 544 | |||
| 545 | * dispextern.h (BIDI_MAXLEVEL): New macro. | ||
| 546 | (bidi_type_t, bidi_dir_t): New types. | ||
| 547 | (bidi_saved_info, bidi_stack, bidi_it): New structs. | ||
| 548 | (struct it): New members bidi_p and bidi_it. | ||
| 549 | (bidi_init_it): Extern it. | ||
| 550 | (bidi_get_next_char_visually): Extern it. | ||
| 551 | |||
| 552 | * dispnew.c (direct_output_forward_char): Give up if we need bidi | ||
| 553 | processing or buffer's direction is right-to-left. | ||
| 554 | |||
| 555 | * xdisp.c (init_iterator): Initialize it->bidi_p. | ||
| 556 | (reseat_1): Cal bidi_init_it and bidi_get_next_char_visually if | ||
| 557 | necessary. | ||
| 558 | (set_iterator_to_next): Cal bidi_get_next_char_visually if | ||
| 559 | necessary. | ||
| 560 | |||
| 561 | |||
| 562 | ;; Local Variables: | ||
| 563 | ;; coding: utf-8 | ||
| 564 | ;; add-log-time-zone-rule: t | ||
| 565 | ;; End: | ||
| 566 | |||
| 567 | Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. | ||
| 568 | |||
| 569 | This file is part of GNU Emacs. | ||
| 570 | |||
| 571 | GNU Emacs is free software: you can redistribute it and/or modify | ||
| 572 | it under the terms of the GNU General Public License as published by | ||
| 573 | the Free Software Foundation, either version 3 of the License, or | ||
| 574 | (at your option) any later version. | ||
| 575 | |||
| 576 | GNU Emacs is distributed in the hope that it will be useful, | ||
| 577 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 578 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 579 | GNU General Public License for more details. | ||
| 580 | |||
| 581 | You should have received a copy of the GNU General Public License | ||
| 582 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||