about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--edit.lua6
-rw-r--r--search.lua12
-rw-r--r--text.lua44
3 files changed, 31 insertions, 31 deletions
diff --git a/edit.lua b/edit.lua
index 86eacd5..f3e1f26 100644
--- a/edit.lua
+++ b/edit.lua
@@ -144,7 +144,7 @@ function edit.draw(State)
       })
       if State.search_term == nil then
         if line_index == State.cursor1.line then
-          Text.draw_cursor(State.margin_left, y)
+          Text.draw_cursor(State, State.margin_left, y)
         end
       end
       State.screen_bottom1.pos = State.screen_top1.pos
@@ -161,7 +161,7 @@ function edit.draw(State)
         line.startpos = State.screen_top1.pos
       end
 --?       print('text.draw', y, line_index)
-      y, State.screen_bottom1.pos = Text.draw(line, line_index, line.starty, State.margin_left, App.screen.width-State.margin_right)
+      y, State.screen_bottom1.pos = Text.draw(State, line, line_index, line.starty, State.margin_left, App.screen.width-State.margin_right)
       y = y + State.line_height
 --?       print('=> y', y)
     end
@@ -171,7 +171,7 @@ function edit.draw(State)
   end
 --?   print('screen bottom: '..tostring(State.screen_bottom1.pos)..' in '..tostring(State.lines[State.screen_bottom1.line].data))
   if State.search_term then
-    Text.draw_search_bar()
+    Text.draw_search_bar(State)
   end
 end
 
diff --git a/search.lua b/search.lua
index 5d794f2..64973c3 100644
--- a/search.lua
+++ b/search.lua
@@ -1,7 +1,7 @@
 -- helpers for the search bar (C-f)
 
-function Text.draw_search_bar()
-  local h = Editor_state.line_height+2
+function Text.draw_search_bar(State)
+  local h = State.line_height+2
   local y = App.screen.height-h
   love.graphics.setColor(0.9,0.9,0.9)
   love.graphics.rectangle('fill', 0, y-10, App.screen.width-1, h+8)
@@ -12,12 +12,12 @@ function Text.draw_search_bar()
   love.graphics.setColor(0.6,0.6,0.6)
   love.graphics.rectangle('line', 20, y-6, App.screen.width-40, h+2, 2,2)
   App.color(Text_color)
-  App.screen.print(Editor_state.search_term, 25,y-5)
+  App.screen.print(State.search_term, 25,y-5)
   App.color(Cursor_color)
-  if Editor_state.search_text == nil then
-    Editor_state.search_text = App.newText(love.graphics.getFont(), Editor_state.search_term)
+  if State.search_text == nil then
+    State.search_text = App.newText(love.graphics.getFont(), State.search_term)
   end
-  love.graphics.circle('fill', 25+App.width(Editor_state.search_text),y-5+h, 2)
+  love.graphics.circle('fill', 25+App.width(State.search_text),y-5+h, 2)
   App.color(Text_color)
 end
 
diff --git a/text.lua b/text.lua
index 0f3cd42..89ddcfe 100644
--- a/text.lua
+++ b/text.lua
@@ -9,7 +9,7 @@ require 'text_tests'
 -- return values:
 --  y coordinate drawn until in px
 --  position of start of final screen line drawn
-function Text.draw(line, line_index, top, left, right)
+function Text.draw(State, line, line_index, top, left, right)
 --?   print('text.draw', line_index)
   App.color(Text_color)
   -- wrap long lines
@@ -28,13 +28,13 @@ function Text.draw(line, line_index, top, left, right)
     local frag_width = App.width(frag_text)
     local frag_len = utf8.len(frag)
 --?     local s=tostring
---?     print('('..s(x)..','..s(y)..') '..frag..'('..s(frag_width)..' vs '..s(right)..') '..s(line_index)..' vs '..s(Editor_state.screen_top1.line)..'; '..s(pos)..' vs '..s(Editor_state.screen_top1.pos)..'; bottom: '..s(Editor_state.screen_bottom1.line)..'/'..s(Editor_state.screen_bottom1.pos))
+--?     print('('..s(x)..','..s(y)..') '..frag..'('..s(frag_width)..' vs '..s(right)..') '..s(line_index)..' vs '..s(State.screen_top1.line)..'; '..s(pos)..' vs '..s(State.screen_top1.pos)..'; bottom: '..s(State.screen_bottom1.line)..'/'..s(State.screen_bottom1.pos))
     if x + frag_width > right then
       assert(x > left)  -- no overfull lines
       -- update y only after drawing the first screen line of screen top
-      if Text.lt1(Editor_state.screen_top1, {line=line_index, pos=pos}) then
-        y = y + Editor_state.line_height
-        if y + Editor_state.line_height > App.screen.height then
+      if Text.lt1(State.screen_top1, {line=line_index, pos=pos}) then
+        y = y + State.line_height
+        if y + State.line_height > App.screen.height then
 --?           print('b', y, App.screen.height, '=>', screen_line_starting_pos)
           return y, screen_line_starting_pos
         end
@@ -43,10 +43,10 @@ function Text.draw(line, line_index, top, left, right)
       end
       x = left
     end
---?     print('checking to draw', pos, Editor_state.screen_top1.pos)
+--?     print('checking to draw', pos, State.screen_top1.pos)
     -- don't draw text above screen top
-    if Text.le1(Editor_state.screen_top1, {line=line_index, pos=pos}) then
-      if Editor_state.selection1.line then
+    if Text.le1(State.screen_top1, {line=line_index, pos=pos}) then
+      if State.selection1.line then
         local lo, hi = Text.clip_selection(line_index, pos, pos+frag_len, left, right)
         Text.draw_highlight(line, x,y, pos, lo,hi)
       end
@@ -54,25 +54,25 @@ function Text.draw(line, line_index, top, left, right)
       App.screen.draw(frag_text, x,y)
     end
     -- render cursor if necessary
-    if line_index == Editor_state.cursor1.line then
-      if pos <= Editor_state.cursor1.pos and pos + frag_len > Editor_state.cursor1.pos then
-        if Editor_state.search_term then
-          if Editor_state.lines[Editor_state.cursor1.line].data:sub(Editor_state.cursor1.pos, Editor_state.cursor1.pos+utf8.len(Editor_state.search_term)-1) == Editor_state.search_term then
-            local lo_px = Text.draw_highlight(line, x,y, pos, Editor_state.cursor1.pos, Editor_state.cursor1.pos+utf8.len(Editor_state.search_term))
+    if line_index == State.cursor1.line then
+      if pos <= State.cursor1.pos and pos + frag_len > State.cursor1.pos then
+        if State.search_term then
+          if State.lines[State.cursor1.line].data:sub(State.cursor1.pos, State.cursor1.pos+utf8.len(State.search_term)-1) == State.search_term then
+            local lo_px = Text.draw_highlight(line, x,y, pos, State.cursor1.pos, State.cursor1.pos+utf8.len(State.search_term))
             App.color(Text_color)
-            love.graphics.print(Editor_state.search_term, x+lo_px,y)
+            love.graphics.print(State.search_term, x+lo_px,y)
           end
         else
-          Text.draw_cursor(x+Text.x(frag, Editor_state.cursor1.pos-pos+1), y)
+          Text.draw_cursor(State, x+Text.x(frag, State.cursor1.pos-pos+1), y)
         end
       end
     end
     x = x + frag_width
     pos = pos + frag_len
   end
-  if Editor_state.search_term == nil then
-    if line_index == Editor_state.cursor1.line and Editor_state.cursor1.pos == pos then
-      Text.draw_cursor(x, y)
+  if State.search_term == nil then
+    if line_index == State.cursor1.line and State.cursor1.pos == pos then
+      Text.draw_cursor(State, x, y)
     end
   end
   return y, screen_line_starting_pos
@@ -80,15 +80,15 @@ end
 -- manual tests:
 --  draw with small screen width of 100
 
-function Text.draw_cursor(x, y)
+function Text.draw_cursor(State, x, y)
   -- blink every 0.5s
   if math.floor(Cursor_time*2)%2 == 0 then
     App.color(Cursor_color)
-    love.graphics.rectangle('fill', x,y, 3,Editor_state.line_height)
+    love.graphics.rectangle('fill', x,y, 3,State.line_height)
     App.color(Text_color)
   end
-  Editor_state.cursor_x = x
-  Editor_state.cursor_y = y+Editor_state.line_height
+  State.cursor_x = x
+  State.cursor_y = y+State.line_height
 end
 
 function Text.compute_fragments(line, left, right)