Отступ строки продолжения в 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".