Daniel Eklöf
8acc3b891d
vt: remove almost all abort() calls
...
Replace with generic error log messages that simply says the
ESC/CSI/OSC sequence is unhandled. This can mean either invalid or
unimplemented, depending on the context.
2019-07-30 21:42:46 +02:00
Daniel Eklöf
85ef9df586
render: add a 'clean' bit to each cell; only render cells that aren't clean
...
This patch takes a bit from the foreground color value in a
cell (todo: split up foreground/background into bitfields with a
separate field for 'foreground/background' has been set), and only
re-renders cells that aren't marked as clean.
Note: we use a 'clean' bit rather than a 'dirty' bit to make it easy
to erase cells - we can (keep doing) do that by simply memsetting a
cell range to 0.
2019-07-30 18:03:03 +02:00
Daniel Eklöf
a397c64efe
csi: ignore CSI ?1036h/l (metaSendsEscape)
2019-07-23 17:57:41 +02:00
Daniel Eklöf
f5a6304850
term: make sure to update 'current row' when restoring saved cursor
2019-07-23 17:57:07 +02:00
Daniel Eklöf
ba322c4eff
csi: implement \E[Z - back tab
2019-07-22 20:33:50 +02:00
Daniel Eklöf
751ac55f64
csi: *sigh* looks like e.g. neovim doesn't respect Se
...
I.e. it issues a \E[2 q regardless of what we've configured the
terminfo Se entry to.
So, make \E[2 q mean "the user configured cursor style" (which
defaults to 'block').
2019-07-22 20:23:29 +02:00
Daniel Eklöf
49034bb759
csi: let CSI 0 q mean "switch to user configured cursor style"
...
According to the specs, \E[0 q means a blinking block cursor. However,
since it also states that \E[1 q *also* is a blinking block cursor,
and that it is the default, *and* given that fact that parameter-less
CSIs typically means "reset", let's make it mean "reset to the user
configured cursor style".
2019-07-22 20:19:27 +02:00
Daniel Eklöf
ed5df194b8
render: implement cursor styles 'bar' and 'underline'
2019-07-22 20:07:34 +02:00
Daniel Eklöf
10be7c37ba
csi: prepare for alternative cursor styles
2019-07-22 19:44:21 +02:00
Daniel Eklöf
61409d40e2
flash: convert our own 'flash' from a CSI to an OSC
2019-07-22 19:10:15 +02:00
Daniel Eklöf
aa4cf1873b
csi: implement CSI 3J - erase scroll back
2019-07-22 19:05:22 +02:00
Daniel Eklöf
3a50c54e7c
csi: bug: reset mouse *reporting* on CSI 1005/1006/1015l
2019-07-21 20:27:26 +02:00
Daniel Eklöf
6f282a2903
csi: remove debug logging
2019-07-21 20:27:09 +02:00
Daniel Eklöf
07aad4a534
csi: change flash log message from warning to debug
2019-07-21 19:17:10 +02:00
Daniel Eklöf
0dd8951cb3
flash: implement 'flash'
...
Use our own escape sequence for the 'flash' terminfo entry.
Implemented by arming a timer FD and setting a boolean that indicates
we're currently "flashing".
The renderer draws a semi-transparent yellowish layer over the entire
window when "flashing" is active.
2019-07-21 19:14:19 +02:00
Daniel Eklöf
1ff04c5e36
csi: remove erronous final
2019-07-21 18:41:22 +02:00
Daniel Eklöf
64135ae365
csi: implement CSI 22t and CSI 23t
...
22;0|1|2t pushes the current window title/icon to the stack, while 23
pops it.
The second parameter, 0|1|2 has the following meaning:
0 - push/pop icon+title
1 - push/pop icon
2 - push/pop title
2019-07-21 17:48:06 +02:00
Daniel Eklöf
326808f94d
csi: remove TODO; we have our own terminfo
2019-07-21 15:38:54 +02:00
Daniel Eklöf
16979927ba
csi: pick 16 first 256-colors directly from the term struct
...
The 16 first entries in the 256-color array are the regular and bright
colors. However, since they can be changed (eventually) at runtime, we
can't statically initialize the 256-color array.
Instead, pick the regular+bright colors directly from the terminal
struct. I.e. the first 16 entries of the 256-color array are now
unused.
2019-07-21 11:32:35 +02:00
Daniel Eklöf
7eb6ac1aec
csi: use colors from terminal struct
2019-07-21 11:31:59 +02:00
Daniel Eklöf
4109d97263
conf: config now provides the colors (though still only hardcoded colors)
2019-07-21 11:06:28 +02:00
Daniel Eklöf
29d855d7c6
term: prepare for configurable colors; add color variables to terminal
2019-07-21 10:58:09 +02:00
Daniel Eklöf
7472e9c152
csi: recognize DECRQM (CSI ? Ps $ p)
...
The client sends this to request the state of DEC private modes.
We don't support any of them, so for now, reply with 'reset'.
2019-07-19 09:57:51 +02:00
Daniel Eklöf
b583e63bba
csi: tweak logging: no need to mention 'CSI' twice
2019-07-19 09:57:37 +02:00
Daniel Eklöf
24e9477174
vt: handle up to two private characters
2019-07-19 09:56:59 +02:00
Daniel Eklöf
6c1b2f3c81
csi: recognize, but ignore, modifyOtherKeys et al resource setters
2019-07-18 19:48:37 +02:00
Daniel Eklöf
ba533a4993
csi: better (more correct) reply to \e[>0c
2019-07-18 15:28:18 +02:00
Daniel Eklöf
d5157c15b0
csi: color index is an 8-bit unsigned value
...
This fixes an issue where a large 8-bit value was signed extended into
a large 64-bit value.
2019-07-18 14:25:15 +02:00
Daniel Eklöf
df9162450d
csi: validate param before indexing into the 256-color array
2019-07-18 14:22:19 +02:00
Daniel Eklöf
b6b92a742d
csi: fix wrong variable compared in for-loop
2019-07-18 14:13:35 +02:00
Daniel Eklöf
20684afa8c
csi: implement \E[@ (ICH - insert characters)
2019-07-17 11:19:28 +02:00
Daniel Eklöf
28eef93742
vt/csi: recognize the reset sequence sent by 'reset'
...
However, we don't (yet) actually reset the terminal
2019-07-17 10:39:38 +02:00
Daniel Eklöf
e944eb85ac
csi: document a couple of unimplemented CSIs
2019-07-17 10:33:15 +02:00
Daniel Eklöf
770c5e97dd
csi: move 'dim' attribute from 'vt' to cell attributes
2019-07-16 13:25:45 +02:00
Daniel Eklöf
6c6543cfeb
csi: add back 'blink' attribute
2019-07-16 13:19:17 +02:00
Daniel Eklöf
ccc8ef9606
terminal: foreground/background in cell attributes are now uint32_t
...
This reduces the cell size, and thus improves the cache behavour
2019-07-16 13:17:51 +02:00
Daniel Eklöf
2a1c4d29e9
csi: implement \E[21m (disable bold)
2019-07-16 12:53:58 +02:00
Daniel Eklöf
7f6a4f4b6b
csi: implement FocusIn/Out events
2019-07-16 10:34:08 +02:00
Daniel Eklöf
9929e902a6
csi: recognize, but mostly ignore, cursor style configuration
2019-07-16 10:20:54 +02:00
Daniel Eklöf
4038a8a198
csi: add missing 'break'
2019-07-16 10:20:47 +02:00
Daniel Eklöf
7379198f4a
Use vt_to_slave() instead of calling write(term->ptmx, ...) everywhere
2019-07-15 15:42:21 +02:00
Daniel Eklöf
ae2ec19133
csi: remove debug logging
2019-07-15 14:00:02 +02:00
Daniel Eklöf
888de785b7
csi: erase alt screen before activating it
2019-07-15 13:59:05 +02:00
Daniel Eklöf
f63df93e15
csi: 'X': then 'end' parameter in term_erase() is *inclusive*
2019-07-15 13:55:47 +02:00
Daniel Eklöf
03b9cf2a22
csi: implement ':'-separated 24-bit color values
2019-07-15 12:35:43 +02:00
Daniel Eklöf
84c0bb8f59
csi: cancel selection when switching between 'normal' and 'alt' grid
2019-07-11 17:38:02 +02:00
Daniel Eklöf
cf71534768
terminal: remove 'blink' attribute from cell struct
...
This makes the other attribute bits fit in a single uint8_t, which
makes each cell smaller which improves cache usage.
2019-07-10 18:45:12 +02:00
Daniel Eklöf
454133033c
vt/csi: use vt_param_get()
2019-07-10 16:04:16 +02:00
Daniel Eklöf
96bd55f7c4
terminal: only support a single intermediate/private character
2019-07-10 15:03:16 +02:00
Daniel Eklöf
43e57e3546
csi: fix logging; 'CSI' was printed twice
2019-07-10 14:57:59 +02:00