nicm
75842bfe66
Fix drawing of ACS characters (they need to go character-at-a-time),
...
accidentally broken in last commit.
2018-01-16 17:03:18 +00:00
nicm
2c5a6f9af5
Simplify character replacement on non-UTF-8 terminals and make a common
...
function.
2018-01-12 16:41:00 +00:00
nicm
aeda2e5808
If there is a double width character at the very end of the line with
...
not enough room to draw it, just leave it out.
2017-11-15 19:18:57 +00:00
nicm
2f6935a630
Infrastructure for drawing status lines of more than one line in height,
...
still only one is allowed but this lets tmux draw bigger ones.
2017-10-16 19:30:53 +00:00
nicm
3c63ad4a9c
When tty is error or closed, remove client. Reported by Thomas Sattler.
2017-08-24 08:48:37 +00:00
nicm
bbe9da063e
Same as previous for \r alone.
2017-08-21 21:02:58 +00:00
nicm
7ec2a2b9ce
Do not emit \r\n to move to column 0 if there are margins, because it
...
will instead move to the margin left.
2017-08-21 21:01:21 +00:00
nicm
3bb426d92c
Use the actual width written rather than the possible width to clear.
2017-07-21 22:55:45 +00:00
nicm
8c6ad55320
Trim trailing spaces from full line when it is clearly OK to do so.
2017-07-21 14:25:29 +00:00
nicm
d7280917da
Delete input event when evbuffer_read() fails to avoid just spinning
...
around a dead file descriptor. Seems to fix a problem reported by Greg
Hurrell in GitHub issue 941.
2017-06-06 14:53:28 +00:00
nicm
184039044a
Typo/style; plus man page escaping from jmc.
2017-06-04 08:02:20 +00:00
nicm
493a1846d0
Foreground colours with the bright attribute set need to use the bright
...
entries in the palette. GitHub issue 954.
2017-06-03 07:15:23 +00:00
nicm
ea6428a5d2
It is not OK to ignore SIGWINCH if SIOCGWINSZ reports the size has
...
unchanged, because it may have changed and changed back in the time
between us getting the signal and calling ioctl(). Always redraw when we
see SIGWINCH.
2017-05-31 10:29:15 +00:00
nicm
7eb496c00c
Look for setrgbf and setrgbb terminfo extensions for RGB colour. This is
...
the most reasonable of the various (some bizarre) suggestions for
capabilities.
2017-05-31 08:43:44 +00:00
nicm
1ba7f1d03f
Check the terminfo(5) U8 capability and disable using UTF-8 for ACS if
...
it is present and zero. This is useful for users with terminals or fonts
that do not correctly support UTF-8 line drawing characters. GitHub
issue 927, reported by Hiroaki Yamazoe and Akinori Hattori.
2017-05-15 16:44:04 +00:00
nicm
cb5fcb3d22
The Konsole SU bug means it can't clear the entire scroll region (it
...
ignores if >= size, not if > as I first thought). So we can't
effectively fix it in code - remove the workarounds which just cause
bugs on other terminals.
2017-05-15 07:54:44 +00:00
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