Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Long Prompt Lines Cause Terminal History Loss on Window Resize

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.

Messages sorted by: Reverse Date, Date, Thread, Author