Исправлена ​​проблема с пробелом в макросе при вызове метода - PullRequest
1 голос
/ 05 февраля 2011

Я пытаюсь использовать Uncrustify в моем проекте, но сталкиваюсь с некоторыми проблемами, связанными с изменениями пробелов, которые возникают при использовании макроса в качестве получателя сообщения Objective-C.Например, учитывая следующий вызов макроса и метода, я ожидал бы, что интервал останется таким же, как есть.

#define NilOrNotNSNull(val) ({id __val = (val); (__val == [NSNull null]) ? nil : __val;})

title_ = [NilOrNotNSNull([dict objectForKey:@"post_title"]) copy];

Однако, это результат.если Uncrustify не распознает, что текст в скобках является аргументом для макроса, но тогда я не совсем уверен, какого черта он думает.Мне кажется, что это ошибка Uncrustify, но это может быть проблема с моим конфигом, поэтому я решил, что я задам здесь вопрос, а также запишу проблему на GitHub.Вот конфиг, который я использую: https://gist.github.com/812314

Если кто-то может предложить какую-то информацию, я был бы признателен.

1 Ответ

1 голос
/ 07 февраля 2011

Я не получаю ваш точный вывод при запуске с использованием вашей конфигурации. Какую версию ты используешь? Моя версия вывода выглядит следующим образом:

macbook-adamd:~ adamd$ uncrustify --version
uncrustify 0.56

Вывод, который я получаю с помощью вашей конфигурации, имеет обратную косую черту, которая переносит близкого родителя вашего макроса на новую строку:

#define NilOrNotNSNull(val) ({ id __val = (val); (__val == [NSNull null]) ? nil : __val; } \
                         )

title_ = [NilOrNotNSNull ([dict objectForKey:@"post_title"])copy];

Тем не менее, я смог устранить пробел между NilOrNotNSNull и открытым пареном, добавив set func_call_user NilOrNotNSNull в начало файла конфигурации. См. Документацию для sp_func_call_user_paren для получения дополнительной информации. Похоже, у вас есть опция для удаления пробела, просто нет определений, чтобы она соответствовала.

Вот мой вывод с set func_call_user NilOrNotNSNull:

#define NilOrNotNSNull(val) ({ id __val = (val); (__val == [NSNull null]) ? nil : __val; } \
                             )

title_ = [NilOrNotNSNull([dict objectForKey:@"post_title"]) copy];

Я раздвоил твой смысл и обновил его: https://gist.github.com/815042

...