Eclipse CDT:Ctrl-I缩进与Code Formatter规则不一致

时间:2016-02-04 23:43:42

标签: eclipse indentation eclipse-cdt code-formatting

我在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或自动缩进尊重它们?

0 个答案:

没有答案