381 Commits

Author SHA1 Message Date
Mitchell Hashimoto
7b651627d5 core: surface confirm close logic updated to handle semantic prompts 2023-05-27 16:00:35 -07:00
Mitchell Hashimoto
de00892f8e termio/exec: handle semantic prompt events 2023-05-27 15:48:31 -07:00
Mitchell Hashimoto
4047a90555 terminal: track semantic prompt metadata per row 2023-05-27 15:45:51 -07:00
Mitchell Hashimoto
80402b655c update zig 2023-05-25 21:47:05 -07:00
Mitchell Hashimoto
b196e43ee4 fix some issues for future Zig update 2023-05-19 08:34:07 -07:00
Mitchell Hashimoto
97d9157d22 update zig version 2023-05-07 20:50:51 -07:00
Mitchell Hashimoto
d856aba84c selection toViewport point should extend to end of last row
Fixes #138
2023-03-28 09:30:47 -07:00
Mitchell Hashimoto
01c053d7fc terminal: parser must reset intermediate storage for utf8 2023-03-24 14:47:03 -07:00
Mitchell Hashimoto
5225836415 terminal: selectWord stops at single/double quote boundaries 2023-03-23 10:48:03 -07:00
Mitchell Hashimoto
2be4eb0da7 font/shaper: split runs at selection boundaries 2023-03-23 10:24:22 -07:00
Mitchell Hashimoto
d4cbe88c98 selection: containedRow for getting the row that contains a screen point 2023-03-23 10:01:09 -07:00
Mitchell Hashimoto
bf699dd381 terminal: selection within logic is more correct, better tested
Fixes #108
2023-03-21 19:55:56 -07:00
Mitchell Hashimoto
70236ebc33 terminal: screen scroll with full scrollback modifies selection 2023-03-21 10:59:44 -07:00
Mitchell Hashimoto
dfb40426a0 move selection to screen 2023-03-21 10:43:50 -07:00
Mitchell Hashimoto
b1af02941a terminal: implement focus event mode 1004
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-FocusIn_FocusOut
2023-03-20 15:20:14 -07:00
Mitchell Hashimoto
1b88f7e9ab support mouse alt scroll (mode 1007)
This enables less and other older legacy programs to get mouse scroll
events
2023-03-17 19:10:08 -07:00
Mitchell Hashimoto
f79d9ba3a7 fix regression where BEL is accepted to end OSC sequences 2023-03-17 14:18:34 -07:00
Mitchell Hashimoto
4b57a715b0 terminal: clean up duplicate states in parse table 2023-03-17 14:07:24 -07:00
Mitchell Hashimoto
38cd496c82 terminal: add missing anywhere states to ground, get rid of real state 2023-03-17 13:46:59 -07:00
Mitchell Hashimoto
54d6654d8b terminal: selectLine can select last line with scrollback
We had incorrect logic around when the line you want to select is the
last line and it crashed. A new test case covers this.
2023-03-17 11:07:43 -07:00
Mitchell Hashimoto
4ececc8923 screen: resize rows should use old cols value 2023-03-02 13:46:58 -08:00
Mitchell Hashimoto
5573df4947 terminal: erase display complete needs to reset row wrap state 2023-03-02 13:20:06 -08:00
Mitchell Hashimoto
ba96a2c023 screen: adding cols doesn't mess with the viewport
This was untested anyways, and the result was bugs!
2023-03-01 22:14:19 -08:00
Mitchell Hashimoto
28378a350d screen: shrinking cols trims trailing blank lines 2023-03-01 22:01:42 -08:00
Mitchell Hashimoto
05fe2a83b1 terminal: erase display below should unwrap soft wrapped state 2023-03-01 21:30:31 -08:00
Mitchell Hashimoto
56cb1dd55b screen: correct cursor position with scrollback and less cols 2023-03-01 21:06:33 -08:00
Mitchell Hashimoto
979dc5a439 screen: redo resizing to less columns
This is more performant (prefers fast copies if no wrapping) and keeps
track of the cursor more accurately.
2023-03-01 20:59:35 -08:00
Mitchell Hashimoto
3b586c39c5 screen: grow cols before rows to handle reflow (tested) 2023-03-01 19:45:39 -08:00
Mitchell Hashimoto
74f0e38b57 screen: only trim if we're not wrapping on col growing 2023-03-01 17:42:46 -08:00
Mitchell Hashimoto
9a4a138da0 screen: don't wrap empty-char stylized cells on shrinking cols 2023-03-01 17:34:17 -08:00
Mitchell Hashimoto
31ac3ec7ba screen: when expanding cols, broadcast empty styled cells 2023-03-01 17:24:24 -08:00
Mitchell Hashimoto
89138cf7e3 screen: don't trim blank lines if rows aren't changing 2023-03-01 17:09:57 -08:00
Mitchell Hashimoto
b4d8419feb screen: trim trailing no-character cells when rows is changing
This matches Terminal.app, and makes it so the `ESC [ J` doesn't
generate scrollback on rows change.
2023-03-01 17:07:07 -08:00
Mitchell Hashimoto
d4057522ee screen: resize more rows preserves soft wrapped flag 2023-03-01 09:18:26 -08:00
Mitchell Hashimoto
5f9ab91466 screen: fix issue with resizing w/ more cols, reflow, and scrollback 2023-03-01 09:08:08 -08:00
Mitchell Hashimoto
1970a84960 screen: when resizing and trimming scrollback, have to offset cursor Y
When the scrollback is trimmed off the top, the y stops moving. This
would cause an assertion failure because y could be greater than the row
count! The test case tests this.
2023-02-28 22:28:27 -08:00
Mitchell Hashimoto
87e0f5589f screen clone should not make full requested height "written"
Previously, the screen clone would incidentally mark the full height as
"written" which would cause resize to create scrollback because it was
trying to preserve prior rows. A clone should not "write" any data. This
modifies the clone operation to create a screen with the correct height
but only copy data actually written.
2023-02-28 17:10:28 -08:00
Mitchell Hashimoto
ce86c64b42 update zig, src for loops 2023-02-27 21:46:42 -08:00
Mitchell Hashimoto
df52fae76a terminal: check OSC parser for tmux 112 sequences from HN
Saw this on HN:
https://github.com/darrenstarr/VtNetCore/pull/14

I wanted to see if ghostty was vulnerable to it (it is not). But, its a
good example of a weird edge case in the wild and I wanted to make sure
it was redundantly tested. It looks like we read the "spec" (blog posts,
man pages, source of other terminal using tools, etc.) right.
2023-01-17 21:47:38 -08:00
Mitchell Hashimoto
e210c91d10 update zig version, update @call for newer zig version 2022-12-16 22:34:54 -08:00
Mitchell Hashimoto
ad9b773cd8 terminal: printing char outside of ASCII with non-UTF8 charset is space 2022-12-14 21:50:32 -08:00
Mitchell Hashimoto
4fae29ff13 terminal: scrollRegionUp outside of range does nothing 2022-12-14 21:43:47 -08:00
Mitchell Hashimoto
6f451f22bb terminal: only clear wide spacer head if wide char is not on first line 2022-12-14 21:39:45 -08:00
Mitchell Hashimoto
8534e5a186 terminal: insertLines with count 0 no longer crashes 2022-12-14 21:29:06 -08:00
Mitchell Hashimoto
0592e4fa1a terminal: osc parser gracefully handles input data larger than buffer 2022-12-14 21:24:43 -08:00
Mitchell Hashimoto
c7a28fab20 terminal: don't crash if cell claims to have grapheme but doesn't 2022-12-14 21:19:23 -08:00
Mitchell Hashimoto
4a3e2b35b9 terminal: parse table needs to have room for all chars 2022-12-14 21:10:22 -08:00
Mitchell Hashimoto
36c6e95dfc terminal: ignore invalid C0 escape codes 2022-12-14 20:57:31 -08:00
Mitchell Hashimoto
c01a9f583f zero-width chars are ignored if they're at col 0
This can cause a crash, and is impossible since zero-width chars are
always attached to a prior character. Word-wrapping doesn't come into
play here because this check happens prior to the wrapping.
2022-12-14 19:20:05 -08:00
Mitchell Hashimoto
10f708ee65 wasm: export terminal core API 2022-12-05 21:27:20 -08:00