summaryrefslogtreecommitdiff
path: root/lib/irb
diff options
context:
space:
mode:
authorkeiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-09 12:28:00 +0000
committerkeiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-09 12:28:00 +0000
commitc13142643d846b3805296babf81f81791378122d (patch)
tree329b075cf9fd50d3cdf5bea2b8c88e299c9db31c /lib/irb
parent8a3c3b9c95955bba7f143c44136a043568d88b94 (diff)
* lib/irb/completion.rb (CompletionProc): irb will be stuck with
long variable name at copletion. [Bug#1969]. refix [ruby-core:28366]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/irb')
-rw-r--r--lib/irb/completion.rb9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb
index 6ba168e813..a345c23af7 100644
--- a/lib/irb/completion.rb
+++ b/lib/irb/completion.rb
@@ -80,7 +80,8 @@ module IRB
candidates = Object.constants.collect{|m| m.to_s}
candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
- when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
+# when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
+ when /^([A-Z].*)::([^:.]+)*$/
# Constant or class methods
receiver = $1
message = Regexp.quote($4)
@@ -129,7 +130,8 @@ module IRB
candidates = global_variables.collect{|m| m.to_s}.grep(regmessage)
# when /^(\$?(\.?[^.]+)+)\.([^.]*)$/
- when /^((\.?[^.]+)+)\.([^.]*)$/
+# when /^((\.?[^.]+)+)\.([^.]*)$/
+ when /^([^."].*)\.([^.]*)$/
# variable
receiver = $1
message = Regexp.quote($3)
@@ -138,7 +140,8 @@ module IRB
lv = eval("local_variables", bind).collect{|m| m.to_s}
cv = eval("self.class.constants", bind).collect{|m| m.to_s}
- if (gv | lv | cv).include?(receiver) || /^[A-Z]/ =~ receiver and /\./ !~ receiver
+ if (gv | lv | cv).include?(receiver) or /^[A-Z]/ =~ receiver && /\./ !~ receiver
+ # foo.func and foo is local var. OR
# Foo::Bar.func
begin
candidates = eval("#{receiver}.methods", bind).collect{|m| m.to_s}