diff options
-rw-r--r-- | text.lua | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/text.lua b/text.lua index 071b52d..451ab51 100644 --- a/text.lua +++ b/text.lua @@ -442,36 +442,26 @@ function Text.up(State) local screen_line_starting_pos = State.line_cache[State.cursor1.line].screen_line_starting_pos --? print(#screen_line_starting_pos) screen_line_starting_pos = screen_line_starting_pos[#screen_line_starting_pos] ---? print('previous screen line starts at pos '..tostring(screen_line_starting_pos)..' of its line') - if State.screen_top1.line > State.cursor1.line then - State.screen_top1.line = State.cursor1.line - State.screen_top1.pos = screen_line_starting_pos ---? print('pos of top of screen is also '..tostring(State.screen_top1.pos)..' of the same line') - end local screen_line_starting_byte_offset = Text.offset(State.lines[State.cursor1.line].data, screen_line_starting_pos) local s = string.sub(State.lines[State.cursor1.line].data, screen_line_starting_byte_offset) State.cursor1.pos = screen_line_starting_pos + Text.nearest_cursor_pos(s, State.cursor_x, State.left) - 1 break end end - if State.cursor1.line < State.screen_top1.line then - State.screen_top1.line = State.cursor1.line - end else -- move up one screen line in current line ---? print('cursor is NOT at first screen line of its line') assert(screen_line_index > 1) new_screen_line_starting_pos = State.line_cache[State.cursor1.line].screen_line_starting_pos[screen_line_index-1] ---? print('switching pos of screen line at cursor from '..tostring(screen_line_starting_pos)..' to '..tostring(new_screen_line_starting_pos)) - if State.screen_top1.line == State.cursor1.line and State.screen_top1.pos == screen_line_starting_pos then - State.screen_top1.pos = new_screen_line_starting_pos ---? print('also setting pos of top of screen to '..tostring(State.screen_top1.pos)) - end local new_screen_line_starting_byte_offset = Text.offset(State.lines[State.cursor1.line].data, new_screen_line_starting_pos) local s = string.sub(State.lines[State.cursor1.line].data, new_screen_line_starting_byte_offset) State.cursor1.pos = new_screen_line_starting_pos + Text.nearest_cursor_pos(s, State.cursor_x, State.left) - 1 --? print('cursor pos is now '..tostring(State.cursor1.pos)) end + if Text.lt1(State.cursor1, State.screen_top1) then + local top2 = Text.to2(State, State.screen_top1) + top2 = Text.previous_screen_line(State, top2) + State.screen_top1 = Text.to1(State, top2) + end end function Text.down(State) |