334 Commits

Author SHA1 Message Date
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
Mitchell Hashimoto
e18a77739c terminal: screen lineIterator 2024-03-22 20:28:05 -07:00
Mitchell Hashimoto
f4fa54984c terminal: selectLine can disable whitespace/sem prompt splitting 2024-03-22 20:28:05 -07:00
Mitchell Hashimoto
a59d4286c7 terminal: adjust page capacity for graphemes if necessary 2024-03-22 20:28:04 -07:00
Mitchell Hashimoto
935063d892 core: scroll to selection working 2024-03-22 20:28:01 -07:00
Mitchell Hashimoto
7ae9b0c469 terminal: screen clone that doesn't have sel should set null sel 2024-03-22 20:28:01 -07:00
Mitchell Hashimoto
9351cab038 terminal: Screen clone should preserve selection order 2024-03-22 20:28:01 -07:00
Mitchell Hashimoto
44d320a23e terminal: selectionString should use proper ordered 2024-03-22 20:28:01 -07:00
Mitchell Hashimoto
992c736986 terminal: dumpScreen handles wrap 2024-03-22 20:28:00 -07:00
Mitchell Hashimoto
5813304358 terminal: dumpString options 2024-03-22 20:28:00 -07:00
Mitchell Hashimoto
0a6735d05d terminal: jump to prompt 2024-03-22 20:28:00 -07:00
Mitchell Hashimoto
65909df9f9 terminal: commented log line to see active style count 2024-03-22 20:27:59 -07:00
Mitchell Hashimoto
dc04cc1317 terminal: handle style ID overflow 2024-03-22 20:27:59 -07:00
Mitchell Hashimoto
5e68bc60e0 terminal: resize page on unique style per cell 2024-03-22 20:27:59 -07:00
Mitchell Hashimoto
4d0f210025 core: double-click drag 2024-03-22 20:27:56 -07:00
Mitchell Hashimoto
48d40793e7 terminal: bring back clearPromptForResize, with tests! 2024-03-22 20:27:55 -07:00
Mitchell Hashimoto
ba4f2eeee2 terminal: Screen.clone preserves selection 2024-03-22 20:27:52 -07:00
Mitchell Hashimoto
ef6bb1de64 terminal: Screen clone preserves cursor 2024-03-22 20:27:52 -07:00
Mitchell Hashimoto
45c38c6d8b terminal: clone uses opts struct 2024-03-22 20:27:52 -07:00
Mitchell Hashimoto
fdbda5365e terminal: do not set selection manually 2024-03-22 20:27:51 -07:00