むらかみの雑記帳

Android とか iOS とかソフトウェア開発に関するネタ帳

Xcodeで書くソースコードを Emacs や less フレンドリーにする

Xcode のデフォルト設定で書いたソースコードは、ハードタブ幅が4(インデント幅じゃなくて)というかなり嫌な設定になっています。このためこのソースを less で見るとインデントがぐちゃぐちゃです(-x オプションを使え、という主張は却下)。Emacs で編集するときもずれまくり。doxygen で生成したコードも悲惨なことになります。

Xcode の中で世界が完結できる人はいいけど、私のように Emacs やその他 CUI ツールも併用する人にはこれは辛い。てなわけで、こういったツールにフレンドリーな設定にしてみます。

方針

基本方針は以下のようにします

  • インデント幅は4のまま
  • ハードタブ幅は8にする
  • でも、インデントではハードタブは使わず、ホワイトスペースでインデントする

こうしておけば less で見てもずれません。タブ文字を使わないので、どのような環境でも、ソースを読むだけならインデントが狂うことはありません。

ところで、インデントはハードタブでやっておいて、ハードタブ幅は個人の好みで変えればいいでしょ、私はタブ幅8で書かれたソースをタブ幅2で読みたいんだぁ、とか主張する人もいるようですが、そういう頭のオカシイことを言う人はここではほっとくことにします。

Xcode の設定

Xcode の「環境設定」の中にある「インデント設定」を以下のように設定します。

  • 「スペースの代わりにタブを挿入」のチェックを外す
  • 「タブの幅」を 8 にする
  • 「インデントの幅」を 4 にする

これでおっけー。

ソースコード側の変更

ソースコードの先頭に以下の1行を入れておきます。


// -*- Mode:ObjC; c-basic-offset:4; tab-width:8; indent-tabs-mode:nil -*-

これは、Emacs に対する設定指示になります。この行が先頭にあるソースを Emacs で読み込むと、モードが ObjC モードになり、インデント幅が4、ハードタブ幅が8、インデントをスペースのみで行う、という設定に自動的になります。

この辺の設定は .emacs に書いてもいいのですが、ソースの先頭に書いておけばほかの人にソースを渡して(emacsで)編集してもらうときにも有効になる、という効果があるのでオススメ。

上記のような設定にすることで割と幸せになれます。が、他所から Xcode のデフォルト設定で書かれたソースを持ってくると、ハードタブ幅が4なのでずれてしまいますが、、、