summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2021-08-27 01:47:33 +0900
committeraycabta <aycabta@gmail.com>2021-08-29 20:30:33 +0900
commitfdc005e54e58bbf005381bcfc7ac59d56fb05aac (patch)
tree16150c808ed4b7ceb4fdceed64e01aa93b7c23c2
parent18c0814fe02dcfdc9cf20504278a1e0039b75b74 (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.rb22
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)