gpt4 book ai didi

Emacs c-mode fill-paragraph with Doxygen

转载 作者:行者123 更新时间:2023-12-04 15:37:57 26 4
gpt4 key购买 nike

我有一个与 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 中使用 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>
*/

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

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

谢谢,
瑞安

最佳答案

关于您的问题,“M-q 在 c 模式中的使用方式不同吗?”,describe-key (绑定(bind)到 C-h k)是你的 friend 。在使用 C 文件访问缓冲区时,键入 C-h k M-q 它将准确地告诉您 M-q 绑定(bind)到的函数。在这种情况下,它是 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>
*/

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

关于Emacs c-mode fill-paragraph with Doxygen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1972219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com