0

XCode 中的以下 Objective-C 代码(可编译)

NSString *someString = @"Lorem ipsum dolor.\nEget nisl nec risus";

运行 Uncrustify 后变为

NSString *someString = @"Lorem ipsum dolor.
Eget nisl nec risus";

哪个不编译。有没有办法避免它改变嵌入在 NString 中的换行符?我一直在搜索和阅读论坛,以及神秘的 Uncrustify 配置文件,但一直找不到答案。

顺便说一句,我使用的是 0.60 版的 Uncrustify。

4

2 回答 2

1

弄清楚了!

问题不在于配置。它与运行的 AppleScript 一起使用。在我的系统上,AppleScript 位于 ~/Library/Services/Uncrustify_opened_Xcode_sources.workflow。

基本上通过修改 Uncrustify_opened_Xcode_sources.workflow 应用程序中生成的 document.wflow 对其进行了一些修改,使其适用于最新版本的 Uncrustify。对我来说很好,但可能需要调整。我只更改了第 99-105 行。我删除了拦截器。

https://github.com/heliumroe/Xcode-formatter/compare/octo-online:master...patch-1?quick_pull=1了解更多详情!

if (suffix = "m" or suffix = "h") then

tell application "Xcode" to (do shell script "'/usr/local/bin/uncrustify' -c " & "'" & uncrustifyConfigFilePath & "' -l OC --no-backup '" & currentDocumentPath & "'")

end if

end repeat
display dialog "DONE"
end tell
于 2013-08-04T23:49:52.873 回答
0

原来这是 Xcode-formatter 的一个错误,它在 AppleScript 中发挥了它的魔力。我们需要的是 AppleScript 中的通配符或正则表达式来转义嵌入在字符串中的 \n 换行符。

更多信息在这里:

https://github.com/octo-online/Xcode-formatter/issues/7

编辑:

我找到了解决方法。

NSInteger newLineAsciiCode = 10;
NSString *newLineCharacter = [NSString stringWithFormat:@"%c", newLineAsciiCode];
NSString *someString = [NSString stringWithFormat:@"Lorem ipsum dolor.%@Eget nisl nec risus", newLineCharacter];
于 2013-06-08T19:22:17.753 回答