about summary refs log tree commit diff stats
path: root/text.lua
diff options
context:
space:
mode:
Diffstat (limited to 'text.lua')
-rw-r--r--text.lua27
1 files changed, 20 insertions, 7 deletions
diff --git a/text.lua b/text.lua
index d46edca..6888fda 100644
--- a/text.lua
+++ b/text.lua
@@ -143,6 +143,15 @@ function Text.keychord_pressed(chord)
   end
 end
 
+function Text.in_line(line, x,y)
+  return x >= 16 and y >= line.y and y < line.y+15*Zoom
+end
+
+function Text.move_cursor(line_index, line, x, hint)
+  Cursor_line = line_index
+  Cursor_pos = Text.nearest_cursor_pos(line.data, x)
+end
+
 function Text.nearest_cursor_pos(line, x, hint)
   if x == 0 then
     return 1
@@ -151,15 +160,19 @@ function Text.nearest_cursor_pos(line, x, hint)
   if x > max_x then
     return #line+1
   end
-  local currx = Text.cursor_x(line, hint)
-  if currx > x-2 and currx < x+2 then
-    return hint
+  if hint then
+    local currx = Text.cursor_x(line, hint)
+    if currx > x-2 and currx < x+2 then
+      return hint
+    end
   end
   local left, right = 1, #line+1
-  if currx > x then
-    right = hint
-  else
-    left = hint
+  if hint then
+    if currx > x then
+      right = hint
+    else
+      left = hint
+    end
   end
   while left < right-1 do
     local curr = math.floor((left+right)/2)