50f1f1dce9
Compare >= for columns not >.
2017-05-12 23:10:19 +00:00
0264ef094a
Can scroll away full lines to clear them too.
2017-05-12 23:06:43 +00:00
da724fe1c0
Cannot rely on cursor position after DL and IL (some terminals move to
...
column 0, some do not).
2017-05-12 14:13:54 +00:00
18bab30792
Scrolling needs to use background colour.
2017-05-12 13:00:56 +00:00
60f7b05c0c
Regions can't be smaller than 2 so don't try to clear them by scrolling if so.
2017-05-12 11:19:24 +00:00
7f626c8959
Can use INDN to clear regions with default background colour if margins
...
are supported.
2017-05-12 11:13:43 +00:00
886d50dcab
ECH needs to use background colour.
2017-05-12 10:50:11 +00:00
989cdca95f
Need to redraw out to cellsize (total cells used in a line) rather than
...
cellused (only non-space cells) because there may be cells with a
nondefault background.
2017-05-11 11:38:49 +00:00
8ab2753521
Move to the right cursor position before using spaces to clear.
2017-05-10 18:40:13 +00:00
9dc6946ebf
We can use ECH to clear sections of lines, so use it for internal panes
...
(that don't touch an edge). Move all the tty clear code into two common
functions rather than having the same bunch of checks everywhere.
2017-05-10 16:47:03 +00:00
3b35daacf7
If the current screen was complex enough, it was possible to make redraw
...
itself hit the "terminal can't keep up" check. To avoid this, record how
much data we send during redraw (we know we will be starting with 0) and
skip the check until it has been flushed. GitHub issue 912.
2017-05-09 13:04:36 +00:00
54e2205e54
Konsole incorrectly ignores SU (CSI S) if the parameter is bigger than
...
the scroll region, so clamp it. Reported by Moritz Bunkus.
2017-04-28 17:58:44 +00:00
d520dae6ac
Make full width panes try to play more nicely with terminal copy and
...
paste by avoiding explicit line wraps if we think the terminal will wrap
anyway.
2017-04-25 18:30:29 +00:00
5172014668
Only use ED for clear screen if at the bottom, same as earlier fix to
...
clear end of screen.
2017-04-23 18:13:24 +00:00
fa6deb5866
When the data we have buffered to write to a terminal grows beyond a
...
reasonable amount (currently width * height * 8 bytes), discard all
output to the terminal and start trying to redraw periodically
instead. Continue with this until the amount of data we are trying to
write falls to a low level again.
This helps to prevent tmux sitting on a huge buffer of data when there
are processes with fast output running inside tmux but the outside
terminal is slow.
A new client_discarded format holds the amount of data that has been
discarded due to this mechanism.
The three variables (when to start this, when to stop, and how often to
redraw) are basically "works for me" at the moment, this is going in to
see how it goes and if it causes problems for anyone else.
2017-04-19 06:52:27 +00:00
f731ae4a2d
Revert use of DECSLRM on iTerm2, it doesn't help as much as we throught,
...
and there are some question marks about it's support.
2017-04-18 21:41:42 +00:00
623e35f594
Detect iTerm2 and use DECSLRM for it as well.
2017-04-18 18:21:37 +00:00
fb3c5efa50
Add a format for number of bytes writtent to client, useful for debugging.
2017-04-18 15:44:17 +00:00
aace1ead1e
Do not check for BCE for a background colour that isn't needed, use
...
colour 8 instead.
2017-04-18 15:27:47 +00:00
175d1854d4
Don't bother moving the cursor for empty lines.
2017-04-17 08:10:44 +00:00
7461c165b5
Remove a couple of redraw flags that no longer have any effect.
2017-04-17 06:40:32 +00:00
54bcaab70e
Use EL1 to clear lines when redrawing the leftmost pane, rather than
...
spaces.
2017-04-16 20:32:14 +00:00
9b28200578
Give each client a name. This defaults to the tty name as before but
...
falls back to an alternative if the tty name is not available. This is
clearer than overloading the client ttyname member and allows us to
remove the path stored in the tty struct, it should always be the same
as the client.
2017-04-05 10:49:46 +00:00
b9a4beb6e7
Write raw strings in one go rather than character at a time.
2017-03-24 14:45:00 +00:00
df3ab87964
Add support for the strikethrough attribute (SGR 9), using the new smxx
...
terminfo capability. This means there are now nine attribute bits, so
anything above 0xff uses an extended cell.
2017-03-22 07:16:54 +00:00
2a9d697771
Invalidate the cursor when we think we should have wrapped.
2017-03-15 15:22:14 +00:00
3c3c08b6d9
Try to avoid moving the cursor to the start of the next line when
...
printing cells if it is already at the very end of the line and the
terminal will wrap it to the next line itself, this means terminals
still see it as a wrapped line for the purposes of their own mouse
selection. Reported by millert@.
2017-03-15 09:21:21 +00:00
78ca1b0265
Always send smkx to the terminal outside, the keys we get from terminfo
...
are the keys when it is on.
2017-03-08 14:34:35 +00:00
dc8fefe902
Collect strings correctly when on terminals that don't support UTF-8.
2017-03-06 09:02:59 +00:00
8a0b279c31
Change pane redraw to collect cells up as well, and simplify it a bit.
2017-02-21 16:25:04 +00:00
82db1fa9e5
There are buggy terminals out there that do not move the cursor to 0,0
...
after CSR, so invalidate the cursor position rather than assuming 0,0.
2017-02-16 12:56:01 +00:00
dd25a6cdc2
Do not clear to end of screen unless the pane is at the bottom.
2017-02-15 11:22:13 +00:00
921880e00b
Add not delete the event if more to write.
2017-02-10 15:39:43 +00:00
d22c15107b
Don't use a bufferevent for the tty, so we can keep better track of what
...
is being written and when.
Also a manpage typo fix from jmc@.
2017-02-10 12:59:18 +00:00
1811dc5271
Another helper function to write to terminal and log.
2017-02-08 23:53:03 +00:00
2f854969ff
Do not adjust region lower by pane offset when scrolling up, it is
...
already an absolute position.
2017-02-08 22:42:07 +00:00
e100d465da
Add support for scroll up escape sequence (CSI S) and use it when
...
possible instead of sending individual line feeds.
2017-02-08 17:31:09 +00:00
13a0b6bb3f
Collect sequences of printable ASCII characters and process them
...
together instead of handling them one by one. This is significantly
faster. Sequences are terminated when we reach the end of the line, fill
the internal buffer, or a different character is seen by the input
parser (an escape sequence, or UTF-8).
Rather than writing collected sequences out immediately, hold them until
it is necessary (another screen modification, or we consume all
available data). This means we can discard changes that would have no
effect (for example, lines that would just be scrolled off the screen or
cleared). This reduces the total amount of data we write out to the
terminal - not important for fast terminals, but a big help with slow
(like xterm).
2017-02-08 16:45:18 +00:00
d4b006b9fa
Fix clear start of line.
2017-02-08 16:18:20 +00:00
7475165cd8
Some other tidying bits.
2017-02-08 15:49:29 +00:00
96b66f8fc3
Remove unnecessary duplicate check.
2017-02-08 15:24:48 +00:00
713f3b05f3
Improve some of the logging on resize.
2017-02-08 13:53:32 +00:00
cb80901d33
Log size of output buffer as well.
2017-02-08 08:54:45 +00:00
9cc02d1498
Trying to avoid the occasional newline by saving the last cell on screen
...
is not actually helping us much and just adds complexity, so don't
bother.
2017-02-08 08:50:10 +00:00
c0a34821c1
Do not clear the scroll region, instead set it to the scroll region we
...
actually want.
2017-02-07 18:27:46 +00:00
6ea36afc4b
DECSLRM in xterm(1) appears to have a quirk where it can generate an
...
extra scroll of the entire terminal; issuing DECSTBM first prevents
this. Do that for now.
2017-02-07 17:13:28 +00:00
9491a5c1cf
Unfortunately DECFRA does not handle default colours properly (it does
...
not reset colours when in SGR 0), so we can't use it without more
trouble than it is worth. Abandon the idea for now.
2017-02-07 14:33:37 +00:00
d60e585d9e
Use DECFRA on VT420 compatible terminals (so, xterm) and ED on all
...
others for clearing panes.
2017-02-06 22:05:11 +00:00
68e04907de
Do not go through the whole attributes setting process if the new cell
...
is the same as the previous one.
2017-02-06 19:45:23 +00:00
10e14ae504
Add BCE for clear to start of screen, which was somehow missed.
2017-02-06 19:26:49 +00:00