nicm
7a4c66b7f5
Scroll the right number of lines off the region when clearing.
2017-05-13 07:41:59 +00:00
nicm
d58c3793d6
Some other unused variables.
2017-05-13 07:30:50 +00:00
nicm
50f1f1dce9
Compare >= for columns not >.
2017-05-12 23:10:19 +00:00
nicm
0264ef094a
Can scroll away full lines to clear them too.
2017-05-12 23:06:43 +00:00
nicm
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
nicm
18bab30792
Scrolling needs to use background colour.
2017-05-12 13:00:56 +00:00
nicm
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
nicm
7f626c8959
Can use INDN to clear regions with default background colour if margins
...
are supported.
2017-05-12 11:13:43 +00:00
nicm
886d50dcab
ECH needs to use background colour.
2017-05-12 10:50:11 +00:00
nicm
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
nicm
8ab2753521
Move to the right cursor position before using spaces to clear.
2017-05-10 18:40:13 +00:00
nicm
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
nicm
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
nicm
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
nicm
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
nicm
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
nicm
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
nicm
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
nicm
623e35f594
Detect iTerm2 and use DECSLRM for it as well.
2017-04-18 18:21:37 +00:00
nicm
fb3c5efa50
Add a format for number of bytes writtent to client, useful for debugging.
2017-04-18 15:44:17 +00:00
nicm
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
nicm
175d1854d4
Don't bother moving the cursor for empty lines.
2017-04-17 08:10:44 +00:00
nicm
7461c165b5
Remove a couple of redraw flags that no longer have any effect.
2017-04-17 06:40:32 +00:00
nicm
54bcaab70e
Use EL1 to clear lines when redrawing the leftmost pane, rather than
...
spaces.
2017-04-16 20:32:14 +00:00
nicm
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
nicm
b9a4beb6e7
Write raw strings in one go rather than character at a time.
2017-03-24 14:45:00 +00:00
nicm
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
nicm
2a9d697771
Invalidate the cursor when we think we should have wrapped.
2017-03-15 15:22:14 +00:00
nicm
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
nicm
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
nicm
dc8fefe902
Collect strings correctly when on terminals that don't support UTF-8.
2017-03-06 09:02:59 +00:00
nicm
8a0b279c31
Change pane redraw to collect cells up as well, and simplify it a bit.
2017-02-21 16:25:04 +00:00
nicm
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
nicm
dd25a6cdc2
Do not clear to end of screen unless the pane is at the bottom.
2017-02-15 11:22:13 +00:00
nicm
921880e00b
Add not delete the event if more to write.
2017-02-10 15:39:43 +00:00
nicm
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
nicm
1811dc5271
Another helper function to write to terminal and log.
2017-02-08 23:53:03 +00:00
nicm
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
nicm
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
nicm
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
nicm
d4b006b9fa
Fix clear start of line.
2017-02-08 16:18:20 +00:00
nicm
7475165cd8
Some other tidying bits.
2017-02-08 15:49:29 +00:00
nicm
96b66f8fc3
Remove unnecessary duplicate check.
2017-02-08 15:24:48 +00:00
nicm
713f3b05f3
Improve some of the logging on resize.
2017-02-08 13:53:32 +00:00
nicm
cb80901d33
Log size of output buffer as well.
2017-02-08 08:54:45 +00:00
nicm
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
nicm
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
nicm
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
nicm
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
nicm
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