6

我有一个非常类似于Getting Emacs fill-paragraph to play nice with javadoc-like comments 的问题,但我不确定我是否会在一年前的线程中得到很多答案。

无论如何,我的 C 代码中有一些 Doxygen 注释,如下所示:

/**
 * 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>
 */

做了一些研究,看起来我需要在 emacs 中设置段落开始变量来识别“@param”。我发现了另一个关于堆栈溢出的问题(Getting Emacs fill-paragraph to play nice with javadoc-like comments),它有一个示例正则表达式。我对其进行了一些修改以满足我的要求,并在 Search->Regex Forward 中对其进行了测试,它正确地突出了每个 @param 句子。

我使用了以下正则表达式"^\s-*\*\s-*\(@param\).*$"

因此,我尝试在我的 .emacs 文件中将给定的正则表达式设置为我的段落开头(添加了 elisp 语法所需的 \)。当我打开一个新的 emacs 窗口并试用 Mq 时,发生了同样的错误。有什么我想念的吗?Mq 在 c 模式中的使用方式不同吗?我应该检查我的 .emacs 文件是否有可能在此处导致错误的内容?任何帮助,将不胜感激。

谢谢,瑞安

4

1 回答 1

3

关于您的问题,“Mq 在 c 模式中的使用方式不同吗?”,describe-key(绑定到 Ch k)是您的朋友。在使用 C 文件访问缓冲区时,键入 Ch k Mq 它将准确地告诉您 Mq 绑定到什么函数。在这种情况下,c-fill-paragraph最终使用的是 ,paragraph-start您在另一个问题中找到的变量。

我发现这个用作 as 的正则表达式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 回答