From: Eli Zaretskii Date: Sat, 1 Jul 2017 13:00:18 +0000 (+0300) Subject: Improve display of tabs with line numbers X-Git-Tag: emacs-26.0.90~518^2~156^2~6 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b5ce3100a8549df519d6f2b577fe7c3acf90cb40;p=emacs.git Improve display of tabs with line numbers * src/xdisp.c (x_produce_glyphs): Improve calculation of next tab stop in hscrolled lines. Prevent aborts in compute_line_metrics. --- diff --git a/src/xdisp.c b/src/xdisp.c index 7bbe9d9ca3e..47b81414630 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -28028,18 +28028,19 @@ x_produce_glyphs (struct it *it) int x = it->current_x + it->continuation_lines_width; int x0 = x; /* Adjust for line numbers, if needed. */ - if (!NILP (Vdisplay_line_numbers)) + if (!NILP (Vdisplay_line_numbers) && x0 >= it->lnum_pixel_width) x -= it->lnum_pixel_width; int next_tab_x = ((1 + x + tab_width - 1) / tab_width) * tab_width; - if (!NILP (Vdisplay_line_numbers)) - next_tab_x += (it->lnum_pixel_width - - it->w->hscroll * font->space_width); /* If the distance from the current position to the next tab stop is less than a space character width, use the tab stop after that. */ if (next_tab_x - x0 < font->space_width) next_tab_x += tab_width; + if (!NILP (Vdisplay_line_numbers) && x0 >= it->lnum_pixel_width) + next_tab_x += (it->lnum_pixel_width + - ((it->w->hscroll * font->space_width) + % tab_width)); it->pixel_width = next_tab_x - x0; it->nglyphs = 1;