ruby-reference-manual:3086
From: "sho-h (Sho Hashimoto)" <sho-h@n...>
Date: Mon, 4 Jun 2012 00:59:20 +0900
Subject: [ruby-reference-manual:3086] [るりまプロジェクト - Bug #191] refe succ
Issue #191 has been updated by sho-h (Sho Hashimoto).
Description updated
本チケットを追いかけてみました。
元々のご指摘とは異なる話ですが、以下を実行した時に _builtin の String#succ しか表示できなかったため、何か対応をした方がいいと考えています。
$ ./refe-1_8_7 --all succ
...(中略)...
--- succ -> String
--- next -> String
self の「次の」文字列を返します。
...(中略)...
--- succ -> String
--- next -> String
self の「次の」文字列を返します。
どちらも _builtin の方の String#succ が表示されています。
元々ヒットしてるのは確かに jcode の String#succ みたいなのですが、それを表示する方法がわかりませんでした。(もちろん方法があるかもしれません)
調べた範囲では、BitClust::Completion#_search_methods で実際の検索が行われ、その内部のメソッドで method/=sindex を参照しているようですが、succ については以下の情報のみが記録されています。
succ Integer# String# String# Time# Date# IPAddr# Prime#
なので、jcode なのか _builtin なのか現状区別が付かないといった事が原因のようです。
あまり大掛かりな修正も何ですので、ad-hoc な修正をするとしたら以下のようにする事で --all を指定して succ を検索した時に全て表示できます。
--- completion.rb (revision 5184)
+++ completion.rb (working copy)
@@ -88,9 +88,16 @@
spec = MethodSpec.new(nil, pattern.type, name)
crefs = mname2crefs_narrow(name)
#split_time "c expand (#{crefs.size})"
- crefs.map {|cref|
- spec = mspec_from_cref_mname(classid2name(cref), name)
- SearchResult::Record.new(self, spec, spec)
+ crefs.group_by {|v| v}.values.map {|refs|
+ if refs.length > 1
+ spec = mspec_from_cref_mname(classid2name(refs.first), name)
+ fetch_methods(spec).map do |entry|
+ SearchResult::Record.new(self, spec, spec, entry)
+ end
+ else
+ spec = mspec_from_cref_mname(classid2name(refs.first), name)
+ SearchResult::Record.new(self, spec, spec)
+ end
}
}.flatten
SearchResult.new(self, pattern, [], records)
ただし、これでは String#succ の指定時は _builtin しか表示されません。また、 String#succ が 2 つ表示される件も特に対応していない状態です。
他にも以下のような事を検討しないといけないのではないかと思います。
* succ 検索時に String#succ の表示をどうするか(uniq して 1 つしか表示しないなど)
* jcode の String#succ の表示をどうするか(String#succ 表示時に全部表示するなど)
----------------------------------------
Bug #191: refe succ
https://bugs.ruby-lang.org/issues/191#change-26997
Author: znz (Kazuhiro NISHIYAMA)
Status: Feedback
Priority: Low
Assignee:
Category: bitclust
Target version:
reporter:
ruby_version:
=begin
refeで1.8.6の方のsuccを調べると String#succ が2個出てくるのは
おかしいのではないでしょうか?
% ./refe-1_8_6 succ
Date#succ Integer#succ Prime#succ String#succ String#succ Time#succ
% ./refe-1_9_0 succ
Date#succ IPAddr#succ Integer#succ Prime#succ String#succ Symbol#succ
Time#succ
%
--
ML: ruby-reference-manual@m...
使い方: http://QuickML.com/
=end
--
http://bugs.ruby-lang.org/
--
ML: ruby-reference-manual@m...
Info: http://QuickML.com/