11

我正在为我在工作中使用的 APL 方言编写 Emacs 主模式。我已经获得了基本的字体锁定功能,并且在设置评论开始和评论开始跳过后,评论/取消评论区域和填充段落也可以工作。

但是,注释块通常包含 javadoc 样式的注释,我希望填充段落以避免以此类命令开头的行粘合在一起。

如果我有这个(\ 而不是 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

我尝试将段落开头和段落分隔设置为适当的值,但填充段落在注释块中仍然不起作用。如果我删除注释标记,Mq 会按我的意愿工作,所以我用于段落开头的正则表达式似乎可以工作。

我必须为我的主要模式编写自定义填充段落吗?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 回答