I am attempting to use Uncrustify on a project of mine, but I am running into some issues with spacing changes that it makes when a macro is used as the receiver of an Objective-C message. For example, given the following macro and method call, I would expect the spacing to remain exactly as is.
#define NilOrNotNSNull(val) ({id __val = (val); (__val == [NSNull null]) ? nil : __val;})
title_ = [NilOrNotNSNull([dict objectForKey:@"post_title"]) copy];
However, this is the result.
#define NilOrNotNSNull(val) ({id __val = (val); (__val == [NSNull null]) ? nil : __val;})
title_ = [NilOrNotNSNull ([dict objectForKey:@"post_title"])copy];
It appears as if Uncrustify does not recognize that the text in parentheses is an argument for the macro, but then I'm not really sure what the heck it thinks it is. This seems like an Uncrustify bug to me, but it could be an issue with my config, so I figured I'd ask here as well as filing an issue on GitHub. Here is the config I'm using: https://gist.github.com/812314
If anyone could offer some insight, I'd appreciate it.
I don't get your exact output when I run using your config. What version are you using? My version output is as follows:
The output that I get using your config has a backslash that wraps your macro's close parent to a newline:
That said, I was able to eliminate the space between
NilOrNotNSNull
and the open paren by addingset func_call_user NilOrNotNSNull
to the top of the config file. See the documentation for thesp_func_call_user_paren
for more information. It seems you have the option set up to remove the space, just no definitions for it to match.Here is my output with the
set func_call_user NilOrNotNSNull
:I forked your gist and updated it: https://gist.github.com/815042