9

GNU Emacsでは、Cモードのcomment-regionコマンドをから変更する良い方法はありますか?

/* This is a comment which extends  */
/* over more than one line in C. */

/* This is a comment which extends
   over more than one line in C. */

?私が試してみました

(setq comment-multi-line t)

しかし、これは役に立ちません。Emacsのマニュアルには複数行のコメントに関するセクションがありますが、何も言及されていません。

4

2 に答える 2

7

Emacs 21以降、'newcommentさまざまなコメントスタイルを持つという名前のモジュールがあります(変数を参照してください'comment-styles。この設定は、必要なものに近づきます。

(setq comment-style 'multi-line)

(注:おそらくでその設定を行う必要があります'c-mode-hook)。

ただし、どの設定でもコメントが希望どおりに表示されることはありません。

あなたが欲しいものを手に入れるために私が見た最も簡単な方法は、このハックを追加することです:

(defadvice comment-region-internal (before comment-region-internal-hack-ccs activate)
  "override 4th argument to be just spaces"
  (when (eq major-mode 'c-mode)  ; some condition here
    (let ((arg (ad-get-arg 4)))
      (when arg
        (ad-set-arg 4 (make-string (length arg) ?\ ))))))

の現在の設定でcomment-styleは、コメント行の前に常に「*」が付いています(「/ *」全体ではない場合)。

Emacs 21をお持ちでない場合はnewcomment.el、リポジトリからダウンロードするだけでよいと思います。以前のバージョンのEmacsでそのまま動作するかどうかはわかりませんが、Emacsをアップグレードする方が良い解決策になるとはいえ、試してみる価値があるかもしれません。

私のハックはを壊します'uncomment-region。適切な修正は、を変更すること'comment-padrightです。他のものを壊さないようにするには、もう少し研究が必要です。上記のハックは、の動作を変更するだけです'c-mode(条件を好みに合わせて調整してください)。

于 2009-10-11T22:04:40.863 に答える
3

組み込みのコメントサポートで私が見つけることができる最も近いものは、に設定comment-styleした場合ですmulti-line。これにより、次のようになります。

/* This is a comment which extends
 * over more than one line in C. */

それでも不十分な場合はnewcomment.el、独自のコメント機能を確認して定義してください。

于 2009-10-11T22:01:02.640 に答える