Автоматичният отстъп на Eclipse прави неправилен отстъп във файла

Нещо странно се случва с моя Eclipse, което никога не си спомням да се е случвало преди. По принцип, ако имам дълъг израз и го разделя на два реда, тогава всичко след това се отстъпва с табулатор по-далеч, отколкото трябва. Ето един пример:

Правилно отстъпление:

public static class Shape {

    enum Tetrominoes { NoShape, ZShape, SShape, LineShape, TShape, 
        SquareShape, LShape, MirroredLShape };

    private Tetrominoes pieceShape;
    private int coords[][];
    private int[][][] coordsTable;

    public Shape() {

        coords = new int[4][2];
        setShape(Tetrominoes.NoShape);
    }

    public void setShape(Tetrominoes shape) {

    }

}

Как изглежда с Ctrl+A, Ctrl+I:

public static class Shape {

    enum Tetrominoes { NoShape, ZShape, SShape, LineShape, TShape, 
        SquareShape, LShape, MirroredLShape };

        private Tetrominoes pieceShape;
        private int coords[][];
        private int[][][] coordsTable;

        public Shape() {

            coords = new int[4][2];
            setShape(Tetrominoes.NoShape);
        }

        public void setShape(Tetrominoes shape) {

        }

}

Сега, ако запазя това enum на един ред и автоматично го отстъпя, тогава работи добре. Току-що получих нов лаптоп и сложих ново копие на Eclipse върху него и не промених никакви настройки, така че ето как работи автоматичното отстъп по подразбиране. Но си спомням, че на моя стар лаптоп, ако разделя изявление на два реда, тогава всичко останало след това пак ще бъде правилно подравнено?

(Също така в началото на тази публикация поставих „Хей, момчета“, но изглежда, че StackOverflow го премахна автоматично? Опитах да редактирам въпроса и да го вмъкна отново, но той пак беше премахнат след публикуването. Опитах се да сложа „Хей“, но това стана премахнат също. ТАКА не вярва ли в поздравите??)


person ProgrammingMakesMeQQ    schedule 05.08.2012    source източник


Отговори (1)


Успях да възпроизведа проблема.

Изглежда, че крайната скоба за enum обърква Eclipse. Ако поставите това на отделен ред, отстъпът започва да работи добре:

public static class Shape {

    enum Tetrominoes { NoShape, ZShape, SShape, LineShape, TShape, 
        SquareShape, LShape, MirroredLShape 
    };

    private Tetrominoes pieceShape;
    private int coords[][];
    private int[][][] coordsTable;

    public Shape() {

        coords = new int[4][2];
        setShape(Tetrominoes.NoShape);
    }

    public void setShape(Tetrominoes shape) {

    }

}

Можете също да опитате да форматирате кода (Ctrl + Shift + F), последвано от коригиране на отстъпа (Ctrl + A и Ctrl + I). Когато форматирате кода, ще забележите, че Eclipse също поставя крайната скоба на следващия ред, вместо до тялото на константата Enum.

person Ashutosh Jindal    schedule 05.08.2012
comment
Но работата е там, че искам редът да се раздели, за да мога да запазя кода си достатъчно малък, за да се побере в половината екран. разделянето на линията не е проблем, фактът, че цялата вдлъбнатина след разделянето на линията се прецаква. - person ProgrammingMakesMeQQ; 05.08.2012
comment
@ProgrammingMakesMeQQ, актуализирах отговора си по-горе. Ако не желаете да промените разделянето на редове, опитайте да поставите крайната скоба на enum на нов ред, както по-горе. - person Ashutosh Jindal; 05.08.2012
comment
Страхотно, току-що го открихме по едно и също време хаха. Предполагам, че мога да го направя засега, но тук е странното. Ако инициализирате масив на няколко реда (напр. int[] array = { 1, 1, 1, \n 1, 1 и т.н.};), тогава можете да поставите крайна скоба на същия ред като края на вашия инициализацията на масива и автоматичният отстъп работи добре. Така че е странно, че за enum трябва да поставите затварящата скоба на нов ред, за да може отстъпът да работи добре, но за масив не е нужно да правите това. - person ProgrammingMakesMeQQ; 05.08.2012