如何获得Xcode 8的clang格式?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得Xcode 8的clang格式?相关的知识,希望对你有一定的参考价值。
在Xcode更新到版本8之后。非常有用的Alcatraz PlugIn Manager被锁定,并且像clang-format这样的高级实用程序,或突出显示所选单词出现,或者使用快捷方式调整字体大小都消失了。
如何在源文件的任何父目录中使用模板.clang-format保存clang-format以格式化我当前的源代码文件?
mapbox/XcodeClangFormat扩展看起来像是一种使用Xcode8处理clang格式的有前途的方法。
由于源编辑器扩展的限制,遗憾的是,您只能为所有项目指定一个.clang格式文件。 “保存时格式化”也不可用。
您可以创建一个作为行为添加到Xcode 8的shell脚本:Xcode> Behaviors> +(创建新的)> Run script :(在此处选择文件),添加Cmd + Shift + S等快捷方式。
该脚本要求Xcode保存当前文档。然后它提取其文件路径并调用clang-format以就地格式化该文件。 Clang格式必须是可用的,例如通过使用brew作为包管理器来下载它并发布其路径以供命令行访问。像往常一样,clang-format使用的样式指南必须具有.clang-format的名称,并且必须位于源文件的任何父文件夹中。
这是脚本:
#!/bin/bash
CDP=$(osascript -e '
tell application "Xcode"
activate
tell application "System Events" to keystroke "s" using {command down}
--wait for Xcode to remove edited flag from filename
delay 0.3
set last_word_in_main_window to (word -1 of (get name of window 1))
set current_document to document 1 whose name ends with last_word_in_main_window
set current_document_path to path of current_document
--CDP is assigned last set value: current_document_path
end tell ')
LOGPATH=$(dirname "$0")
LOGNAME=formatWithClangLog.txt
echo "Filepath: ${CDP}" > ${LOGPATH}/${LOGNAME}
sleep 0.6 ### during save Xcode stops listening for file changes
/usr/local/bin/clang-format -style=file -i -sort-includes ${CDP} >> ${LOGPATH}/${LOGNAME} 2>&1
# EOF
请将路径/ usr / local / bin交换到clang格式可执行文件所在的路径。
快乐的编码!
在这个博客中找到了一个可行的解决方案 - code-beautifier-in-xcode
基本上,我们可以让clang-format作为服务由automator运行,并在需要格式化代码时通过Xcode调用它。有关详细信息,请参阅博客。
不幸的是,您的小脚本通常不会更新Xcode中的格式化文件,因为它在保存时会停止侦听文件更新。增加脚本中的睡眠持续时间并不会使其更可靠,并为常见的文件保存和文件格式操作引入了大量等待时间。
我在你的情况下做的是获得我的mac备份并将macOS和Xcode恢复到最后一个版本,其中Alcatraz的所有生产力插件再次正常工作。这提高了我的生产力。
看起来Alcatraz插件在取消签名时可以重新使用Xcode 8+。因为我不是在尝试这种情况,所以我只能指出你的资源:
检查github页面上的标题安装ClangFormat-Xcode。
以上是关于如何获得Xcode 8的clang格式?的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 中配置 clang-format 格式化 C++ 代码
如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?
Xcode 8 用处不大的新特性:CLANG_WARN_INFINITE_RECURSION