English 中文(简体)
Uncrustify spacing issue with macro inside method call
原标题:

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:

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

The output that I get using your config has a backslash that wraps your macro s close parent to a newline:

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

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

That said, I was able to eliminate the space between NilOrNotNSNull and the open paren by adding set func_call_user NilOrNotNSNull to the top of the config file. See the documentation for the sp_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 :

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

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

I forked your gist and updated it: https://gist.github.com/815042

问题回答

暂无回答




相关问题
Asynchronous request to the server from background thread

I ve got the problem when I tried to do asynchronous requests to server from background thread. I ve never got results of those requests. Simple example which shows the problem: @protocol ...

objective-c: Calling a void function from another controller

i have a void, like -(void) doSomething in a specific controller. i can call it in this controller via [self doSomething], but i don t know how to call this void from another .m file. I want to call ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

NSUndoManager and runModalForWindow:

I have a simple Core Data app which displays a list of entities in the main window. To create or add new entities, I use a second modal window with a separate managed object context so changes can be ...

NSMutableArray values becoming "invalid"

I m trying to show a database information in a tableview and then the detailed information in a view my problem is as follow: I created a NSMutableArray: NSMutableArray *myArray = [[NSMutableArray ...

iPhone numberpad with decimal point

I am writing an iPhone application which requires the user to enter several values that may contain a decimal point (currency values, percentages etc.). The number of decimal places in the values ...

热门标签