※弊社記事はたぶんにPRが含まれますので
話半分で受け取ってください。

CotEditorに入っているPHPのシンタックスハイライトを修正した

 CotEditorには「アウトラインメニュー」という機能があります。これは、HTMLのhタグや、プログラムの関数名をリストして、ジャンプ出来るようにしてくれるとても便利な機能です。
 ところが、PHPの場合、タブでインデントした場合にこれがうまく働かなかったので、これを修正してみました。

 実はちょっと前から(数年前から)気になってはいたのですが、まあそんなもんなんだろうと思って放置していました。でもプログラムが長くなってくるとアウトラインメニューがあった方が便利なので、タブでインデントした場合でもちゃんとリストしてくれるようにしてみました。

CotEditor
 インデントしていない test1 と半角スペースでインデントした test3 はアウトラインメニューに表示されていますが、タブでインデントした test2 は表示されていません。

 以前はタブでインデントしたものもリストしてくれていたのような気がするのですが、もしかしたら気のせいかもしれません。

修正してやるー

 まず、メニューから[環境設定…] – [シンタックス] を開きます。その中にある「シンタックススタイル」のドロップダウンメニューで「PHP」を選択し、編集ボタンをクリックすると、PHPの設定を編集出来るようになります。この画面でドロップダウンメニューから「アウトラインメニュー設定」を選択します。

CotEditor

 デフォルトではたぶん以下のようになっていると思います。

^([[: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
タブでインデントした test2 もちゃんとリストされるようになりました。

という感じ

 vimも使いますが、基本、CotEditorを使っています。Zen-codingがもっと軽快に使えたら嬉しいです。タブなきゃヤな人多いみたいですが、私は、あれば嬉しいけどなくても別にかまいません。

 インデントは半角スペースでもタブでもどっちでも良いと思いますが、同じ長さインデントするならタブの方が文字数が少なくなる(転じて、ファイル容量が少なくなる)ので、特別理由がなければタブでインデントしてます。

参考

正規表現辞典 改訂新版

  • メーカー:翔泳社
  • カテゴリ:Kindle版
  • 発売日:2018/05/24

関連する記事