public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Takashi Yano <takashi.yano@nifty.ne.jp>
To: cygwin@cygwin.com
Subject: Re: In Cygwin console (not Mintty), escape sequences DL/IL at the last line misbehave
Date: Thu, 3 Feb 2022 21:09:34 +0900	[thread overview]
Message-ID: <20220203210934.1d4ee5e81144994f92a51d2f@nifty.ne.jp> (raw)
In-Reply-To: <CAFLRLk_GF_BZSdOrSqMtnUO6Lt4rBE_xjwJAVQQT4_1x9zd4Hw@mail.gmail.com>

On Thu, 3 Feb 2022 19:02:14 +0900
Koichi Murase wrote:
> I'm not sure what this exactly is related to, but I guess pcon is
> closely related.

No, this is not related to pseudo console.

> Cygwin version:
> 
> I can reproduce it in Cygwin 3.2.0 and the latest 3.3.4 for both
> 64-bit and 32-bit versions. I usually set CYGWIN=disable_pcon, but
> this reproduces for both cases with and without disable_pcon.
> 
> I think I observed this behavior even earlier but don't exactly
> remember in which Cygwin version I first noticed this broken behavior.
> At least, this behavior has existed for a very long time. I have been
> thinking that there are a few people using the Cygwin console
> directly, but I recently noticed that it matters when I connect to
> Cygwin from Windows Terminal. This puts very hard limitations on
> implementing a line editor where the line editor does not know the
> absolute vertical position in the terminal screen so cannot predict
> the consequences of using DL/IL.
> 
> Repeat-by:
> 
> 1. First open a Cygwin console (not to be confused with Mintty) by
> double-clicking bash.exe in C:\cygwin64\bin or by executing "cygstart
> bash".
> 2a. run the following command at the last line of the terminal:
> 
> $ printf '\e[5M'
> 
> 2b. run the following command at the last line of the terminal
> 
> $ printf '\e[5L'
> 
> The control sequence \e[<Pn>M (CSI <Pn> M) is the ANSI escape sequence
> DL (DELETE LINE), which is supposed to delete the current line and the
> following <Pn>-1 lines and scrolls up the subsequence lines. This
> control function functions correctly when it is not at the last line
> in the Cygwin console. However, if the current cursor position is
> located at the last line, DL(<Pn>) of the Cygwin console wrongly
> scrolls up the entire screen by <Pn> lines (instead of the subsequent
> lines after the delete lines).
> 
> Likely, \e[<Pn>L is the ANSI escape sequence IL (INSERT LINE), which
> is supposed to insert <Pn> new lines at the current line and to scroll
> down the subsequent lines. However, when the cursor is at the last
> line, IL of the Cygwin console again scrolls down the entire screen.
> 
> This behavior is also reproduced in Windows Terminal with a profile of
> Cygwin executing bash.exe --login -i. This doesn't happen when we use
> Mintty or other terminal emulators relying on the genuine Cygwin PTY.
> 
> Fix:
> 
> Any other terminals do not behave in this unintuitive way. When the
> cursor is located at the last line, DL/IL should not scroll any lines
> but should just clear only the last line.

Thanks for the report.

I can reproduce the problem. I will submit a patch for this issue shortly.

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

  reply	other threads:[~2022-02-03 12:09 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-03 10:02 Koichi Murase
2022-02-03 12:09 ` Takashi Yano [this message]
2022-02-03 12:41   ` Koichi Murase
2022-02-03 15:12     ` Takashi Yano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220203210934.1d4ee5e81144994f92a51d2f@nifty.ne.jp \
    --to=takashi.yano@nifty.ne.jp \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).