Mercurial > emacs
changeset 96522:77765b604664
(try_window_id): Give up if word-wrapping is on.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sat, 05 Jul 2008 18:22:56 +0000 |
parents | 90bd26fe8c92 |
children | 090433f48c5f |
files | src/xdisp.c |
diffstat | 1 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Sat Jul 05 18:22:46 2008 +0000 +++ b/src/xdisp.c Sat Jul 05 18:22:56 2008 +0000 @@ -14534,9 +14534,10 @@ int yb = window_text_bottom_y (w); /* Find the last row displaying unchanged text. */ - row = MATRIX_FIRST_TEXT_ROW (w->current_matrix); - while (MATRIX_ROW_DISPLAYS_TEXT_P (row) - && MATRIX_ROW_START_CHARPOS (row) < first_changed_pos) + for (row = MATRIX_FIRST_TEXT_ROW (w->current_matrix); + MATRIX_ROW_DISPLAYS_TEXT_P (row) + && MATRIX_ROW_START_CHARPOS (row) < first_changed_pos; + ++row) { if (/* If row ends before first_changed_pos, it is unchanged, except in some case. */ @@ -14553,10 +14554,8 @@ row_found = row; /* Stop if last visible row. */ - if (MATRIX_ROW_BOTTOM_Y (row) >= yb) + if (MATRIX_ROW_BOTTOM_Y (row) >= yb) break; - - ++row; } return row_found; @@ -14872,6 +14871,12 @@ if (overlay_arrows_changed_p ()) GIVE_UP (12); + /* When word-wrap is on, adding a space to the first word of a + wrapped line can change the wrap position, altering the line + above it. It might be worthwhile to handle this more + intelligently, but for now just redisplay from scratch. */ + if (!NILP (XBUFFER (w->buffer)->word_wrap)) + GIVE_UP (21); /* Make sure beg_unchanged and end_unchanged are up to date. Do it only if buffer has really changed. The reason is that the gap is