質問
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マニュアルの複数行コメントに関するセクション, しかし、何も言及されていません。
解決
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
(お好みの状態に調整してください。)
他のヒント
comment-style
するmulti-line
を設定した場合、私はビルトインサポートをコメントで見つけることができる最も近いです
/* This is a comment which extends
* over more than one line in C. */
それが十分近接していない場合は、は、newcomment.el
を見て、必要に応じて、独自のコメント機能を定義します。