Emacs c模式用强氧注释填充段落

Emacs c模式用强氧注释填充段落,emacs,doxygen,c-mode,Emacs,Doxygen,C Mode,我有一个非常类似的问题,但我不确定我是否能在一年前的帖子中得到很多答案 无论如何,我有一个C代码,其中有一些Doxygen注释,如下所示: /** * Description * * @param[in,out] var1 : <Long description that needs to be wrapped.> * @param[in,out] var2 : <Description2> */ /** * Description * * @param

我有一个非常类似的问题,但我不确定我是否能在一年前的帖子中得到很多答案

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

/**
 * 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>
 */
/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>  @param[in,out] var2 : <Description2>
 */
/**
*描述
*
*@param[in,out]var1:
*@param[in,out]var2:
*/
现在,当我在emacs中使用M-q时,我需要以下内容:

/**
 * 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>
 */
/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>  @param[in,out] var2 : <Description2>
 */
/**
*描述
*
*@param[in,out]var1:
*@param[in,out]var2:
*/
但是,目前我得到以下信息:

/**
 * 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>
 */
/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>  @param[in,out] var2 : <Description2>
 */
/**
*描述
*
*@param[in,out]var1:@param[in,out]var2:
*/
在做一些研究时,我似乎需要在emacs中设置段落开始变量来识别“@param”。我在stack overflow()上发现了另一个问题,它有一个示例正则表达式。我对它进行了一些修改以满足我的需求,并在Search->Regex-Forward中对其进行了测试,它正确地突出显示了每个@param语句

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

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

谢谢, Ryan

关于你的问题,“M-q在c模式下使用不同吗?”,
描述键(绑定到c-h k)是你的朋友。在使用C文件访问缓冲区时,键入C-h k M-q,它将准确地告诉您M-q绑定到什么函数。在本例中,是
c-fill-paragration
,它最终使用了
段落开始
,即您在另一个问题中找到的变量

我发现这个用作
段落开始的正则表达式将换行,并将每个@param视为一个新段落:

“^[]*\(//+\\\\\\***\)[]*\([]*$\\\\\\\\\@param\\)\\\\\\\^\f”

但是,它不会按照您的需要缩进包装线。它将使您的示例如下所示:

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>
 * @param[in,out] var2 : <Description2>
 */
/**
*描述
*
*@param[in,out]var1:
*@param[in,out]var2:
*/

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

我尝试添加您在.emacs文件中提到的正则表达式,但第二个@param未被识别为新段落,我仍然存在同样的问题。我意识到修复段落状态并不能解决缩进问题,但这将是一个非常有用的起点=)。在写了第一篇文章之后,我意识到我应该注意到这实际上是一个由两部分组成的问题:1)将@param作为一个新段落。2) 正确缩进描述。当您在缓冲区中使用此文件时,
C-h v段落开始
返回什么?如果不是上面的regexp,那么您可能已经全局设置了它,并且它可能会被c模式覆盖。如果是这种情况,那么您可以在c模式挂钩中设置它。