about summary refs log tree commit diff stats
path: root/edit.lua
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2023-03-17 11:02:10 -0700
committerKartik K. Agaram <vc@akkartik.com>2023-03-17 11:02:10 -0700
commit4dbc097f835218bc44dd1d96134294a0bc5ce725 (patch)
treea87f0de56d342b79c371aea3cb2d6f51a0e37d60 /edit.lua
parent67334814a331d41c43c186adf12ee86717918fd6 (diff)
parentd65b7950a152cf2ffe3149707f5e2040b305d8bd (diff)
downloadview.love-4dbc097f835218bc44dd1d96134294a0bc5ce725.tar.gz
Merge lines.love
Diffstat (limited to 'edit.lua')
-rw-r--r--edit.lua16
1 files changed, 16 insertions, 0 deletions
diff --git a/edit.lua b/edit.lua
index 7754493..865682d 100644
--- a/edit.lua
+++ b/edit.lua
@@ -74,6 +74,22 @@ function edit.initialize_state(top, left, right, font_height, line_height)  -- c
   return result
 end  -- App.initialize_state
 
+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 not Text.le1(State.screen_top1, State.cursor1) then
+    State.screen_top1 = {line=1, pos=1}
+    State.cursor1 = {line=1, pos=1}
+  end
+end
+
+function edit.invalid1(State, loc1)
+  return loc1.line > #State.lines
+      or loc1.pos > #State.lines[loc1.line].data
+end
+
 function edit.draw(State)
   App.color(Text_color)
   assert(#State.lines == #State.line_cache)