rubysl-irb 1.0.2 → 2.0.3

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -2
  3. data/lib/irb/cmd/chws.rb +6 -6
  4. data/lib/irb/cmd/fork.rb +10 -10
  5. data/lib/irb/cmd/help.rb +24 -14
  6. data/lib/irb/cmd/load.rb +8 -7
  7. data/lib/irb/cmd/nop.rb +8 -8
  8. data/lib/irb/cmd/pushws.rb +6 -5
  9. data/lib/irb/cmd/subirb.rb +6 -7
  10. data/lib/irb/completion.rb +90 -58
  11. data/lib/irb/context.rb +197 -30
  12. data/lib/irb/ext/change-ws.rb +17 -10
  13. data/lib/irb/ext/history.rb +20 -10
  14. data/lib/irb/ext/loader.rb +22 -12
  15. data/lib/irb/ext/math-mode.rb +16 -6
  16. data/lib/irb/ext/multi-irb.rb +69 -24
  17. data/lib/irb/ext/save-history.rb +87 -37
  18. data/lib/irb/ext/tracer.rb +17 -7
  19. data/lib/irb/ext/use-loader.rb +14 -6
  20. data/lib/irb/ext/workspaces.rb +16 -6
  21. data/lib/irb/extend-command.rb +92 -34
  22. data/lib/irb/frame.rb +18 -5
  23. data/lib/irb/help.rb +20 -19
  24. data/lib/irb/init.rb +156 -104
  25. data/lib/irb/input-method.rb +96 -23
  26. data/lib/irb/inspector.rb +145 -0
  27. data/lib/irb/lc/.document +4 -0
  28. data/lib/irb/lc/error.rb +8 -7
  29. data/lib/irb/lc/{help-message.rb → help-message} +14 -11
  30. data/lib/irb/lc/ja/encoding_aliases.rb +10 -0
  31. data/lib/irb/lc/ja/error.rb +19 -16
  32. data/lib/irb/lc/ja/help-message +33 -28
  33. data/lib/irb/locale.rb +83 -85
  34. data/lib/irb/magic-file.rb +37 -0
  35. data/lib/irb/notifier.rb +101 -15
  36. data/lib/irb/output-method.rb +38 -32
  37. data/lib/irb/ruby-lex.rb +143 -81
  38. data/lib/irb/ruby-token.rb +13 -19
  39. data/lib/irb/slex.rb +26 -27
  40. data/lib/irb/src_encoding.rb +4 -0
  41. data/lib/irb/version.rb +6 -7
  42. data/lib/irb/workspace.rb +22 -15
  43. data/lib/irb/ws-for-case-2.rb +5 -6
  44. data/lib/irb/xmp.rb +91 -4
  45. data/lib/rubysl/irb/irb.rb +523 -175
  46. data/lib/rubysl/irb/version.rb +1 -1
  47. data/rubysl-irb.gemspec +7 -6
  48. metadata +35 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 201469d3b84442d02b22e1e9c9ca01f73ba419a3
4
- data.tar.gz: 93235143e723b589f75dd8c4dc051756d380cf5e
3
+ metadata.gz: 1cc1caf272f42cf9753a854bfb67e228ba92fb34
4
+ data.tar.gz: dfc3cb9d5b6fdb2646931ad5eb34d772f1cd51e1
5
5
  SHA512:
6
- metadata.gz: 351477db4bb573e53dc2bdf1c680667eb3e356f155163657c6a715a26ed7f2ee031ad74113be2b8664797fad9efb1ee2e83054796e7ac5b1115fa9d0223ea8da
7
- data.tar.gz: e64921f7471b9babc7e4dc285b859a07146bec72af25f5f70f1391d4aa2254d49fff002c6321c3cd284b736babae451ee7c32f1690fdc79ce673342da5db3d7b
6
+ metadata.gz: cb75aa61c78a8e7c60f57799901589ed62a1902286a21472fc2cca4add5aa30e317000e1f366ae63c98694b430247785425de66bf912130155bf1b46fc9465aa
7
+ data.tar.gz: ba69200e216aa59c3955ba9f1956d3eddb0d0bfd6531d2fb2522eb215e61e1ad4be02cafc8d8bbc3edb9b0497658bfa80207331e1781076beecf3c832652104b
data/.travis.yml CHANGED
@@ -1,8 +1,9 @@
1
1
  language: ruby
2
2
  before_install:
3
+ - rvm use $RVM --install --binary --fuzzy
3
4
  - gem update --system
4
5
  - gem --version
5
6
  - gem install rubysl-bundler
7
+ env:
8
+ - RVM=rbx-nightly-d21 RUBYLIB=lib
6
9
  script: bundle exec mspec spec
7
- rvm:
8
- - rbx-nightly-18mode
data/lib/irb/cmd/chws.rb CHANGED
@@ -1,18 +1,18 @@
1
1
  #
2
- # change-ws.rb -
3
- # $Release Version: 0.9.5$
4
- # $Revision: 11708 $
5
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
2
+ # change-ws.rb -
3
+ # $Release Version: 0.9.6$
4
+ # $Revision$
6
5
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
6
  #
8
7
  # --
9
8
  #
10
- #
9
+ #
11
10
  #
12
11
 
13
12
  require "irb/cmd/nop.rb"
14
13
  require "irb/ext/change-ws.rb"
15
14
 
15
+ # :stopdoc:
16
16
  module IRB
17
17
  module ExtendCommand
18
18
 
@@ -30,4 +30,4 @@ module IRB
30
30
  end
31
31
  end
32
32
  end
33
-
33
+ # :startdoc:
data/lib/irb/cmd/fork.rb CHANGED
@@ -1,25 +1,24 @@
1
1
  #
2
- # fork.rb -
3
- # $Release Version: 0.9.5 $
4
- # $Revision: 11708 $
5
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
2
+ # fork.rb -
3
+ # $Release Version: 0.9.6 $
4
+ # $Revision$
6
5
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
6
  #
8
7
  # --
9
8
  #
10
- #
9
+ #
11
10
  #
12
11
 
13
- @RCS_ID='-$Id: fork.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
14
-
12
+ @RCS_ID='-$Id$-'
15
13
 
14
+ # :stopdoc:
16
15
  module IRB
17
16
  module ExtendCommand
18
17
  class Fork<Nop
19
- def execute(&block)
18
+ def execute
20
19
  pid = send ExtendCommand.irb_original_method_name("fork")
21
- unless pid
22
- class<<self
20
+ unless pid
21
+ class << self
23
22
  alias_method :exit, ExtendCommand.irb_original_method_name('exit')
24
23
  end
25
24
  if iterator?
@@ -35,5 +34,6 @@ module IRB
35
34
  end
36
35
  end
37
36
  end
37
+ # :startdoc:
38
38
 
39
39
 
data/lib/irb/cmd/help.rb CHANGED
@@ -1,31 +1,41 @@
1
1
  #
2
2
  # help.rb - helper using ri
3
- # $Release Version: 0.9.5$
4
- # $Revision: 11708 $
5
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
3
+ # $Release Version: 0.9.6$
4
+ # $Revision$
6
5
  #
7
6
  # --
8
7
  #
9
- #
8
+ #
10
9
  #
11
10
 
12
11
  require 'rdoc/ri/driver'
13
12
 
13
+ require "irb/cmd/nop.rb"
14
+
15
+ # :stopdoc:
14
16
  module IRB
15
17
  module ExtendCommand
16
- module Help
17
- include RDoc::RI
18
- def self.execute(context, *names)
19
- names.each do |name|
20
- begin
21
- Driver.run(['-T', name.to_s])
22
- rescue Driver::NotFoundError
23
- puts $!.message
24
- rescue SystemExit
18
+ class Help<Nop
19
+ begin
20
+ Ri = RDoc::RI::Driver.new
21
+ rescue SystemExit
22
+ else
23
+ def execute(*names)
24
+ if names.empty?
25
+ Ri.interactive
26
+ return
27
+ end
28
+ names.each do |name|
29
+ begin
30
+ Ri.display_name(name.to_s)
31
+ rescue RDoc::RI::Error
32
+ puts $!.message
33
+ end
25
34
  end
35
+ nil
26
36
  end
27
- nil
28
37
  end
29
38
  end
30
39
  end
31
40
  end
41
+ # :startdoc:
data/lib/irb/cmd/load.rb CHANGED
@@ -1,18 +1,18 @@
1
1
  #
2
- # load.rb -
3
- # $Release Version: 0.9.5$
4
- # $Revision: 11708 $
5
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
2
+ # load.rb -
3
+ # $Release Version: 0.9.6$
4
+ # $Revision$
6
5
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
6
  #
8
7
  # --
9
8
  #
10
- #
9
+ #
11
10
  #
12
11
 
13
12
  require "irb/cmd/nop.rb"
14
13
  require "irb/ext/loader"
15
14
 
15
+ # :stopdoc:
16
16
  module IRB
17
17
  module ExtendCommand
18
18
  class Load<Nop
@@ -26,7 +26,7 @@ module IRB
26
26
 
27
27
  class Require<Nop
28
28
  include IrbLoader
29
-
29
+
30
30
  def execute(file_name)
31
31
  # return ruby_require(file_name) unless IRB.conf[:USE_LOADER]
32
32
 
@@ -45,7 +45,7 @@ module IRB
45
45
  when /\.(so|o|sl)$/
46
46
  return ruby_require(file_name)
47
47
  end
48
-
48
+
49
49
  begin
50
50
  irb_load(f = file_name + ".rb")
51
51
  $".push f
@@ -65,3 +65,4 @@ module IRB
65
65
  end
66
66
 
67
67
  end
68
+ # :startdoc:
data/lib/irb/cmd/nop.rb CHANGED
@@ -1,19 +1,19 @@
1
1
  #
2
- # nop.rb -
3
- # $Release Version: 0.9.5$
4
- # $Revision: 11708 $
5
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
2
+ # nop.rb -
3
+ # $Release Version: 0.9.6$
4
+ # $Revision$
6
5
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
6
  #
8
7
  # --
9
8
  #
10
- #
11
9
  #
10
+ #
11
+ # :stopdoc:
12
12
  module IRB
13
13
  module ExtendCommand
14
14
  class Nop
15
-
16
- @RCS_ID='-$Id: nop.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
15
+
16
+ @RCS_ID='-$Id$-'
17
17
 
18
18
  def self.execute(conf, *opts)
19
19
  command = new(conf)
@@ -36,4 +36,4 @@ module IRB
36
36
  end
37
37
  end
38
38
  end
39
-
39
+ # :startdoc:
@@ -1,18 +1,18 @@
1
1
  #
2
- # change-ws.rb -
3
- # $Release Version: 0.9.5$
4
- # $Revision: 11708 $
5
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
2
+ # change-ws.rb -
3
+ # $Release Version: 0.9.6$
4
+ # $Revision$
6
5
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
7
6
  #
8
7
  # --
9
8
  #
10
- #
9
+ #
11
10
  #
12
11
 
13
12
  require "irb/cmd/nop.rb"
14
13
  require "irb/ext/workspaces.rb"
15
14
 
15
+ # :stopdoc:
16
16
  module IRB
17
17
  module ExtendCommand
18
18
  class Workspaces<Nop
@@ -36,4 +36,5 @@ module IRB
36
36
  end
37
37
  end
38
38
  end
39
+ # :startdoc:
39
40
 
@@ -1,19 +1,17 @@
1
- #!/usr/local/bin/ruby
2
- #
3
- # multi.rb -
4
- # $Release Version: 0.9.5$
5
- # $Revision: 11708 $
6
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
1
+ # multi.rb -
2
+ # $Release Version: 0.9.6$
3
+ # $Revision$
7
4
  # by Keiju ISHITSUKA(keiju@ruby-lang.org)
8
5
  #
9
6
  # --
10
7
  #
11
- #
8
+ #
12
9
  #
13
10
 
14
11
  require "irb/cmd/nop.rb"
15
12
  require "irb/ext/multi-irb"
16
13
 
14
+ # :stopdoc:
17
15
  module IRB
18
16
  module ExtendCommand
19
17
  class IrbCommand<Nop
@@ -41,3 +39,4 @@ module IRB
41
39
  end
42
40
  end
43
41
  end
42
+ # :startdoc:
@@ -1,8 +1,7 @@
1
1
  #
2
- # irb/completor.rb -
2
+ # irb/completor.rb -
3
3
  # $Release Version: 0.9$
4
- # $Revision: 11708 $
5
- # $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
4
+ # $Revision$
6
5
  # by Keiju ISHITSUKA(keiju@ishitsuka.com)
7
6
  # From Original Idea of shugo@ruby-lang.org
8
7
  #
@@ -10,22 +9,24 @@
10
9
  require "readline"
11
10
 
12
11
  module IRB
13
- module InputCompletor
12
+ module InputCompletor # :nodoc:
14
13
 
15
- @RCS_ID='-$Id: completion.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
14
+ @RCS_ID='-$Id$-'
16
15
 
16
+ # Set of reserved words used by Ruby, you should not use these for
17
+ # constants or variables
17
18
  ReservedWords = [
18
19
  "BEGIN", "END",
19
- "alias", "and",
20
- "begin", "break",
20
+ "alias", "and",
21
+ "begin", "break",
21
22
  "case", "class",
22
23
  "def", "defined", "do",
23
24
  "else", "elsif", "end", "ensure",
24
- "false", "for",
25
- "if", "in",
26
- "module",
25
+ "false", "for",
26
+ "if", "in",
27
+ "module",
27
28
  "next", "nil", "not",
28
- "or",
29
+ "or",
29
30
  "redo", "rescue", "retry", "return",
30
31
  "self", "super",
31
32
  "then", "true",
@@ -33,19 +34,27 @@ module IRB
33
34
  "when", "while",
34
35
  "yield",
35
36
  ]
36
-
37
+
37
38
  CompletionProc = proc { |input|
38
39
  bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
39
-
40
+
40
41
  # puts "input: #{input}"
41
42
 
42
43
  case input
44
+ when /^((["'`]).*\2)\.([^.]*)$/
45
+ # String
46
+ receiver = $1
47
+ message = Regexp.quote($3)
48
+
49
+ candidates = String.instance_methods.collect{|m| m.to_s}
50
+ select_message(receiver, message, candidates)
51
+
43
52
  when /^(\/[^\/]*\/)\.([^.]*)$/
44
53
  # Regexp
45
54
  receiver = $1
46
55
  message = Regexp.quote($2)
47
56
 
48
- candidates = Regexp.instance_methods(true)
57
+ candidates = Regexp.instance_methods.collect{|m| m.to_s}
49
58
  select_message(receiver, message, candidates)
50
59
 
51
60
  when /^([^\]]*\])\.([^.]*)$/
@@ -53,7 +62,7 @@ module IRB
53
62
  receiver = $1
54
63
  message = Regexp.quote($2)
55
64
 
56
- candidates = Array.instance_methods(true)
65
+ candidates = Array.instance_methods.collect{|m| m.to_s}
57
66
  select_message(receiver, message, candidates)
58
67
 
59
68
  when /^([^\}]*\})\.([^.]*)$/
@@ -61,15 +70,16 @@ module IRB
61
70
  receiver = $1
62
71
  message = Regexp.quote($2)
63
72
 
64
- candidates = Proc.instance_methods(true) | Hash.instance_methods(true)
73
+ candidates = Proc.instance_methods.collect{|m| m.to_s}
74
+ candidates |= Hash.instance_methods.collect{|m| m.to_s}
65
75
  select_message(receiver, message, candidates)
66
-
76
+
67
77
  when /^(:[^:.]*)$/
68
78
  # Symbol
69
79
  if Symbol.respond_to?(:all_symbols)
70
80
  sym = $1
71
81
  candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
72
- candidates.grep(/^#{sym}/)
82
+ candidates.grep(/^#{Regexp.quote(sym)}/)
73
83
  else
74
84
  []
75
85
  end
@@ -77,72 +87,88 @@ module IRB
77
87
  when /^::([A-Z][^:\.\(]*)$/
78
88
  # Absolute Constant or class methods
79
89
  receiver = $1
80
- candidates = Object.constants
90
+ candidates = Object.constants.collect{|m| m.to_s}
81
91
  candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
82
92
 
83
- when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
93
+ # when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
94
+ when /^([A-Z].*)::([^:.]*)$/
84
95
  # Constant or class methods
85
96
  receiver = $1
86
- message = Regexp.quote($4)
97
+ message = Regexp.quote($2)
87
98
  begin
88
- candidates = eval("#{receiver}.constants | #{receiver}.methods", bind)
99
+ candidates = eval("#{receiver}.constants.collect{|m| m.to_s}", bind)
100
+ candidates |= eval("#{receiver}.methods.collect{|m| m.to_s}", bind)
89
101
  rescue Exception
90
102
  candidates = []
91
103
  end
92
- candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
104
+ select_message(receiver, message, candidates, "::")
93
105
 
94
- when /^(:[^:.]+)\.([^.]*)$/
106
+ when /^(:[^:.]+)(\.|::)([^.]*)$/
95
107
  # Symbol
96
108
  receiver = $1
97
- message = Regexp.quote($2)
109
+ sep = $2
110
+ message = Regexp.quote($3)
98
111
 
99
- candidates = Symbol.instance_methods(true)
100
- select_message(receiver, message, candidates)
112
+ candidates = Symbol.instance_methods.collect{|m| m.to_s}
113
+ select_message(receiver, message, candidates, sep)
101
114
 
102
- when /^(-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE]-?[0-9]+)?)\.([^.]*)$/
115
+ when /^(-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE]-?[0-9]+)?)(\.|::)([^.]*)$/
103
116
  # Numeric
104
117
  receiver = $1
105
- message = Regexp.quote($5)
118
+ sep = $5
119
+ message = Regexp.quote($6)
106
120
 
107
121
  begin
108
- candidates = eval(receiver, bind).methods
122
+ candidates = eval(receiver, bind).methods.collect{|m| m.to_s}
109
123
  rescue Exception
110
124
  candidates = []
111
125
  end
112
- select_message(receiver, message, candidates)
126
+ select_message(receiver, message, candidates, sep)
113
127
 
114
- when /^(-?0x[0-9a-fA-F_]+)\.([^.]*)$/
128
+ when /^(-?0x[0-9a-fA-F_]+)(\.|::)([^.]*)$/
115
129
  # Numeric(0xFFFF)
116
130
  receiver = $1
117
- message = Regexp.quote($2)
131
+ sep = $2
132
+ message = Regexp.quote($3)
118
133
 
119
134
  begin
120
- candidates = eval(receiver, bind).methods
135
+ candidates = eval(receiver, bind).methods.collect{|m| m.to_s}
121
136
  rescue Exception
122
137
  candidates = []
123
138
  end
124
- select_message(receiver, message, candidates)
139
+ select_message(receiver, message, candidates, sep)
125
140
 
126
141
  when /^(\$[^.]*)$/
127
- candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
142
+ # global var
143
+ regmessage = Regexp.new(Regexp.quote($1))
144
+ candidates = global_variables.collect{|m| m.to_s}.grep(regmessage)
128
145
 
129
146
  # when /^(\$?(\.?[^.]+)+)\.([^.]*)$/
130
- when /^((\.?[^.]+)+)\.([^.]*)$/
131
- # variable
147
+ # when /^((\.?[^.]+)+)\.([^.]*)$/
148
+ # when /^([^."].*)\.([^.]*)$/
149
+ when /^([^."].*)(\.|::)([^.]*)$/
150
+ # variable.func or func.func
132
151
  receiver = $1
152
+ sep = $2
133
153
  message = Regexp.quote($3)
134
154
 
135
- gv = eval("global_variables", bind)
136
- lv = eval("local_variables", bind)
137
- cv = eval("self.class.constants", bind)
138
-
139
- if (gv | lv | cv).include?(receiver)
140
- # foo.func and foo is local var.
141
- candidates = eval("#{receiver}.methods", bind)
142
- elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver
155
+ gv = eval("global_variables", bind).collect{|m| m.to_s}
156
+ lv = eval("local_variables", bind).collect{|m| m.to_s}
157
+ iv = eval("instance_variables", bind).collect{|m| m.to_s}
158
+ cv = eval("self.class.constants", bind).collect{|m| m.to_s}
159
+
160
+ if (gv | lv | iv | cv).include?(receiver) or /^[A-Z]/ =~ receiver && /\./ !~ receiver
161
+ # foo.func and foo is var. OR
162
+ # foo::func and foo is var. OR
163
+ # foo::Const and foo is var. OR
143
164
  # Foo::Bar.func
144
165
  begin
145
- candidates = eval("#{receiver}.methods", bind)
166
+ candidates = []
167
+ rec = eval(receiver, bind)
168
+ if sep == "::" and rec.kind_of?(Module)
169
+ candidates = rec.constants.collect{|m| m.to_s}
170
+ end
171
+ candidates |= rec.methods.collect{|m| m.to_s}
146
172
  rescue Exception
147
173
  candidates = []
148
174
  end
@@ -155,14 +181,18 @@ module IRB
155
181
  rescue Exception
156
182
  name = ""
157
183
  end
158
- next if name != "IRB::Context" and
159
- /^(IRB|SLex|RubyLex|RubyToken)/ =~ name
160
- candidates.concat m.instance_methods(false)
184
+ begin
185
+ next if name != "IRB::Context" and
186
+ /^(IRB|SLex|RubyLex|RubyToken)/ =~ name
187
+ rescue Exception
188
+ next
189
+ end
190
+ candidates.concat m.instance_methods(false).collect{|x| x.to_s}
161
191
  }
162
192
  candidates.sort!
163
193
  candidates.uniq!
164
194
  end
165
- select_message(receiver, message, candidates)
195
+ select_message(receiver, message, candidates, sep)
166
196
 
167
197
  when /^\.([^.]*)$/
168
198
  # unknown(maybe String)
@@ -170,25 +200,26 @@ module IRB
170
200
  receiver = ""
171
201
  message = Regexp.quote($1)
172
202
 
173
- candidates = String.instance_methods(true)
203
+ candidates = String.instance_methods(true).collect{|m| m.to_s}
174
204
  select_message(receiver, message, candidates)
175
205
 
176
206
  else
177
- candidates = eval("methods | private_methods | local_variables | self.class.constants", bind)
178
-
207
+ candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
208
+
179
209
  (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
180
210
  end
181
211
  }
182
212
 
213
+ # Set of available operators in Ruby
183
214
  Operators = ["%", "&", "*", "**", "+", "-", "/",
184
215
  "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
185
- "[]", "[]=", "^",]
216
+ "[]", "[]=", "^", "!", "!=", "!~"]
186
217
 
187
- def self.select_message(receiver, message, candidates)
218
+ def self.select_message(receiver, message, candidates, sep = ".")
188
219
  candidates.grep(/^#{message}/).collect do |e|
189
220
  case e
190
221
  when /^[a-zA-Z_]/
191
- receiver + "." + e
222
+ receiver + sep + e
192
223
  when /^[0-9]/
193
224
  when *Operators
194
225
  #receiver + " " + e
@@ -199,7 +230,8 @@ module IRB
199
230
  end
200
231
 
201
232
  if Readline.respond_to?("basic_word_break_characters=")
202
- Readline.basic_word_break_characters= " \t\n\"\\'`><=;|&{("
233
+ # Readline.basic_word_break_characters= " \t\n\"\\'`><=;|&{("
234
+ Readline.basic_word_break_characters= " \t\n`><=;|&{("
203
235
  end
204
236
  Readline.completion_append_character = nil
205
237
  Readline.completion_proc = IRB::InputCompletor::CompletionProc