我在Eclipse CDT(Mars,v4.5.1)中遇到了一些奇怪的行为。 Ctrl-I(" Fix Indentation")命令应用于函数体的缩进不遵守Code Formatter指定的格式规则。特别是,它增加了不必要的额外缩进级别。例如,如果我编写以下代码:
int MyClass::foo(int a) {
int x = 2;
x = x * a;
return x;
}
突出显示它,按Ctrl-Shift-F,我明白了:
int MyClass::foo(int a) {
int x = 2;
x = x * a;
return x;
}
另一方面,如果我按下Ctrl-I,我会得到:
int MyClass::foo(int a) {
int x = 2;
x = x * a;
return x;
}
请注意,现在有两个缩进级别,因为缩进级别是4个空格。
如果我突出显示已经由Code Formatter格式化的代码(如第一个示例)并按Ctrl-I,它会为每一行添加额外的4个空格,使其看起来像第二个示例。相反,如果我突出显示类似于第二个示例的代码并按Ctrl-Shift-F,它会删除额外的缩进,因此它看起来像第一个示例。
此外,如果我开始键入一个新的函数定义(即void foo() {
)并按Enter键,Eclipse会自动将下一行缩进8个空格,而不是4.在输入代码后,我必须突出显示它并点击Ctrl-Shift-F删除额外的缩进。
在我的C ++ Code Formatter首选项中,我有缩进大小= 4,制表符大小= 4,以及制表符策略=仅空格。据我所知,这是设置缩进首选项的唯一地方。那么为什么不让Ctrl-I或自动缩进尊重它们?