Ответ 1
Последнее (около 2 месяцев или около того) обновление для uncrustify почти решает проблему. Просто установите следующие параметры в файле конфигурации:
indent_oc_block = true
indent_with_tabs = 0
indent_columns = 4 # set to the same as indent_switch_case
indent_switch_case = 4 # set to the same as indent_columns
(я использовал indent_with_tabs = 0, потому что я не мог заставить его работать с вкладками. Возможно, это не обязательно.)
И, конечно, для новой строки после/до {} установите все, что вы хотите, чтобы nl_some_parameter_brace "принудительно".
Теперь uncrustify обработает ваш код, он не будет вставлять вам новые строки в блоки, такой код останется уродливым:
dispatch_async(dispatch_get_global_queue(0, 0), ^(void) {
//code
}
Если кто-то найдет способ внести в него новые строки, пожалуйста, скажите мне.
Спасибо @ipmcc за обновление для uncrustify.
Изменить: Да, xCode обфускает код всякий раз, когда вы копируете/вставляете. Я использую этот отличный плагин xCode для облегчения рабочего процесса: https://github.com/benoitsan/BBUncrustifyPlugin-Xcode
Изменить 2: Uncrustify не очень хорошо обрабатывает вложенные блоки (все же лучше Xcode). Например, вложенные блоки становятся:
dispatch_async(dispatch_get_global_queue(0, 0), ^(void)
{
[array enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop)
{
[array enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop)
{
NSLog(@"the pumpkin pie!");
}];
}];
});