Commit Graph

205 Commits

Author SHA1 Message Date
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 2b1889353b add state arg to a few functions
- Text.pos_at_start_of_cursor_screen_line
  - Text.cursor_past_screen_bottom
2022-07-12 17:14:14 -07:00
Kartik K. Agaram 5107df3cd0 add state arg to a few functions
- Text.left
  - Text.right
  - Text.right_without_scroll
2022-07-12 17:10:11 -07:00
Kartik K. Agaram 5b91af1a66 add state arg to a few functions
- record_undo_event
  - undo_event
  - redo_event
  - snapshot
2022-07-12 16:55:32 -07:00
Kartik K. Agaram 188bbc73cc add state arg to a few functions
- Text.draw_highlight
  - Text.clip_selection
  - Text.selection
  - Text.cut_selection
  - Text.delete_selection
  - Text.delete_selection_without_undo
  - Text.mouse_pos
  - Text.to_pos
2022-07-12 16:51:18 -07:00
Kartik K. Agaram 800a5c064a add state arg to a few functions
- Text.insert_at_cursor
  - Text.insert_return
  - Text.pageup
  - Text.pagedown
  - Text.up
  - Text.down
  - Text.start_of_line
  - Text.end_of_line
  - Text.word_left
  - Text.word_right
2022-07-12 16:39:42 -07:00
Kartik K. Agaram adeb5416c6 add state arg to Text.textinput 2022-07-12 16:33:26 -07:00
Kartik K. Agaram b7000215d8 add state arg to schedule_save 2022-07-12 16:30:41 -07:00
Kartik K. Agaram 93aca28cb3 add state arg to Text.keychord_pressed 2022-07-12 16:23:28 -07:00
Kartik K. Agaram 3874f325f8 add state arg to some functions
- Text.draw
  - Text.draw_cursor
  - Text.draw_search_bar
2022-07-12 16:20:20 -07:00
Kartik K. Agaram 8bbc1ffe34 group all editor globals
We're still accessing them through a global. But we'll change that next.
2022-07-12 15:24:56 -07:00
Kartik K. Agaram 3850fbac35 make colors easier to edit 2022-07-11 23:18:26 -07:00
Kartik K. Agaram 3dccd7f81a stop pretending globals are local
One advantage of this approach: we don't end up with multiple lexical
scopes containing duplicates of the same modules.
2022-07-11 22:11:58 -07:00
Kartik K. Agaram 6c4483976e skip multiple consecutive whitespace 2022-07-11 19:18:54 -07:00
Kartik K. Agaram bc2c14c899 support other whitespace chars in word movements 2022-07-11 18:56:19 -07:00
Kartik K. Agaram c7978ffc73 done passing left/right margins everywhere
The final step is to add them to:
  - Text.compute_fragments

Doing it carefully caught 5 call-sites that my tests didn't catch.
2022-07-08 16:32:20 -07:00
Kartik K. Agaram 62a6c335d1 add args to some functions
- Text.populate_screen_line_starting_pos
2022-07-08 16:28:20 -07:00
Kartik K. Agaram ae1a71ea46 add args to some functions
- Text.to2
2022-07-08 16:26:04 -07:00
Kartik K. Agaram 532b8dddd7 add args to some functions
- Text.previous_screen_line
2022-07-08 16:24:10 -07:00
Kartik K. Agaram 3eb89adca6 add args to some functions
- Text.snap_cursor_to_bottom_of_screen
2022-07-08 16:22:11 -07:00
Kartik K. Agaram b163f1bc51 add args to some functions
- Text.nearest_cursor_pos
2022-07-08 16:15:04 -07:00
Kartik K. Agaram 57e3aa092a add args to some functions
- Text.move_cursor_down_to_next_text_line_while_scrolling_again_if_necessary
2022-07-08 16:15:04 -07:00
Kartik K. Agaram 348c53f3ab add args to some functions
- Text.cursor_at_final_screen_line
2022-07-08 15:58:15 -07:00
Kartik K. Agaram 0106ad4b4f add args to some functions
- Text.pos_at_start_of_cursor_screen_line
2022-07-08 15:49:52 -07:00
Kartik K. Agaram abcc18002b add args to some functions
- Text.to_pos_on_line
2022-07-08 15:45:45 -07:00
Kartik K. Agaram 9fb8f25030 indent 2022-07-08 15:43:45 -07:00
Kartik K. Agaram 00c64ed6e4 add args to some functions
- Text.in_line
2022-07-08 15:37:09 -07:00
Kartik K. Agaram a27dd15c1f add args to some functions
- Text.clip_selection
  - Text.cut_selection
  - Text.delete_selection
  - Text.delete_selection_without_undo
  - Text.mouse_pos
  - Text.to_pos
2022-07-08 15:30:10 -07:00
Kartik K. Agaram 0853a030ac add args to some functions
- Text.pageup
  - Text.pagedown
  - Text.up
  - Text.down
  - Text.end_of_line
  - Text.word_left
  - Text.word_right
  - Text.left
  - Text.right
2022-07-08 15:17:12 -07:00
Kartik K. Agaram e39269b19e start passing left/right margins everywhere
I have a set of changes that passes all tests, but I'm going to commit
them very carefully to ensure I don't miss any call-sites. In this
commit I'm adding the args to:
  - Text.draw
  - Text.tweak_screen_top_and_cursor

But calls within them don't yet pass them where they should. In this
manner I'm going to progress systematically from the top down.
2022-07-08 15:12:17 -07:00
Kartik K. Agaram 8efdb898c6 rename a couple of variables 2022-07-08 14:18:23 -07:00
Kartik K. Agaram 048b6d9d3a drop an arg from a function 2022-07-08 09:44:49 -07:00
Kartik K. Agaram cff1e58cf6 switch arg for a function 2022-07-08 09:44:49 -07:00
Kartik K. Agaram 4575648c12 optimization: moving cursor to next word 2022-07-05 11:27:41 -07:00
Kartik K. Agaram f2e5c4ffee bugfix: avoid scrolling on 'end'
There's multiple ways to do this, only one of them is right, and I keep
forgetting what it is. Turn it into a method.
2022-07-05 11:27:23 -07:00
Kartik K. Agaram e839c3036a bugfix: manage screen_top and cursor when resizing 2022-07-01 11:01:20 -07:00
Kartik K. Agaram 429a42eb1c right margin 2022-06-30 22:54:34 -07:00
Kartik K. Agaram 8c7bea8f76 rip out notion of Line_width 2022-06-30 19:50:27 -07:00
Kartik K. Agaram 510b0d1dc3 bugfix: lines that aren't drawn from the start
I can't believe I didn't catch this until now. All I had to do is open
MobyDick.markdown from https://www.hogbaysoftware.com/posts/moby-dick-workout,
press page-down and click on the top screen line (or any screen line
containing the same line as the top screen line). Easy to catch with any
file containing lots of overly long lines, as happens in particular at
the start of Moby Dick.

I _had_ seen this problem before, but it seemed to disappear after
unrelated changes, and I convinced myself I'd fixed it as a side-effect.
The bug just failed to manifest if the top line happened to start at the
top of the screen. Scroll down a few pages in Moby Dick and the dialogue
starts and line length drops precipitously.
2022-06-30 18:14:48 -07:00
Kartik K. Agaram ea4aa0999c clicking to the right of a line within line width 2022-06-29 09:30:23 -07:00
Kartik K. Agaram d07a336131 . 2022-06-29 09:17:38 -07:00
Kartik K. Agaram 8d3adfa36d bugfix: clicking past end of screen line
I could swear I checked this at some point. But I didn't have a test!
2022-06-29 09:17:38 -07:00
Kartik K. Agaram b49ff8dde9 bugfix: scrolling in left/right movements
I'd always had a funny feeling there was something missing there but
somehow never thought of the right failing test.
2022-06-28 18:48:59 -07:00
Kartik K. Agaram e63878897e undo commit 861c57b533
Turns out ctrl+ makes it into lua.textinput. Thanks John Blommers for
the report. This should fix https://github.com/akkartik/lines.love/issues/6.
2022-06-27 17:32:52 -07:00
Kartik K. Agaram 2233066409 bugfix: clear selection in a couple more places 2022-06-23 12:06:44 -07:00
Kartik K. Agaram cb99ac300c fix a failing test
I deployed this without even running it once :/ Production was broken
for 9 minutes until I rolled back.
2022-06-23 11:40:00 -07:00
Kartik K. Agaram 009c7abb60 extract a function 2022-06-23 11:09:49 -07:00
Kartik K. Agaram 5a06c1286d bugfix: recompute screen lines in backspace/delete
Scenario: backspacing until a line takes up fewer screen lines, then
pressing `down`.

I've gone through and checked that fragments and screen_line_starting_pos
are now cleared together everywhere.
2022-06-23 11:03:46 -07:00
Kartik K. Agaram 54eefbbf2d turns out super- chords to get to textinput 2022-06-22 17:37:26 -07:00