Skip to content

Commit a0cee06

Browse files
authored
Add mode_string to prompt calculation dependencies (#658)
* Add mode_string to prompt calculation dependencies * Update vi show-mode-in-prompt test
1 parent e477380 commit a0cee06

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

lib/reline/line_editor.rb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def set_pasting_state(in_pasting)
8585
end
8686
end
8787

88-
private def check_multiline_prompt(buffer)
88+
private def check_multiline_prompt(buffer, mode_string)
8989
if @vi_arg
9090
prompt = "(arg: #{@vi_arg}) "
9191
elsif @searching_prompt
@@ -97,7 +97,6 @@ def set_pasting_state(in_pasting)
9797
prompt_list = @prompt_proc.(buffer).map { |pr| pr.gsub("\n", "\\n") }
9898
prompt_list.map!{ prompt } if @vi_arg or @searching_prompt
9999
prompt_list = [prompt] if prompt_list.empty?
100-
mode_string = check_mode_string
101100
prompt_list = prompt_list.map{ |pr| mode_string + pr } if mode_string
102101
prompt = prompt_list[@line_index]
103102
prompt = prompt_list[0] if prompt.nil?
@@ -109,7 +108,6 @@ def set_pasting_state(in_pasting)
109108
end
110109
prompt_list
111110
else
112-
mode_string = check_mode_string
113111
prompt = mode_string + prompt if mode_string
114112
[prompt] * buffer.size
115113
end
@@ -319,8 +317,8 @@ def modified_lines
319317
end
320318

321319
def prompt_list
322-
with_cache(__method__, whole_lines, @vi_arg, @searching_prompt) do |lines|
323-
check_multiline_prompt(lines)
320+
with_cache(__method__, whole_lines, check_mode_string, @vi_arg, @searching_prompt) do |lines, mode_string|
321+
check_multiline_prompt(lines, mode_string)
324322
end
325323
end
326324

test/reline/yamatanooroti/test_rendering.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,12 @@ def test_mode_string_vi
197197
LINES
198198
start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.')
199199
write(":a\n\C-[k")
200+
write("i\n:a")
201+
write("\C-[h")
200202
close
201203
assert_screen(<<~EOC)
202-
Multiline REPL.
204+
(ins)prompt> :a
205+
=> :a
203206
(ins)prompt> :a
204207
=> :a
205208
(cmd)prompt> :a

0 commit comments

Comments
 (0)