Sync OpenBSD patchset 1072:

Add a simple form of output rate limiting by counting the number of
certain C0 sequences (linefeeds, backspaces, carriage returns) and if it
exceeds a threshold (current default 50/millisecond), start to redraw
the pane every 100 milliseconds instead of making each change as it
comes. Two configuration options - c0-change-trigger and
c0-change-interval.

This makes tmux much more responsive under very fast output (for example
yes(1) or accidentally cat'ing a large file) but may not be perfect on
all terminals and connections - feedback very welcome, particularly
where this change has a negative rather than positive effect (making it
off by default is a possibility).

After much experimentation based originally on a request Robin Lee
Powell (which ended with a completely different solution), this idea
from discussion with Ailin Nemui.
This commit is contained in:
Tiago Cunha
2012-03-29 21:05:16 +00:00
parent 621fa0a686
commit f9f6eea444
6 changed files with 93 additions and 5 deletions

18
tmux.1
View File

@ -2467,6 +2467,24 @@ It may be switched off globally with:
set-window-option -g automatic-rename off
.Ed
.Pp
.It Ic c0-change-interval Ar interval
.It Ic c0-change-trigger Ar trigger
These two options configure a simple form of rate limiting for a pane.
If
.Nm
sees more than
.Ar trigger
C0 sequences that modify the screen (for example, carriage returns, linefeeds
or backspaces) in one millisecond, it will stop updating the pane immediately and
instead redraw it entirely every
.Ar interval
milliseconds.
This helps to prevent fast output (such as
.Xr yes 1
overwhelming the terminal).
The default is a trigger of 50 and an interval of 100.
A trigger of zero disables the rate limiting.
.Pp
.It Ic clock-mode-colour Ar colour
Set clock colour.
.Pp