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
nicm
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
nicm
10e14ae504
Add BCE for clear to start of screen, which was somehow missed.
2017-02-06 19:26:49 +00:00
nicm
3fd34e70e5
Only redraw the modified character when adding combining characters, not
...
the whole line.
2017-02-06 13:23:00 +00:00
nicm
dd0c814779
Implement "all event" (1003) mouse mode but in a way that works. The
...
main issue is that if we have two panes, A with 1002 and B with 1003, we
need to set 1003 outside tmux in order to get all the mouse events, but
then we need to suppress the ones that pane A doesn't want. This is easy
in SGR mouse mode, because buttons == 3 is only used for movement events
(for other events the trailing m/M marks a release instead), but in
normal mouse mode we can't tell so easily. So for that, look at the
previous event instead - if it is drag+release as well, then the current
event is a movement event.
2017-02-01 09:55:07 +00:00
nicm
9b6aeacdc0
aixterm colours can be used if -2 is given, as well as if TERM tells us
...
the terminal has >=16 colours.
2017-01-12 00:30:41 +00:00
nicm
9e786030df
Fix setting the palette of aixterm colours (90-97).
2017-01-12 00:19:32 +00:00
nicm
74c40d04ea
Be less aggressive about turning margins off.
2017-01-11 23:10:04 +00:00
nicm
3bb14001b9
Add some missing special keys to key_string_lookup_key, fix a mouse
...
check in server_client_handle_key, and tweak a comment.
2017-01-11 22:36:07 +00:00
nicm
bf6a5c056d
Add a format for terminal type.
2017-01-11 16:09:57 +00:00
nicm
314e933914
Add support for the OSC 4 and OSC 104 palette setting escape sequences,
...
from S Gilles.
2017-01-07 15:28:13 +00:00
nicm
5ea143f521
Only skip moving the cursor if it is already in the last position _on
...
the same line_, fixes redraw bug reported by patrick keshishian.
2016-12-07 09:16:55 +00:00
nicm
1a6156d8fd
Fix check for cursor at end of line.
2016-11-30 13:20:02 +00:00
nicm
9fc925ac51
When comparing ocy to orlower in tty_cmd_cell, there is no need to add
...
yoff (because they are both already relative to the pane). Also fix some
other minor nits.
2016-11-28 17:50:00 +00:00
nicm
ddf7ac5ae4
Fix calculation of whether we need a region for drawing a cell (only if
...
full width and at the edge of the region), otherwise clear the region entirely.
2016-11-16 13:31:22 +00:00
nicm
c34a79b152
Turn on margins, with a couple of fixes (only limit to the pane for line
...
feeds, and do not move cursor to end for full width panes).
2016-11-15 15:17:28 +00:00
nicm
d81a5c630f
And of course I just find a bug, disable previous for now.
2016-11-15 14:08:27 +00:00
nicm
0ace779cde
Initial attempt to make use of left and right margins if the terminal
...
supports them (that is, if it advertises itself as a VT420 - probably
just xterm). These are the vertical equivalent of the scroll region and
allow much faster scrolling of panes that do not take up the full width
of the terminal.
2016-11-15 14:02:32 +00:00
nicm
d413a945ac
Don't make assumptions about line wrap on !xenl terminals, means that
...
using a wrong TERM without xenl is not so broken if used on a sensible
terminal.
2016-10-14 21:48:00 +00:00