summaryrefslogtreecommitdiff
path: root/lib/irb/workspace.rb
diff options
context:
space:
mode:
authorMarc-Andre Lafortune <github@marc-andre.ca>2020-11-20 16:58:02 -0500
committeraycabta <aycabta@gmail.com>2020-12-17 20:24:08 +0900
commit980f994b3b349486c5e64b51241330d4c9fc63f1 (patch)
tree23780c7f97a28bfb4bf8c1e0b0e25acdbcc2b2fa /lib/irb/workspace.rb
parent753222d72c8787f2d57781c2e55194da2d3d0d8f (diff)
[ruby/irb] Change context-mode's default to new mode 4.
This new mode uses a copy of the TOPLEVEL_BINDING. This is compatible with refinements (contrary to mode 3), while keeping nested IRB sessions separate https://github.com/ruby/irb/commit/25c731cb2f
Diffstat (limited to 'lib/irb/workspace.rb')
-rw-r--r--lib/irb/workspace.rb4
1 files changed, 3 insertions, 1 deletions
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