ニッチすぎて涙が出そう。
サクラエディタで使うのでctagsにターゲット。
さくっとみつかる以下のもの。
Objective-C 対応 Exuberant Ctags の日本語対応版です。
Githubからzipを落としてVS2010でコンパイル。
splhack-ctags-objc-ja · GitHub
VS2010のコマンドプロンプトで、
nmake -f mk_mvc.mak
あっさりctags.exeができました。ただし、上記ブログエントリには、
configure オプション—enable-japanese-support 追加 (デフォルトで日本語対応機能OFF)
とありましたので、mk_mvc.makファイルの以下の部分にKANJIを定義してしておきました。
@ mk_mvc.mak
・・・
include source.mak
REGEX_DEFINES = -DHAVE_REGCOMP -DREGEX_MALLOC -DSTDC_HEADERS=1
DEFINES = -DWIN32 $(REGEX_DEFINES) -DKANJI
INCLUDES = -I. -Ignu_regex
OPT = /O2・・・
(太字部分-DKANJIを追加)
#これって、もしかしてやらんでいいのかな?
その他、追加されてるっぽい、guess.cなどがコンパイルされてobjができていたぽいことまでは確認しています。やっつけなので、深入りはしないつもりで。
サクラエディタから以下のようにコマンドラインを指定したらいい感じでした。
コマンドラインオプション:ctags -R --langmap=objc:.h.m --languages=objc
# オプションていうか、コマンドラインそのものですな。
あとはF12のタグジャンプ、Shit+F12のタグジャンプバックでサクサクというわけです。
JSONKitのソースのタグファイルを生成したサンプルの抜粋:
-allObjects JSONKit.m 829;" M interface:JKDictionaryEnumerator
-allObjects JSONKit.m 850;" C implementation:JKDictionaryEnumerator
-clearCache JSONKit.h 149;" M interface:JSONDecoder
-clearCache JSONKit.m 2142;" C implementation:JSONDecoder
-copyWithZone: JSONKit.m 1095;" C implementation:JKDictionary
-copyWithZone: JSONKit.m 807;" C implementation:JKArray
-count JSONKit.m 1013;" C implementation:JKDictionary
-count JSONKit.m 736;" C implementation:JKArray
でまぁ、配布条件とはよく確認していないですが、バイナリとmk_vmc.mkを置いておきます。
(追記)
タグファイル生成のダイアログに書いたコマンドは、
--langmap=objc:.h.m --languages=objc
だけ効いているのかも。コマンドラインで実行したのと結果が違う。
ctags -R --langmap=objc:.h.m --languages=objcの結果サンプル:
-allObjects .\JSONKit.m /^- (NSArray *)allObjects$/;" C implementation:JKDictionaryEnumerator
-allObjects .\JSONKit.m /^- (NSArray *)allObjects;$/;" M interface:JKDictionaryEnumerator
-clearCache .\JSONKit.h /^- (void)clearCache;$/;" M interface:JSONDecoder
-clearCache .\JSONKit.m /^- (void)clearCache$/;" C implementation:JSONDecoder
-copyWithZone: .\JSONKit.m /^- (id)copyWithZone:(NSZone *)zone$/;" C implementation:JKArray
-copyWithZone: .\JSONKit.m /^- (id)copyWithZone:(NSZone *)zone$/;" C implementation:JKDictionary
-count .\JSONKit.m /^- (NSUInteger)count$/;" C implementation:JKArray
-count .\JSONKit.m /^- (NSUInteger)count$/;" C implementation:JKDictionary
サクラは--fieldsオプションでいい感じのフォーマットを吐き出させてるわけか。
-xオプションでクロスリファレンスを吐かせてるわけか。
(追記)
つーことはただのタブ区切りだから、
sed –e ‘s/^[\+\i]//’ –e ‘/^!.*/d’ tags |cut –f 1 | uniq > foobar.kwd
的なワンライナーで、サクラ用の補完キーワードファイルも生成できるというわけですね。
ctagsはヘッダだけからでも抽出できるので、標準ライブラリのキーワードを抽出しておけば、さらにおいしくいただけそうですな。
ああでも、メソッドも抽出したくなってきた。cut2段でいけるかな。でもそれはまた今度。
コメント