def completion_list(keyw)
return @ri_reader.full_class_names if keyw == ""
descriptor = NameDescriptor.new(keyw)
if descriptor.class_names.empty?
meths = @ri_reader.methods_under_matching("", /(#|\.)#{descriptor.method_name}/, true)
ret = meths.map{|x| x.name}.uniq.sort
return ret.empty? ? nil : ret
end
full_ns_name = descriptor.class_names.join("::")
if descriptor.method_name == nil && ! [?#, ?:, ?.].include?(keyw[-1])
namespaces = @ri_reader.namespaces_under_matching("", /^#{full_ns_name}/, false)
ret = namespaces.map{|x| x.full_name}.uniq.sort
return ret.empty? ? nil : ret
else
if [?#, ?:, ?.].include?(keyw[-1])
seps = case keyw[-1]
when ?#; %w[#]
when ?:; %w[.]
when ?.; %w[. #]
end
else
seps = separators(descriptor.is_class_method)
end
sep_re = "(" + seps.map{|x| Regexp.escape(x)}.join("|") + ")"
methods = @ri_reader.methods_under_matching(full_ns_name, /#{sep_re}#{descriptor.method_name}/, false)
ret = methods.map{|x| x.full_name}.uniq.sort
return ret.empty? ? nil : ret
end
rescue RiError
return nil
end