Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can Uncrustify align colons in Objective-C method calls?

I am using uncrustify 0.52. When I run it against Objective-C files, it wants to convert method invocations like this:

[NSApp beginSheet:startTimerDialog
   modalForWindow:nil
    modalDelegate:nil
   didEndSelector:nil
      contextInfo:nil];

to this:

[NSApp beginSheet:startTimerDialog
 modalForWindow:nil
 modalDelegate:nil
 didEndSelector:nil
 contextInfo:nil];

I prefer the first version, with the colons aligned. Is there an option in the uncrustify config file that can support what I want, or does uncrustify just not support aligned colons?

If uncrustify can't align the colons, is there a way to prevent it from de-aligning the colons that I've aligned myself?

Update:

mmc notes that this feature was available in the Uncrustify svn repository as of build 1581. It is in uncrustify 0.54. Set align_oc_msg_colon = true in your config file to enable it.

Further Update

For people who find this answer in the future: The name of the preference in the .cfg file has been changed. It is now align_oc_msg_colon_span= 1 to get the behavior described above. There is also now a align_oc_decl_colon = true that will do the name thing for multi-line declarations.

like image 993
Kristopher Johnson Avatar asked Jun 02 '09 10:06

Kristopher Johnson


1 Answers

I played around with this for some time last night, and (although I don't think that this deserves the bounty) the answer to both your questions is "no, current versions (.53) of Uncrustify do not do this."

I even investigated writing a patch to do exactly this (because I really want it, too) and after looking at the Uncrustify source, and concluded it would take far more time than I had available to figure out where to insert the patch to accomplish "multi-line message parameter colon alignment" rather than "multi-line message left alignment" It does seem that there has been some improvements to Objective-C parsing in recent patches.

I was so hoping someone would answer this question. I really wanted to know, too.

NOTE: For people who find this answer in the future: The name of the preference in the .cfg file has been changed. It is now align_oc_msg_colon_span = 1 to get the behavior described above. There is also now a align_oc_decl_colon that will do the name thing for multi-line declarations.

like image 168
mmc Avatar answered Sep 29 '22 09:09

mmc