Merge text0
This commit is contained in:
commit
8a02f1d7af
7
edit.lua
7
edit.lua
|
@ -202,7 +202,7 @@ function edit.mouse_release(State, x,y, mouse_button)
|
|||
--? print_and_log(('edit.mouse_release(%d,%d): cursor at %d,%d'):format(x,y, State.cursor1.line, State.cursor1.pos))
|
||||
State.mouse_down = nil
|
||||
if y < State.top then
|
||||
State.cursor1 = {line=State.screen_top1.line, pos=State.screen_top1.pos}
|
||||
State.cursor1 = deepcopy(State.screen_top1)
|
||||
edit.clean_up_mouse_press(State)
|
||||
return
|
||||
end
|
||||
|
@ -241,7 +241,7 @@ end
|
|||
|
||||
function edit.mouse_wheel_move(State, dx,dy)
|
||||
if dy > 0 then
|
||||
State.cursor1 = {line=State.screen_top1.line, pos=State.screen_top1.pos}
|
||||
State.cursor1 = deepcopy(State.screen_top1)
|
||||
for i=1,math.floor(dy) do
|
||||
Text.up(State)
|
||||
end
|
||||
|
@ -286,6 +286,9 @@ function edit.keychord_press(State, chord, key, readonly)
|
|||
local len = utf8.len(State.search_term)
|
||||
local byte_offset = Text.offset(State.search_term, len)
|
||||
State.search_term = string.sub(State.search_term, 1, byte_offset-1)
|
||||
State.cursor = deepcopy(State.search_backup.cursor)
|
||||
State.screen_top = deepcopy(State.search_backup.screen_top)
|
||||
Text.search_next(State)
|
||||
elseif chord == 'down' then
|
||||
State.cursor1.pos = State.cursor1.pos+1
|
||||
Text.search_next(State)
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
-- helpers for selecting portions of text
|
||||
|
||||
-- Return any intersection of the region from State.selection1 to State.cursor1 (or
|
||||
-- current mouse, if mouse is pressed; or recent mouse if mouse is pressed and
|
||||
-- currently over a drawing) with the region between {line=line_index, pos=apos}
|
||||
-- and {line=line_index, pos=bpos}.
|
||||
-- Return any intersection of the region from State.selection1 to
|
||||
-- State.cursor1 (or current mouse, if mouse is pressed) with the region
|
||||
-- between {line=line_index, pos=apos} and {line=line_index, pos=bpos}.
|
||||
-- apos must be less than bpos. However State.selection1 and State.cursor1 can be in any order.
|
||||
-- Result: positions spos,epos between apos,bpos.
|
||||
function Text.clip_selection(State, line_index, apos, bpos)
|
||||
|
@ -45,7 +44,6 @@ function Text.clip_selection(State, line_index, apos, bpos)
|
|||
end
|
||||
|
||||
-- draw highlight for line corresponding to (lo,hi) given an approximate x,y and pos on the same screen line
|
||||
-- Creates text objects every time, so use this sparingly.
|
||||
-- Returns some intermediate computation useful elsewhere.
|
||||
function Text.draw_highlight(State, line, x,y, pos, lo,hi)
|
||||
if lo then
|
||||
|
|
28
text.lua
28
text.lua
|
@ -276,12 +276,12 @@ function Text.keychord_press(State, chord, readonly)
|
|||
State.selection1 = {}
|
||||
elseif chord == 'S-left' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.left(State)
|
||||
elseif chord == 'S-right' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.right(State)
|
||||
-- C- hotkeys reserved for drawings, so we'll use M-
|
||||
|
@ -293,12 +293,12 @@ function Text.keychord_press(State, chord, readonly)
|
|||
State.selection1 = {}
|
||||
elseif chord == 'M-S-left' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.word_left(State)
|
||||
elseif chord == 'M-S-right' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.word_right(State)
|
||||
elseif chord == 'home' then
|
||||
|
@ -309,12 +309,12 @@ function Text.keychord_press(State, chord, readonly)
|
|||
State.selection1 = {}
|
||||
elseif chord == 'S-home' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.start_of_line(State)
|
||||
elseif chord == 'S-end' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.end_of_line(State)
|
||||
elseif chord == 'up' then
|
||||
|
@ -325,12 +325,12 @@ function Text.keychord_press(State, chord, readonly)
|
|||
State.selection1 = {}
|
||||
elseif chord == 'S-up' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.up(State)
|
||||
elseif chord == 'S-down' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.down(State)
|
||||
elseif chord == 'pageup' then
|
||||
|
@ -341,12 +341,12 @@ function Text.keychord_press(State, chord, readonly)
|
|||
State.selection1 = {}
|
||||
elseif chord == 'S-pageup' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.pageup(State)
|
||||
elseif chord == 'S-pagedown' then
|
||||
if State.selection1.line == nil then
|
||||
State.selection1 = {line=State.cursor1.line, pos=State.cursor1.pos}
|
||||
State.selection1 = deepcopy(State.cursor1)
|
||||
end
|
||||
Text.pagedown(State)
|
||||
end
|
||||
|
@ -363,7 +363,7 @@ end
|
|||
|
||||
function Text.pageup(State)
|
||||
State.screen_top1 = Text.previous_screen_top1(State)
|
||||
State.cursor1 = {line=State.screen_top1.line, pos=State.screen_top1.pos}
|
||||
State.cursor1 = deepcopy(State.screen_top1)
|
||||
Text.move_cursor_down_to_next_text_line_while_scrolling_again_if_necessary(State)
|
||||
Text.redraw_all(State) -- if we're scrolling, reclaim all fragments to avoid memory leaks
|
||||
end
|
||||
|
@ -401,7 +401,7 @@ end
|
|||
|
||||
function Text.pagedown(State)
|
||||
State.screen_top1 = Text.screen_bottom1(State)
|
||||
State.cursor1 = {line=State.screen_top1.line, pos=State.screen_top1.pos}
|
||||
State.cursor1 = deepcopy(State.screen_top1)
|
||||
Text.move_cursor_down_to_next_text_line_while_scrolling_again_if_necessary(State)
|
||||
Text.redraw_all(State) -- if we're scrolling, reclaim all fragments to avoid memory leaks
|
||||
end
|
||||
|
@ -505,7 +505,7 @@ end
|
|||
function Text.start_of_line(State)
|
||||
State.cursor1.pos = 1
|
||||
if Text.lt1(State.cursor1, State.screen_top1) then
|
||||
State.screen_top1 = {line=State.cursor1.line, pos=State.cursor1.pos} -- copy
|
||||
State.screen_top1 = deepcopy(State.cursor1)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -946,7 +946,7 @@ function Text.tweak_screen_top_and_cursor(State)
|
|||
-- make sure cursor is on screen
|
||||
local screen_bottom1 = Text.screen_bottom1(State)
|
||||
if Text.lt1(State.cursor1, State.screen_top1) then
|
||||
State.cursor1 = {line=State.screen_top1.line, pos=State.screen_top1.pos}
|
||||
State.cursor1 = deepcopy(State.screen_top1)
|
||||
elseif State.cursor1.line >= screen_bottom1.line then
|
||||
if Text.cursor_out_of_screen(State) then
|
||||
State.cursor1 = Text.final_text_loc_on_screen(State)
|
||||
|
|
Loading…
Reference in New Issue