2016-09-28 59 views
2

Xcode更新至版本8之后。非常有用的Alcatraz PlugIn管理器被锁定,像clang格式,突出显示所选单词出现,或通过使用快捷方式调整字体大小等卓越实用程序都没有了。如何获得Xcode 8的铛格式?

如何在源文件的任何父目录中使用模板.clang-format保存格式化当前源代码文件的铿锵声格式?

回答

3

mapbox/XcodeClangFormat扩展看起来像一个很有前途的方式来获得clang格式与Xcode8工作。

由于源代码编辑器扩展的限制,不幸的是,您只能为您的所有项目指定一个.clang格式的文件。 “保存时的格式”也不可用。

+1

我测试了它,它在新的Xcode插件模型的严格限制内完成了它的工作。我所缺少的是'保存格式',根据作者的说法是不可能的。但它是一个clang格式插件尽可能接近的选项。 – VisorZ

3

您可以创建一个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目录到您的铛格式的可执行文件驻留的一个。

快乐编码!

0

不幸的是,您的小脚本通常不会更新Xcode中的格式化文件,因为它在保存时会停止监听文件更新。增加脚本中的睡眠持续时间并不会使它更可靠,并且会为通用文件(文件格式操作)节省大量的等待时间。

我在你的情况下所做的就是让我的mac备份,并将macOS和Xcode恢复到最后一个版本,其中来自恶魔岛的所有生产力插件都能够正常工作。这提高了我的生产力。

1

发现在这个博客上可行的解决方案 - code-beautifier-in-xcode

基本上,我们可以有clang-format运行由自动机服务并调用它通过Xcode中,每当我们需要格式化代码。请参阅博客了解更多详情。

0

看起来Alcatraz插件可以在Xcode 8+中重新使用时对其进行签名。因为我的情况我不尝试,我只能指向你该资源:

检查在github上ClangFormat-Xcode首页的页眉安装

+0

我更新到Xcode 9.2后试过。我像使用工具update_xcode_plugins在ClangFormat-Xcode github页面上描述的那样对我的Xcode进行了签名。所有其他alcatraz插件再次工作,但ClangFormat插件不起作用。我的解决方案是使用上面的脚本,删除保存功能和延迟条目,并通过Xcodes Behaviors将其绑定到快捷方式上。现在我先按CMD + S,然后在当前文件上外部应用clangformat的快捷方式。 – VisorZ