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')