Commit Graph

353 Commits

Author SHA1 Message Date
Kartik K. Agaram
4121613fc6 don't save settings on error in source editor 2024-01-12 03:51:34 -08:00
Kartik K. Agaram
366d806515 copy correct warning message
Not really useful here, but other forks might make use of it.
2023-12-07 01:08:09 -08:00
Kartik K. Agaram
8c97755480 hide some details within the 'warning' state
Renamed from the 'error' state.

Now we no longer overload Error_message; it's only used for actual
errors that trigger opening the source editor.

I was tempted to hide Skip_rest_of_key_events inside the 'warning' state
as well, but that isn't right. It applies to all Current_app
transitions, not just those in and out of 'warning'.
2023-12-06 22:59:24 -08:00
Kartik K. Agaram
19597e7619 redo version checks yet again
I'm starting to feel better after replacing 1 line with 20 and 2 new
bits of global state. I'm now handling two scenarios more explicitly:

* If I change Current_app within key_press, the corresponding text_input
  and key_release events go to the new app. If it's an editor it might
  insert the key, which is undesirable. Putting such handlers in
  key_release now feels overly clever, particularly since it took me
  forever to realize why I was getting stuck in an infinite loop.

* Both 'run' and 'source' can hit the version check, so we need to be
  able to transition from the 'error' app to either. Which
  necessitates yet another global bit of state: Next_app.
2023-12-06 22:43:28 -08:00
Kartik K. Agaram
01a26cad5f redo version checks
This is still ugly, but hopefully easier to follow.
2023-12-06 20:14:24 -08:00
Kartik K. Agaram
f37b45196a speculatively recommend new LÖVE v11.5 in all forks 2023-12-03 12:12:56 -08:00
Kartik K. Agaram
9993014904 bugfix: version check 2023-12-03 12:11:17 -08:00
Kartik K. Agaram
5cce511550 remove some dead code
We have an early exit for 'error' mode in this function.
2023-11-12 17:14:37 -08:00
Kartik K. Agaram
7057ac74ec check for 'error' mode in a few more places
In particular, I want to be able to switch to 'error' mode rather than
throw a real error() on test failures, because that's a little more
responsive and might be recoverable. (On some Android devices the font
is slightly different, and tests fail as a result.)
2023-11-12 16:31:12 -08:00
Kartik K. Agaram
6e391d7875 start supporting LÖVE v12
To do this I need some support for multiple versions. And I need an
'error' mode to go with existing 'run' and 'source' modes
(`Current_app`). Most errors will automatically transition to 'source'
editor mode, but some errors aren't really actionable in the editor. For
those we'll use 'error' mode.

The app doesn't yet work with LÖVE v12. There are some unit tests failing
because of differences in font rendering.
2023-10-09 20:05:19 -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
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
4b43e9e85d deemphasize the source editor
This repo does not support freewheeling modification. It's a primitive
to enable freewheeling modification in downstream forks.

The source editor is a convenience, but it's a sharp tool and can easily
leave the app in a broken state that requires dropping down to external
tools (editor, file manager) to fix.
2023-04-09 11:12:36 -07:00
Kartik K. Agaram
99faf61abb mouse wheel support 2023-03-23 21:00:09 -07:00
Kartik K. Agaram
674042d4c7 no, turn vsync back on
I notice my laptop's fan starts coming on when running many of my apps.
An empty app takes 10% CPU where it used to take just 1-2%.
2023-01-19 22:14:08 -08:00
Kartik K. Agaram
15f56341df correct comment; vsync is hard to reason about 2023-01-16 10:20:46 -08:00
Kartik K. Agaram
e7b37e39de disable vsync
Thanks Nils Berg for the suggestion!
2023-01-16 09:50:32 -08:00
Kartik K. Agaram
0719fdeaaf hoist out some common settings 2023-01-16 09:48:06 -08:00
Kartik K. Agaram
f351ee2f8f fix some arg names 2022-12-23 20:43:37 -08:00
Kartik K. Agaram
7ef551b821 another missed rename 2022-12-23 20:43:30 -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
0e0f36f8b4 stop tracking wallclock time
We only need time differences.
2022-11-03 21:02:31 -07:00
Kartik K. Agaram
72791d9c35 some debug prints
I'm starting to edit the sources from within the app in ernest. First
question: why does the file navigation menu skip some files? These
prints answer the question.
2022-09-17 20:37:40 -07:00
Kartik K. Agaram
73fefa7d09 support selections in the source editor
I've only tested side A so far, and included a statement of how I want
side B to behave.
2022-09-06 10:05:20 -07:00
Kartik K. Agaram
5ab541f160 . 2022-09-05 12:38:11 -07:00
Kartik K. Agaram
528c64d690 support drawings in the source editor 2022-09-05 11:29:39 -07:00
Kartik K. Agaram
c6f88dccfa set window title within each app
The main app shows the file being edited, but the programming environment does not.
2022-09-03 17:20:11 -07:00
Kartik K. Agaram
17fa0ec9e7 bugfix: window title 2022-09-03 14:51:52 -07:00
Kartik K. Agaram
e1c5a42f31 editing source code from within the app
integrated from pong.love via text.love:
  https://merveilles.town/@akkartik/108933336531898243
2022-09-03 14:13:22 -07:00
Kartik K. Agaram
ce31b74b10 infrastructure for caching LÖVE text objects 2022-08-24 13:27:04 -07:00
Kartik K. Agaram
8057f3e8fe stop putting button state in a global
Symptom: a test (test_click_to_create_drawing) started randomly failing
after I inserted a `return` 2 commits ago.

Cause: my tests call edit.draw, but button handlers only get cleared in
app.draw. So my tests weren't clearing button handlers, and every call
to edit.draw was accumulating states. Still unclear why those were going
to different state objects after the `return`, but anyway. I'm not going
to understand every last thing that happens when things go wrong, just
guarantee they can't go wrong. And the way to do that is to decentralize
button handlers to each state that receives them.

The State object in buttons.lua doesn't have to be Editor_state. It just
has to be some table that provides a Schelling Point for shared state.
2022-08-23 10:59:58 -07:00
Kartik K. Agaram
61eb87b03c correct a comment
We no longer have undo history directly in globals.
2022-08-21 14:26:50 -07:00
Kartik K. Agaram
13f67fa851 regression: dropping files on the window
Also improve the test to catch this next time.
2022-08-19 17:05:41 -07:00
Kartik K. Agaram
9459d91abc remove some duplication 2022-08-14 08:10:24 -07:00
Kartik K. Agaram
cc289363fa overzealous search-and-replace 2022-08-13 22:01:40 -07:00
Kartik K. Agaram
48162b9816 have file API operate on state object 2022-07-25 19:56:39 -07:00
Kartik K. Agaram
94b6d04e83 bugfix: alt-tab shouldn't emit keypress events
Looks like this only happens on Linux:
  https://love2d.org/forums/viewtopic.php?p=249700
2022-07-25 15:33:06 -07:00
Kartik K. Agaram
6c6a7aab07 move 2022-07-25 15:25:22 -07:00
Kartik K. Agaram
fe8e4fd9da simplify hysteresis logic 2022-07-25 15:23:01 -07:00
Kartik K. Agaram
6f74f95a46 extract method 2022-07-23 23:36:04 -07:00
Kartik K. Agaram
29dac6a6ec separate data structure for each line's cache data
I have no idea what the performance implications of this are..
2022-07-17 21:05:01 -07:00
Kartik K. Agaram
a1da18c107 more precise name 2022-07-15 22:15:07 -07:00
Kartik K. Agaram
2884f872d8 make test initializations a little more obvious 2022-07-15 22:12:25 -07:00
Kartik K. Agaram
fc6b602342 bugfix: zoom in/out hotkeys
Broken since commit 3b36093553 5 hours ago.
2022-07-13 23:31:52 -07:00
Kartik K. Agaram
119abbd52e bugfix: resize 2022-07-13 15:40:14 -07:00
Kartik K. Agaram
3b36093553 left/right margin -> left/right coordinates
Editor state initialization now depends on window dimensions, so we have
to more carefully orchestrate startup.
2022-07-12 20:54:50 -07:00
Kartik K. Agaram
f7d4deef0c add state arg to a few functions
- Text.cursor_at_final_screen_line
  - Text.move_cursor_down_to_next_text_line_while_scrolling_again_if_necessary
  - Text.snap_cursor_to_bottom_of_screen
  - Text.in_line
  - Text.to_pos_on_line
  - Text.to2
  - Text.to1
  - Text.previous_screen_line
  - Text.tweak_screen_top_and_cursor
  - Text.redraw_all
2022-07-12 17:24:01 -07:00
Kartik K. Agaram
81ecca89ff start passing in Editor_state explicitly
In this commit, top-level edit functions:
  - edit.draw
  - edit.update
  - edit.quit
  - edit.mouse_pressed
  - edit.mouse_released
  - edit.textinput
  - edit.keychord_pressed
  - edit.key_released
2022-07-12 15:33:06 -07:00
Kartik K. Agaram
e95b4fec12 initialize contains test state 2022-07-12 15:29:22 -07:00