Skip to content

Commit 21d75f6

Browse files
committed
Fix incremental search to work correctly even if not last line
1 parent 0c76631 commit 21d75f6

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

lib/reline/line_editor.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2233,6 +2233,8 @@ def finish
22332233
@buffer_of_lines = [String.new(encoding: @encoding)] if @buffer_of_lines.empty?
22342234
@line_index = @buffer_of_lines.size - 1
22352235
@line = @buffer_of_lines.last
2236+
@byte_pointer = @line.bytesize
2237+
@cursor = @cursor_max = calculate_width(@line)
22362238
@rerender_all = true
22372239
@searching_prompt = "(%s)`%s'" % [prompt_name, search_word]
22382240
else

test/reline/yamatanooroti/test_rendering.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,6 +1310,29 @@ def test_insert_newline_in_the_middle_of_buffer_just_after_dialog
13101310
EOC
13111311
end
13121312

1313+
def test_incremental_search_on_not_last_line
1314+
start_terminal(10, 40, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete}, startup_message: 'Multiline REPL.')
1315+
write("def abc\nend\n")
1316+
write("def def\nend\n")
1317+
write("\C-p\C-p\C-e")
1318+
write("\C-r")
1319+
write("a")
1320+
write("\n\n")
1321+
close
1322+
assert_screen(<<~'EOC')
1323+
prompt> def abc
1324+
prompt> end
1325+
=> :abc
1326+
prompt> def def
1327+
prompt> end
1328+
=> :def
1329+
prompt> def abc
1330+
prompt> end
1331+
=> :abc
1332+
prompt>
1333+
EOC
1334+
end
1335+
13131336
def write_inputrc(content)
13141337
File.open(@inputrc_file, 'w') do |f|
13151338
f.write content

0 commit comments

Comments
 (0)