Mitchell Hashimoto
7734bab8c4
terminal: cursor shape parsing, hook up to apprt callback
2023-09-14 10:12:38 -07:00
Mitchell Hashimoto
ab8569b4bd
terminal: parse OSC 22
2023-09-14 09:36:23 -07:00
Mitchell Hashimoto
24af24a086
terminal: CSI q requires a space intermediate
2023-09-10 22:01:17 -07:00
Mitchell Hashimoto
d9cfd00e9f
Big Cursor State Refactor
...
This makes a few major changes:
- cursor style on terminal is single source of stylistic truth
- cursor style is split between style and style request
- cursor blinking is handled by the renderer thread
- cursor style/visibility is no longer stored as persistent state on
renderers
- cursor style computation is extracted to be shared by all renderers
- mode 12 "cursor_blinking" is now source of truth on whether blinking
is enabled or not
- CSI q and mode 12 are synced like xterm
2023-09-09 20:19:37 -07:00
Mitchell Hashimoto
f8335c10d8
terminal: disable noisy logs
2023-09-03 14:02:55 -07:00
Mitchell Hashimoto
cdf81b610d
terminal: mark prompt continuation lines, end prompt clear at first
...
prompt
2023-09-03 14:00:56 -07:00
Mitchell Hashimoto
de3d0b4243
terminal: parse semantic prompt "k" (kind) parameter
2023-09-03 13:47:06 -07:00
Mitchell Hashimoto
aa04c79586
terminal: CSI P must shift all remaining columns to right of cursor
...
Fixes #388
2023-09-02 11:28:37 -07:00
Mitchell Hashimoto
a6007cab7a
terminal: fix unimplemented origin mode check
2023-09-01 08:46:53 -07:00
Mitchell Hashimoto
36756cc866
terminal: charset table should be len 256, not 255
2023-08-31 20:45:13 -07:00
Mitchell Hashimoto
f4fef559fb
terminal: delete lines outside of scroll region should do nothing
2023-08-31 20:41:32 -07:00
Mitchell Hashimoto
65246327dd
terminal: add more assertions
2023-08-31 19:45:22 -07:00
Mitchell Hashimoto
6c13627d51
terminal: delete chars (CSI P) tested, fixes many issues
2023-08-31 19:42:23 -07:00
Mitchell Hashimoto
0aebf1e406
terminal: CSI S allows for count greater than scroll region height
2023-08-31 17:52:22 -07:00
Mitchell Hashimoto
d05381db83
remove some unreachables, log errors to avoid crashes
...
These are still TODO but we don't want to crash on bad input.
2023-08-31 14:55:27 -07:00
Mitchell Hashimoto
3352cae3f7
terminal: resize more cols no longer preserves trailing stylized cells
2023-08-30 15:55:43 -07:00
Mitchell Hashimoto
c18527384e
terminal: sgr parsing doesn't parse 4-form 48, allows unstyled underline
...
Fixes #362
We previously tried to parse 4-form 48, but as far as I can tell this is
never used anyways and in this real world scenario it expected us to
parse a 3-form followed by an underline. This fixes the real world
scenario as priority and adds a test.
This also fixes an issue where single form colon underline may actually
exist, again from a real world scenario.
2023-08-30 14:58:44 -07:00
Mitchell Hashimoto
fb2d4faa03
terminal: add contrast function based on w3c
2023-08-30 10:18:18 -07:00
Mitchell Hashimoto
0e8412ec19
terminal: add w3c luminance formula
2023-08-30 10:10:45 -07:00
Mitchell Hashimoto
3391908a82
terminal: get rid of duplicate RGB struct
2023-08-30 08:48:57 -07:00
Mitchell Hashimoto
7e846bd367
terminal: tabstops were off by one
...
Fixes #359
See #359 for a test script. The unit tests were also wrong. I used the
test script in #359 to verify the exact column that tabstops should be
set at.
2023-08-29 20:18:54 -07:00
Mitchell Hashimoto
ed5c001690
font/shaper: split ligature around cell style change
2023-08-29 14:09:21 -07:00
Mitchell Hashimoto
2cc1e43716
termio: handle all the synchronized output setting, timer
2023-08-28 11:35:40 -07:00
Mitchell Hashimoto
3b9d5d27ad
terminal: implement DECRQM (request mode)
2023-08-28 08:50:11 -07:00
Mitchell Hashimoto
cbfa22555e
terminal: test to ensure that DECRQM can parse
2023-08-28 08:36:00 -07:00
Mitchell Hashimoto
be27b825f3
terminal: resize with less cols preserves zero width codepoints
2023-08-28 08:18:03 -07:00
Mitchell Hashimoto
c243c9d72e
terminal: screen test dumpString function should add graphemes
2023-08-28 08:07:40 -07:00
Mitchell Hashimoto
e6edf3105e
font: grapheme clusters need to find a single font for all codepoints
...
When font shaping grapheme clusters, we erroneously used the font index
of a font that only matches the first codepoint in the cell. This led to the
combining characters being [usually] unknown and rendering as boxes.
For a grapheme, we must find a font face that has a glyph for _all codepoints_
in the grapheme.
This also fixes an issue where we now properly render the unicode replacement
character if we can't find a font satisfying a codepoint.
2023-08-26 09:35:56 -07:00
Mitchell Hashimoto
86495e826c
Merge pull request #317 from mitchellh/kitty-gfx
...
Kitty Graphics Protocol Initial Support
2023-08-24 08:50:13 -07:00
Mitchell Hashimoto
708d6a4323
terminal/kitty-gfx: todo notes
2023-08-24 08:48:45 -07:00
Mitchell Hashimoto
f2f2b1eaf1
termio/exec: initial subprocess screen size should be sub padding
2023-08-24 08:45:32 -07:00
Mitchell Hashimoto
c962bd0abf
terminal/kitty-gfx: add error if both image id and num is set
2023-08-24 08:33:58 -07:00
Mitchell Hashimoto
ec5dcf0850
terminal/kitty-gfx: do not send response on transmit/display unless I
2023-08-23 22:37:01 -07:00
Mitchell Hashimoto
35f1a9a478
terminal/kitty-gfx: transmission only sends response when no more chunks
2023-08-23 22:01:21 -07:00
Mitchell Hashimoto
bf7054eeb6
terminal/kitty-gfx: ignore extra base64 padding
2023-08-23 21:52:50 -07:00
Mitchell Hashimoto
21ce787cff
terminal/kitty-gfx: data chunk can be zero size
2023-08-23 19:31:46 -07:00
Mitchell Hashimoto
53452bab78
terminal/kitty-gfx: chunked transmit and display
2023-08-23 17:55:41 -07:00
Mitchell Hashimoto
23c7d95ee1
terminal/kitty-gfx: only enable on Metal for now
2023-08-23 17:07:50 -07:00
Mitchell Hashimoto
46ba3189f6
config: image-storage-limit to set maximum image memory per terminal
2023-08-23 16:58:16 -07:00
Mitchell Hashimoto
79ea2ff2db
terminal/kitty-gfx: update todo
2023-08-23 16:45:23 -07:00
Mitchell Hashimoto
83e396044b
terminal/kitty-gfx: add per-screen storage limit
2023-08-23 14:14:31 -07:00
Mitchell Hashimoto
91a4be4ca1
terminal/kitty-gfx: add file loading safety checks from Kitty
2023-08-23 11:52:31 -07:00
Mitchell Hashimoto
135250018e
terminal/kitty-gfx: get rid of selection
2023-08-23 11:41:49 -07:00
Mitchell Hashimoto
de3ef0f78c
terminal/kitty-gfx: hook up delete
2023-08-23 11:37:14 -07:00
Mitchell Hashimoto
81498fe9be
terminal/kitty-gfx: delete newest
2023-08-23 11:35:14 -07:00
Mitchell Hashimoto
c0b58802ba
terminal/kitty-gfx: images store transmit time
2023-08-23 11:17:58 -07:00
Mitchell Hashimoto
73976824a1
terminal/kitty-gfx: delete by column, row, z
2023-08-23 11:12:51 -07:00
Mitchell Hashimoto
6f7a9c4523
terminal/kitty-gfx: we need to use rect, not sel
2023-08-23 11:07:48 -07:00
Mitchell Hashimoto
98f1b55ea4
terminal/kitty-gfx: delete intersection
2023-08-23 11:00:13 -07:00
Mitchell Hashimoto
9ab25ef350
terminal/kitty-gfx: delete intersecting cursor
2023-08-23 10:53:38 -07:00