使用Doxygen评论的Emacs c-mode fill-paragraph

Dun*_*Bug 6 emacs doxygen c-mode

我有一个问题与Getting Emacs fill-paragraph非常相似,可以很好地使用类似javadoc的注释,但我不确定我是否会在一年前的帖子中得到很多答案.

无论如何,我有一些C代码有一些Doxygen评论,如下所示:

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs to be wrapped.>
 * @param[in,out] var2 : <Description2>
 */
Run Code Online (Sandbox Code Playgroud)

现在,当我在emacs中使用Mq时,我想要以下内容:

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 *                       to be wrapped.>
 * @param[in,out] var2 : <Description2>
 */
Run Code Online (Sandbox Code Playgroud)

但是,目前我得到以下内容:

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>  @param[in,out] var2 : <Description2>
 */
Run Code Online (Sandbox Code Playgroud)

做一些研究,看起来我需要在emacs中设置paragraph-start变量来识别"@param".我发现了另一个关于堆栈溢出的问题(让Emacs fill-paragraph与javadoc类似的注释很好),它有一个样本正则表达式.我修改了一点,以适应我的要求,我测试了搜索- >正则表达式前进的内部,它正确地强调了每个@param句子.

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

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

谢谢,瑞恩

小智 3

关于你的问题,“Mq 在 c 模式中使用不同吗?”,describe-key(绑定到 Ch k)是你的朋友。当使用 C 文件访问缓冲区时,输入 Ch k Mq,它会准确地告诉您 Mq 绑定到哪个函数。在本例中,它c-fill-paragraph最终使用paragraph-start您在其他问题中找到的变量。

我发现这个正则表达式用作paragraph-start换行并将每个 @param 视为一个新段落:

"^[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*$\\|@param\\)\\|^\f"

但是,它不会按您想要的方式缩进换行。它将使您的示例如下所示:

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>
 * @param[in,out] var2 : <Description2>
 */
Run Code Online (Sandbox Code Playgroud)

我希望它对你仍然有效。如果您弄清楚缩进,请告诉我。