2

見つけることができるすべての php/html モード (nxHTML を含む) を試しましたが、希望どおりにインデントするモードが見つかりません。私のファイルに含まれる内容の例を次に示します。

<?php if (a == 5): ?>
<span>test</span>
<?php endif; ?>

次のように、if/endif を要素として扱うコードを emacs にインデントしてもらいたい:

<?php if (a == 5): ?>
  <span>test</span>
<?php endif; ?>

for ループやその他の構造についても同じことが言えます。ありがとう。

4

2 に答える 2

1

メジャーモードweb-mode.el(http://web-mode.orgで入手可能)を作成しました。このモードは、CSS / JS / PHP/JSPを含むHTMLテンプレート用に設計されています。ブロックのタイプに応じて、synthaxcolorsをインデントします。HTMLインデントは非常に堅牢です(タグと属性のインデント)。

于 2012-08-30T08:49:36.440 に答える
0

おそらく、自分でロールバックする必要があります。<?php if ....: ?>elisp のスキルに応じて、インデントを開始し、そのレベルのインデントを停止するなどのブロックを確認するだけであれば<?php endif; ?>、それほど難しくないかもしれません。nxml モードから派生した新しいモードを構築し、その方法でインデントをいじることさえできるかもしれません。

それだけの価値があるため、nxHTML で動作させようとすると、完全な災害になる可能性があります。主に、モードの境界を越えてインデントしようとするためです。

良いニュースは、おそらく regexp を使用して、PHP の間抜けな代替構文をすべて処理できることです。悪いニュースは... PHP は間抜けな代替構文です!

于 2012-08-28T06:53:27.693 に答える