diff options
| author | aycabta <aycabta@gmail.com> | 2021-08-27 01:47:33 +0900 |
|---|---|---|
| committer | aycabta <aycabta@gmail.com> | 2021-08-29 20:30:33 +0900 |
| commit | fdc005e54e58bbf005381bcfc7ac59d56fb05aac (patch) | |
| tree | 16150c808ed4b7ceb4fdceed64e01aa93b7c23c2 | |
| parent | 18c0814fe02dcfdc9cf20504278a1e0039b75b74 (diff) | |
[ruby/reline] Completion journey starts with one of candidates
First one is just original string.
https://github.com/ruby/reline/commit/ccb70cc240
| -rw-r--r-- | lib/reline/line_editor.rb | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb index 5d7095b0ab..b449f4fb3b 100644 --- a/lib/reline/line_editor.rb +++ b/lib/reline/line_editor.rb @@ -1176,6 +1176,16 @@ class Reline::LineEditor @completion_journey_data = CompletionJourneyData.new( preposing, postposing, [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 else case direction @@ -1190,13 +1200,13 @@ class Reline::LineEditor @completion_journey_data.pointer = 0 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 + 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 private def run_for_operators(key, method_symbol, &block) |
