Screen clearing in CMD without "Legacy Console Mode"

Takashi Yano takashi.yano@nifty.ne.jp
Fri Apr 30 17:11:16 GMT 2021


On Fri, 30 Apr 2021 10:40:33 -0600
Brian Inglis wrote:
> On 2021-04-30 08:53, Takashi Yano via Cygwin wrote:
> > On Fri, 30 Apr 2021 08:25:12 -0600
> > Kevin Locke wrote:
> >> Hi All,
> >>
> >> I'm investigating an issue in Git for Windows[^1], which also affects
> >> Cygwin.  The issue is that, when using CMD (i.e. Command Prompt) on
> >> Windows 10 1703 or above with "Legacy Console Mode"[^2] disabled, if
> >> TERM=cygwin is set in the environment, the console is not cleared when
> >> vi exits.  To demonstrate, with Cygwin 3.2.0, in CMD with "Legacy
> >> Console Mode" disabled:
> >>
> >> cd C:\cygwin64
> >> set TERM=cygwin
> >> bin\vi etc\bash.bashrc
> >> :q
> >>
> >> After exiting vi, the console window has not been cleared and content
> >> from etc\bash.bashrc remains visible, making further use of the console
> >> difficult until cleared.
> >>
> >> The difference appears to result from enabling
> >> SetConsoleMode(ENABLE_VIRTUAL_TERMINAL_PROCESSING) and
> >> SetConsoleMode(ENABLE_VIRTUAL_TERMINAL_INPUT)[^3] to behave like
> >> xterm-256color when supported[^4] (they are not supported in "Legacy
> >> Console Mode").
> >>
> >> I'm not too familiar with TTY/PTY handling, much less Cygwin on top of
> >> CMD.  It's not clear to me if the alternate screen buffer behaves
> >> differently in CMD than xterm, whether Cygwin has any responsibility, or
> >> if the issue is in how CMD handles ANSI escape sequences.  Johannes
> >> Schindelin suggested it may make sense not to enable virtual terminal
> >> processing when TERM=cygwin is set.[^5]  Thoughts?
> >>
> >> Any advice or assistance for how to address this issue would be
> >> appreciated.
> >>
> >> Thanks,
> >> Kevin
> >>
> >> [^1]: https://github.com/git-for-windows/git/issues/3177
> >> [^2]: https://docs.microsoft.com/windows/console/legacymode
> >> [^3]: https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/fhandler_console.cc;h=ebe89fc9f8fd9fcb8102ee9884b8b91f04e88fb1;hb=5eb232ede72e394e280d1a23131267c7002d2c52#l464
> >> [^4]: https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/fhandler_console.cc;h=ebe89fc9f8fd9fcb8102ee9884b8b91f04e88fb1;hb=5eb232ede72e394e280d1a23131267c7002d2c52#l1327
> >> [^5]: https://github.com/git-for-windows/git/issues/3177#issuecomment-828494565
> > 
> > Why on earth do you want to set TERM=cygwin?
> > If you don't set TERM=cygwin, TERM is automatically set to
> > xterm-256color, in which the issue does not occur.
> 
> Was this a change made to Cygwin and from which version?

IIRC, from cygwin 3.1.0.

-- 
Takashi Yano <takashi.yano@nifty.ne.jp>


More information about the Cygwin mailing list