CotEditorには「アウトラインメニュー」という機能があります。これは、HTMLのhタグや、プログラムの関数名をリストして、ジャンプ出来るようにしてくれるとても便利な機能です。
ところが、PHPの場合、タブでインデントした場合にこれがうまく働かなかったので、これを修正してみました。
実はちょっと前から(数年前から)気になってはいたのですが、まあそんなもんなんだろうと思って放置していました。でもプログラムが長くなってくるとアウトラインメニューがあった方が便利なので、タブでインデントした場合でもちゃんとリストしてくれるようにしてみました。
![CotEditor](https://farm9.staticflickr.com/8025/7485381812_c2c8bff6f5.jpg)
以前はタブでインデントしたものもリストしてくれていたのような気がするのですが、もしかしたら気のせいかもしれません。
修正してやるー
まず、メニューから[環境設定…] – [シンタックス] を開きます。その中にある「シンタックススタイル」のドロップダウンメニューで「PHP」を選択し、編集ボタンをクリックすると、PHPの設定を編集出来るようになります。この画面でドロップダウンメニューから「アウトラインメニュー設定」を選択します。
![CotEditor](https://farm8.staticflickr.com/7273/7485381656_e626f7d13b.jpg)
デフォルトではたぶん以下のようになっていると思います。
^([[:blank:]]*)(function)\s*([^{]*)(?={)
^([[:blank:]]*)(private function)\s*([^{]*)(?={)
^([[:blank:]]*)(protected function)\s*([^{]*)(?={)
^([[:blank:]]*)(public function)\s*([^{]*)(?={)
^[\t ]*(class)\s*(.*)$
ここで [[:blank:]] を [\t ] に置き換えます。(tの後ろに半角スペースが入っています。)
^([\t ]*)(function)\s*([^{]*)(?={)
^([\t ]*)(private function)\s*([^{]*)(?={)
^([\t ]*)(protected function)\s*([^{]*)(?={)
^([\t ]*)(public function)\s*([^{]*)(?={)
^[\t ]*(class)\s*(.*)$
これでタブでインデントしたものも半角スペースでインデントしたものもちゃんとアウトラインメニューにリストされるようになると思います。
![CotEditor](https://farm8.staticflickr.com/7263/7485381468_97f85467ef.jpg)
という感じ
vimも使いますが、基本、CotEditorを使っています。Zen-codingがもっと軽快に使えたら嬉しいです。タブなきゃヤな人多いみたいですが、私は、あれば嬉しいけどなくても別にかまいません。
インデントは半角スペースでもタブでもどっちでも良いと思いますが、同じ長さインデントするならタブの方が文字数が少なくなる(転じて、ファイル容量が少なくなる)ので、特別理由がなければタブでインデントしてます。