uncrustifyをXCodeで便利に使う

perlのモジュールにperltidyっていうのがあってこれが重宝しています。大昔、perlに挫折した理由のひとつにあまりにもコードが汚くなりすぎるっていうのがあったんですが、こいつを使えばいつでも自分好みのコードに整形できて精神的にはとっても安定します。(僕は根がいい加減なくせにコードのインデントには結構こだわるところがあって、2タブじゃないと嫌だとかブレースはGNUスタイルが好きだとかいろいろあるんですが、やっぱりチャランポランな性格ゆえ誰かのコードを拝借してペーストとかしているうちコードスタイルもちゃんぽんになってきてある日思い立って「よし!修正しよう!」とか思ったりもするんですがコミットコメントに「インデントの修正」とか書いていたら嫌がられるだろうなぁなどと思って放置していたりする人間なんです。←長すぎる注釈)

それで、Objective-Cでもこういうモジュールないかなって探してみたらありました。uncrustify。で早速、試してみると結構イイ。*.cfgの内容はまだカスタマイズしていないけどデフォルトで付属していたgnuスタイルでそこそこ満足できるのでこれをベースにカスタマイズする予定です。

後は使い方なんですが、perltidyの場合ほぼ100%viでの編集なんで:%!perltidyで実行していますがObjective-Cの場合はやっぱりXCodeがメイン。いちいちターミナルを開くのもなんだしユーザスクリプトメニューから実行すれば便利です。スクリプトは簡単で、

echo -n "%%%{PBXSelection}%%%"
/usr/local/bin/uncrustify -q -l oc -c ${HOME}/share/uncrustify.cfg/gnu-indent.cfg <&0
echo -n "%%%{PBXSelection}%%%"

*.cfgは自分のお好みを指定してください。使い方は簡単でXCodeで整形したいコードを選択してスクリプトを実行するだけ。ショートカットも付けられるしなかなか快適です。ただ、選択するテキストの範囲は整形したいコードの一番外側から選択しておかないと左端に寄せられて整形されちゃいます。後はcfgをひたすら鍛えるのみ!(誰かいいcfg公開していないかなぁ)

ユーザスクリプト編集

今日まで気がつかなかったんですがテキストをコメントするとき使っていたcmd+/のショートカットってperlスクリプトだったんですねぇ。どこで覚えたんだかいつの間にか使っていたショートカットなんですがてっきりXCode組み込みの機能だと思っていました。しかし、こんな風にperlも使えるワケですからアイディア次第でもっといろんな事ができそうな気がします。

この記事のトラックバックURL:

http://hippos-lab.com/blog/trackback/285

Comments