[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 https://github.com/ruby/reline/commit/cc74b3686a
This commit is contained in:
parent
fbb61a26e7
commit
f465045dd6
@ -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
|
||||
|
@ -390,6 +390,30 @@ class Reline::Test < Reline::TestCase
|
||||
assert_match(/\AReline::ANSI\nprompt> /, out)
|
||||
end
|
||||
|
||||
def test_read_eof_returns_input
|
||||
pend if win?
|
||||
lib = File.expand_path("../../lib", __dir__)
|
||||
code = "p result: Reline.readline"
|
||||
out = IO.popen([Reline.test_rubybin, "-I#{lib}", "-rreline", "-e", code], "r+") do |io|
|
||||
io.write "a\C-a"
|
||||
io.close_write
|
||||
io.read
|
||||
end
|
||||
assert_include(out, '{:result=>"a"}')
|
||||
end
|
||||
|
||||
def test_read_eof_returns_nil_if_empty
|
||||
pend if win?
|
||||
lib = File.expand_path("../../lib", __dir__)
|
||||
code = "p result: Reline.readline"
|
||||
out = IO.popen([Reline.test_rubybin, "-I#{lib}", "-rreline", "-e", code], "r+") do |io|
|
||||
io.write "a\C-h"
|
||||
io.close_write
|
||||
io.read
|
||||
end
|
||||
assert_include(out, '{:result=>nil}')
|
||||
end
|
||||
|
||||
def test_require_reline_should_not_trigger_winsize
|
||||
pend if win?
|
||||
lib = File.expand_path("../../lib", __dir__)
|
||||
|
Loading…
x
Reference in New Issue
Block a user