From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from vulcan.kevinlocke.name (vulcan.kevinlocke.name [107.191.43.88]) by sourceware.org (Postfix) with ESMTPS id BE2D03857413 for ; Fri, 30 Apr 2021 14:25:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org BE2D03857413 Received: from kevinolos.kevinlocke.name (host-69-145-60-23.bln-mt.client.bresnan.net [69.145.60.23]) (Authenticated sender: kevin@kevinlocke.name) by vulcan.kevinlocke.name (Postfix) with ESMTPSA id A7E51227B4AB; Fri, 30 Apr 2021 14:25:14 +0000 (UTC) Received: by kevinolos.kevinlocke.name (Postfix, from userid 1000) id 6222A130012B; Fri, 30 Apr 2021 08:25:12 -0600 (MDT) Date: Fri, 30 Apr 2021 08:25:12 -0600 From: Kevin Locke To: cygwin@cygwin.com Cc: Johannes Schindelin Subject: Screen clearing in CMD without "Legacy Console Mode" Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Apr 2021 14:25:18 -0000 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