1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-13 15:00:42 -08:00

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.
This commit is contained in:
Eli Zaretskii 2017-07-01 16:00:18 +03:00
parent fb62728b7a
commit b5ce3100a8

View file

@ -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;