LoginSignup
4
4

More than 5 years have passed since last update.

Xcode4のコード入力補間の追加

Last updated at Posted at 2013-04-08

前はTextMacrosで編集出来たんですが使えなくなってて、
あるはずだよなーと思って調べてみたら、
変わりにコードスニペットになってたみたい。
やり方を忘れないように、メモメモ
(不明なとこもあるけどとりあえず出来たかなと。
※Xcode4.6.1で試した結果になります。

(追記
XcodeでUtilitis(ソースの右側に出てくるエリア)の下部の{}マークからも設定可能。
コードのドラッグアンドドロップと選択だけで、
以下のディレクトリに自動で作成してくれちゃう・・・^^;
sawat1203さん、教えてくれてありがとうございます!

手順

1、~/Library/Developer/Xcode/UserData/CodeSnippetsに移動
(CodeSnippetsが無い場合は作成)

2、/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets
ここにあるファイルを参考に編集
(デフォルトで設定されているコードスニペットの設定ファイル)

3、1で移動しておいたディレクトリにcodesnippet拡張子で一個づつスニペット設定ファイルを作成
(デフォルトの設定ファイルの様に、codesnippets拡張子にしても複数設定が出来なかった・・・arrayを入れても認識してくれない・・・)

4、codesnippetファイルの要素内に各設定を記載
 ※IDECodeSnippetUserSnippet:【重要】このキーを追加
 (デフォルトのファイルにはないが、ユーザー定義の値という宣言っぽい)
 ・IDECodeSnippetVersion:バージョン?自動で更新されてる??? 
・IDECodeSnippetCompletionPrefix:キーになる文字列
 ・IDECodeSnippetContents:キーを置換する文字列
 ・IDECodeSnippetIdentifier:他のIDと被らなければ、どんな文字列でも問題無さそう
 ・IDECodeSnippetLanguage:使用言語(Objctive-C、C++等)
 ・IDECodeSnippetCompletionScopes:表示される場所(複数可)
  -TopLevel:クラス外
  -ClassImplementation:クラス内、メソッド外
  -CodeBlock:メソッド内
  -All:全て?
 (システムに設定されてるスニペットを見た感じなので、たぶん^^;
 ・IDECodeSnippetRelativePriority:プライオリティって書いてるので優先順位?

5、一度Xcodeを終了させて反映


サンプル

NSNumberTRUE.codesnippet
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>IDECodeSnippetCompletionPrefix</key>
    <string>@true</string>
    <key>IDECodeSnippetCompletionScopes</key>
    <array>
        <string>All</string>
    </array>
    <key>IDECodeSnippetContents</key>
    <string>@TRUE</string>
    <key>IDECodeSnippetIdentifier</key>
    <string>NSNumberTRUE</string>
    <key>IDECodeSnippetLanguage</key>
    <string>Xcode.SourceCodeLanguage.Objective-C</string>
    <key>IDECodeSnippetSummary</key>
    <string>NSNumber BOOL type TRUE value.</string>
    <key>IDECodeSnippetTitle</key>
    <string>NSNumber TRUE</string>
    <key>IDECodeSnippetUserSnippet</key>
    <true/>
    <key>IDECodeSnippetVersion</key>
    <integer>2</integer>
</dict>
</plist>

NSNumberのBOOL値にコード補間が効かなかったので、@TRUEを補間してくれるスニペットです^^;

参考:
http://stackoverflow.com/questions/5303374/how-do-i-create-custom-text-macros-in-xcode-4

4
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4