uncrustify

uncrustify(jeditxでもやっぱり使うよね)

XCodeやvimから使うようになってuncrustifyは今や手放せないツールになっていますが、前回のエントリでも書いたようにJeditからはAppleScriptを使えば利用できそうなのでトライしてみました。

AppleScriptからuncrustifyを呼び出すのに問題になるのはAppleScriptでは標準入力に対応していないという点です。アップルのドキュメントにはEchoとかで対応できるよってことになっているんだけどソースコード中にシェルが勘違いするような文字列が含まれている可能性は多いにあり得るのでこれはパスしてファイルインタフェースで処理する方が堅そう。選択している文字列をテンポラリファイルに書き出してそいつをuncrustifyに食わせればいいだけです。

Jeditにはいくつかサンプルスクリプトが含まれているのでそいつを参考にしながら

uncrustify(viでもやっぱり使うよね)

XCodeでuncrustifyを使う方法も必要なんだけどやっぱvi(m)でも必要かな?なんて思い、試行錯誤の結果

map t !}uncrustify -q -c /path/to/config.cfg

ブレースブロック単位で変換できるのが小回りがきいた感じでむしろ便利。ためしてみたらperltidyでももちろんできました。キーバインドはもちろんお好みってことで。

訂正(2008/12/24)

}じゃなくて%でしたね。段落じゃいかにも都合が悪い。プログラマだし。

map t !%uncrustify -q -c /path/to/config.cfg

uncrustifyをXCodeで便利に使う

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

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

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

コンテンツの配信