From 367d949f19aed79fd602be87ed492cb3ef944030 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Fri, 15 Jul 2005 11:32:15 +0000 Subject: [PATCH] Fix redisplay loop in last change. (IT_POS_VALID_AFTER_MOVE_P): New macro. (move_it_vertically_backward, move_it_by_lines): Use it. --- src/xdisp.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index 4bc68ce58fc..b8f2a4cb8bb 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -5873,6 +5873,15 @@ next_element_from_composition (it) Moving an iterator without producing glyphs ***********************************************************************/ +/* Check if iterator is at a position corresponding to a valid buffer + position after some move_it_ call. */ + +#define IT_POS_VALID_AFTER_MOVE_P(it) \ + ((it)->method == GET_FROM_STRING \ + ? IT_STRING_CHARPOS (*it) == 0 \ + : 1) + + /* Move iterator IT to a specified buffer or X position within one line on the display without producing glyphs. @@ -6386,7 +6395,7 @@ move_it_vertically_backward (it, dy) move_it_to (&it2, start_pos, -1, -1, it2.vpos + 1, MOVE_TO_POS | MOVE_TO_VPOS); } - while (it2.method != GET_FROM_BUFFER); + while (!IT_POS_VALID_AFTER_MOVE_P (&it2)); xassert (IT_CHARPOS (*it) >= BEGV); it3 = it2; @@ -6586,7 +6595,7 @@ move_it_by_lines (it, dvpos, need_y_p) else if (dvpos > 0) { move_it_to (it, -1, -1, -1, it->vpos + dvpos, MOVE_TO_VPOS); - if (it->method != GET_FROM_BUFFER) + if (!IT_POS_VALID_AFTER_MOVE_P (it)) move_it_to (it, IT_CHARPOS (*it) + 1, -1, -1, -1, MOVE_TO_POS); } else @@ -6608,13 +6617,13 @@ move_it_by_lines (it, dvpos, need_y_p) reseat (it, it->current.pos, 1); /* Move further back if we end up in a string or an image. */ - while (it->method != GET_FROM_BUFFER) + while (!IT_POS_VALID_AFTER_MOVE_P (it)) { /* First try to move to start of display line. */ dvpos += it->vpos; move_it_vertically_backward (it, 0); dvpos -= it->vpos; - if (it->method == GET_FROM_BUFFER) + if (IT_POS_VALID_AFTER_MOVE_P (it)) break; /* If start of line is still in string or image, move further back. */ -- 2.39.5