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。
答案 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];