about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-07-25 09:49:26 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-07-25 09:49:26 -0700
commit3265abacb42056742803d7e2a42a2757ce7984c0 (patch)
treeb7ce7eb2c568af5a53fdf7357ddbdc09195e30f1
parent6f74f95a46b173f7b4f8c04e5821dc348191192e (diff)
downloadtext.love-3265abacb42056742803d7e2a42a2757ce7984c0.tar.gz
bugfix: skip over drawings when searching
-rw-r--r--search.lua23
-rw-r--r--text_tests.lua9
2 files changed, 17 insertions, 15 deletions
diff --git a/search.lua b/search.lua
index 2e86688..41d2b8f 100644
--- a/search.lua
+++ b/search.lua
@@ -22,18 +22,25 @@ function Text.draw_search_bar(State)
 end
 
 function Text.search_next(State)
+  local pos
   -- search current line
-  local pos = State.lines[State.cursor1.line].data:find(State.search_term, State.cursor1.pos)
-  if pos then
-    State.cursor1.pos = pos
+  local line = State.lines[State.cursor1.line]
+  if line.mode == 'text' then
+    pos = line.data:find(State.search_term, State.cursor1.pos)
+    if pos then
+      State.cursor1.pos = pos
+    end
   end
   if pos == nil then
     for i=State.cursor1.line+1,#State.lines do
-      pos = State.lines[i].data:find(State.search_term)
-      if pos then
-        State.cursor1.line = i
-        State.cursor1.pos = pos
-        break
+      local line = State.lines[i]
+      if line.mode == 'text' then
+        pos = State.lines[i].data:find(State.search_term)
+        if pos then
+          State.cursor1.line = i
+          State.cursor1.pos = pos
+          break
+        end
       end
     end
   end
diff --git a/text_tests.lua b/text_tests.lua
index a8e75f3..68e800a 100644
--- a/text_tests.lua
+++ b/text_tests.lua
@@ -1970,18 +1970,12 @@ function test_search()
   io.write('\ntest_search')
   App.screen.init{width=120, height=60}
   Editor_state = edit.initialize_test_state()
-  Editor_state.lines = load_array{'abc', 'def', 'ghi', 'deg'}
+  Editor_state.lines = load_array{'```lines', '```', 'def', 'ghi', 'deg'}
   Text.redraw_all(Editor_state)
   Editor_state.cursor1 = {line=1, pos=1}
   Editor_state.screen_top1 = {line=1, pos=1}
   Editor_state.screen_bottom1 = {}
   edit.draw(Editor_state)
-  local y = Editor_state.top
-  App.screen.check(y, 'abc', 'F - test_search/baseline/screen:1')
-  y = y + Editor_state.line_height
-  App.screen.check(y, 'def', 'F - test_search/baseline/screen:2')
-  y = y + Editor_state.line_height
-  App.screen.check(y, 'ghi', 'F - test_search/baseline/screen:3')
   -- search for a string
   edit.run_after_keychord(Editor_state, 'C-f')
   edit.run_after_textinput(Editor_state, 'd')
@@ -1990,6 +1984,7 @@ function test_search()
   check_eq(Editor_state.cursor1.pos, 1, 'F - test_search/1/cursor:pos')
   -- reset cursor
   Editor_state.cursor1 = {line=1, pos=1}
+  Editor_state.screen_top1 = {line=1, pos=1}
   -- search for second occurrence
   edit.run_after_keychord(Editor_state, 'C-f')
   edit.run_after_textinput(Editor_state, 'de')