Отступ строки продолжения в Xcode

Могу ли я получить автоматический отступ Xcode для отступа строки продолжения?

Я хочу:

BOOL someLongVariableName = someLongValue
    | someOtherLongValue
    | moreLongValues

BOOL someOtherLongVariableName =
    someEvenLongerValue;

[someLongVariableName
    performSomeAction:someLongArgument]

В настоящее время я получаю:

BOOL someLongVariableName = someLongValue
| someOtherLongValue
| moreLongValues

BOOL someOtherLongVariableName =
someEvenLongerValue;

[someLongVariableName
 performSomeAction:someLongArgument]

Чтобы было ясно:

  • Я использую явные разрывы строк, а не автоматическое перенос.
  • Требуется правильный отступ при редактировании и сразу после нажатия кнопки возврата, а не после запуска внешней программы (например, uncrustify).

2 ответа

В итоге я интегрировал uncrustify, чтобы частично получить то, что хотел. (Случай 3 все еще выключен, хотя.)

Интеграция с Xcode

Чтобы заставить Xcode автоматически делать отступ в коде, я создал цель "Aggregate" с фазой "Run Script":

find . -name '*.[mh]' -print0 \
    | xargs -0 git diff-index HEAD -- | grep -v "D\t" | cut -c100- \
    | xargs uncrustify -l OC --replace --no-backup -c uncrustify.cfg

Это запускает uncrustify для всех файлов, которые помечены как измененные в git. Я добавил цель приложения в качестве зависимости от цели форматирования, поэтому она форматируется только в случае успешной компиляции. (Важно, поскольку uncrustify может быть сбит с толку из-за неправильного синтаксиса.) Наконец, я добавил цель формата в свою схему, поэтому каждая сборка запускает формат. XCode обычно перезагружает отформатированный файл самостоятельно.

Соответствующая настройка моего uncrustify.cfg indent_continue = 4,

Проблемы

Информация отмены теряется, когда XCode перезагружает отформатированный файл. Я мог бы запустить скрипт из ловушки git pre-commit, но я предпочитаю более быстрые результаты.

Еще одним недостатком является то, что поддержка Objective-C в uncrustify не идеальна, но, похоже, альтернативы нет. (Может быть , когда - нибудь формат Clang?)

Или попробуйте xcode-preferences-text edit-indentation: проверьте синтаксический отступ, проверьте автоматический отступ для "Return".

Другие вопросы по тегам