11

仕事で使用する APL 方言の Emacs メジャー モードを作成しています。基本的なフォント ロックが機能するようになりました。comment-start と comment-start-skip を設定すると、コメント/コメント解除領域と段落の塗りつぶしも機能します。

ただし、コメント ブロックには javadoc スタイルのコメントが含まれていることが多く、そのようなコマンドで始まる行がくっつかないように、fill-paragraph が必要です。

私がこれを持っている場合(javadoc @の代わりに\):

# This is a comment that is long and should be wrapped.
# \arg Description of argument
# \ret Description of return value

MQは私に与えます:

# This is a comment that is long and
# should be wrapped. \arg Description
# of argument \ret Description of
# return value

でも私はしたい:

# This is a comment that is long and
# should be wrapped.
# \arg Description of argument
# \ret Description of return value

段落開始と段落分離を適切な値に設定しようとしましたが、fill-paragraph はコメント ブロック内ではまだ機能しません。コメント マーカーを削除すると、Mq は思い通りに機能するので、段落の開始に使用する正規表現は機能しているようです。

メジャー モード用に独自の fill-paragraph を作成する必要がありますか? cc-mode にはこのような場合に対応するものがありますが、非常に複雑なので、できれば避けたいものです。

4

3 に答える 3

4

問題は、段落開始の正規表現が機能するためには、実際のコメント文字を含む行全体と一致しなければならないことでした。次の elisp は、私が示した例で機能します。

(setq paragraph-start "^\\s-*\\#\\s-*\\\\\\(arg\\|ret\\).*$")

これを行う php-mode の正規表現の例を含むページ: http://barelyenough.org/blog/2006/10/nicer-phpdoc-comments/

于 2008-09-28T07:45:37.363 に答える
1

に使用されるそれほど複雑でない機能を持つ他のモードがありますfill-paragraph-function。私のインストールを参照すると、ada-mode と make-mode のものが良い例のようです。

于 2008-09-16T14:05:31.673 に答える
1

これらの場合に私が行うことは、段落行と引数行の間に空白行を開き、Mq を使用して段落行を折り返し、それらの間の空白行を削除することです。理想的ではありませんが、機能し、繰り返す必要がある場合はマクロに記録するのに十分簡単です.

于 2008-09-16T16:03:02.170 に答える