Commit graph

45 commits

Author SHA1 Message Date
0d59116012 Update dependencies 2023-02-11 21:21:14 +01:00
0a3b193f79 Fix clippy lint 2023-01-05 17:34:30 +01:00
8942b381f5 Add and fix some lints 2022-12-11 20:44:06 +01:00
06aefd562b Remove wrap method from Frame 2022-09-26 17:34:38 +02:00
f48901f543 Expose WidthDb from Terminal 2022-09-26 17:21:48 +02:00
6ed47ad916 Rename WidthDB to WidthDb 2022-09-26 17:01:49 +02:00
f258c84094 Expose Widthdb directly via Frame 2022-09-26 17:00:46 +02:00
24fd0050fb Fix drawing widgets on cursor not removing cursor 2022-09-08 18:13:13 +02:00
45ece466c2 Support more modifiers on some terminal emulators
If a terminal emulator supports the kitty protocol, this change will
allow cove to take advantage of this. This means that more modifiers
will work on special keys like enter or escape.

See also this section of the kitty protocol docs:
https://sw.kovidgoyal.net/kitty/keyboard-protocol/#disambiguate-escape-codes
2022-08-11 23:15:12 +02:00
7e42913245 Enable bracketed paste mode in Terminal
Only on non-windows platforms though, crossterm doesn't support paste
events on windows.
2022-08-10 23:53:54 +02:00
fbe9e065fc Update dependencies 2022-08-10 22:51:22 +02:00
5957e8e550 Fix tab width calculations when word wrapping 2022-08-04 02:59:00 +02:00
3b2a2105fe Fix incorrect width for tab-replacing spaces 2022-08-04 02:18:18 +02:00
31bb2de87b Make WidthDB tab-width-aware 2022-08-04 02:18:18 +02:00
d186291ef7 Fix word wrapping with successive forced breaks
If there were multiple forced breaks in succession, all except the first
would be a bit too wide since I forgot to include the current grapheme
in the new line's width.
2022-08-03 21:57:15 +02:00
dfc10f9d09 Fix splitting Styleds 2022-08-03 13:22:38 +02:00
26a8936cf5 Store Styled with contiguous string
The previous implementation of Styled used chunks that consisted of a
String and a ContentStyle. The current implementation instead stores a
single String and chunks consisting of a ContentStyle and an ending
index.

This implementation may reduce allocations and makes width-related
operations easier, for example getting the width of a Styled with its
whitespace trimmed.
2022-08-01 19:02:57 +02:00
464aefa6d7 Forbid stack frames from expanding the drawable area 2022-08-01 00:06:36 +02:00
c1907bb8ee Fix frame cursor functions ignoring stack 2022-07-23 22:24:28 +02:00
53b2728c82 Fix Size subtraction 2022-07-21 14:31:23 +02:00
14aedaf252 Add stack of drawable areas
This lets the user restrict the drawable area to a sub-area of the
buffer. This lets the user draw without caring about the absolute
position, and guarantees that no glyphs or glyph parts appear outside of
the drawable area.
2022-07-13 11:19:19 +02:00
e4e1454e80 Calculate width of Styleds directly 2022-07-12 10:22:30 +02:00
d693712dab Expose tab width calculation 2022-07-07 16:21:05 +02:00
f0af4ddc40 Expose chunks and chunk contents 2022-07-07 16:18:51 +02:00
26bf89023e Update dependencies 2022-07-06 11:21:18 +02:00
ee9d6018c0 Add constructors and traits for Size and Pos 2022-07-04 19:38:28 +02:00
11b2211fad Improve word wrapping
Now supports long trailing whitespace as well as tabs.
2022-07-04 19:38:28 +02:00
9b0d80873f Use styled chunks of text instead of plain strings 2022-07-04 19:38:28 +02:00
761519c1a7 Suspend and unsuspend terminal 2022-06-17 20:02:51 +02:00
a0602a941c Fix examples 2022-06-15 14:02:30 +02:00
333cf74fba Make width measuring optional and disabled by default 2022-06-08 17:38:38 +02:00
33264b4aec Remove TODO 2022-05-29 13:18:39 +02:00
6b9e4cbc63 Ignore graphemes of width 0 when writing to buffer 2022-05-29 13:18:39 +02:00
37634139b0 Wrap text in a unicode-aware way 2022-05-29 13:18:39 +02:00
8fae7d2bf1 Return Redraw enum instead of bool
Boolean values were too easy to accidentally interpret the wrong way.
2022-05-29 13:18:25 +02:00
3b2ea37ba5 Get individual grapheme's width 2022-05-29 13:18:25 +02:00
833defd1ce Document WidthDB 2022-05-29 13:18:25 +02:00
79e8813884 Restore cursor on exit 2022-05-29 13:18:25 +02:00
fe424b3376 Fix grapheme rendering
Previously, when overwriting wide graphemes, those were not first
cleared from the buffer. This could sometimes result in partial
graphemes, which is an invalid buffer state.

Now, when a wide grapheme is overwritten, it is removed from the buffer
entirely and replaced with spaces. Those spaces retain the style of the
removed grapheme.

A similar thing now happens with graphemes that only partially overlap
the buffer, either on the left or the right border. Those parts that are
inside the buffer are rendered as spaces with the grapheme's style.
2022-05-29 13:18:25 +02:00
67f8919630 Only draw differences from previous frame 2022-05-29 13:18:25 +02:00
9512ddaa3b Measure actual width of displayed characters 2022-05-29 13:18:25 +02:00
add2f25aba Use Frame for rendering instead of Buffer 2022-05-21 22:33:39 +02:00
cc2f102141 Position cursor via buffer 2022-05-21 21:07:24 +02:00
bbaea3b5bf Create simple terminal and buffer abstractions 2022-05-21 20:53:32 +02:00
704bb67c7b Create project 2022-05-21 00:15:53 +02:00