如何在emacs的c++模式下很好地格式化头注释
How to nicely format header comments in C++ mode of emacs?
这里的"header comments"指的是:
/* Program Name: Foo */
/* Author: Jane Doe */
/* Date: 06/29/2014 */
/* Rev: 1.0 */
棘手的部分是:
- 如果使用M-; 很难对齐每行结束的
- 如果可能的话,我想在每行
:
之后对齐内容。
*/
您可以通过两次调用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 */
编辑:您应该能够编写一个函数来自动执行此过程。我不是代码专家,但这似乎很管用:
(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-*\)\*/")))
相关文章:
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- 很好的语法来获取对向量/数组数据的大小引用?
- 我认为我的代码很好,但它在 cin a 之后停止并且没有进一步?
- 尽管一切看起来都很好,但值不会交换
- 为什么不同类型层次结构的指针之间的dynamic_cast定义得很好?
- 在 C++11 中利用 int*_t、int_fast*_t 和 int_least*_t 之间的差异的一个很好的例子是
- 对于短字符串来说,这是一个很好的哈希函数吗?
- 为什么指标有时效果很好,有时效果不佳?写下霍夫曼代码
- Red Hat:使用<atomic>编译很好,但链接器找不到__atomic_store_16;什么库?
- 使用移位的无符号数字作为数组的索引号是一种很好的做法
- 是否很好地使用状态模式来维护当前选定的对象?
- C++|以一种很好的方式将树(不一定是二进制的)打印到stdout
- 静态库单独使用很好,但在引用时会抛出错误
- 如果验证容器的大小并在同一条件语句下访问元素,这是很好的做法吗?
- 可变参数函数模板不能很好地使用 std::function 作为参数
- 有没有办法关闭文件? fclose 不能很好地工作
- 引用的静态强制转换强制模板实例化,其中不完整的类型很好
- 简单的文本文件格式化在linux下崩溃,但在Windows中很好
- 如何在emacs的c++模式下很好地格式化头注释
- 在c++中很好地格式化数字