6

私は、引用符で囲まれていないテキストをphpコードに書き込むことができるプリプロセッサ(xhp)を持っています。

<foo>
    my enemies' base
</foo>

.php ファイルに表示される可能性がありますが、emacs がその一重引用符を検出するとすぐに、ファイルの残り全体が文字列として表示されます。

  • 'font-lock-syntactic-keywords' が (c モード) で設定されている場所がわかりませんが、これに関連付けられている構文テーブルがあり、これが原因と思われます
  • (c-in-literal) は 'string も返すので、フォントロック レベルよりもコードの奥深くでこれを解決する必要があるかもしれません。

私が満足する最も簡単な解決策は、文字列が1行のみであると仮定することです。

4

1 に答える 1

2

使用しているメジャーモードはわかりませんが、一般的には、'文字の構文を。のようなものに変更するのがコツです(modify-syntax-entry ?\' "." <syntaxtable>)。もちろん、'文字で文字列を区切ることができる場合とそうでない場合がある場合は、より注意が必要です。任意の時点でどちらが使用されているかを判断できるfont-lock-syntactic-keywords(または)ルールを考え出す必要があります。syntax-propertize-function

たとえば、PHPが'を文字列区切り文字として扱わない場合、次のようなもので問題が解決する可能性があります。

(add-hook 'php-mode-hook
          (lambda () (modify-syntax-table ?\' ".")))
于 2012-05-06T02:01:58.790 に答える