Автоматический отступ 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) {

        }

}

Теперь, если я оставлю это перечисление в одной строке и сделаю для него автоматический отступ, тогда все будет отлично. Я только что получил новый ноутбук и установил на него свежую копию Eclipse и не менял никаких настроек, поэтому так работает автоматический отступ по умолчанию. Но я помню, что на моем старом ноутбуке, если бы я разбил оператор на две строки, все остальное после этого все равно было бы правильно выровнено?

(Кроме того, в начале этого поста я написал «Привет, ребята», но похоже, что StackOverflow автоматически удалил его? Я пытался отредактировать вопрос и снова вставить его, но после публикации он все равно был удален. удалил тоже.ТАК не верит в привет??)


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


Ответы (1)


Я смог воспроизвести проблему.

Кажется, что конечная скобка для перечисления сбивает с толку 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, я обновил свой ответ выше. Если вы не хотите изменять разбиение строк, попробуйте поместить закрывающую скобку перечисления в новую строку, как указано выше. - person Ashutosh Jindal; 05.08.2012
comment
Удивительно, мы только что обнаружили это одновременно, лол. Я могу сделать это сейчас, я думаю, но вот что странно. Если вы инициализируете массив несколькими строками (например, int[] array = { 1, 1, 1, \n 1, 1 и т. д.};), то конечная фигурная скобка может располагаться на той же строке, что и конец вашего инициализация массива и автоматический отступ работают нормально. Так что странно, что для перечисления вам нужно поставить закрывающую фигурную скобку на новую строку, чтобы отступ работал нормально, но для массива вам не нужно этого делать. - person ProgrammingMakesMeQQ; 05.08.2012