Subject: bug#68441: 回复: bug#68441: Fix the unaligned tab in whitespace mode

From: Eli Zaretskii <[email-masked]>
Date: Sun, 28 Jan 2024 13:09:50 +0200

> From: Young Arto <[email-masked]>
> CC: "[email-masked]" <[email-masked]>
> Date: Sun, 28 Jan 2024 10:43:16 +0000
> 
>  So this patch changes long-standing behavior in non-trivial ways, and
>  I'm not sure what it can break, after so many years.  I understand
>  that it makes certain customizations in whitespace-mode look better on
>  display in some cases, but display-tables are used in Emacs not just
>  in whitespace-mode.
> 
> Yes, You are right. In fact, I'm not sure what it can break either. So I have
> used this patch locally for about one year with self-compiled emacs29.
> Fortunately, it didn't bring any side effects for me.  However, of course,
> I cannot cover every function and every package for emacs.
> 
> It is really fundamental code. On the other hand, it is also annoying to
> use whitespace-mode with unaligned tabs-mark. Would you be happy
> if I add an option for this behavior like 'display-vector-limit-tab' which
> defaults to nil? Finally, it won't change default behavior for all emacsers
> and anybody like me who has trouble with this issue can turn it on in
> their configuration file so they can test if it has side effects for them or
> they can share this fix.

Adding an option is better, but I'm not sure I understand in what
circumstances that option will affect the display of a TAB that comes
from a display vector.  Your changes seem to have some conditions
whose exact rationale and effect are not clear to me.  I mean the
following conditions:

   . it->current.dpvec_index > 0
   . absolute_x % it->tab_width == 0

What are the reasons for each of these conditions, and what kinds of
display-table entries they are supposed to support?

Also, did you test the results in situations like line-truncation and
display-line-numbers-mode, including the combination of the two?  And
what about visual-line-mode?  And what about line-prefix and
wrap-prefix?

See, the Emacs display engine supports a gazillion of features, so the
effect of these changes in each of these situations should be well
understood, otherwise we will be unable to document the expected
effect of the option you are suggesting to introduce.

Thanks.