diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/irb/init.rb | 2 | ||||
-rw-r--r-- | lib/irb/workspace.rb | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/irb/init.rb b/lib/irb/init.rb index 48b669f211..73ef420e60 100644 --- a/lib/irb/init.rb +++ b/lib/irb/init.rb @@ -108,7 +108,7 @@ module IRB # :nodoc: @CONF[:PROMPT_MODE] = (STDIN.tty? ? :DEFAULT : :NULL) @CONF[:AUTO_INDENT] = true - @CONF[:CONTEXT_MODE] = 3 # use binding in function on TOPLEVEL_BINDING + @CONF[:CONTEXT_MODE] = 4 # use a copy of TOPLEVEL_BINDING @CONF[:SINGLE_IRB] = false @CONF[:LC_MESSAGES] = Locale.new diff --git a/lib/irb/workspace.rb b/lib/irb/workspace.rb index 97d3c5f84e..5a3a4bc020 100644 --- a/lib/irb/workspace.rb +++ b/lib/irb/workspace.rb @@ -51,11 +51,13 @@ EOF end @binding = BINDING_QUEUE.pop - when 3 # binding in function on TOPLEVEL_BINDING(default) + when 3 # binding in function on TOPLEVEL_BINDING @binding = eval("self.class.remove_method(:irb_binding) if defined?(irb_binding); private; def irb_binding; binding; end; irb_binding", TOPLEVEL_BINDING, __FILE__, __LINE__ - 3) + when 4 # binding is a copy of TOPLEVEL_BINDING (default) + @binding = TOPLEVEL_BINDING.dup end end |