tokoromのその他の日記
- vim関連: vimまっしぐら★
- それ以外: 寄り道ばかりの お勉強日記★
2011-07-09
VimでのiOSアプリ開発に便利なsnippetsファイル作りました
VimでのiOSアプリ開発生活を快適にするために、
- Foundation.framework
- UIKit.framework
のクラス、メソッドなどをヘッダーファイル*1から抜いてVim用のsnippetsファイルを作成しました。
snipMate.vim や neocomplcache で利用できる見込み*2です。
もし必要なかたがいらっしゃいましたら
からダウンロードをお願いします。
例えば、pushViewController:animated: のsnippetは、
snippet pushViewController:animated: pushViewController:${1:(UIViewController*)viewController} animated:${2:(BOOL)animated}
のように定義されており、どのメソッドも引数のところがプレースホルダになっています*3。
なお、スニペット名をメソッドの名前そのままにして長いので、neocomplcasheによるスニペット補完の利用が推奨されます*4。
以下、自分用メモ。
各フレームワークのtagsの作成
例えば、Foundation.frameworkとUIKit.frameworkのtagsを作成する場合、
$ ctags -R --language-force=ObjC /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/UIKit.framework/Headers
とする。
ObjCに対応したctagsを利用する必要あり。
他のフレームワークのやつも欲しければ、ヘッダーファイルが入っているフォルダのパスを加えればOK。
tagsからsnippetsファイルを作成
今回は、rubyでスクリプトを書いて対応。
- tags2vimsnippets.rb
inputFileName = ARGV[0] outputFileName = ARGV[1] result = [] snippets = [] IO.foreach( inputFileName ) {|l| result = l.scan(/^[+-]([:a-zA-Z0-9_-]+).*\/\^[+-] \([^)]*\)([^;]+);/) if !result.empty? next if 6 > result[0][0].length snippets.push( sprintf("snippet %s", result[0][0]) ) t = result[0][1] t = t.gsub(' *', '*').gsub(' (', '(') count = 0 while /([^{][^0-9]+?:)(\(.+?\)[^() ]+)/ =~ t count = count + 1 t = t.sub(/([^{][^0-9]+?:)(\(.+?\)[^() ]+)/, sprintf('\1${%d:\2}', count)) break if 64 < count end snippets.push( sprintf("\t%s", t) ) next end result = l.scan(/^([:a-zA-Z0-9_]+)/) if !result.empty? next if 6 > result[0][0].length snippets.push( sprintf("snippet %s", result[0][0]) ) snippets.push( sprintf("\t%s", result[0][0]) ) end } snippets.uniq! out = open( outputFileName, 'w' ) snippets.each {|k| out.puts k } out.close
このスクリプトに先ほど作ったtagsファイルを渡してやる。
$ ruby tags2vimsnippets.rb tags objc.snippets
これでsnippetsファイル完成。
変な部分があったら正規表現を見直す必要あり。
Kalyn2011/09/16 19:19You know what, I'm very much inlcnied to agree.
ppoyzurt2011/09/16 20:49dShnsD <a href="http://lfyzjbluhbqu.com/">lfyzjbluhbqu</a>
hgvcreus2011/09/17 21:369XOHOe , [url=http://sggbqokkwiui.com/]sggbqokkwiui[/url], [link=http://yzdkxnyyohny.com/]yzdkxnyyohny[/link], http://yommpsvjyaop.com/
gifkjbjbry2011/09/19 00:08HVLjji <a href="http://wwxbkjkabkiw.com/">wwxbkjkabkiw</a>

iPhoneプログラミング UIKit詳解リファレンス
詳解 EZアプリ(BREW)プログラミング