2

html タグと jsp タグを組み合わせているときに、インデントの問題が発生しました。

再現する手順:

  1. ファイル > 新規ファイル (Ctrl+N)
  2. [表示] > [構文] > [Java] > [Java サーバー ページ (JSP)]
  3. 次のコードを貼り付けます。
<ul>
   <c:if test="${a > 0}">
      <li>a</li>
   </c:if>
</ul>
  1. すべてのコンテンツを選択し (Ctrl+A)、Ctrl+Shift+P > インデント: 行の再インデントを実行します。
  2. 結果は次のとおりです。
<ul>
   <c:if test="${a > 0}">
      <li>a</li>
</c:if>
</ul>

Windows 7 x64 で Build 3047 を実行してテスト済み。

手がかりはありますか?

4

1 に答える 1

1

ST2 の場合:

html パッケージを開き、Packages/HTML/Miscellaneous.tmPreferencesファイルを編集します。

テキストを以下のものに置き換えます。<c:if>以下の正規表現は、フォーマットと JSP コメントの基本的な jsp タグを受け入れます。これはスクリプトレットをフォーマットしません。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Miscellaneous</string>
    <key>scope</key>
    <string>text.html</string>
    <key>settings</key>
    <dict>
        <key>decreaseIndentPattern</key>
        <string>(?x)
        ^\s*
        (&lt;/(?!html)
          ([A-Za-z0-9]+(:[A-Za-z0-9]+)?)\b[^&gt;]*&gt;
        |--&gt;
        |--%&gt;
        |&lt;\?(php)?\s+(else(if)?|end(if|for(each)?|while))
        |\}
        )</string>
        <key>increaseIndentPattern</key>
        <string>(?x)
        ^\s*
        &lt;(?!\?|area|base|br|col|frame|hr|html|img|input|link|meta|param|[^&gt;]*/&gt;)
          ([A-Za-z0-9]+(:[A-Za-z0-9]+)?)(?=\s|&gt;)\b[^&gt;]*&gt;(?!.*&lt;/\1&gt;)
        |&lt;!--(?!.*--&gt;)
        |&lt;%--(?!.*--%&gt;)
        |&lt;\?php.+?\b(if|else(?:if)?|for(?:each)?|while)\b.*:(?!.*end\1)
        |\{[^}"']*$
        </string>
        <key>bracketIndentNextLinePattern</key>
        <string>&lt;!DOCTYPE(?!.*&gt;)</string>
    </dict>
</dict>
</plist>

崇高なテキストを再起動します

于 2013-11-12T07:18:16.717 に答える