From 3b7862c8e88cd7838a53ec083ac5733386400956 Mon Sep 17 00:00:00 2001 From: aycabta Date: Wed, 29 May 2019 05:53:14 +0900 Subject: Use existing instances for LineEditor and Config --- lib/reline.rb | 3 +++ test/reline/test_key_actor_emacs.rb | 4 ++-- 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 -- cgit v1.2.3