Skip to content

Commit

Permalink
[ruby/reline] Add mode_string to prompt calculation dependencies
Browse files Browse the repository at this point in the history
(ruby/reline#658)

* Add mode_string to prompt calculation dependencies

* Update vi show-mode-in-prompt test

ruby/reline@a0cee06ec5
  • Loading branch information
tompng authored and matzbot committed Mar 24, 2024
1 parent b03705d commit b0eda83
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
8 changes: 3 additions & 5 deletions lib/reline/line_editor.rb
Expand Up @@ -85,7 +85,7 @@ def set_pasting_state(in_pasting)
end
end

private def check_multiline_prompt(buffer)
private def check_multiline_prompt(buffer, mode_string)
if @vi_arg
prompt = "(arg: #{@vi_arg}) "
elsif @searching_prompt
Expand All @@ -97,7 +97,6 @@ def set_pasting_state(in_pasting)
prompt_list = @prompt_proc.(buffer).map { |pr| pr.gsub("\n", "\\n") }
prompt_list.map!{ prompt } if @vi_arg or @searching_prompt
prompt_list = [prompt] if prompt_list.empty?
mode_string = check_mode_string
prompt_list = prompt_list.map{ |pr| mode_string + pr } if mode_string
prompt = prompt_list[@line_index]
prompt = prompt_list[0] if prompt.nil?
Expand All @@ -109,7 +108,6 @@ def set_pasting_state(in_pasting)
end
prompt_list
else
mode_string = check_mode_string
prompt = mode_string + prompt if mode_string
[prompt] * buffer.size
end
Expand Down Expand Up @@ -319,8 +317,8 @@ def modified_lines
end

def prompt_list
with_cache(__method__, whole_lines, @vi_arg, @searching_prompt) do |lines|
check_multiline_prompt(lines)
with_cache(__method__, whole_lines, check_mode_string, @vi_arg, @searching_prompt) do |lines, mode_string|
check_multiline_prompt(lines, mode_string)
end
end

Expand Down
5 changes: 4 additions & 1 deletion test/reline/yamatanooroti/test_rendering.rb
Expand Up @@ -197,9 +197,12 @@ def test_mode_string_vi
LINES
start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.')
write(":a\n\C-[k")
write("i\n:a")
write("\C-[h")
close
assert_screen(<<~EOC)
Multiline REPL.
(ins)prompt> :a
=> :a
(ins)prompt> :a
=> :a
(cmd)prompt> :a
Expand Down

0 comments on commit b0eda83

Please sign in to comment.