Merge text.love

This commit is contained in:
Kartik K. Agaram 2023-06-08 01:13:12 -07:00
commit 3c6523e5a5
3 changed files with 24 additions and 7 deletions

View File

@ -5,6 +5,10 @@ record those here.
Initializing settings:
- delete app settings, start; window opens running the text editor
- run with a filename on commandline, scroll around, quit; restart without a filename; window opens running the text editor in same position+dimensions
- run with a filename on commandline, scroll around, quit; restart with same filename; window opens running the text editor in same position+dimensions
- run with a filename on commandline, scroll around, quit; restart with new filename; window opens new filename with cursor up top
- run editor, scroll around, move cursor to end of some line, quit; restart with new filename; window opens running the text editor in same position+dimensions
- quit while running the text editor, restart; window opens running the text editor in same position+dimensions
- quit while editing source (color; no selection), restart; window opens editing source in same position+dimensions
- start out running the text editor, move window, press ctrl+e twice; window is running text editor in same position+dimensions

View File

@ -68,7 +68,7 @@ function edit.check_locs(State)
-- if State is inconsistent (i.e. file changed by some other program),
-- throw away all cursor state entirely
if edit.invalid1(State, State.screen_top1)
or edit.invalid1(State, State.cursor1)
or edit.invalid_cursor1(State)
or not Text.le1(State.screen_top1, State.cursor1) then
State.screen_top1 = {line=1, pos=1}
State.cursor1 = {line=1, pos=1}
@ -82,6 +82,16 @@ function edit.invalid1(State, loc1)
return loc1.pos > #State.lines[loc1.line].data
end
-- cursor loc in particular differs from other locs in one way:
-- pos might occur just after end of line
function edit.invalid_cursor1(State)
local cursor1 = State.cursor1
if cursor1.line > #State.lines then return true end
local l = State.lines[cursor1.line]
if l.mode ~= 'text' then return false end -- pos is irrelevant to validity for a drawing line
return cursor1.pos > #State.lines[cursor1.line].data + 1
end
-- return y drawn until
function edit.draw(State)
App.color(Text_color)

15
run.lua
View File

@ -19,7 +19,7 @@ function run.initialize(arg)
run.initialize_default_settings()
end
if #arg > 0 then
if #arg > 0 and Editor_state.filename ~= absolutize(arg[1]) then
Editor_state.filename = arg[1]
load_from_disk(Editor_state)
Text.redraw_all(Editor_state)
@ -154,19 +154,22 @@ function run.settings()
if Current_app == 'run' then
Settings.x, Settings.y, Settings.displayindex = App.screen.position()
end
local filename = Editor_state.filename
if is_relative_path(filename) then
filename = love.filesystem.getWorkingDirectory()..'/'..filename -- '/' should work even on Windows
end
return {
x=Settings.x, y=Settings.y, displayindex=Settings.displayindex,
width=App.screen.width, height=App.screen.height,
font_height=Editor_state.font_height,
filename=filename,
filename=absolutize(Editor_state.filename),
screen_top=Editor_state.screen_top1, cursor=Editor_state.cursor1
}
end
function absolutize(path)
if is_relative_path(path) then
return love.filesystem.getWorkingDirectory()..'/'..path -- '/' should work even on Windows
end
return path
end
function run.mouse_press(x,y, mouse_button)
Cursor_time = 0 -- ensure cursor is visible immediately after it moves
return edit.mouse_press(Editor_state, x,y, mouse_button)