【问题标题】:Can Uncrustify align colons in Objective-C method calls?Uncrustify 可以在 Objective-C 方法调用中对齐冒号吗?
【发布时间】:2010-10-30 15:22:40
【问题描述】:

我正在使用uncrustify 0.52。当我针对 Objective-C 文件运行它时,它希望像这样转换方法调用:

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

到这里:

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

我更喜欢第一个版本,冒号对齐。 uncrustify 配置文件中是否有可以支持我想要的选项,或者 uncrustify 只是不支持对齐的冒号?

如果 uncrustify 无法对齐冒号,有没有办法防止它取消对齐我自己对齐的冒号?

更新:

mmc 注意到该功能在版本 1581 的 Uncrustify svn 存储库中可用。它在 uncrustify 0.54 中。在配置文件中设置align_oc_msg_colon = true 以启用它。

进一步更新

对于将来找到此答案的人: .cfg 文件中首选项的名称已更改。现在是align_oc_msg_colon_span= 1 来获取上述行为。现在还有一个align_oc_decl_colon = true,它将为多行声明做命名事情。

【问题讨论】:

  • 当前版本 (0.59) 中存在一个错误,这些选项无法按预期工作。请参阅我的答案 stackoverflow.com/a/11187820/253098

标签: objective-c uncrustify


【解决方案1】:

我昨晚玩了一段时间,并且(尽管我认为这不值得赏金)您的两个问题的答案都是“不,Uncrustify 的当前版本 (.53) 不这样做。”

我什至研究了编写一个补丁来做到这一点(因为我也真的想要它)并且在查看了 Uncrustify 源代码之后,我得出结论认为这将花费比我能够找到的插入补丁的位置更多的时间完成“多行消息参数冒号对齐”而不是“多行消息左对齐”最近的补丁中似乎对Objective-C解析有一些改进。

我非常希望有人能回答这个问题。我也很想知道。

注意:对于将来找到此答案的人: .cfg 文件中首选项的名称已更改。现在是 align_oc_msg_colon_span = 1 来获得上述行为。现在还有一个 align_oc_decl_colon 将为多行声明执行名称操作。

【讨论】:

  • 我希望在我的空闲时间自己做一个补丁。我不知道我什么时候才能吃到。
  • 你可能不想打扰......看起来它即将到来。 Uncrustify .53 是 svn 中的版本 1571。当前在他的 SourceForge svn 中是 1581。Build 1581 似乎正在(可能不完整,我还没有下载和编译)为 Objective C 添加一个名为“align_oc_msg_colon”的新选项。不知道关于你,但我认为这听起来很有希望。现在我开始尝试构建 1581 看看它是否真的有效。
  • 嗯,它似乎工作......主要是。它似乎不想让任何消息部分延伸到前一行的左方括号。 90%的时候,这很好。另外 10% 在对象名称和消息的第一个(段?参数名称?)之间放置空格。我不喜欢这个。我感觉它可以关闭,但我还没有找到合适的选项。
【解决方案2】:

你试过了吗:

align_var_def_colon=true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多