6

Getting Emacs fill-paragraph to play nice with javadoc-like commentsに非常によく似た質問がありますが、1 年前のスレッドで多くの回答が得られるかどうかはわかりませんでした。

とにかく、次のような Doxygen コメントを含む C コードがあります。

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs to be wrapped.>
 * @param[in,out] var2 : <Description2>
 */

今、emacs で Mq を使用する場合、次のことが必要です。

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 *                       to be wrapped.>
 * @param[in,out] var2 : <Description2>
 */

しかし、現在、私は次のようになります:

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>  @param[in,out] var2 : <Description2>
 */

いくつかの調査を行ったところ、「@param」を認識するために emacs で段落開始変数を設定する必要があるように見えました。スタック オーバーフローに関する別の質問 ( Getting Emacs fill-paragraph to play nice with javadoc-like comments ) を見つけました。これにはサンプルの正規表現が含まれていました。要件に合わせて少し変更し、[検索]-> [正規表現転送] 内でテストしたところ、各 @param 文が正しく強調表示されました。

次の正規表現を使用しました"^\s-*\*\s-*\(@param\).*$"

そこで、指定された正規表現を .emacs ファイルで段落の開始 (elisp 構文に必要な \ を追加) として設定しようとしました。新しい emacs ウィンドウを開いて MQ を試してみると、同じエラーが発生していました。足りないものはありますか?Mq は c-mode で別の方法で使用されますか? ここでエラーを引き起こしている可能性のあるものがないか、.emacs ファイルをチェックする必要がありますか? どんな助けでも大歓迎です。

ありがとう、ライアン

4

1 に答える 1

3

あなたの質問に関して、「Mqはcモードで異なって使用されますか?」describe-key(Ch kにバインドされています)はあなたの友達です。Cファイルを使用してバッファにアクセスしているときに、Ch k Mqと入力すると、Mqがバインドされている関数が正確にわかります。この場合、それはc-fill-paragraph、最終的にはparagraph-start、他の質問で見つけた変数を使用します。

この正規表現は、paragraph-start行を折り返し、各@paramを新しい段落として扱うように使用されていることがわかりました。

"^[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*$\\|@param\\)\\|^\f"

ただし、ラップラインは必要に応じてインデントされません。これにより、例は次のようになります。

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>
 * @param[in,out] var2 : <Description2>
 */

それでもあなたにとってうまくいくことを願っています。インデントがわかれば教えてください。

于 2009-12-30T22:56:24.520 に答える