1

私はemacs23.3.1を持っており、Windows上で実行しています。

http://php-mode.sourceforge.net/のphp- mode1.5 、変更:2008-11-04

以前はこれでうまくいったと思いますが、今では、 `newcomment.el'のインタラクティブにコンパイルされたLisp関数であるcomment-regionを使用してコードのブロックをコメントアウトしようとすると、悪い結果が得られます。

例:

前:

ここに画像の説明を入力してください

後:

ここに画像の説明を入力してください

コメント付きブロックの各行には、1行のコメント開始シーケンス//と複数行のコメント終了シーケンスがあることがわかります*/

醜いですが、これは大きな問題ではありません。ブロックのコメントを解除しようとすると、問題が発生します。「コメントの終わりが見つかりません」というエラーが表示されます。つまり、comment-regionで元に戻すことはできませんC-u comment-region

これを理解できるかどうかはわかりますが、phpモードで欠落している設定はありますか?

誰か知ってる?


もっと

comment-startcomment-end変数を変更するためにphp-mode-hook関数に何も入れませんでした。デバッグすると、それらが不一致のペアにcomment-region設定されていることがわかります。それはcomment-regionの奇妙な結果を説明しています。そのような変数を設定するのは私のコードではないと思います。//*/

フックで明示的に//and(空の文字列)に設定してみました。その場合、comment-region見た目はきれいに見えますが、それでもコメントを外すことはありません。/*との一致するペアも試しました*/が、同じ結果が得られました。コメント解除は成功しません。エラーはcan't find comment end.です。

MORE2

私の構文テーブルは正しいと思います。これを示しています:

ここに画像の説明を入力してください

...これは私には正しいようです。

4

1 に答える 1

3

これは私のためにそれを解決しました:

(setq comment-use-syntax t)

私はそれをphp-modeフックに入れました。

これが必要かどうかはわかりませんが、構文テーブルを変更するためのステートメントを含めました。フック全体は次のようになります。

(defun cheeso-php-mode-fn ()
  "Function to run when php-mode is initialized for a buffer."
  (require 'flymake)
  (flymake-mode 1)

  (setq c-default-style "bsd"
      c-basic-offset 2)

  ;; not sure if necessary or not.
  (modify-syntax-entry ?/ ". 124b" php-mode-syntax-table)
  (modify-syntax-entry ?* ". 23" php-mode-syntax-table)
  (modify-syntax-entry ?\n "> b"  php-mode-syntax-table)
  (modify-syntax-entry ?\^m "> b" php-mode-syntax-table)

  (setq comment-multi-line nil ;; maybe
        comment-start "// "
        comment-end ""
        comment-style 'indent
        comment-use-syntax t))

のヘルプステートメントcomment-use-syntaxは、メジャーモードで設定する必要があると述べています。私が編集していたphpバッファーでは、変数はnilに設定されていました。php-modeで設定されたと思います。いずれにせよ、それは私が設定したものではありません。これをに設定tし、構文テーブルに適切な値があることを確認することでうまくいきました。

私はphpでCスタイルのコメントのみを使用していると言わなければなりません。は使用しません#

于 2012-05-25T18:02:51.803 に答える