Стиль Java Coding Style и настройка cc-режима Emacs - PullRequest
19 голосов
/ 04 декабря 2011

Я использую GNU / Emacs HEAD с включенным режимом cc (c-версия 5.32.2) на компьютере с Debian GNU / Linux.

Я пытаюсь определить собственный стиль для управления Соглашения о коде для языка программирования Java , Руководство по стилю кода Android для авторов и некоторые пользовательские правила.

Как новичок в LISP, начинать с него не представляется разумнымс нуля.Как следствие, я использовал google-c-style в качестве отправной точки, и мне удалось получить намеченное поведение для большинства правил отступа, за исключением вложенного условия (см. Фрагмент кода ниже).

Из этого поста я определил (arglist-cont-nonempty . ++) в своем собственном стиле (полный код: custom-java-style.el ).К сожалению, хотя в большинстве случаев отступ по назначению:

if ((condition1 && condition2)
        || (condition3 && condition4)
        ||!(condition5 && condition6)) {
    doSomethingAboutIt();

    someMethod(longExpression1, longExpression2, longExpression3,
            longExpression4, longExpression5);
}

Вложенные условия имеют неверный отступ:

if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
                && deviceRegistred.getName().equalsIgnoreCase(deviceName))) {
    doSomethingAboutIt();
}

Ctrl-c Ctrl + s сообщите Syntactic analysis: ((arglist-cont-nonempty 2447 2450) (arglist-cont-nonempty 2447 2452)) во второй строке, и у меня, очевидно, есть отступ в 16 пробелов (2 раза ++) вместо 8 (++).

Я хотел бы получить следующий отступ:

if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
        && deviceRegistred.getName().equalsIgnoreCase(deviceName))) {
    doSomethingAboutIt();
}

Я пытался определить (,(when (fboundp …))) условие, подобное тому, которое использовалось для statement-cont, но безуспешно (мое отсутствие знаний о lisp также не помогает).

Теперь,вопрос: мой подход правильный или неправильный?Как я могу / должен реализовать намеченное поведение (т.е. определить, когда я нахожусь во вложенном состоянии, чтобы получить правильный отступ)?

(я не хочу использовать malabar-mode или JDEE, поэтому, пожалуйста,не говорите мне использовать их.)

Приветствия,

Renaud

Обновление 2011/12/06 (реагирование на комментарии)

Мы бы не начали здесь священную войну.Те, кто хочет использовать Emacs по своим собственным причинам, могут придерживаться Emacs, остальные будут делать то, что хотят…

Сказав это, я работаю в команде, в которой я единственный, кто использует Emacs.Остальные любят Eclipse.Поскольку я отвечаю за правила кодирования, я работал с моими коллегами, чтобы получить правильные действия по сохранению и помочь настроить форматтер Eclipse.Все, что я могу сказать, это то, что: действия по сохранению и форматировщик Eclipse не так просты в настройке… Основное отличие состоит в том, что у вас есть хороший графический интерфейс с красивыми флажками, но это не сильно помогает уменьшить сложность.

Я придерживаюсь Emacs…

1 Ответ

3 голосов
/ 13 декабря 2011

Я бы сказал, что Emacs делает правильные вещи.Рассмотрим этот случай:

if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
                && deviceRegistred.getName().equalsIgnoreCase(deviceName))
        || otherCondition) {
    doSomethingAboutIt();
}

Если во вложенном условии с отступом 8 символов, это будет сбивающим с толку вариантом:

if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
        && deviceRegistred.getName().equalsIgnoreCase(deviceName))
        || otherCondition) {
    doSomethingAboutIt();
}
...