]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve display of tabs with line numbers
authorEli Zaretskii <eliz@gnu.org>
Sat, 1 Jul 2017 13:00:18 +0000 (16:00 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 1 Jul 2017 13:00:18 +0000 (16:00 +0300)
* src/xdisp.c (x_produce_glyphs): Improve calculation of next tab
stop in hscrolled lines.  Prevent aborts in compute_line_metrics.

src/xdisp.c

index 7bbe9d9ca3e59b678a6e4a9c3b6a980a6b94c7bd..47b81414630aa415fedaa0f954f6489758c70082 100644 (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;