如何获得 Xcode 8 的 clang 格式?
How to get clang format for Xcode 8?
在 Xcode 更新到版本 8 后。非常有用的 Alcatraz 插件管理器被锁定,并且像 clang-format,或突出显示选定的单词出现,或使用快捷方式调整字体大小等精湛的实用程序都消失了.
如何在源文件的任何父目录中使用模板 .clang-format 重新启用 clang-format 以在保存时格式化我当前的源代码文件?
您可以创建一个 shell 脚本作为行为添加到 Xcode 8:Xcode > 行为 > +(创建新行为)> 运行脚本: (select file here), 添加快捷方式如 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 "[=10=]")
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 格式可执行文件所在的路径。
编码愉快!
mapbox/XcodeClangFormat 扩展看起来是一种让 clang 格式与 Xcode8 一起工作的有前途的方法。
由于源代码编辑器扩展的限制,遗憾的是您只能为所有项目指定一个 .clang 格式的文件。 "Format on save" 也不可用。
不幸的是,您的小脚本通常不会更新 Xcode 中的格式化文件,因为它在保存时停止侦听文件更新。增加脚本中的睡眠持续时间并不能使其更可靠,并且会为常见的文件保存和文件格式操作引入大量等待时间。
我在你的情况下所做的是让我的 mac 备份并将 macOS 和 Xcode 恢复到最后一个版本,其中所有来自 Alcatraz 的生产力插件再次工作正常。这提高了我的工作效率。
在此博客中找到可行的解决方案 - code-beautifier-in-xcode
基本上,我们可以将 clang-format 运行 作为自动化程序的服务,并在需要格式化代码时通过 Xcode 调用它。有关详细信息,请参阅博客。
看起来 Alcatraz plug-ins 在取消签名时可以在 Xcode 8+ 中恢复工作。因为我不适合尝试,所以我只能向您指出该资源:
检查 header 安装 github 页面 ClangFormat-Xcode。
在 Xcode 更新到版本 8 后。非常有用的 Alcatraz 插件管理器被锁定,并且像 clang-format,或突出显示选定的单词出现,或使用快捷方式调整字体大小等精湛的实用程序都消失了.
如何在源文件的任何父目录中使用模板 .clang-format 重新启用 clang-format 以在保存时格式化我当前的源代码文件?
您可以创建一个 shell 脚本作为行为添加到 Xcode 8:Xcode > 行为 > +(创建新行为)> 运行脚本: (select file here), 添加快捷方式如 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 "[=10=]")
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 格式可执行文件所在的路径。
编码愉快!
mapbox/XcodeClangFormat 扩展看起来是一种让 clang 格式与 Xcode8 一起工作的有前途的方法。
由于源代码编辑器扩展的限制,遗憾的是您只能为所有项目指定一个 .clang 格式的文件。 "Format on save" 也不可用。
不幸的是,您的小脚本通常不会更新 Xcode 中的格式化文件,因为它在保存时停止侦听文件更新。增加脚本中的睡眠持续时间并不能使其更可靠,并且会为常见的文件保存和文件格式操作引入大量等待时间。
我在你的情况下所做的是让我的 mac 备份并将 macOS 和 Xcode 恢复到最后一个版本,其中所有来自 Alcatraz 的生产力插件再次工作正常。这提高了我的工作效率。
在此博客中找到可行的解决方案 - code-beautifier-in-xcode
基本上,我们可以将 clang-format 运行 作为自动化程序的服务,并在需要格式化代码时通过 Xcode 调用它。有关详细信息,请参阅博客。
看起来 Alcatraz plug-ins 在取消签名时可以在 Xcode 8+ 中恢复工作。因为我不适合尝试,所以我只能向您指出该资源:
检查 header 安装 github 页面 ClangFormat-Xcode。