Xcodeをバージョン8にアップデートした後、非常に便利なAlcatraz PlugIn Managerがロックアウトされ、clang形式のような優れたユーティリティや選択された単語の出現を強調表示したり、ショートカットを使用してフォントのサイズを変更したりしています。Xcode 8のclang形式を取得するには?
ソースファイルの親ディレクトリのテンプレート.clang-formatを使用して、保存時に現在のソースコードファイルをフォーマットするにはどうすればよいですか?
Xcodeをバージョン8にアップデートした後、非常に便利なAlcatraz PlugIn Managerがロックアウトされ、clang形式のような優れたユーティリティや選択された単語の出現を強調表示したり、ショートカットを使用してフォントのサイズを変更したりしています。Xcode 8のclang形式を取得するには?
ソースファイルの親ディレクトリのテンプレート.clang-formatを使用して、保存時に現在のソースコードファイルをフォーマットするにはどうすればよいですか?
mapbox/XcodeClangFormat拡張子は、Xcode8で動作するclang形式を取得する有望な方法のようです。
ソースエディタ拡張の制限により、残念ながら、すべてのプロジェクトに対して1つの.clang形式ファイルしか指定できません。 「保存時の書式」も使用できません。
Xcode> Behaviors> +(新しいものを作成する)>スクリプトを実行:(ここでファイルを選択)、Cmd + Shift + Sのようなショートカットを追加して、Xcode 8に追加されたシェルスクリプトを作成できます。
スクリプトは現在のドキュメントを保存するように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を交換してください。
ハッピーコーディング!
残念ながら、あなたの小さなスクリプトは保存時にファイルの更新を聞いていないため、Xcodeでフォーマットされたファイルを更新しないことがよくあります。スクリプトのスリープ時間を長くしても、ファイルの信頼性が向上するわけではなく、共通のファイル保存&ファイル形式の処理に多くの待機時間がかかります。
あなたの状況では、Macのバックアップを取得し、macOSとXcodeを、アルカトラズのすべての生産性プラグインが正常に機能する最後のバージョンに復元することができました。これは私の生産性を高めた。このブログで実行可能な解決策を見つけた
基本的に、我々は、Automatorのことで、サービスとして実行しているclang-formatを持っており、私たちはコードをフォーマットする必要があるときのXcodeを通してそれを呼び出すことができます。詳細はブログを参照してください。
アルカトラズのプラグインは、Xcode 8以降で動作するようになっているようです。私はそれを試してみることができないので、そのリソースにあなたを指摘することができます:
ヘッダーインストールそのgithubページでClangFormat-Xcodeを調べてください。
Xcode 9.2にアップデートしてみました。私はXcodeの署名を、update_xcode_pluginsツールを使ってClangFormat-Xcodeのgithubページに記述したようにしました。他のすべてのアルカトラズプラグインは再び機能しますが、ClangFormatプラグインは機能しません。私の解決策は、上記のスクリプトを使用して、保存機能と遅延エントリを削除し、Xcode Behaviors経由でショートカットにバインドすることです。今度はCMD + Sを押してから、現在のファイルに外部からclangformatを適用するためのショートカットを押します。 – VisorZ
私はこれをテストし、新しいXcodeプラグインモデルの厳しい制限内でできることを行います。私が欠けているのは、その作者によれば不可能な「保存形式」です。しかし、clang形式のプラグインのための可能な限り近いオプションです。 – VisorZ