让 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 的注释配合得很好的主要内容,如果未能解决你的问题,请参考以下文章