rubysl-irb 1.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
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