diff options
-rw-r--r-- | lib/reline.rb | 3 | ||||
-rw-r--r-- | test/reline/test_key_actor_emacs.rb | 4 | ||||
-rw-r--r-- | test/reline/test_key_actor_vi.rb | 7 |
3 files changed, 9 insertions, 5 deletions
diff --git a/lib/reline.rb b/lib/reline.rb index 656fab2fea..df2b620448 100644 --- a/lib/reline.rb +++ b/lib/reline.rb @@ -46,10 +46,13 @@ module Reline end def push(*val) + diff = size + val.size - @@config.history_size + shift(diff) if diff > 0 super(*(val.map{ |v| String.new(v, encoding: Encoding::default_external) })) end def <<(val) + shift if size + 1 > @@config.history_size super(String.new(val, encoding: Encoding::default_external)) end diff --git a/test/reline/test_key_actor_emacs.rb b/test/reline/test_key_actor_emacs.rb index 5778677ad8..f76ce66dfe 100644 --- a/test/reline/test_key_actor_emacs.rb +++ b/test/reline/test_key_actor_emacs.rb @@ -4,9 +4,9 @@ class Reline::KeyActor::Emacs::Test < Reline::TestCase def setup Reline.send(:test_mode) @prompt = '> ' - @config = Reline::Config.new # Emacs mode is default + @config = Reline.class_variable_get(:@@config) # Emacs mode is default + @line_editor = Reline.class_variable_get(:@@line_editor) @encoding = (RELINE_TEST_ENCODING rescue Encoding.default_external) - @line_editor = Reline::LineEditor.new(@config) @line_editor.reset(@prompt, @encoding) end diff --git a/test/reline/test_key_actor_vi.rb b/test/reline/test_key_actor_vi.rb index f5ceda05a6..ac62a09d16 100644 --- a/test/reline/test_key_actor_vi.rb +++ b/test/reline/test_key_actor_vi.rb @@ -4,12 +4,13 @@ class Reline::KeyActor::ViInsert::Test < Reline::TestCase def setup Reline.send(:test_mode) @prompt = '> ' - @config = Reline::Config.new + @config = Reline.class_variable_get(:@@config) # Emacs mode is default @config.read_lines(<<~LINES.split(/(?<=\n)/)) set editing-mode vi LINES - @line_editor = Reline::LineEditor.new(@config) - @line_editor.reset(@prompt, (RELINE_TEST_ENCODING rescue Encoding.default_external)) + @line_editor = Reline.class_variable_get(:@@line_editor) + @encoding = (RELINE_TEST_ENCODING rescue Encoding.default_external) + @line_editor.reset(@prompt, @encoding) end def test_vi_command_mode |