Re: [PATCH] sideband: clear full line when printing remote messages
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 10, 2026, 23:30 UTC
- Message-ID
- <xmqqzf26971p.fsf@gitster.g>
- In-Reply-To
- <9826dabf-c9a6-4397-8ae6-a24f9c507f1b@web.de>
René Scharfe <l.s.r@web.de> writes:
Show 21 quoted lines
> demultiplex_sideband() can write its remote output over active local
> progress lines. That's why it has been using ANSI code Erase in Line on
> smart terminals to clear the remainder of lines it writes since
> ebe8fa738d (fix display overlap between remote and local progress,
> 2007-11-04).
>
> This erases the last character of remote lines that span the full width
> of the terminal, though, as the cursor is stuck at the rightmost column
> for them. It's the same effect as in the following command, which
> clears the 1 and shows just the leading zeros:
>
> $ EL="\033[K"
> $ printf "%0${COLUMNS}d${EL}\n" 1
>
> If we move the ANSI code to the start we get to see the 1 as well:
>
> $ printf "${EL}%0${COLUMNS}d\n" 1
>
> So do the same in demultiplex_sideband() and emit the ANSI code as a
> prefix instead of a suffix to show messages in full even if they happen
> to fill the whole width of a smart terminal.Makes sense. The final objective is to make sure that leftover letters near the end of line printed by previous "print" would not remain after the material we are printing, so it does not matter if we print and then erase the remainder or we erase the whole line and print. And the latter is an obvious way to make it easier to reason about in the presense of funkiness in the ways terminals behave around the end of line.