让 Emacs 填充段落与类似 javadoc 的注释配合得很好

Posted

技术标签:

【中文标题】让 Emacs 填充段落与类似 javadoc 的注释配合得很好【英文标题】:Getting Emacs fill-paragraph to play nice with javadoc-like comments 【发布时间】:2008-09-16 12:42:34 【问题描述】:

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

但是,注释块通常包含 javadoc 样式的 cmets 和 i 想要填充段落以避免将开始的线条粘在一起 用这样的命令。

如果我有这个(\ 而不是 javadoc @):

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

M-q 给我:

# 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 在 a 内仍然不起作用 评论块。如果我删除评论标记,M-q 会按我的意愿工作 到,所以我用于段落开始的正则表达式似乎有效。

我是否必须为我的专业编写自定义填充段落 模式? cc-mode 有一个可以处理这样的情况,但它确实 复杂,如果可能的话,我想避免它。

【问题讨论】:

【参考方案1】:

问题是段落开头的正则表达式必须匹配整行才能工作,包括实际的注释字符。以下 elisp 适用于我给出的示例:

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

这里有一个用于 php-mode 的示例正则表达式的页面: http://barelyenough.org/blog/2006/10/nicer-phpdoc-comments/

【讨论】:

【参考方案2】:

对于fill-paragraph-function,还有其他功能不太复杂的模式。浏览我的安装,看起来 ada-mode 和 make-mode 中的那些是很好的例子。

【讨论】:

【参考方案3】:

在这些情况下,我所做的是在段落行和参数行之间打开一个空白行,然后使用 M-q 换行段落行,然后删除它们之间的空白行。不理想,但它很有效,如果您需要重复它,它很容易在宏中录制。

【讨论】:

以上是关于让 Emacs 填充段落与类似 javadoc 的注释配合得很好的主要内容,如果未能解决你的问题,请参考以下文章

如何将填充段落与 supercite 结合起来?

在标题中对齐段落文本

如何在 Emacs 中禁用自动填充模式?

Emacs:防止自动填充模式在乳胶 \text... 内联命令中断行

emacs建议恢复文件,但我错过了:如何让它提示?

运行 emacs 时将自动填充模式作为次要模式打开