]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/term.c (produce_glyphs): Synchronize with gui_produce_glyphs.
authorPo Lu <luangruo@yahoo.com>
Thu, 1 Feb 2024 08:18:53 +0000 (16:18 +0800)
committerEshel Yaron <me@eshelyaron.com>
Fri, 2 Feb 2024 18:05:25 +0000 (19:05 +0100)
(cherry picked from commit 4e1661e96c4412e8bf04cd1ec8948df4a782a10c)

src/term.c

index b3793088faccd88c666188281fe0c34a4e972b41..3fa244be82425ff22498d93c8ae9537e5481a67b 100644 (file)
@@ -1631,8 +1631,19 @@ produce_glyphs (struct it *it)
     it->pixel_width = it->nglyphs = 0;
   else if (it->char_to_display == '\t')
     {
+      /* wrap-prefix strings are prepended to continuation lines, so
+        the width of tab characters inside should be computed from
+        the start of this screen line rather than as a product of the
+        total width of the physical line being wrapped.  */
       int absolute_x = (it->current_x
-                       + it->continuation_lines_width);
+                       + (it->string_from_prefix_prop_p
+                          /* Subtract the width of the
+                             prefix from it->current_x if
+                             it exists.  */
+                          ? 0 : (it->continuation_lines_width
+                                 ? (it->continuation_lines_width
+                                    - it->wrap_prefix_width)
+                                 : 0)));
       int x0 = absolute_x;
       /* Adjust for line numbers.  */
       if (!NILP (Vdisplay_line_numbers) && it->line_number_produced_p)