diff options
Diffstat (limited to 'src/xdisp.c')
-rw-r--r-- | src/xdisp.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 746fa2540f9..fef50689ab5 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -3724,6 +3724,10 @@ handle_invisible_prop (it) it->position.bytepos = CHAR_TO_BYTE (it->position.charpos); } setup_for_ellipsis (it, 0); + /* Let the ellipsis display before + considering any properties of the following char. + Fixes jasonr@gnu.org 01 Oct 07 bug. */ + handled = HANDLED_RETURN; } } } @@ -12625,7 +12629,7 @@ compute_window_start_on_continuation_line (w) minimum distance from the old window start. */ pos = it.current.pos; min_distance = INFINITY; - while ((distance = abs (CHARPOS (start_pos) - IT_CHARPOS (it))), + while ((distance = eabs (CHARPOS (start_pos) - IT_CHARPOS (it))), distance < min_distance) { min_distance = distance; @@ -20291,9 +20295,9 @@ produce_image_glyph (it) } if (it->start_of_box_run_p && slice.x == 0) - it->pixel_width += abs (face->box_line_width); + it->pixel_width += eabs (face->box_line_width); if (it->end_of_box_run_p && slice.x + slice.width == img->width) - it->pixel_width += abs (face->box_line_width); + it->pixel_width += eabs (face->box_line_width); } take_vertical_position_into_account (it); @@ -22610,8 +22614,8 @@ fast_find_string_pos (w, pos, object, hpos, vpos, x, y, right_p) goto found; } else if (best_glyph == NULL - || ((abs (g->charpos - pos) - < abs (best_glyph->charpos - pos)) + || ((eabs (g->charpos - pos) + < eabs (best_glyph->charpos - pos)) && (right_p ? g->charpos < pos : g->charpos > pos))) |