jEditにTwigの編集モードを追加する

http://www.jedit.org/


PHPの開発とか、エディタはjEditを使ってる。
jEdit - Programmer's Text Editor -
さんざん言ってるけど、jEditは本当にいいエディタなんですって*1


加えて、PHPのテンプレートエンジンはTwigを使ってる。
pythondjangoに近いらしい。


ところで、PHPのテンプレートエンジンと言うとsmartyが定番だったり、そもそも、PHPでテンプレートエンジン(笑)みたいな論調もあったりして論争になると泥沼なんだけど、
個人的にはplainなPHPで組むのは選択肢として無く*2、定番のsmartyは…3から結構良さそうな感じはするけれど、何というか泥臭い*3


そんな訳で、Twigを使うようになった。
構文もシンプルだし動作も軽いし、テンプレート内部から割り当てた変数のプロパティとかメソッドへのアクセス方法も柔軟で使いやすい。


Twig自体のバージョンも1.0を超えて成熟してきた感じがする。


とは言え、日本語ドキュメントは少ないし、メジャーバージョンアップで結構動作が変わっているところがあるので、この辺を参考にするとハマるので注意。


具体的にはdebugが無くなってたり…えーと、他にもいろいろあった気がする。気が向いたらまとめようかな。
今のところは公式の英語ドキュメントかソース読むのが確実。

Twig定義をjEditに追加する

そんな訳で、jEditでTwigのテンプレートを編集したりして快適なwebアプリ開発ライフを送ってるんだけれど、当然のようにjEditにはTwigの定義が無い。


一応、djangoの定義はあるからそれを使うようにすればある程度ハイライトされるようになるけれど、{# #}形式のコメントに対応していなかったりするので、djangoの定義を元にTwigの定義を作るTipsを記す。


参考元:How do I add an edit mode to jEdit?

1:"C:\Program Files\jEdit\modes\django.xml"を"%USERPROFILE%\.jedit\modes\twig.xml"にコピーする

当初、"C:\Program Files\jEdit\modes"に設置って書いてたけど、インストーラーでバージョンアップすると消えたので、やっぱり"%USERPROFILE%\.jedit\modes"に設置するのが適当みたい。

2:twig.xmlを編集

以下の置換をする

コメントの開始タグ(2箇所)
{% comment %} → {#

コメントの終了タグ(2箇所)
{% endcomment %} → #}

定義内の要素名、大文字のみ(約21箇所)
DJANGO → TWIG

これで{# #}形式のコメントがハイライトされるようになる。
その他、Twig特有のキーワードとかあるかも知れないけど面倒なので調べてない。

3:"%USERPROFILE%\.jedit\modes\catalog"の編集

catalogの内に以下の行を追加。

もし、htmlを自動的にTwigにするならこんな感じ。


以上でjEditを起動し直せばTwig定義が使えるようになる。

jEditで拡張子毎にデフォルトの編集モードを設定するには

例えば、拡張子htmlとhtmを開いたときに自動的にTwigの編集モードにするには以下のように設定する

  1. ユーティリティ → グローバルオプション → jEdit → 編集
  2. 設定を変更するモード: → Twigを選択
  3. "デフォルト設定を使用" → チェックを外す
  4. ファイル名フィルタ: → "*.{html,htm}"を追加


以上でjEditで快適なPHP+Twigライフが過ごせます。

*1:さんざん言ってるけど、MacOSの昔からある定番エディタのjEditXとは別物ですって

*2:テンプレートエンジンの学習コストと動作速度を引いてもplainで組むのって相当割りに合わないと思うんだよなー

*3:smartyって言葉自体がPHP初心者の間でバズワードになってる気がするのも嫌