Commit Graph

342 Commits

Author SHA1 Message Date
Kartik K. Agaram 3865fd86cd delete an unused arg 2023-07-31 14:20:53 -07:00
Kartik K. Agaram 6a644f3e44 bugfix: render text in given fg color 2023-07-31 12:01:18 -07:00
Kartik K. Agaram 47dd4a6785 Merge text0 2023-07-31 11:08:52 -07:00
Kartik K. Agaram e8a90c616d Merge text.love 2023-07-31 10:59:28 -07:00
Kartik K. Agaram 3b88c6540d Merge lines.love 2023-07-31 10:26:19 -07:00
Kartik K. Agaram bb3e12eb5f bugfix: search highlight straddling screen lines 2023-07-31 09:15:48 -07:00
Kartik K. Agaram 2b52383e18 remove a duplicate print to screen
In addition to being more efficient, this will simplify the next bugfix.
2023-07-31 08:56:20 -07:00
Kartik K. Agaram 8879fd6f29 extract a variable 2023-07-31 08:49:24 -07:00
Kartik K. Agaram d6c06db97a bugfix: highlight search patterns on the right line
scenario:
* position a wrapped line on screen
* search for the word immediately after the point of wrapping

Before this commit the word would be highlighted twice:
  - at the end of the first screen line
  - at the start of the second screen line

Now it shows up at the right place.
2023-07-31 08:40:22 -07:00
Kartik K. Agaram f7f42b0bef hoist and duplicate a conditional
I'm duplicating the bounds check when drawing cursor and search
highlight because they're separate concerns and require subtly different
logic.
2023-07-31 08:40:07 -07:00
Kartik K. Agaram 484b76f5c6 improve a comment 2023-07-31 08:21:38 -07:00
Kartik K. Agaram 60f26a9a4f experiment: knob for readonly editor 2023-06-07 22:23:10 -07:00
Kartik K. Agaram 44e3cdcdb7 Merge text0 2023-06-04 15:34:49 -07:00
Kartik K. Agaram 484602bd9e Merge text.love 2023-06-04 15:25:46 -07:00
Kartik K. Agaram bf2c2555d6 Merge lines.love 2023-06-04 15:11:24 -07:00
Kartik K. Agaram 9656e13774 bugfix: inscript's bug
To fix this I have to first stop incrementally updating screen_bottom1
in the middle of a frame. Now it always has a good value from the end of
a frame.

I'm also running into some limitations in the test I'd ideally like to
write (that are documented in a comment), but I still get some sort of
automated test for this bugfix.
2023-06-04 12:20:24 -07:00
Kartik K. Agaram 47d39b43b3 Merge text0 2023-05-14 17:34:21 -07:00
Kartik K. Agaram c78345acf0 Merge text.love 2023-05-14 17:34:03 -07:00
Kartik K. Agaram 0f3841f186 Merge lines.love 2023-05-14 17:31:55 -07:00
Kartik K. Agaram c96be4b007 add an assert
I added this to catch a rare bug. I've had it locally for a few weeks
now without hitting it. Doesn't hurt to publish it.
2023-05-14 17:23:08 -07:00
Kartik K. Agaram f17dd5ec46 Merge text0 2023-05-06 09:15:14 -07:00
Kartik K. Agaram f2896ab40b Merge text.love 2023-05-06 09:14:51 -07:00
Kartik K. Agaram e39fe490e4 Merge lines.love 2023-05-06 09:09:48 -07:00
Kartik K. Agaram 6a1d8e5164 bugfix: never use utf8 pos in string.sub
This is a violation of an existing rule in Manual_tests.md. The
following command weakly suggests there aren't any others:
  grep ':sub(' *.lua |grep pos
2023-05-06 08:56:44 -07:00
Kartik K. Agaram 22071c9b71 remove some support for long lines from source editor
A code editor is unlikely to need support for extremely long lines. And
that kind of scroll is jarring anyway in a code editor. We don't read
code like a novel, and less scroll per page implies more scrolling work.

I'd gotten rid of this functionality and the test for it [1] back in the
spokecone fork, but only took out the test when first pulling it into
the source editor.

[1] test_pagedown_often_shows_start_of_wrapping_line
2023-04-19 21:53:11 -07:00
Kartik K. Agaram 6495afad91 Merge text0 2023-04-08 23:00:47 -07:00
Kartik K. Agaram 2700149407 Merge text.love 2023-04-08 22:59:12 -07:00
Kartik K. Agaram b3a3321cd6 Merge lines.love 2023-04-08 22:57:01 -07:00
Kartik K. Agaram 25e7eb99a9 rename a variable 2023-04-08 22:44:13 -07:00
Kartik K. Agaram 81624d570f Merge text0 2023-04-03 09:50:27 -07:00
Kartik K. Agaram 542f0f261b Merge text.love 2023-04-03 09:28:46 -07:00
Kartik K. Agaram e406fdae0d Merge lines.love 2023-04-03 09:23:28 -07:00
Kartik K. Agaram 282983d084 switch source side to new screen-line-based render
Also copy over the implementation of links from pensieve.love.
2023-04-03 08:33:07 -07:00
Kartik K. Agaram 95342345a8 change cursor bounds check slightly
This doesn't affect this fork directly, but it's a bad idea to assume
the _app_ is always going to be doing just what a particular subsystem
(here, the text editor in edit.lua+text.lua) is doing.
2023-04-02 17:24:02 -07:00
Kartik K. Agaram 384fb2d19c streamline the interface for Text.draw 2023-04-02 17:19:03 -07:00
Kartik K. Agaram 38c5014761 Merge text0 2023-04-02 16:50:08 -07:00
Kartik K. Agaram 247c09846c Merge text.love 2023-04-02 16:46:31 -07:00
Kartik K. Agaram 3547c18db6 Merge lines.love 2023-04-02 09:22:32 -07:00
Kartik K. Agaram 29f1687f3c avoid saving fragments in lines
Now we render lines one screen line at a time rather than one word at a
time.

I can't port the source side just yet; I need to fix hyperlinks first..
2023-04-01 21:44:27 -07:00
Kartik K. Agaram c87e4a3bab start thinking of compute_fragments as a detail
I think all we need to maintain is the populate_screen_line_starting_pos
array. It's easy to render screen lines one by one from it, and we'll
only ever construct one additional screen line at a time.

I'd hoped to delete other calls to Text.populate_screen_line_starting_pos,
but it turns out we need to update it when editing sometimes. Give up on
that for now; it's a no-op if not needed.
2023-04-01 18:12:29 -07:00
Kartik K. Agaram ed27b8dd85 stop creating a singleton table for every word 2023-04-01 18:12:29 -07:00
Kartik K. Agaram fbc8b85bcf clean up some debug prints
It's starting to become apparent just how little line_cache.fragments
does for me now. Let's see if we can get rid of it entirely.
2023-04-01 18:12:29 -07:00
Kartik K. Agaram f64f680f2b no more Text allocations
Is it just my imagination, or does the app feel lighter and more fluffy?
2023-04-01 18:12:29 -07:00
Kartik K. Agaram 876d6298b4 App.width can no longer take a Text
In the process I discovered the horrible fact that Text.x allocates a new Text.
And it gets called (just once, thank goodness) on every single frame.
2023-04-01 18:12:29 -07:00
Kartik K. Agaram eae5c9505c bugfix: naming points 2023-03-26 09:36:41 -07:00
Kartik K. Agaram 4e7ff6e3dc Merge text0 2023-03-17 22:47:30 -07:00
Kartik K. Agaram 39651f32d4 Merge text.love 2023-03-17 22:46:11 -07:00
Kartik K. Agaram eca407cf00 Merge lines.love 2023-03-17 22:30:46 -07:00
Kartik K. Agaram 6709b394fb more bugfix
Don't crash on showing the log browser.
2023-03-17 22:17:23 -07:00
Kartik K. Agaram 675d1cbbdf bugfix
Thanks Mikoláš Štrajt.
2023-03-17 21:52:35 -07:00