Kartik K. Agaram
a472d218f2
allow Text.nearest_pos_less_than to return 0
...
This eliminates another case of overflowing margins.
2022-07-20 07:08:28 -07:00
Kartik K. Agaram
7dc47edde8
drop an unnecessary level of indent
2022-07-20 07:03:33 -07:00
Kartik K. Agaram
39f71784c9
clean up some prints
...
(Looking at prints in Text.draw, Text.compute_fragments and
Text.nearest_pos_less_than)
2022-07-20 07:00:39 -07:00
Kartik K. Agaram
b5451e4351
move a var closer to its use
2022-07-20 06:56:19 -07:00
Kartik K. Agaram
d41301c1b7
more clearly skip prints before screen top
2022-07-20 06:54:03 -07:00
Kartik K. Agaram
26ba6e4e5a
unify two similar functions
...
The cost is just having to tweak a few more brittle tests. I can't
actually perceive any difference in how the cursor moves when I click on
text.
2022-07-19 17:13:16 -07:00
Kartik K. Agaram
efd4a8a883
keep text from overflowing right margin
...
I've been sloppy about this so far, and outside of tests I can't find
any examples where it matters, but it matters in a potential fork where
I'm rendering multiple columns of text.
It's unfortunate that my tests have this level of brittleness. What I'd
really like to assert in many of these changed lines is that the text
stays inside the margins and that more text would overflow margins.
2022-07-19 16:49:08 -07:00
Kartik K. Agaram
82cdd9ddd1
bugfix: couple of margin-relative computations
2022-07-17 22:29:37 -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
64eed74980
keep all text cache writes inside text.lua
2022-07-17 10:06:39 -07:00
Kartik K. Agaram
4ff6de9951
switch to line index in a function
...
- Text.screen_line_width
2022-07-17 09:37:50 -07:00
Kartik K. Agaram
7e7f5b9256
switch to line index in a function
...
- Text.compute_fragments
2022-07-17 09:30:50 -07:00
Kartik K. Agaram
860cd49f67
make a function oblivious to line data structure
...
- Text.screen_line_index
2022-07-17 09:21:57 -07:00
Kartik K. Agaram
2859063d9d
switch to line index in a function
...
- Text.to_pos_on_line
2022-07-17 09:19:53 -07:00
Kartik K. Agaram
6b3ddc816f
switch to line index in a function
...
- Text.populate_screen_line_starting_pos
2022-07-17 09:14:10 -07:00
Kartik K. Agaram
48b7de4fde
switch to line index in a function
...
- Text.in_line
2022-07-17 09:14:10 -07:00
Kartik K. Agaram
b95206fd0d
drop some redundant args when clearing the cache
2022-07-17 08:18:48 -07:00
Kartik K. Agaram
038f06a342
drop some redundant args from Text.draw
2022-07-17 08:00:56 -07:00
Kartik K. Agaram
f61d4269f5
bring back a set of constants
...
It's starting to sink in that I don't want hard-coded constants inside
objects.
2022-07-16 08:48:02 -07:00
Kartik K. Agaram
70a15b3bc9
replace globals with args in a few functions
...
- Drawing.draw_shape
- Drawing.draw_pending_shape
- Drawing.in_drawing
- Drawing.find_or_insert_point
- Drawing.near
- Drawing.pixels
2022-07-12 21:58:46 -07:00
Kartik K. Agaram
2ae9cacd97
deduce left/right from state where possible
2022-07-12 20:59:24 -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
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