寻找比GNU Indent更灵活的工具

时间:2020-03-06 14:25:55  来源:igfitidea点击:

当我对源使用各种选项进行缩进时,它会执行我想要的操作,但也会使* s在指针类型中的位置混乱:

-int send_pkt(tpkt_t* pkt, void* opt_data);
  -void dump(tpkt_t* bp);
  +int send_pkt(tpkt_t * pkt, void *opt_data);
  +void dump(tpkt * bp);

我知道我在类型旁边*的放置不是变量是非常规的,但是我怎么能缩进以让它们保持不动呢?还是有另一种工具可以满足我的需求?我查看了手册页,信息页,并访问了Google建议的六个页面,但我找不到执行此操作的选项。

我尝试了Artistic Style(又称AStyle),但似乎无法弄清楚如何使它缩进4的倍数,但每8个制表符都是缩进的。那是:

if ( ... ) {
<4spaces>if ( ... ) {
<tab>...some code here...
<4spaces>}
}

解决方案

脱壳

Uncrustify提供了几种有关如何缩进文件的选项。

从配置文件:

indent_with_tabs                           
  How to use tabs when indenting code  
  0=spaces only  
  1=indent with tabs, align with spaces  
  2=indent and align with tabs

你可以在这里找到它。

BCPP
在网站上:" bcpp使C / C ++源程序缩进,用空格或者反斜杠替换制表符。与缩进不同,它(在设计上)不尝试包装长语句。"
在这里找到它。

UniversalIndentGUI
这是一个支持多个美化器/格式化程序的工具。它可能会导致我们有更多选择。
在这里找到它。

艺术风格
我们可以尝试使用Artistic Style或者AStyle来代替(即使它没有执行我们需要做的事情,但如果有人发现它有用,我会把它留在这里)。

修改代码并修改其行为。毕竟是GNU。 ;-)

由于它可能不是我们想要的答案,因此这里是另一个链接:http://www.fnal.gov/docs/working-groups/c++wg/indenting.html。