Mitchell Hashimoto
925ad5b45c
renderer: match multiple lines for osc8
2024-07-05 21:40:39 -07:00
Mitchell Hashimoto
961a4b6b31
terminal: support page oom with hyperlinks
2024-07-05 21:40:39 -07:00
Mitchell Hashimoto
57c5522a6b
terminal: handle moving/swapping/clearing cells with hyperlinks
2024-07-05 21:40:38 -07:00
Mitchell Hashimoto
c880bb6f45
terminal: test hyperlink reuse shares ID
2024-07-05 21:40:37 -07:00
Mitchell Hashimoto
d1f41e2035
terminal: hyperlink start/end on screen
2024-07-05 21:39:55 -07:00
Mitchell Hashimoto
a71b487d58
terminal: add strings table to page
2024-07-05 21:39:07 -07:00
Mitchell Hashimoto
92ffa9af13
terminal: when adjusting page capacity, account for cursor ref counts
...
This fixes an issue where when we adjusted the capacity of the page, the
style ref count would be off by one (short by one).
The issue is that when adjusting the capacity of a page, it happens on
PageList which is unware of cursor state and therefore can't ensure to
reference the active style.
This creates an `adjustCapacity` call on `Screen` which can properly
handle this scenario.
2024-07-05 21:33:05 -07:00
Mitchell Hashimoto
1a22bc7f3b
terminal: if cloned screen is subset of selection, select full screen
...
Fixes #1859
2024-06-25 09:45:36 -07:00
Qwerasd
93b038f490
fix(RefCountedSet): add NeedsRehash error and fix PSL counting bug
...
Prevent bad input from causing repeated OutOfMemory errors by erroring
with NeedsRehash instead when there are unused dead IDs available.
Additionally, properly decrement PSL stats when reviving dead IDs.
2024-06-24 20:32:22 -07:00
Qwerasd
9741b3a18c
perf: introduce RefCountedSet structure, use it for Style.Set
2024-06-13 22:59:03 -04:00
Mitchell Hashimoto
0d94fb61c9
terminal: all cursor movement needs to mark the old and new page dirty
2024-06-07 15:03:02 -07:00
Mitchell Hashimoto
c2b0bb6395
terminal: mark old/new rows as dirty when moving the cursor absolute
2024-06-07 14:55:02 -07:00
Mitchell Hashimoto
a1372a0efd
terminal: more dirty tracking
2024-05-07 09:55:32 -07:00
Mitchell Hashimoto
3cfce658c3
terminal: dirty tracking in more places, tests coverage
2024-05-07 09:52:03 -07:00
Mitchell Hashimoto
d3abe65ad6
terminal: only set selection dirty to true on clear if previously set
2024-05-06 18:35:51 -07:00
Mitchell Hashimoto
7c9ce0af73
terminal: Screen selection marks dirty
2024-05-01 20:41:53 -07:00
Mitchell Hashimoto
fb25f5cea1
terminal: more dirty tests
2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
11c195e493
terminal: dirty tracking on print
with tests
2024-05-01 20:31:48 -07:00
Mitchell Hashimoto
3f16234f72
terminal: Coordinate uses CellCountInt
2024-04-26 20:52:08 -07:00
Mitchell Hashimoto
9ea78f981e
terminal: index (LF) that scrolls scroll region preserves SGR
...
Fixes #1676
The comment in the diff explains. This is a regression that was not unit
tested properly in the old implementation prior to the paged-terminal
merge.
2024-04-13 21:31:41 -07:00
Qwerasd
be07856647
fix(terminal/Screen): selectionString multi-page
...
Corrected logic for detecting if the current row is the end of the
selection. Previous logic was faulty because when I calculated the
current page y incorrectly, not realizing that it was already
available as `y`.
2024-04-04 17:59:42 -04:00
Qwerasd
b03f80cadd
terminal/Screen: improve selectionString page test
...
More readable (smaller) output when failing, catches more edge cases.
At the time of this commit, this test is failing. Changed primarily to
address the edge case that was missed before.
2024-04-04 17:44:06 -04:00
Qwerasd
8be145ec1f
fix(terminal/Sreen): selectionString across pages
...
Newlines after rows should only be omitted on the final row of the
entire SELECTION, not on the final row of each page/chunk.
2024-04-03 20:03:25 -04:00
Qwerasd
fa5646e762
test(terminal/Screen): selectionString across page boundaries
2024-04-03 19:28:02 -04:00
Qwerasd
51d3c2cf35
fix(kitty_graphics): set dirty state on various scroll operations
2024-03-31 21:49:28 -04:00
Qwerasd
5b509f9295
test(terminal/Screen): clearRows with protected cells
2024-03-29 16:47:53 -04:00
Qwerasd
925c7e86a2
fix(terminal): insert/deleteLines boundary cond.s
...
Introduced a helper function for correctly handling boundary conditions
in insertLines and deleteLines. Also adds a whole host of tests for said
conditions in deleteLines, tests not duplicated for insertLines because
they both use the same helper function.
2024-03-29 16:29:27 -04:00
Qwerasd
e55f2daf90
perf(terminal): clear unprotected cells in spans
...
Previous behavior of clearing one at a time hit a page integrity assertion after clearing a wide character but not its tail. This fixes that and should also be - in theory - significantly more performant as well by identifying spans of unprotected cells and clearing them in bulk.
2024-03-29 13:08:38 -04:00
Mitchell Hashimoto
dce96847a9
terminal: test eraseRowBounded, fix off by ones
2024-03-27 20:23:45 -07:00
Mitchell Hashimoto
8d4f454e30
terminal: add integrity assertion that cursor pin matches x/y
2024-03-27 13:42:11 -07:00
Qwerasd
0a6ef3fda4
wip(terminal): Fast path for scroll regions
2024-03-26 12:07:35 -06:00
Mitchell Hashimoto
36240b897c
terminal: many more assertions around spacer state
2024-03-24 20:27:47 -07:00
Mitchell Hashimoto
9685a56941
terminal: clear unprotected row should preserve row attrs
2024-03-22 20:28:23 -07:00
Mitchell Hashimoto
cd30534808
terminal: no scrollback eraseRows needs to fix style
2024-03-22 20:28:23 -07:00
Mitchell Hashimoto
65696c9900
terminal: clearcells only decs cursor ref if same page
2024-03-22 20:28:22 -07:00
Mitchell Hashimoto
3b6ae6807c
terminal: add more integrity assertions
2024-03-22 20:28:22 -07:00
Mitchell Hashimoto
731f917350
terminal: add Screen integrity checks, pepper them through cursors
2024-03-22 20:28:22 -07:00
Mitchell Hashimoto
1649641d18
terminal: add some integrity assertions
2024-03-22 20:28:22 -07:00
Mitchell Hashimoto
3513b1cdc2
terminal: properly clear style in error scenario
2024-03-22 20:28:18 -07:00
Mitchell Hashimoto
91602a4ce7
terminal: Screen scroll test and handle single row screens
2024-03-22 20:28:15 -07:00
Mitchell Hashimoto
9e42ee0dc9
terminal: all cursorReload scenarios should check style data
2024-03-22 20:28:13 -07:00
Mitchell Hashimoto
f67b95136d
terminal: in all cursor move cases, we need to account for page changes
2024-03-22 20:28:13 -07:00
Mitchell Hashimoto
77362d9aa7
terminal: resize should preserve cursor style ref
2024-03-22 20:28:13 -07:00
Mitchell Hashimoto
a40899fa3c
terminal: only reload style if we're on a new page on scroll
2024-03-22 20:28:12 -07:00
Mitchell Hashimoto
631fdf00a8
terminal: style needs to be copied to new page on scroll
2024-03-22 20:28:12 -07:00
Mitchell Hashimoto
1c57bbabda
termio/exec: clear screen should erase rows and shift up
2024-03-22 20:28:12 -07:00
Mitchell Hashimoto
f0e3516c34
terminal: fix off-by-one tracked pin issues when page is pruned
2024-03-22 20:28:06 -07:00
Mitchell Hashimoto
1ac0980ea0
terminal: pruned pages should keep tracked pins in top-left
2024-03-22 20:28:06 -07:00
Mitchell Hashimoto
d664840b7f
terminal: add StringMap back
2024-03-22 20:28:05 -07:00
Mitchell Hashimoto
bca51ee771
terminal: selectionString takes a struct for opts
2024-03-22 20:28:05 -07:00