irb 1.10.1 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.document +1 -1
- data/README.md +38 -11
- data/irb.gemspec +1 -1
- data/lib/irb/cmd/debug.rb +1 -1
- data/lib/irb/cmd/exit.rb +22 -0
- data/lib/irb/cmd/measure.rb +10 -13
- data/lib/irb/cmd/show_source.rb +5 -8
- data/lib/irb/completion.rb +7 -1
- data/lib/irb/context.rb +4 -16
- data/lib/irb/extend-command.rb +6 -12
- data/lib/irb/help.rb +1 -1
- data/lib/irb/init.rb +10 -10
- data/lib/irb/input-method.rb +8 -7
- data/lib/irb/source_finder.rb +9 -14
- data/lib/irb/version.rb +2 -2
- data/lib/irb/xmp.rb +2 -2
- data/lib/irb.rb +801 -313
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17969636013c03ffd08d5b53570ec0eda8620855092bd863c5b851e668343007
|
4
|
+
data.tar.gz: 7900a886588ebca5839e2b6fac6d538e58febd2706cdbbe979e098f2950d2d79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9d8fe7568718ce10db38ed1a85ad92473c21ca81738cadaa8a8258adcf18cdbfc5755c61621c336ac4bc53c57a08ad26311a4fc671fb98ad0cd5130c2e7527e
|
7
|
+
data.tar.gz: 729f6a0f6ba9fe6cfac3e2ed9e752531006f60c386b3e51fd84c877eeb1b3cdcb0fee1a7bf44c3c0bfa7f0f56def8ad8c7d99413b9b96b304d17e0c15d90aa87
|
data/.document
CHANGED
data/README.md
CHANGED
@@ -15,6 +15,10 @@ The `irb` command from your shell will start the interpreter.
|
|
15
15
|
- [Debugging with IRB](#debugging-with-irb)
|
16
16
|
- [More about `debug.gem`](#more-about-debuggem)
|
17
17
|
- [Advantages Over `debug.gem`'s Console](#advantages-over-debuggems-console)
|
18
|
+
- [Type Based Completion](#type-based-completion)
|
19
|
+
- [How to Enable IRB::TypeCompletor](#how-to-enable-irbtypecompletor)
|
20
|
+
- [Advantage over Default IRB::RegexpCompletor](#advantage-over-default-irbregexpcompletor)
|
21
|
+
- [Difference between Steep's Completion](#difference-between-steeps-completion)
|
18
22
|
- [Configuration](#configuration)
|
19
23
|
- [Environment Variables](#environment-variables)
|
20
24
|
- [Documentation](#documentation)
|
@@ -105,15 +109,9 @@ Hello World
|
|
105
109
|
|
106
110
|
The following commands are available on IRB. You can get the same output from the `show_cmds` command.
|
107
111
|
|
108
|
-
```
|
109
|
-
Workspace
|
110
|
-
cwws Show the current workspace.
|
111
|
-
chws Change the current workspace to an object.
|
112
|
-
workspaces Show workspaces.
|
113
|
-
pushws Push an object to the workspace stack.
|
114
|
-
popws Pop a workspace from the workspace stack.
|
115
|
-
|
112
|
+
```txt
|
116
113
|
IRB
|
114
|
+
exit Exit the current irb session.
|
117
115
|
irb_load Load a Ruby file.
|
118
116
|
irb_require Require a Ruby file.
|
119
117
|
source Loads a given file in the current session.
|
@@ -121,6 +119,13 @@ IRB
|
|
121
119
|
show_cmds List all available commands and their description.
|
122
120
|
history Shows the input history. `-g [query]` or `-G [query]` allows you to filter the output.
|
123
121
|
|
122
|
+
Workspace
|
123
|
+
cwws Show the current workspace.
|
124
|
+
chws Change the current workspace to an object.
|
125
|
+
workspaces Show workspaces.
|
126
|
+
pushws Push an object to the workspace stack.
|
127
|
+
popws Pop a workspace from the workspace stack.
|
128
|
+
|
124
129
|
Multi-irb (DEPRECATED)
|
125
130
|
irb Start a child IRB.
|
126
131
|
jobs List of current sessions.
|
@@ -149,6 +154,10 @@ Context
|
|
149
154
|
ls Show methods, constants, and variables. `-g [query]` or `-G [query]` allows you to filter out the output.
|
150
155
|
show_source Show the source code of a given method or constant.
|
151
156
|
whereami Show the source code around binding.irb again.
|
157
|
+
|
158
|
+
Aliases
|
159
|
+
$ Alias for `show_source`
|
160
|
+
@ Alias for `whereami`
|
152
161
|
```
|
153
162
|
|
154
163
|
## Debugging with IRB
|
@@ -242,15 +251,33 @@ IRB's default completion `IRB::RegexpCompletor` uses Regexp. IRB has another exp
|
|
242
251
|
|
243
252
|
### How to Enable IRB::TypeCompletor
|
244
253
|
|
245
|
-
|
254
|
+
Install [ruby/repl_type_completor](https://github.com/ruby/repl_type_completor/) with:
|
255
|
+
```
|
256
|
+
$ gem install repl_type_completor
|
257
|
+
```
|
258
|
+
Or add these lines to your project's Gemfile.
|
259
|
+
```ruby
|
260
|
+
gem 'irb'
|
261
|
+
gem 'repl_type_completor', group: [:development, :test]
|
262
|
+
```
|
263
|
+
|
264
|
+
Now you can use type based completion by:
|
265
|
+
|
266
|
+
Running IRB with the `--type-completor` option
|
246
267
|
```
|
247
268
|
$ irb --type-completor
|
248
269
|
```
|
249
|
-
|
270
|
+
|
271
|
+
Or writing this line to IRB's rc-file (e.g. `~/.irbrc`)
|
250
272
|
```ruby
|
251
273
|
IRB.conf[:COMPLETOR] = :type # default is :regexp
|
252
274
|
```
|
253
|
-
|
275
|
+
|
276
|
+
Or setting the environment variable `IRB_COMPLETOR`
|
277
|
+
```ruby
|
278
|
+
ENV['IRB_COMPLETOR'] = 'type'
|
279
|
+
IRB.start
|
280
|
+
```
|
254
281
|
|
255
282
|
To check if it's enabled, type `irb_info` into IRB and see the `Completion` section.
|
256
283
|
```
|
data/irb.gemspec
CHANGED
data/lib/irb/cmd/debug.rb
CHANGED
@@ -31,7 +31,7 @@ module IRB
|
|
31
31
|
# 4. Exit the current Irb#run call via `throw :IRB_EXIT`.
|
32
32
|
# 5. `Irb#debug_break` will be called and trigger the breakpoint, which will run the intended command.
|
33
33
|
unless binding_irb?
|
34
|
-
puts "
|
34
|
+
puts "Debugging commands are only available when IRB is started with binding.irb"
|
35
35
|
return
|
36
36
|
end
|
37
37
|
|
data/lib/irb/cmd/exit.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "nop"
|
4
|
+
|
5
|
+
module IRB
|
6
|
+
# :stopdoc:
|
7
|
+
|
8
|
+
module ExtendCommand
|
9
|
+
class Exit < Nop
|
10
|
+
category "IRB"
|
11
|
+
description "Exit the current irb session."
|
12
|
+
|
13
|
+
def execute(*)
|
14
|
+
IRB.irb_exit
|
15
|
+
rescue UncaughtThrowError
|
16
|
+
Kernel.exit
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# :startdoc:
|
22
|
+
end
|
data/lib/irb/cmd/measure.rb
CHANGED
@@ -12,32 +12,29 @@ module IRB
|
|
12
12
|
super(*args)
|
13
13
|
end
|
14
14
|
|
15
|
-
def execute(type = nil, arg = nil
|
15
|
+
def execute(type = nil, arg = nil)
|
16
16
|
# Please check IRB.init_config in lib/irb/init.rb that sets
|
17
17
|
# IRB.conf[:MEASURE_PROC] to register default "measure" methods,
|
18
18
|
# "measure :time" (abbreviated as "measure") and "measure :stackprof".
|
19
|
+
|
20
|
+
if block_given?
|
21
|
+
warn 'Configure IRB.conf[:MEASURE_PROC] to add custom measure methods.'
|
22
|
+
return
|
23
|
+
end
|
24
|
+
|
19
25
|
case type
|
20
26
|
when :off
|
21
|
-
IRB.conf[:MEASURE] = nil
|
22
27
|
IRB.unset_measure_callback(arg)
|
23
28
|
when :list
|
24
29
|
IRB.conf[:MEASURE_CALLBACKS].each do |type_name, _, arg_val|
|
25
30
|
puts "- #{type_name}" + (arg_val ? "(#{arg_val.inspect})" : '')
|
26
31
|
end
|
27
32
|
when :on
|
28
|
-
|
29
|
-
added = IRB.set_measure_callback(type, arg)
|
33
|
+
added = IRB.set_measure_callback(arg)
|
30
34
|
puts "#{added[0]} is added." if added
|
31
35
|
else
|
32
|
-
|
33
|
-
|
34
|
-
added = IRB.set_measure_callback(&block)
|
35
|
-
puts "#{added[0]} is added." if added
|
36
|
-
else
|
37
|
-
IRB.conf[:MEASURE] = true
|
38
|
-
added = IRB.set_measure_callback(type, arg)
|
39
|
-
puts "#{added[0]} is added." if added
|
40
|
-
end
|
36
|
+
added = IRB.set_measure_callback(type, arg)
|
37
|
+
puts "#{added[0]} is added." if added
|
41
38
|
end
|
42
39
|
nil
|
43
40
|
end
|
data/lib/irb/cmd/show_source.rb
CHANGED
@@ -27,17 +27,14 @@ module IRB
|
|
27
27
|
puts "Error: Expected a string but got #{str.inspect}"
|
28
28
|
return
|
29
29
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
else
|
35
|
-
source = SourceFinder.new(@irb_context).find_source(str)
|
36
|
-
end
|
30
|
+
|
31
|
+
str, esses = str.split(" -")
|
32
|
+
super_level = esses ? esses.count("s") : 0
|
33
|
+
source = SourceFinder.new(@irb_context).find_source(str, super_level)
|
37
34
|
|
38
35
|
if source
|
39
36
|
show_source(source)
|
40
|
-
elsif
|
37
|
+
elsif super_level > 0
|
41
38
|
puts "Error: Couldn't locate a super definition for #{str}"
|
42
39
|
else
|
43
40
|
puts "Error: Couldn't locate a definition for #{str}"
|
data/lib/irb/completion.rb
CHANGED
@@ -406,7 +406,13 @@ module IRB
|
|
406
406
|
else
|
407
407
|
select_message(receiver, message, candidates.sort)
|
408
408
|
end
|
409
|
-
|
409
|
+
when /^\s*$/
|
410
|
+
# empty input
|
411
|
+
if doc_namespace
|
412
|
+
nil
|
413
|
+
else
|
414
|
+
[]
|
415
|
+
end
|
410
416
|
else
|
411
417
|
if doc_namespace
|
412
418
|
vars = (bind.local_variables | bind.eval_instance_variables).collect{|m| m.to_s}
|
data/lib/irb/context.rb
CHANGED
@@ -264,15 +264,15 @@ module IRB
|
|
264
264
|
attr_reader :prompt_mode
|
265
265
|
# Standard IRB prompt.
|
266
266
|
#
|
267
|
-
# See IRB@
|
267
|
+
# See {Custom Prompts}[rdoc-ref:IRB@Custom+Prompts] for more information.
|
268
268
|
attr_accessor :prompt_i
|
269
269
|
# IRB prompt for continuated strings.
|
270
270
|
#
|
271
|
-
# See IRB@
|
271
|
+
# See {Custom Prompts}[rdoc-ref:IRB@Custom+Prompts] for more information.
|
272
272
|
attr_accessor :prompt_s
|
273
273
|
# IRB prompt for continuated statement. (e.g. immediately after an +if+)
|
274
274
|
#
|
275
|
-
# See IRB@
|
275
|
+
# See {Custom Prompts}[rdoc-ref:IRB@Custom+Prompts] for more information.
|
276
276
|
attr_accessor :prompt_c
|
277
277
|
|
278
278
|
# TODO: Remove this when developing v2.0
|
@@ -394,8 +394,6 @@ module IRB
|
|
394
394
|
# The default value is 16.
|
395
395
|
#
|
396
396
|
# Can also be set using the +--back-trace-limit+ command line option.
|
397
|
-
#
|
398
|
-
# See IRB@Command+line+options for more command line options.
|
399
397
|
attr_accessor :back_trace_limit
|
400
398
|
|
401
399
|
# User-defined IRB command aliases
|
@@ -463,7 +461,7 @@ module IRB
|
|
463
461
|
|
464
462
|
# Sets the +mode+ of the prompt in this context.
|
465
463
|
#
|
466
|
-
# See IRB@
|
464
|
+
# See {Custom Prompts}[rdoc-ref:IRB@Custom+Prompts] for more information.
|
467
465
|
def prompt_mode=(mode)
|
468
466
|
@prompt_mode = mode
|
469
467
|
pconf = IRB.conf[:PROMPT][mode]
|
@@ -501,8 +499,6 @@ module IRB
|
|
501
499
|
#
|
502
500
|
# Can also be set using the +--inspect+ and +--noinspect+ command line
|
503
501
|
# options.
|
504
|
-
#
|
505
|
-
# See IRB@Command+line+options for more command line options.
|
506
502
|
def inspect_mode=(opt)
|
507
503
|
|
508
504
|
if i = Inspector::INSPECTORS[opt]
|
@@ -577,14 +573,6 @@ module IRB
|
|
577
573
|
@inspect_method.inspect_value(@last_value)
|
578
574
|
end
|
579
575
|
|
580
|
-
alias __exit__ exit
|
581
|
-
# Exits the current session, see IRB.irb_exit
|
582
|
-
def exit(ret = 0)
|
583
|
-
IRB.irb_exit(@irb, ret)
|
584
|
-
rescue UncaughtThrowError
|
585
|
-
super
|
586
|
-
end
|
587
|
-
|
588
576
|
NOPRINTING_IVARS = ["@last_value"] # :nodoc:
|
589
577
|
NO_INSPECTING_IVARS = ["@irb", "@io"] # :nodoc:
|
590
578
|
IDNAME_IVARS = ["@prompt_mode"] # :nodoc:
|
data/lib/irb/extend-command.rb
CHANGED
@@ -16,15 +16,6 @@ module IRB # :nodoc:
|
|
16
16
|
# See #install_alias_method.
|
17
17
|
OVERRIDE_ALL = 0x02
|
18
18
|
|
19
|
-
# Quits the current irb context
|
20
|
-
#
|
21
|
-
# +ret+ is the optional signal or message to send to Context#exit
|
22
|
-
#
|
23
|
-
# Same as <code>IRB.CurrentContext.exit</code>.
|
24
|
-
def irb_exit(ret = 0)
|
25
|
-
irb_context.exit(ret)
|
26
|
-
end
|
27
|
-
|
28
19
|
# Displays current configuration.
|
29
20
|
#
|
30
21
|
# Modifying the configuration is achieved by sending a message to IRB.conf.
|
@@ -35,13 +26,16 @@ module IRB # :nodoc:
|
|
35
26
|
@ALIASES = [
|
36
27
|
[:context, :irb_context, NO_OVERRIDE],
|
37
28
|
[:conf, :irb_context, NO_OVERRIDE],
|
38
|
-
[:irb_quit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
|
39
|
-
[:exit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
|
40
|
-
[:quit, :irb_exit, OVERRIDE_PRIVATE_ONLY],
|
41
29
|
]
|
42
30
|
|
43
31
|
|
44
32
|
@EXTEND_COMMANDS = [
|
33
|
+
[
|
34
|
+
:irb_exit, :Exit, "cmd/exit",
|
35
|
+
[:exit, OVERRIDE_PRIVATE_ONLY],
|
36
|
+
[:quit, OVERRIDE_PRIVATE_ONLY],
|
37
|
+
[:irb_quit, OVERRIDE_PRIVATE_ONLY],
|
38
|
+
],
|
45
39
|
[
|
46
40
|
:irb_current_working_workspace, :CurrentWorkingWorkspace, "cmd/chws",
|
47
41
|
[:cwws, NO_OVERRIDE],
|
data/lib/irb/help.rb
CHANGED
data/lib/irb/init.rb
CHANGED
@@ -215,6 +215,7 @@ module IRB # :nodoc:
|
|
215
215
|
added = [:TIME, IRB.conf[:MEASURE_PROC][:TIME], arg]
|
216
216
|
end
|
217
217
|
if added
|
218
|
+
IRB.conf[:MEASURE] = true
|
218
219
|
found = IRB.conf[:MEASURE_CALLBACKS].find{ |m| m[0] == added[0] && m[2] == added[2] }
|
219
220
|
if found
|
220
221
|
# already added
|
@@ -235,6 +236,7 @@ module IRB # :nodoc:
|
|
235
236
|
type_sym = type.upcase.to_sym
|
236
237
|
IRB.conf[:MEASURE_CALLBACKS].reject!{ |t, | t == type_sym }
|
237
238
|
end
|
239
|
+
IRB.conf[:MEASURE] = nil if IRB.conf[:MEASURE_CALLBACKS].empty?
|
238
240
|
end
|
239
241
|
|
240
242
|
def IRB.init_error
|
@@ -387,18 +389,16 @@ module IRB # :nodoc:
|
|
387
389
|
$LOAD_PATH.unshift(*load_path)
|
388
390
|
end
|
389
391
|
|
390
|
-
#
|
392
|
+
# Run the config file
|
391
393
|
def IRB.run_config
|
392
394
|
if @CONF[:RC]
|
393
395
|
begin
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
print "\t", err, "\n"
|
401
|
-
end
|
396
|
+
file = rc_file
|
397
|
+
# Because rc_file always returns `HOME/.irbrc` even if no rc file is present, we can't warn users about missing rc files.
|
398
|
+
# Otherwise, it'd be very noisy.
|
399
|
+
load file if File.exist?(file)
|
400
|
+
rescue StandardError, ScriptError => e
|
401
|
+
warn "Error loading RC file '#{file}':\n#{e.full_message(highlight: false)}"
|
402
402
|
end
|
403
403
|
end
|
404
404
|
end
|
@@ -416,7 +416,7 @@ module IRB # :nodoc:
|
|
416
416
|
end
|
417
417
|
case rc_file = @CONF[:RC_NAME_GENERATOR].call(ext)
|
418
418
|
when String
|
419
|
-
|
419
|
+
rc_file
|
420
420
|
else
|
421
421
|
fail IllegalRCNameGenerator
|
422
422
|
end
|
data/lib/irb/input-method.rb
CHANGED
@@ -291,11 +291,13 @@ module IRB
|
|
291
291
|
@auto_indent_proc = block
|
292
292
|
end
|
293
293
|
|
294
|
+
def retrieve_doc_namespace(matched)
|
295
|
+
preposing, _target, postposing, bind = @completion_params
|
296
|
+
@completor.doc_namespace(preposing, matched, postposing, bind: bind)
|
297
|
+
end
|
298
|
+
|
294
299
|
def show_doc_dialog_proc
|
295
|
-
|
296
|
-
preposing, _target, postposing, bind = @completion_params
|
297
|
-
@completor.doc_namespace(preposing, matched, postposing, bind: bind)
|
298
|
-
}
|
300
|
+
input_method = self # self is changed in the lambda below.
|
299
301
|
->() {
|
300
302
|
dialog.trap_key = nil
|
301
303
|
alt_d = [
|
@@ -311,7 +313,7 @@ module IRB
|
|
311
313
|
cursor_pos_to_render, result, pointer, autocomplete_dialog = context.pop(4)
|
312
314
|
return nil if result.nil? or pointer.nil? or pointer < 0
|
313
315
|
|
314
|
-
name =
|
316
|
+
name = input_method.retrieve_doc_namespace(result[pointer])
|
315
317
|
# Use first one because document dialog does not support multiple namespaces.
|
316
318
|
name = name.first if name.is_a?(Array)
|
317
319
|
|
@@ -419,8 +421,7 @@ module IRB
|
|
419
421
|
return
|
420
422
|
end
|
421
423
|
|
422
|
-
|
423
|
-
namespace = @completor.doc_namespace(preposing, matched, postposing, bind: bind)
|
424
|
+
namespace = retrieve_doc_namespace(matched)
|
424
425
|
return unless namespace
|
425
426
|
|
426
427
|
driver ||= RDoc::RI::Driver.new
|
data/lib/irb/source_finder.rb
CHANGED
@@ -16,10 +16,10 @@ module IRB
|
|
16
16
|
@irb_context = irb_context
|
17
17
|
end
|
18
18
|
|
19
|
-
def find_source(signature,
|
19
|
+
def find_source(signature, super_level = 0)
|
20
20
|
context_binding = @irb_context.workspace.binding
|
21
21
|
case signature
|
22
|
-
when /\A[A-Z]\w*(::[A-Z]\w*)*\z/ # Const::Name
|
22
|
+
when /\A(::)?[A-Z]\w*(::[A-Z]\w*)*\z/ # Const::Name
|
23
23
|
eval(signature, context_binding) # trigger autoload
|
24
24
|
base = context_binding.receiver.yield_self { |r| r.is_a?(Module) ? r : Object }
|
25
25
|
file, line = base.const_source_location(signature)
|
@@ -27,14 +27,15 @@ module IRB
|
|
27
27
|
owner = eval(Regexp.last_match[:owner], context_binding)
|
28
28
|
method = Regexp.last_match[:method]
|
29
29
|
return unless owner.respond_to?(:instance_method)
|
30
|
-
file, line = method_target(owner,
|
30
|
+
file, line = method_target(owner, super_level, method, "owner")
|
31
31
|
when /\A((?<receiver>.+)(\.|::))?(?<method>[^ :.]+)\z/ # method, receiver.method, receiver::method
|
32
32
|
receiver = eval(Regexp.last_match[:receiver] || 'self', context_binding)
|
33
33
|
method = Regexp.last_match[:method]
|
34
34
|
return unless receiver.respond_to?(method, true)
|
35
|
-
file, line = method_target(receiver,
|
35
|
+
file, line = method_target(receiver, super_level, method, "receiver")
|
36
36
|
end
|
37
|
-
|
37
|
+
# If the line is zero, it means that the target's source is probably in a binary file, which we should ignore.
|
38
|
+
if file && line && !line.zero? && File.exist?(file)
|
38
39
|
Source.new(file: file, first_line: line, last_line: find_end(file, line))
|
39
40
|
end
|
40
41
|
end
|
@@ -60,20 +61,14 @@ module IRB
|
|
60
61
|
first_line
|
61
62
|
end
|
62
63
|
|
63
|
-
def method_target(owner_receiver,
|
64
|
+
def method_target(owner_receiver, super_level, method, type)
|
64
65
|
case type
|
65
66
|
when "owner"
|
66
67
|
target_method = owner_receiver.instance_method(method)
|
67
|
-
return target_method.source_location unless s_count
|
68
68
|
when "receiver"
|
69
|
-
|
70
|
-
target_method = owner_receiver.class.instance_method(method)
|
71
|
-
else
|
72
|
-
target_method = method
|
73
|
-
return owner_receiver.method(method).source_location
|
74
|
-
end
|
69
|
+
target_method = owner_receiver.method(method)
|
75
70
|
end
|
76
|
-
|
71
|
+
super_level.times do |s|
|
77
72
|
target_method = target_method.super_method if target_method
|
78
73
|
end
|
79
74
|
target_method.nil? ? nil : target_method.source_location
|
data/lib/irb/version.rb
CHANGED
data/lib/irb/xmp.rb
CHANGED
@@ -44,8 +44,8 @@ class XMP
|
|
44
44
|
# The top-level binding or, optional +bind+ parameter will be used when
|
45
45
|
# creating the workspace. See WorkSpace.new for more information.
|
46
46
|
#
|
47
|
-
# This uses the +:XMP+ prompt mode
|
48
|
-
#
|
47
|
+
# This uses the +:XMP+ prompt mode.
|
48
|
+
# See {Custom Prompts}[rdoc-ref:IRB@Custom+Prompts] for more information.
|
49
49
|
def initialize(bind = nil)
|
50
50
|
IRB.init_config(nil)
|
51
51
|
|