gpt4 book ai didi

c++ - 如何在 emacs 的 C++ 模式下很好地格式化标题注释?

转载 作者:行者123 更新时间:2023-11-28 00:27:08 26 4
gpt4 key购买 nike

这里的“header comments”是指:

/* Program Name: Foo                */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */

棘手的部分是:

  1. 如果使用M-;
  2. ,很难对齐每一行的结尾 */
  3. 如果可能的话,我想在每一行中将 : 之后的内容对齐。

提前致谢。

最佳答案

您可以通过两次调用 align-regexp 来完成此操作,尽管输入起来有点棘手:

/* Program Name: Foo */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */

选择您要修改的区域,然后使用前缀参数执行您的第一个 align-regexp:

C-u M-x align-regexp RET :\(\s-*\) RET RET RET n

此版本的 align-regexp 使用正则表达式匹配冒号字符,后跟任意数量的空格。然后我们

  • 接受修改捕获组 1(空白)的默认选项,
  • 然后我们调整时默认至少留一个空格,
  • 然后告诉 Emacs 不要对整行重复,因为我们不需要该功能。

这应该留给你

/* Program Name: Foo */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */

现在,C-x C-x 交换点和标记,重新选择您的文本,然后执行另一个 align-regexp。这个不需要前缀参数:

 M-x align-regexp RET \*/ RET

这个版本要简单得多。我们提供了一个匹配关闭注释指示符 */ 的正则表达式,转义了星号。

你应该完成了!最终结果如下所示:

/* Program Name: Foo        */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */

编辑:

您应该能够编写一个函数来自动执行此过程。我不是 elisp 专家,但这似乎可以解决问题:

(defun my-align-c-comment-block ()
(interactive)
(when (use-region-p)
(align-regexp (region-beginning) (region-end) ":\\(\\s-*\\)")
(exchange-point-and-mark)
(align-regexp (region-beginning) (region-end) "\\(\\s-*\\)\\*/")))

关于c++ - 如何在 emacs 的 C++ 模式下很好地格式化标题注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24471086/

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