Commit graph

307 commits

Author SHA1 Message Date
Tim Culverhouse
ecb2ea20e4 widgets(terminal): more c0 control impls 2024-06-10 14:18:32 -05:00
Tim Culverhouse
3ff47e6845 widgets(terminal): remove comment 2024-06-10 14:18:32 -05:00
Tim Culverhouse
f21559cc51 widgets(terminal): begin terminal widget 2024-06-10 14:18:32 -05:00
Tim Culverhouse
f76b573a0b parser: fix remaining decrpm test
This test was passing because it's not meant to find the event. However
it was still using the wrong input
2024-06-10 14:17:48 -05:00
Tim Culverhouse
9c5e8898cd parser: fix parsing of DECRPM and tests
We were looking for the wrong sequence
2024-06-10 14:00:51 -05:00
CJ van den Berg
a69cf3273d build: export some symbols for thespian.Loop 2024-06-10 04:43:43 -07:00
Tim Culverhouse
180b6df4f6 ci: update docs runner to zig v0.13.0 2024-06-09 20:31:02 -05:00
Tim Culverhouse
75ac36ca61 update zig version in readme 2024-06-09 06:54:45 -05:00
Rylee Alanza Lyman
b7946a3393 fix: update test runner to 0.13.0 2024-06-09 04:53:58 -07:00
Rylee Lyman
e2c19c3c8f fix: update to zig 0.13, broken test 2024-06-09 04:53:58 -07:00
Jari Vetoniemi
9bbcebb7bc ScrollView: do scroll bounds checking early
The ScrollView will panic if scroll.y is given a number that is outside
the content size.
2024-06-08 19:45:22 -07:00
Tim Culverhouse
5a438e54f1 update GapBuffer and gitignore
In preparation for zig 0.13.0
2024-06-07 06:38:45 -05:00
Tim Culverhouse
0cb81e30eb parser: fix handling of function keys with kitty encoding 2024-06-05 12:52:49 -05:00
Tim Culverhouse
3c29f18251 examples(text_input): use all kitty flags 2024-06-05 12:37:27 -05:00
Tim Culverhouse
91152eecdf parser: remove log line 2024-06-05 11:56:08 -05:00
Tim Culverhouse
43a714de0c parser: fix query responses for kitty kbd, decrpm 2024-06-05 11:49:03 -05:00
Tim Culverhouse
4d9a0cc8d4 ci: add test and fmt PR workflow 2024-06-05 09:41:41 -05:00
CJ van den Berg
d21940bdbd build: make most dependencies optional 2024-06-05 07:31:46 -07:00
Tim Culverhouse
b2ffc953dd Release version 0.2.0 2024-06-05 08:53:15 -05:00
Tim Culverhouse
e8670bd585 tty(windows): refactor and complete windows tty
Refactor the tty implementations. Complete the windows implementation
2024-06-05 06:31:18 -07:00
Jari Vetoniemi
54def846bf TextView: add Error to buffer operations
Typed error sets are nice to have.
2024-06-04 12:07:25 -07:00
Jari Vetoniemi
71b8ecc7c2 TextView: fix cols when appending to a buffer
If appending to a buffer through writer for example, the cols may not be
correct if the writes don't end up in a newline (\n). Fix this by
keeping track of the cols of previous append.
2024-06-04 12:07:25 -07:00
Tim Culverhouse
ef028bfe72 examples: remove pause_tui 2024-06-03 08:19:40 -05:00
Tim Culverhouse
84cd9fdebe fix(loop): fix stopping and starting of loop
When stopping the loop, we never reset `should_quit` which caused the
program to not read any input if the loop were started again
2024-06-03 07:36:12 -05:00
Tim Culverhouse
052ff24c2f mouse: enable button motion tracking and any motion
Zellij doesn't support any motion at time of this commit, so we also try
to enable button motion first
2024-06-03 06:19:02 -05:00
Tim Culverhouse
3ea76daf28 vaxis: remove fixme 2024-06-02 17:58:32 -05:00
Tim Culverhouse
3ff1d0749a vaxis: use legacy sgrs for VHS_RECORD 2024-06-02 17:49:08 -05:00
Tim Culverhouse
83cfc4f318 readme: fix example
Fixes: #36
2024-06-02 17:48:56 -05:00
Tim Culverhouse
7014a38a9c readme: add gif 2024-06-02 07:19:28 -05:00
Tim Culverhouse
6b6807d9ec resize: reset cursor sgr prior to erasing screen
Reset cursor sgr to prevent erasing the screen with some unknown
background color.
2024-06-01 06:52:21 -05:00
Tim Culverhouse
7f29e9f720 update xev 2024-05-31 18:51:06 -05:00
Jari Vetoniemi
ee113c4269 widgets: add CodeView widget
CodeView widget allows viewing code in a more visually pleasing manner.
It combines LineNumbers widget to provide line numbers on the side.
The CodeView widget allows you to optionally highlight a specific line
and show indentation guidelines.

It is not intended to be a fully fledged editor, but rather for showing
code snippets to a user.

While it is not a fully fledged editor, this widget's code can give you
a good starting point.
2024-05-31 18:21:54 -05:00
Jari Vetoniemi
84b4821d43 widgets: add TextView widget
The TextView widget provides a simple way to show text content in
a scrollable window.

This implementation does not offer automatic line wrapping for now.

Text content is backed by the Buffer struct. The buffer can be styled
for visually appealing and colorful content, for example to provide
a syntax highlighting.

The buffer provides a writer() interface which allows providing content
from a stream, such as logging.
2024-05-31 18:21:54 -05:00
Jari Vetoniemi
b215aec75b widgets: add LineNumbers widget
The LineNumbers widget draws vertical list of numbers.
This can be used as a line number bar for a text editor for example.
2024-05-31 18:21:54 -05:00
Jari Vetoniemi
f25b8ab421 widgets: add ScrollView widget
The ScrollView widget can be used to introduce scrollable elements into
existing widgets.

To use the ScrollView, you must use the ScrollView's writeCell and
readCell functions rather than the ones from Window.
2024-05-31 18:21:54 -05:00
Rylee Lyman
fbaa6ca8df fix: manually reschedule to avoid hang on macOS
libxev's .rearm semantics are unfortunately not very
portable---rescheduling the exact same event on macOS / kqueue seems
to cause the event loop to hang, while manually rescheduling and
returning .disarm does not.
2024-05-31 11:17:08 -05:00
Tim Culverhouse
49cc8ae7c4 xev: change log scope
We don't want the scope to look like it's from the xev library
2024-05-30 16:03:59 -05:00
Tim Culverhouse
00afc7c130 examples(xev): don't render in the eventCallback 2024-05-30 12:05:18 -05:00
Tim Culverhouse
d294428b74 examples(xev): duplicate functionality of vaxis example
The xev example is now a complete replication of the vaxis example, but
using xev as the event loop
2024-05-30 11:10:03 -05:00
Tim Culverhouse
335ea9f2d0 xev: fix todos 2024-05-30 10:06:28 -05:00
Tim Culverhouse
bbd9184e00 loop: add an xev loop implementation
This loop adds an xev.File wrapper called TtyWatcher which delivers
events to the users callback. Note that this implementation does not
handle any of the writes. Writes are always safe in the main thread, so
we let users decide how they will schedule those (buffered writers, xev
writes, etc)
2024-05-30 09:43:48 -05:00
Tim Culverhouse
04f1586e8f vaxis: add panic handler function
Applications may use this to handle panics gracefully
2024-05-30 09:43:48 -05:00
Jari Vetoniemi
ba4caa0767 build.zig.zon: fix paths
Use single "src" element in paths to include everything under src/
The Tty.zig was renamed to tty.zig and that was not picked up
2024-05-30 06:38:38 -05:00
Tim Culverhouse
288b8cac75 build: remove some examples 2024-05-29 13:16:35 -05:00
Tim Culverhouse
5f41978054 refactor(vaxis): require an io.AnyWriter for writes
All vaxis functions that write to the terminal now require an
io.AnyWriter as a parameter
2024-05-29 13:13:54 -05:00
Tim Culverhouse
59abd7d7d4 refactor(vaxis): move tty out of vaxis
Refactor to move the tty out of the vaxis struct. All vaxis writes now
take an io.AnyWriter
2024-05-29 11:33:39 -05:00
Tim Culverhouse
cf2d2ab50b GraphemeCache: remove testing alias 2024-05-29 10:27:59 -05:00
Tim Culverhouse
572bb8ba6a image: remove testing alias 2024-05-29 10:26:28 -05:00
Tim Culverhouse
d7c3a7496d refactor(tty): move state into Vaxis struct
Move tty state (*not* termios, though) into Vaxis struct
2024-05-28 12:18:07 -05:00
Tim Culverhouse
49003b0e2b refactor(parser): make parser easier to read and more robust
Refactor the parser to be more robust and easier to read.
2024-05-28 10:33:36 -05:00