Subject: Re: bug#46590: 27.1.91; abnormal whitespace-mode behavior

From: Eli Zaretskii <[email-masked]>
Date: Sat, 20 Feb 2021 11:27:25 +0200

> Date: Wed, 17 Feb 2021 15:06:14 +0100
> From: Frédéric Baldit <[email-masked]>
> 
> emacs -Q test.txt &
> 
> 2) M-x whitespace-mode RET
> 
> 3) type the following text («.» for spacebar key):
> 
> «....First line of text in emacs», then type RET
> 
> 4) DEL DEL to suppress backward two spaces on line 2, then type text
> «Second one»
> 
> 5) M-2 M-b
> 
> 6) TAB TAB TAB TAB: point should be at line 2, column 18, vertically
> aligned with fourth word of line 1 («text»), but it is at column 26:
> that's the bug.

It's a known misfeature of whitespace-mode.  There's a comment in
whitespace.el to that effect:

    ;; WARNING: the mapping below has a problem.
    ;; When a TAB occupies exactly one column, it will display the
    ;; character ?\xBB at that column followed by a TAB which goes to
    ;; the next TAB column.
    ;; If this is a problem for you, please, comment the line below.
    (tab-mark     ?\t    [?» ?\t] [?\\ ?\t])	; tab - right guillemet

You could customize whitespace-display-mappings to remove tab-mark
from it, if you want to avoid this issue.

> Rq1: what is curious (to me) is that deactivating whitespace-mode
> removes abnormally inserted tab character (8 spaces) and everything is
> OK.

That's because disabling whitespace-mode deactivates the display-table
mappings, which include the above mapping.

> Rq2: I noted that with a different text, this behavior of
> whitespace-mode disappears. For example, if one uses the following first
> line of text:
> 
> «....This.is.a.first.line.of.text.with.a.few.words»,
> 
> then the result of typing TAB multiple times is as expected, with or
> without whitespace-mode activated!

Most probably because the "TAB occupies exactly one column" condition
doesn't happen there.

Thanks.