2009-12-29 51 views
6

我有一个问题是非常类似于Getting Emacs fill-paragraph to play nice with javadoc-like comments,但我不知道如果我会在一年岁的线程得到很多答案。Emacs c-mode填充段与Doxygen评论

不管怎样,我的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> 
*/ 

做一些研究,它看起来像我需要设置parag在emacs中使用raph-start变量来识别“@参数”。我发现堆栈溢出的另一个问题(Getting Emacs fill-paragraph to play nice with javadoc-like comments),它有一个示例正则表达式。我修改了一下以适应我的要求,我在Search-> Regex Forward中测试了它,并正确地突出显示了每个@param语句。

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

于是,我尝试设置定正则表达式作为我的段落开始(与添加的\'S为elisp的语法要求)在我的.emacs文件。当我打开一个新的emacs窗口并尝试了M-q时,发生了同样的错误。有什么我失踪? M-q在C模式下使用方式不同吗?我应该检查我的.emacs文件是否有可能导致错误的地方?任何帮助,将不胜感激。

感谢, 瑞安

回答

3

关于你的问题, “在C-模式?不同的使用M-Q”,describe-key(绑定到C-H K)是你的朋友。在用C文件访问缓冲区时,输入C-h k M-q,它会告诉你M-q绑定的是什么函数。在这种情况下,它是c-fill-paragraph,它最终使用paragraph-start,您在其他问题中找到的变量。

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

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

但是,只要你想它不会缩进wrappedlines。它会让你的例子看起来像这样:

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

我希望它仍然适合你。让我知道如果你找出缩进。

+0

我试着添加你在我的.emacs文件中提到的正则表达式,但是我仍然遇到第二个@param没有被识别为新段落的相同问题。 我意识到修复段落状态不会解决我的缩进问题,但这将是一个非常有用的开始=)的地方。在写完最初的文章之后,我意识到我应该注意到这实际上是一个两部分问题: 1)将@param识别为新段落。 2)正确缩进描述。 – DuneBug 2009-12-31 03:17:02

+0

当你在这个文件的缓冲区中时,'C-h v段落开始'返回什么?如果不是上面的正则表达式,那么你可能已经在全局设置它,它可能会被c模式覆盖。如果是这种情况,那么你可以在c模式钩子中设置它。 – Neil 2010-01-08 14:46:54