diff options
| author | Eli Zaretskii | 2009-12-31 16:09:28 -0500 |
|---|---|---|
| committer | Eli Zaretskii | 2009-12-31 16:09:28 -0500 |
| commit | 90fcfd71cf705476cf64f7314a57eea8ac9bc8db (patch) | |
| tree | 7d1d9fc759b527be6fad0a343559bc356db51b44 /src/dispnew.c | |
| parent | a88bbf05709b0ac38669479a80465f7334fa62b2 (diff) | |
| download | emacs-90fcfd71cf705476cf64f7314a57eea8ac9bc8db.tar.gz emacs-90fcfd71cf705476cf64f7314a57eea8ac9bc8db.zip | |
Retrospective commit from 2009-08-12.
An (unsuccessful) attempt to solve the issue with row->start and row->end.
xdisp.c (set_iterator_to_next, reseat, reseat_1)
(reseat_at_next_visible_line_start): Accept additional argument
force_logical_p; all callers changed. If force_logical_p is
non-zero, force iteration in buffer's logical order even in bidi
buffers.
dispnew.c (direct_output_for_insert): Call set_iterator_to_next
with additional argument zero.
dispextern.h (set_iterator_to_next): Now accepts an additional
argument.
Diffstat (limited to 'src/dispnew.c')
| -rw-r--r-- | src/dispnew.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/dispnew.c b/src/dispnew.c index d8cab59dbe9..d74462d31b8 100644 --- a/src/dispnew.c +++ b/src/dispnew.c | |||
| @@ -1760,6 +1760,8 @@ check_matrix_invariants (w) | |||
| 1760 | 1760 | ||
| 1761 | /* Check that end position of `row' is equal to start position | 1761 | /* Check that end position of `row' is equal to start position |
| 1762 | of next row. */ | 1762 | of next row. */ |
| 1763 | /* WARNING: This assumption is blatantly incorrect when we are | ||
| 1764 | reordering bdirectional text for display!! */ | ||
| 1763 | if (next->enabled_p && MATRIX_ROW_DISPLAYS_TEXT_P (next)) | 1765 | if (next->enabled_p && MATRIX_ROW_DISPLAYS_TEXT_P (next)) |
| 1764 | { | 1766 | { |
| 1765 | xassert (MATRIX_ROW_END_CHARPOS (row) | 1767 | xassert (MATRIX_ROW_END_CHARPOS (row) |
| @@ -3500,6 +3502,8 @@ direct_output_for_insert (g) | |||
| 3500 | || !display_completed | 3502 | || !display_completed |
| 3501 | /* Give up if buffer appears in two places. */ | 3503 | /* Give up if buffer appears in two places. */ |
| 3502 | || buffer_shared > 1 | 3504 | || buffer_shared > 1 |
| 3505 | /* Give up if we need to reorder bidirectional text. */ | ||
| 3506 | || !NILP (current_buffer->bidi_display_reordering) | ||
| 3503 | /* Give up if currently displaying a message instead of the | 3507 | /* Give up if currently displaying a message instead of the |
| 3504 | minibuffer contents. */ | 3508 | minibuffer contents. */ |
| 3505 | || (EQ (selected_window, minibuf_window) | 3509 | || (EQ (selected_window, minibuf_window) |
| @@ -3608,7 +3612,7 @@ direct_output_for_insert (g) | |||
| 3608 | 3612 | ||
| 3609 | delta += 1; | 3613 | delta += 1; |
| 3610 | delta_bytes += it.len; | 3614 | delta_bytes += it.len; |
| 3611 | set_iterator_to_next (&it, 1); | 3615 | set_iterator_to_next (&it, 1, 0); |
| 3612 | } | 3616 | } |
| 3613 | 3617 | ||
| 3614 | /* Give up if we hit the right edge of the window. We would have | 3618 | /* Give up if we hit the right edge of the window. We would have |
| @@ -3626,7 +3630,7 @@ direct_output_for_insert (g) | |||
| 3626 | { | 3630 | { |
| 3627 | if (it2.c == '\t') | 3631 | if (it2.c == '\t') |
| 3628 | return 0; | 3632 | return 0; |
| 3629 | set_iterator_to_next (&it2, 1); | 3633 | set_iterator_to_next (&it2, 1, 0); |
| 3630 | } | 3634 | } |
| 3631 | 3635 | ||
| 3632 | /* Number of new glyphs produced. */ | 3636 | /* Number of new glyphs produced. */ |