Commit Graph

1407 Commits

Author SHA1 Message Date
Kartik K. Agaram 3aaa267468 Merge text.love 2023-09-20 14:49:18 -07:00
Kartik K. Agaram 3aec915559 Merge lines.love 2023-09-20 14:32:01 -07:00
Kartik K. Agaram bd6f7d48e7 bugfix: clear selection when clicking above or below lines
Matt Wynne pointed out that snap.love would crash when a node went off
screen. While debugging it I noticed that selection1 was being set when
it shouldn't be.

Turns out I introduced a bug when I fixed the inscript bug back in June
(commit 9656e13774). One invariant I want to preserve is: selection1
should be unset after a mouse click (press and release without
intervening drag). This invariant was violated in my bugfix back in
June. I was concerned only with selection back then, and I didn't
realize I was breaking the mouse click case (in a fairly subtle way; you
can have selection set, and when it's set identically to the cursor
everything looks the same).

I think there might still be an issue in snap.love after this fix. I
noticed screen_bottom1.pos was nil, and as far as I recall that should
never happen.
2023-09-20 13:39:29 -07:00
Kartik K. Agaram d6d2ff365d Merge text0 2023-09-17 09:31:19 -07:00
Kartik K. Agaram a41e5151e9 Merge text.love 2023-09-17 09:29:59 -07:00
Kartik K. Agaram 5c5a8a88ab Merge lines.love 2023-09-17 09:24:52 -07:00
Kartik K. Agaram c43d884b6f indent 2023-09-16 22:41:55 -07:00
Kartik K. Agaram 9241fedf3a port an old fix to source editor 2023-09-16 22:40:46 -07:00
Kartik K. Agaram 6e2137c5b6 bugfix to the helper I added yesterday 2023-09-16 22:39:51 -07:00
Kartik K. Agaram 1030797353 Merge text0 2023-09-16 00:13:03 -07:00
Kartik K. Agaram 5c511203e7 Merge text.love 2023-09-16 00:11:43 -07:00
Kartik K. Agaram e1168f4eff fix a bad merge 2023-09-16 00:07:07 -07:00
Kartik K. Agaram 09c76c82c2 Merge lines.love 2023-09-15 23:56:49 -07:00
Kartik K. Agaram 715c6fd32f source: show file being edited in window title bar 2023-09-15 13:36:27 -07:00
Kartik K. Agaram 6ed60848a4 delete some dead code
This is a holdover from the days of bifold text.
2023-09-15 13:33:26 -07:00
Kartik K. Agaram 76f119b7b9 hide line numbers from log browser 2023-09-15 13:30:42 -07:00
Kartik K. Agaram ab5ba3f3e5 assume starty can be nil in update
This is a backport of a bugfix in pensieve.love. It's not _technically_
a bug here in lines.love, but it seems worth establishing an
architectural invariant (or rather lack of invariant).

LÖVE's standard event loop performs the following sequence of operations
in a single frame:
  * process events
  * update
  * draw

Ideally any mutations to global state happen during the first two
phases, while drawing includes no mutation.

However, there is a special case: `starty`, the top y coordinate for
each each line in the editor. This is used all over the place, and the
cheapest way to compute it is to simply save it while drawing.

However, draw by definition only updates `starty` for lines that are
drawn on screen. To avoid stale data on lines off screen, say after
scrolling, events often clear `starty` for all lines, leaving it to the
next draw phase to repopulate the right lines.

Sandwiched between the above two "however"s, the update phase needs to
gracefully handle `starty` being nil in the occasional frame right after
an event.

I think I've audited all our uses of `starty`, and this commit fixes the
only place that violates this rule.
2023-09-15 11:13:04 -07:00
Kartik K. Agaram bafc45b028 bugfix: crash when using mouse wheel
All the Text functions assume the cursor is always on a text line. I was
violating that invariant.

* When scrolling up, I start the cursor at the top-most line below the
  screen top.

* When scrolling down, I start the cursor at the top-most line below the
  screen bottom.

  I think it would feel slightly more natural for it to be the
  bottom-most line above the screen bottom.

  However, the Text functions maintain an invariant that the bottom-most
  line in a buffer will be text. There's no such invariant for the
  top-most line.
2023-09-15 08:52:39 -07:00
Kartik K. Agaram 0a12e4c733 change a helper slightly 2023-09-15 08:46:36 -07:00
Kartik K. Agaram 0e20565e17 clean up a slight jitter when drawing circles
Earlier the ghost while drawing wouldn't quite match the final shape.
Now the math is identical in draw_pending_shape.

It's a little unfortunate that we have this duplication of formulae.

At least there are no other stray calls of App.mouse_x in
draw_pending_shape.
2023-09-15 08:30:15 -07:00
Kartik K. Agaram 273aa50e38 Merge text0 2023-09-14 22:46:10 -07:00
Kartik K. Agaram 86a17ae182 Merge text.love 2023-09-14 22:45:18 -07:00
Kartik K. Agaram 1a88b4a290 Merge lines.love 2023-09-14 22:39:18 -07:00
Kartik K. Agaram 1fd30c0462 always show line numbers in source editor
The drawing buttons are now absolutely positioned, which is a horrible
hack. But for just the source editor it seems good enough. The
alternative is to modify magic constants in all the tests :/
2023-09-14 22:27:38 -07:00
Kartik K. Agaram 27505925e9 Merge text0 2023-09-10 22:03:39 -07:00
Kartik K. Agaram b48afa39f6 Merge text.love 2023-09-10 22:02:46 -07:00
Kartik K. Agaram 37cb030489 Merge lines.love 2023-09-10 21:56:43 -07:00
Kartik K. Agaram 7062963888 Revert "deemphasize the source editor"
Now that we have decent error handling, I think we can encourage people
to press ctrl+e again.

This reverts commit 4b43e9e85d.
2023-09-10 21:45:59 -07:00
Kartik K. Agaram 9b4e1ce3e1 start saving edits right in the source dir
This is much easier to explain, and it also avoids errors like
forgetting to delete the save dir after editing sources in source dir.

One drawback: there's a little more risk of accidental data loss, either
because of bugs here or programmer mistakes. To mitigate this risk, put
your apps in a git repo and periodically `git commit`.
2023-09-09 10:47:22 -07:00
Kartik K. Agaram 993b5d6ca3 simplify check for '0000' 2023-09-09 10:17:38 -07:00
Kartik K. Agaram 2bce6aad55 Merge text0 2023-09-09 09:53:37 -07:00
Kartik K. Agaram b407a2e4b8 Merge text.love 2023-09-09 09:51:16 -07:00
Kartik K. Agaram 28a6bb37cd Merge lines.love 2023-09-09 09:47:23 -07:00
Kartik K. Agaram 790b7f18db yet another bugfix X-(
This time it really does work with pensieve.love
2023-09-09 09:27:56 -07:00
Kartik K. Agaram 0016d668bc two bugfixes
Annoying dangers of testing in one fork and committing upstream
(where it isn't used yet).
2023-09-09 09:09:14 -07:00
Kartik K. Agaram bcd7f6b598 new primitives for reading/writing files
These are like versions in nativefs, but only support absolute paths.
I want to be thoughtful about the precise location at each call-site.

It's a little ugly that app.lua now has a dependency on file.lua. Or
source_file.lua for the source editor.
2023-09-09 08:56:21 -07:00
Kartik K. Agaram 31266e23f5 reorder 2023-09-09 08:27:27 -07:00
Kartik K. Agaram 04540f2fd0 Merge text0 2023-09-08 14:58:54 -07:00
Kartik K. Agaram dab97e2deb Merge text.love 2023-09-08 14:56:57 -07:00
Kartik K. Agaram cb3787048c Merge lines.love 2023-09-08 14:52:40 -07:00
Kartik K. Agaram 87ea2af2da a few more testable file-system operations 2023-09-08 14:03:40 -07:00
Kartik K. Agaram 7cfca844f3 Merge text0 2023-09-04 15:32:12 -07:00
Kartik K. Agaram e71406fede Merge text.love 2023-09-04 15:30:36 -07:00
Kartik K. Agaram 529857ad73 Merge lines.love 2023-09-04 15:22:10 -07:00
Kartik K. Agaram e74b92b733 show any error after switching to source editor
Error_message is a special global. It's set when the app (Current_app = 'run')
encounters an error and switches to the source editor, and cleared when
switching from source editor back to the app.
2023-09-04 15:07:54 -07:00
Kartik K. Agaram ce0b127296 Merge text0 2023-09-04 14:17:04 -07:00
Kartik K. Agaram 4551f06837 Merge text.love 2023-09-04 14:10:09 -07:00
Kartik K. Agaram f41513e718 Merge lines.love 2023-09-04 14:03:34 -07:00
Kartik K. Agaram adfe94b9fc switch to source editor on error
If we're already in source editor we'll quit as before.

It's ugly that app.lua now knows about run.lua. But it's a start.
2023-09-04 13:07:53 -07:00
Kartik K. Agaram 99495355b4 stop using keyboard.isDown
It doesn't work on Android, and it's not much work to avoid.
2023-09-04 00:22:31 -07:00