[ruby/reline] Remove instance variable @first_char

(https://github.com/ruby/reline/pull/717)

When Reline reads EOF, Reline.readline should return nil if and only if input is empty

cc74b3686a
This commit is contained in:
tomoya ishida 2024-06-06 20:20:23 +09:00 committed by git
parent fbb61a26e7
commit f465045dd6
2 changed files with 31 additions and 8 deletions

View file

@ -238,7 +238,6 @@ class Reline::LineEditor
@perfect_matched = nil
@menu_info = nil
@searching_prompt = nil
@first_char = true
@just_cursor_moving = false
@eof = false
@continuous_insertion_buffer = String.new(encoding: @encoding)
@ -1110,13 +1109,10 @@ class Reline::LineEditor
end
if key.char.nil?
process_insert(force: true)
if @first_char
@eof = true
end
@eof = buffer_empty?
finish
return
end
@first_char = false
@completion_occurs = false
if key.char.is_a?(Symbol)
@ -1409,6 +1405,10 @@ class Reline::LineEditor
whole_lines.join("\n")
end
private def buffer_empty?
current_line.empty? and @buffer_of_lines.size == 1
end
def finished?
@finished
end
@ -1937,7 +1937,7 @@ class Reline::LineEditor
alias_method :kill_whole_line, :em_kill_line
private def em_delete(key)
if current_line.empty? and @buffer_of_lines.size == 1 and key == "\C-d".ord
if buffer_empty? and key == "\C-d".ord
@eof = true
finish
elsif @byte_pointer < current_line.bytesize
@ -2285,8 +2285,7 @@ class Reline::LineEditor
end
private def vi_list_or_eof(key)
if current_line.empty? and @buffer_of_lines.size == 1
set_current_line('', 0)
if buffer_empty?
@eof = true
finish
else