1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/reline] Completion journey starts with one of candidates

First one is just original string.

ccb70cc240
This commit is contained in:
aycabta 2021-08-27 01:47:33 +09:00
parent 18c0814fe0
commit fdc005e54e

View file

@ -1176,6 +1176,16 @@ class Reline::LineEditor
@completion_journey_data = CompletionJourneyData.new( @completion_journey_data = CompletionJourneyData.new(
preposing, postposing, preposing, postposing,
[target] + list.select{ |item| item.start_with?(target) }, 0) [target] + list.select{ |item| item.start_with?(target) }, 0)
if @completion_journey_data.list.size == 1
@completion_journey_data.pointer = 0
else
case direction
when :up
@completion_journey_data.pointer = @completion_journey_data.list.size - 1
when :down
@completion_journey_data.pointer = 1
end
end
@completion_state = CompletionState::JOURNEY @completion_state = CompletionState::JOURNEY
else else
case direction case direction
@ -1190,13 +1200,13 @@ class Reline::LineEditor
@completion_journey_data.pointer = 0 @completion_journey_data.pointer = 0
end end
end end
completed = @completion_journey_data.list[@completion_journey_data.pointer]
@line = @completion_journey_data.preposing + completed + @completion_journey_data.postposing
line_to_pointer = @completion_journey_data.preposing + completed
@cursor_max = calculate_width(@line)
@cursor = calculate_width(line_to_pointer)
@byte_pointer = line_to_pointer.bytesize
end end
completed = @completion_journey_data.list[@completion_journey_data.pointer]
@line = @completion_journey_data.preposing + completed + @completion_journey_data.postposing
line_to_pointer = @completion_journey_data.preposing + completed
@cursor_max = calculate_width(@line)
@cursor = calculate_width(line_to_pointer)
@byte_pointer = line_to_pointer.bytesize
end end
private def run_for_operators(key, method_symbol, &block) private def run_for_operators(key, method_symbol, &block)