Xcode更新至版本8之后。非常有用的Alcatraz PlugIn管理器被锁定,像clang格式,突出显示所选单词出现,或通过使用快捷方式调整字体大小等卓越实用程序都没有了。如何获得Xcode 8的铛格式?
如何在源文件的任何父目录中使用模板.clang-format保存格式化当前源代码文件的铿锵声格式?
Xcode更新至版本8之后。非常有用的Alcatraz PlugIn管理器被锁定,像clang格式,突出显示所选单词出现,或通过使用快捷方式调整字体大小等卓越实用程序都没有了。如何获得Xcode 8的铛格式?
如何在源文件的任何父目录中使用模板.clang-format保存格式化当前源代码文件的铿锵声格式?
mapbox/XcodeClangFormat扩展看起来像一个很有前途的方式来获得clang格式与Xcode8工作。
由于源代码编辑器扩展的限制,不幸的是,您只能为您的所有项目指定一个.clang格式的文件。 “保存时的格式”也不可用。
您可以创建一个shell脚本作为行为添加到Xcode 8中:Xcode> Behaviors> +(创建新行为)>运行脚本:(在此处选择文件),添加类似Cmd + Shift + S的快捷方式。
该脚本要求Xcode保存当前文档。然后它提取它的文件路径并调用clang格式来就地格式化该文件。俚语格式必须可用,例如通过使用brew作为程序包管理器来下载它并使其路径发布用于命令行访问。像往常一样,clang格式使用的样式指南的名称必须为.clang格式,并且必须位于源文件的任何父文件夹中。
下面是脚本:
#!/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目录到您的铛格式的可执行文件驻留的一个。
快乐编码!
不幸的是,您的小脚本通常不会更新Xcode中的格式化文件,因为它在保存时会停止监听文件更新。增加脚本中的睡眠持续时间并不会使它更可靠,并且会为通用文件(文件格式操作)节省大量的等待时间。
我在你的情况下所做的就是让我的mac备份,并将macOS和Xcode恢复到最后一个版本,其中来自恶魔岛的所有生产力插件都能够正常工作。这提高了我的生产力。
发现在这个博客上可行的解决方案 - code-beautifier-in-xcode
基本上,我们可以有clang-format运行由自动机服务并调用它通过Xcode中,每当我们需要格式化代码。请参阅博客了解更多详情。
看起来Alcatraz插件可以在Xcode 8+中重新使用时对其进行签名。因为我的情况我不尝试,我只能指向你该资源:
检查在github上ClangFormat-Xcode首页的页眉安装。
我更新到Xcode 9.2后试过。我像使用工具update_xcode_plugins在ClangFormat-Xcode github页面上描述的那样对我的Xcode进行了签名。所有其他alcatraz插件再次工作,但ClangFormat插件不起作用。我的解决方案是使用上面的脚本,删除保存功能和延迟条目,并通过Xcodes Behaviors将其绑定到快捷方式上。现在我先按CMD + S,然后在当前文件上外部应用clangformat的快捷方式。 – VisorZ
我测试了它,它在新的Xcode插件模型的严格限制内完成了它的工作。我所缺少的是'保存格式',根据作者的说法是不可能的。但它是一个clang格式插件尽可能接近的选项。 – VisorZ