Uncrustify将作为字符串一部分的换行符转换为实际的新行

时间:2013-06-07 21:43:07

标签: objective-c nsstring uncrustify

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

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

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

原来这是Xcode格式化程序的一个错误,它在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];