Commit Graph

226 Commits

Author SHA1 Message Date
Kartik K. Agaram 1fc11feb28 Merge lines.love 2023-08-30 22:45:37 -07:00
Kartik K. Agaram 7e97a2a1e7 make a few names consistent with snake_case 2023-08-30 06:44:54 -07:00
Kartik K. Agaram e70e67859d Merge text0 2023-06-08 01:29:14 -07:00
Kartik K. Agaram 7824213048 Merge text.love 2023-06-08 01:18:34 -07:00
Kartik K. Agaram fdb2172843 Merge lines.love 2023-06-08 01:12:38 -07:00
Kartik K. Agaram 14c08f9bd9 several bugfixes in saving/loading cursor position 2023-06-08 01:02:54 -07:00
Kartik K. Agaram 60f26a9a4f experiment: knob for readonly editor 2023-06-07 22:23:10 -07:00
Kartik K. Agaram d931b0123d Merge text0 2023-06-07 22:09:10 -07:00
Kartik K. Agaram 7a7d76548c Merge text.love 2023-06-07 22:08:46 -07:00
Kartik K. Agaram e8a5faaa4c Merge lines.love 2023-06-07 21:47:04 -07:00
Kartik K. Agaram bc85d77f13 Merge text0 2023-06-06 13:27:17 -07:00
Kartik K. Agaram b9b511f37c Merge text.love 2023-06-06 13:23:13 -07:00
Kartik K. Agaram 77164c61c8 Merge lines.love 2023-06-06 13:17:57 -07:00
Kartik K. Agaram 96c056bd4c return height of editor widget after drawing 2023-06-06 12:52:44 -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 637e28f300 port inscript's bugfix to source editor 2023-06-04 12:33:23 -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 cf0ba7c154 handle wrapping lines 2023-06-03 10:44:11 -07:00
Kartik K. Agaram 3114176ebd change how we handle clicks above top margin 2023-06-03 10:36:05 -07:00
Kartik K. Agaram cdef37c419 get rid of recent_mouse
It's a hack:
  - if you start selecting from below final line the start of the
    selection is the most recent click even if it was forever ago
  - (the crash we're currently fixing) if you start up and immediately
    select all then click below final line => crash. recent_mouse was
    never set.
  - getting rid of it breaks no tests (except the crash we're currently
    fixing)
2023-06-01 22:12:12 -07:00
Kartik K. Agaram 9b3fa33f5b idea: set recent_mouse on mouse events
This helps, but doesn't address the C-a case. As it stands, literally my
first click of the mouse might need access to recent_mouse.line/pos
2023-06-01 21:58:28 -07:00
Kartik K. Agaram 3e848efb08 ah, I see the problem
Text.mouse_pos can sometimes set recent_mouse.time but not
recent_mouse.x/y. I'd assumed x/y is never nil in those situations, but
that's violated. It's most easily seen when typing C-a and then
clicking.
2023-06-01 12:37:17 -07:00
Kartik K. Agaram f1886391c5 some temporary logging to catch a bug
The bug has been spotted twice:

1. In snap.love, I selected text in one node, then another, and hit:
  Error: text.lua:789: attempt to compare nil with number
  stack traceback:
    text.lua:789: in function 'lt1'
    select.lua:19: in function 'clip_selection'
    text.lua:32: in function 'draw'
    edit.lua:117: in function 'draw'
    [string "REPL"]:21: in function 'draw'
    main.lua:152: in function 'draw'
    app.lua:102: in function <app.lua:84>
    [C]: in function 'xpcall'
    app.lua:112: in function <app.lua:111>
    [C]: in function 'xpcall'

  Couldn't reproduce.

2. In text.love, inscript selected all text in a small buffer and then
   clicked outside the text. And got:

  Error: text.lua:784: attempt to compare nil with number
  Traceback
    [love "callbacks.lua"]:228: in function 'handler'
    text.lua:784: in function 'lt1'
    select.lua:19: in function 'clip_selection'
    text.lua:27: in function 'draw'
    edit.lua:117: in function 'draw'
    run.lua:136: in function 'draw'
    main.lua:148: in function 'draw'
    app.lua:42: in function <app.lua:22>
    [C]: in function 'xpcall'

  This is reproducible, and also across forks.
2023-06-01 12:30:19 -07:00
Kartik K. Agaram f44f3b0a4a Merge text0 2023-04-08 22:03:05 -07:00
Kartik K. Agaram 03e2e2b54d Merge text.love 2023-04-08 22:02:29 -07:00
Kartik K. Agaram 7e242db523 Merge lines.love 2023-04-08 22:01:01 -07:00
Kartik K. Agaram c969fcdd85 enhance bugfix of commit a9aa3436f (Dec 2024)
Scenario:
* start out with some text on screen
* select some text A, delete
* select some more text B, delete
* press C-z twice to restore A and B
* press C-y twice

Before this commit only the first C-y was having an effect (deleting B).
The second was failing to delete A.
2023-04-08 21:55:51 -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 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 24a732ebff update documentation on fragments
I see a path to at least maintain a single fragment per screen line. But
can we do better? It even seems unnecessary to maintain two copies of
the data, chopped up into lines and screen lines.
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 9153d96951 Merge text0 2023-03-26 10:01:49 -07:00
Kartik K. Agaram b529ea5dc1 Merge text.love 2023-03-26 09:59:38 -07:00
Kartik K. Agaram 46e568c4c5 Merge lines.love 2023-03-26 09:49:03 -07:00
Kartik K. Agaram eae5c9505c bugfix: naming points 2023-03-26 09:36:41 -07:00
Kartik K. Agaram 0ae94b0de5 bugfix 2023-03-26 08:19:40 -07:00
Kartik K. Agaram 7f433753b6 bugfix
scenario: open a file starting with a drawing
After this commit the program doesn't crash.

  Error: [string "edit.lua"]:127: attempt to get length of field 'data' (a nil value)
  stack traceback:
    [love "boot.lua"]:345: in function '__len'
    [string "edit.lua"]:127: in function 'invalid1'
    [string "edit.lua"]:116: in function 'check_locs'
    [string "run.lua"]:35: in function 'initialize'
    main.lua:96: in function 'initialize'
    [string "app.lua"]:144: in function 'run_tests_and_initialize'
    [string "app.lua"]:16: in function <[string "app.lua"]:13>
    [C]: in function 'xpcall'
    [love "boot.lua"]:361: in function <[love "boot.lua"]:348>
    [C]: in function 'xpcall'
2023-03-26 07:19:27 -07:00
Kartik K. Agaram 57ed70d912 clean up some absolute coordinates 2023-03-25 18:34:28 -07:00
Kartik K. Agaram 9390a4a418 Merge text0 2023-03-23 21:51:55 -07:00
Kartik K. Agaram 0264e2ba19 Merge text.love 2023-03-23 21:48:27 -07:00
Kartik K. Agaram aa8994167f Merge lines.love 2023-03-23 21:43:26 -07:00
Kartik K. Agaram a6dcfc5ac8 some minor cleanup
I can't see the mouse wheel ever setting dx, but it's more obvious now
that the editor doesn't support panning left/right.
2023-03-23 21:38:33 -07:00
Kartik K. Agaram 99faf61abb mouse wheel support 2023-03-23 21:00:09 -07:00
Kartik K. Agaram d16dd9c6ce Merge text0 2023-03-19 00:08:08 -07:00
Kartik K. Agaram 398208cf26 Merge text.love 2023-03-19 00:04:53 -07:00
Kartik K. Agaram ab09ec6387 Merge lines.love 2023-03-18 23:59:42 -07:00
Kartik K. Agaram fceb2404fb move default file location
This works better on mobile platforms while seeming about as useful
anywhere else.

I've verified that anyone who already edited a file will continue to use
its path from settings.
2023-03-18 23:12:50 -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 ae429cd78a bring a few things in sync between run and source 2023-03-17 21:40:51 -07:00
Kartik K. Agaram 81ebc6a559 bugfix: disallow font size of 0
Thanks Mikoláš Štrajt.
2023-03-17 19:58:53 -07:00
Kartik K. Agaram 5129c4f5ce Merge text0 2023-03-17 11:19:31 -07:00
Kartik K. Agaram d2933583ca Merge text.love 2023-03-17 11:15:48 -07:00
Kartik K. Agaram 4dbc097f83 Merge lines.love 2023-03-17 11:02:10 -07:00
Kartik K. Agaram e2c1bbe4e5 more robust state validation 2023-03-17 10:28:10 -07:00
Kartik K. Agaram b8c7cffbc2 Merge text0 2023-02-09 23:22:49 -08:00
Kartik K. Agaram f2cc22ed67 Merge text.love 2023-02-09 23:22:29 -08:00
Kartik K. Agaram 67334814a3 Merge lines.love 2023-02-09 23:19:52 -08:00
Kartik K. Agaram 224e8fe85a bugfix
scenario:
  press ctrl+f, type in a string
  hit down arrow if needed until the screen scrolls
  press enter
  click with the mouse somewhere

Before this commit the app would crash because cursor was above screen
top.
2023-02-09 23:09:23 -08:00
Kartik K. Agaram 7995e01237 Merge text0 2023-01-28 10:30:13 -08:00
Kartik K. Agaram 25acb412bb Merge text.love 2023-01-28 10:30:07 -08:00
Kartik K. Agaram b936e0f9cf Merge lines.love 2023-01-28 10:26:55 -08:00
Kartik K. Agaram 18f44c9761 wait a little to flush disk before quitting
I've been noticing in pensieve.love in particular that once a month or
so I lose data if I quit immediately after typing in something. Nothing
major, just the odd link between notes which leaves things in an
inconsistent state. Let's see if this helps.
2023-01-28 10:21:34 -08:00
Kartik K. Agaram e0517b7149 Merge text0 2022-12-24 19:30:32 -08:00
Kartik K. Agaram 543c88bc49 Merge text.love 2022-12-24 19:29:29 -08:00
Kartik K. Agaram 4d561e2294 Merge lines.love 2022-12-24 19:26:55 -08:00
Kartik K. Agaram a9aa3436fa bugfix
Scenario: make some edits, select some text, make some more edits. Press
ctrl-z.

Before this commit, undo would stop at the point of selection and
previous edits would become unreachable.

After this commit, both ctrl-z and ctrl-y seem able to span the point of
selection.
2022-12-24 19:24:48 -08:00
Kartik K. Agaram 53fbb905e3 typo 2022-12-24 19:24:48 -08:00
Kartik K. Agaram 45032ebbbe Merge text0 2022-12-23 20:17:16 -08:00
Kartik K. Agaram 98add5023f Merge text.love 2022-12-23 20:11:51 -08:00
Kartik K. Agaram 4854165630 Merge lines.love 2022-12-23 19:47:10 -08:00
Kartik K. Agaram e0448d7d7f consistent names in a few more places 2022-12-23 19:32:58 -08:00
Kartik K. Agaram 2b3e09ca0f make love event names consistent
I want the words to be easy to read, and to use a consistent tense.
update and focus seem more timeless; let's make everything like those.
2022-12-23 18:52:28 -08:00
Kartik K. Agaram e2e3aea2b1 require editor margins to be ints
Not directly relevant here, but forks of this project that permit
zooming can run into weird glitches if margins are not a whole number of
pixels.

I'd always assumed a type system that divided ints into floats was
strictly superior, but now I have experienced a situation where
requiring ints isn't just a compromise for the underlying CPU
implementation. Particularly since Lua's print() silently hides really
tiny fractions.
2022-12-23 16:57:04 -08:00
Kartik K. Agaram 92eccaea5a bugfix in changing shape mid-stroke 2022-12-12 23:17:02 -08:00
Kartik K. Agaram 561c94bbb0 Merge text0 2022-12-12 22:58:16 -08:00
Kartik K. Agaram 9f8861d5cb Merge text.love 2022-12-12 22:54:35 -08:00
Kartik K. Agaram 3897a9d86d Merge lines.love 2022-12-12 22:45:16 -08:00
Kartik K. Agaram 8b30e0608b bugfix: naming points in drawings
We had a regression since commit 60e1023f0 on Nov 27. Turns out we do
need the ancient hack after all.

But no, we won't go back to the hack. It's a simple problem to fix
right. And while we're at it, we'll fix the test harness to be more
realistic so it would have caught this problem.
2022-12-12 22:31:45 -08:00
Kartik K. Agaram 833ef32db1 configurable colors and cursor in editor widget 2022-11-30 19:31:00 -08:00
Kartik K. Agaram af85211247 Merge text.love 2022-11-27 22:24:31 -08:00
Kartik K. Agaram 5283c16e5c Merge lines.love 2022-11-27 22:22:16 -08:00
Kartik K. Agaram 7557e0904a bugfix 2022-11-27 22:20:26 -08:00
Kartik K. Agaram 2e68629898 Merge text.love 2022-11-27 13:21:46 -08:00
Kartik K. Agaram 816e3549b5 Merge text.love 2022-11-27 13:20:27 -08:00
Kartik K. Agaram 356fed8a24 Merge lines.love 2022-11-19 00:28:37 -08:00
Kartik K. Agaram 44aa8226c4 ctrl+a: select entire buffer 2022-11-19 00:27:20 -08:00
Kartik K. Agaram b64a60a509 bring back everything from commit a68647ae22
We only want to unwind the source editing.
2022-11-06 08:53:46 -08:00
Kartik K. Agaram ee18ce96a1 Merge text.love 2022-11-05 21:09:31 -07:00
Kartik K. Agaram 79fd6c4464 purge unused button infrastructure 2022-11-05 19:52:42 -07:00