Merge lines.love
This commit is contained in:
commit
fdb2172843
|
@ -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
|
||||
|
|
12
edit.lua
12
edit.lua
|
@ -73,7 +73,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}
|
||||
|
@ -87,6 +87,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
15
run.lua
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue