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