zsh-users
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: zsh-users@zsh.org
Subject: Re: Long Prompt Lines Cause Terminal History Loss on Window Resize
Date: Wed, 2 Nov 2016 20:30:50 -0700	[thread overview]
Message-ID: <161102203050.ZM1616@torch.brasslantern.com> (raw)
In-Reply-To: <CA+AzK=g7c=mJ8mrXf0YMkCKQdapVoEazkAun2Aw=LjbZz-dzXw@mail.gmail.com>

On Nov 1, 10:53pm, Aaron U'Ren wrote:
}
} Interesting. So is there no way to mitigate this issue in zsh? Because bash
} doesn't produce the same results in either tmux or xfce terminal.

That's because bash doesn't redraw the prompt when the terminal size
changes.  Zsh handles the WINCH signal and updates the prompt to keep
the right-side prompt in the right place, etc.  This was a widely
requested behavior a few years ago when window managers with features
like live drag and transparent terminals became popular.

The terminal-specific behavior is what happens when the last line is
both redrawn and is long enough to wrap, in those circumstances, not
how the scrollback is handled when nothing changes.  There's also some
other stuff going on -- e.g., depending on how the prompt is defined,
zsh may try to keep track of how many lines the prompt occupies and
to reposition the cursor appropriately before beginning to print it.

You can also get different behavior with different window/session
managers; those with the "live drag" feature send a continuous flood
of WINCH signals in hopes that the terminal can refresh in real time
as the size changes, whereas others wait for the drag operation to
end and then send a single WINCH.  So a terminal that works as you
expect on one desktop may "fail" on another.

} Also, if this is purely a terminal implementation problem, can you
} give me any direction about where the problem lies so that I can file
} a more accurate bug report with the project?

The difficulty is that it's not just one project / one bug, it's the
interaction of three or more applications each of which has different
presentation goals.

} And what terminals do you recommend
} that exhibit correct behavior on resize?

Not something I keep track of, sorry.  If I had to guess, I would say
there probably isn't one that everyone would agree is always "correct".

} Is tmux affected because it is
} also flawed or because the terminal that contains it is flawed?

More likely the latter, but possibly both.  I don't use tmux.

One thing you could try is to prefix your prompt with "%-2<<".  This
means to always leave 2 or more spaces before the right edge of the
screen, truncating the prompt on the left if it doesn't fit on one
line.  (This only works on the last line of a prompt that has any
embedded newlines.)  Thus the prompt will disappear when the terminal
gets very small, which might keep everything else where you want it.


      reply	other threads:[~2016-11-03  3:30 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-31 18:45 Aaron U'Ren
2016-11-02  3:44 ` Bart Schaefer
2016-11-02  3:53   ` Aaron U'Ren
2016-11-03  3:30     ` Bart Schaefer [this message]

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=161102203050.ZM1616@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=zsh-users@zsh.org \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).