4361 Commits

Author SHA1 Message Date
Mitchell Hashimoto
a36ae221ae rename font/font.zig to font/main.zig 2022-08-19 09:56:01 -07:00
Mitchell Hashimoto
d16c672771 update Zig, fixed new invalid octal error 2022-08-19 08:58:27 -07:00
Mitchell Hashimoto
1aecfc1061 math style 2022-08-18 11:42:32 -07:00
Mitchell Hashimoto
4dd8924427 clean up ortho2d to do less things 2022-08-18 11:37:29 -07:00
Mitchell Hashimoto
e5c583ccf5 get rid of gb_math and create matrices from scratch 2022-08-18 11:33:28 -07:00
Mitchell Hashimoto
b562eec83c erase display complete should scroll to bottom 2022-08-17 17:24:09 -07:00
Mitchell Hashimoto
16f981a48a Typing a character clears selection, scrolls to bottom 2022-08-17 17:23:58 -07:00
Mitchell Hashimoto
7c50ac2be5 skip a test on stage2, with this the main package tests pass! 2022-08-17 17:06:42 -07:00
Mitchell Hashimoto
5c2edf4d2a Fix some stage2 compilation errors 2022-08-17 14:42:23 -07:00
Mitchell Hashimoto
2f36d5f715 pkg/tracy 2022-08-17 14:03:49 -07:00
Mitchell Hashimoto
ea1e972a29 turn tracy into proper package 2022-08-17 14:02:09 -07:00
Mitchell Hashimoto
2457454b07 test wasm of the term package 2022-08-17 13:57:21 -07:00
Mitchell Hashimoto
ead6e5a435 src/terminal can build into a minimal wasm library, I think 2022-08-17 12:25:53 -07:00
Mitchell Hashimoto
f2d65d4524 move freetype into pkg 2022-08-17 11:20:31 -07:00
Mitchell Hashimoto
b2192ea8f7 move libuv into pkg 2022-08-16 17:47:44 -07:00
Mitchell Hashimoto
3b7a6b78a7 fix ttyWrite calculation to avoid truncating data
the math was wrong. The easiest way to see this was attempting to paste
a large chunk of text, it'd just skip certain parts and truncate it.
2022-08-15 09:57:38 -07:00
Mitchell Hashimoto
e3ddffdf36 don't scale up OpenGL projection in Retina, use true values
This gets rid of blurriness.
2022-08-09 10:21:23 -07:00
Mitchell Hashimoto
f94f3cb5a4 enable retina on Mac, set OpenGL to pixel size properly
This makes things look a bit better, but trades pixelation for blurry
(still TODO). This also fixes an issue on Retina where if you resize
it'd make the viewport 1/4 of the size. The issue here is that OpenGL
uses pixels and glfw uses screen coordinates for everything. We adapt
the screen coords to pixels properly here.
2022-08-09 10:06:30 -07:00
Mitchell Hashimoto
ad1cdbcd59 implement erase display scrollback ("clear" command) 2022-08-09 09:22:34 -07:00
Mitchell Hashimoto
fb5afbedd2 add screen .history tag to fetch scrollback region 2022-08-09 09:18:10 -07:00
Mitchell Hashimoto
57cec33303 set a minimum window size
Fixes #4

The currently picked 10x4 is somewhat arbitrary but matches
Terminal.app. We can make this configurable.
2022-08-09 08:59:45 -07:00
Mitchell Hashimoto
38af14ff3a resize alt screen without reflow 2022-08-08 21:14:27 -07:00
Mitchell Hashimoto
f82493cccf when growing cols, adjust viewport and cursor if we shorten 2022-08-08 20:52:36 -07:00
Mitchell Hashimoto
16a5a45293 when growing rows, offset cursor by added rows 2022-08-08 18:14:11 -07:00
Mitchell Hashimoto
d551f1126b when less cols, cursor needs to be in screen space, not viewport 2022-08-08 17:47:16 -07:00
Mitchell Hashimoto
113b5a318b when shrinking rows, clear empty space from the end (see test case) 2022-08-08 17:24:10 -07:00
Mitchell Hashimoto
a2cf116063 fix a crash when reflowing to smaller cols but still buggy 2022-08-08 14:20:52 -07:00
Mitchell Hashimoto
f3d3d255fb handle case where cursor is past where content is on col shrink 2022-08-08 14:08:01 -07:00
Mitchell Hashimoto
9493561159 assertions to save our bacon 2022-08-08 14:03:14 -07:00
Mitchell Hashimoto
e4c8bbd394 reflow cursor when shrinking cols 2022-08-08 14:02:28 -07:00
Mitchell Hashimoto
6fa4cb07c7 more cursor reflow 2022-08-08 13:56:09 -07:00
Mitchell Hashimoto
bfbeceeefa when cols grow, move cursor if it unwraps the line it is on 2022-08-08 13:47:49 -07:00
Mitchell Hashimoto
9ddb19e9b0 replace old resize with new reflow resize 2022-08-08 13:06:01 -07:00
Mitchell Hashimoto
f97b739317 reflow when columns get smaller 2022-08-08 13:04:27 -07:00
Mitchell Hashimoto
8a5dadd995 rowIndex uses tag max so we have max in just one place 2022-08-08 10:38:24 -07:00
Mitchell Hashimoto
57f6986343 rowIterator(.screen) now ignores unused lines, fixes shrinking rows 2022-08-08 10:32:42 -07:00
Mitchell Hashimoto
4ef73efeac resize less rows, but currently not 100% working (see commented tests) 2022-08-08 10:28:11 -07:00
Mitchell Hashimoto
2cf4a265e5 reflow when cols grow 2022-08-08 09:39:55 -07:00
Mitchell Hashimoto
dc351582bc resize increasing column width without reflow 2022-08-07 16:23:23 -07:00
Mitchell Hashimoto
be3a539152 start working on new resize with reflow, can grow rows 2022-08-07 15:52:53 -07:00
Mitchell Hashimoto
039b640f6b Merge branch 'reflow'
This actually doesn't implement reflow but I wanted to merge this
because it has an important refactor and clarity around screen
operations.

It is now clearly defined in the API what portion of the screen you're
accessing (active, viewport, etc.) and the terminal only operates on the
active area (fixing TODO item in diff).

This is all groundwork I found was necessary to even start thinking
about reflow.
2022-08-07 10:47:27 -07:00
Mitchell Hashimoto
2d6d027097 Screen.region to get a region of contiguous memory for a tag 2022-08-07 10:46:35 -07:00
Mitchell Hashimoto
92602dafca rowIterator takes the tag type to iterate over 2022-08-07 10:26:04 -07:00
Mitchell Hashimoto
05e0adaa01 screen operations operate on the active area
This fixes tons of bugs around escape sequences while scrolling that
used to work on the offset from the viewport (which is wrong). This now
calculates the actual active area and does that. This also fixes the
TODO in the diff.
2022-08-07 09:49:54 -07:00
Mitchell Hashimoto
8ea20f9e41 start changing getRow and rowIndex to use tagged indexes
Lots of bugs here, but it MATCHES the bugs!
2022-08-07 09:41:30 -07:00
Mitchell Hashimoto
1da5ca0a7f mouse xpos/ypos can be negative or larger than window size
When calculating the viewport point, we need to consider this. We clamp
the possible values to [0, width/height - 1]. Fixes #1.
2022-08-06 16:05:32 -07:00
Mitchell Hashimoto
109e2a67ab selectionString: realloc so free gets the correct length 2022-08-06 15:50:25 -07:00
Mitchell Hashimoto
9d26ab2dc8 memset zero values when resizing a screen
Zig safety checks save us! It was setting undefined values to `0xAA` and
we caught that in a crash. We need to zero this memory.

Practically this happened when `cat`-ing a large file, then attempting
to select and copy any blank trailing space.
2022-08-06 15:44:20 -07:00
Mitchell Hashimoto
c99a79055c HPA does nothing when status display is active 2022-08-05 19:56:40 -07:00
Mitchell Hashimoto
ce6f022a7e cursor should be a hollow rect on unfocus, regression from e163e4962baad09cd2c36be1529dee4fcf1220b0 2022-08-05 19:26:50 -07:00