ライブ テンプレート
RAD Studio 入門 への移動
ライブ テンプレートは再利用可能なスケルトン コード文です。コード エディタで Delphi および C++ 用の一連のライブ テンプレートにアクセス可能です。
[テンプレート]ウィンドウでテンプレート名をダブルクリックすることで、これらの定義済みコード スケルトンの 1 つを作成中のコードに挿入できます。また、テンプレート名を入力し Tab キーを押すことでテンプレートを挿入することもできます。RAD Studio ライブ テンプレートの XML ファイルは C:\Program Files (x86)\Embarcadero\Studio\22.0\ObjRepos\en\Code_Templates
にあります。
[テンプレート]ウィンドウに独自のコード テンプレートを追加できます。ライブ テンプレートの名前は、テンプレート内のコード(たとえば class など)を表すか、コードの最初の単語(たとえば try など)に一致することがあり、一部には、コードに入力する単語に近い(正確に一致するわけではない)テンプレート名(たとえば forr など)もあります。独自に作成したテンプレート(およびサード パーティ製アドインで提供されるテンプレート)は、デフォルトでは、C:\Users\<user>\Documents\Embarcadero\Studio\code_templates
ディレクトリに保存されます。
目次
ジャンプ ポイント
ジャンプ ポイントは、Tab
キーや Shift+Tab
キーを使ってテンプレート内の要素間を移動できるようになる、キー入力フィールドのプレースホルダです。
編集可能なジャンプ ポイントがテンプレートに 1 つ以上ある場合、そのテンプレートをコードに挿入すると、テンプレートは自動的に同期編集モードになります。Esc
キーまたは Enter
キーを押すか、最後のジャンプ ポイントで Tab
キーを押すと、同期編集モードが終了し、コード エディタは通常の編集モードに戻ります。
たとえば、arrayd(Delphi 配列)テンプレートには 4 つのジャンプ ポイントがあり、それぞれ、name(TMyArray)、low(0)、high(10)、var(Integer)という名前が付いています(かっこ内はデフォルト テキスト)。下図のように、最初のジャンプ ポイントが強調教示され、アクティブになっています。
arrayd XML コードと arrayd ライブ テンプレートそのものを比較するには、[テンプレート]ウィンドウを開き、arrayd テンプレートを選択して[コード テンプレートの編集]()をクリックします。
例:Delphi 用および C++ 用の try テンプレート
このセクションでは、以下のような Delphi 用および C++ 用の try テンプレートを示します。
言語 | テンプレート名 | テンプレート概要 |
---|---|---|
Delphi |
try |
try-finally (Create/Free あり) |
C++ |
try |
try-catch |
Delphi 用 try テンプレート
下図は、[テンプレート]ウィンドウで Delphi 用 try テンプレートの上にマウス カーソルを合わせたときにコード概要ポップアップが表示されるところを示しています。縦棒("|")は特殊文字で、ここでは、テンプレート内のジャンプ ポイントを強調するために使用されています($ もジャンプ ポイントを区切るのに使用できます)。
下図は、Delphi 用 try テンプレートをアクティブにしたときにコード エディタに挿入されるテンプレートを示します。強調表示またはアウトライン表示されたジャンプ ポイントが同期編集モードでアクティブになっているため、そのテンプレートに出現するすべてのジャンプ ポイントを同時に編集できます。
ここで、Delphi コード テンプレート try の XML ファイルを示します。[テンプレート]ウィンドウの[概要]列に表示される "try finally (Create/Free あり)" が記述されています。このテンプレートには、以下の記述が含まれています。
- (variable、control、createparms という名前の)3 つのジャンプ ポイントの定義
- コード補完と control ジャンプ ポイントを関連付けるスクリプト(script)コマンド
<?xml version="1.0" encoding="utf-8" ?>
<codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
version="1.0.0">
<template name="'''try'''" surround="'''true'''" invoke="'''auto'''">
<point name="'''variable'''">
<text>
'''MyClass'''
</text>
<hint>
'''変数名'''
</hint>
</point>
<point name="control">
<script language="'''Delphi'''">
'''InvokeCodeCompletion;'''
</script>
<text>
'''Component'''
</text>
<hint>
'''クラス名'''
</hint>
</point>
<point name="createparms">
<hint>
'''コンストラクタのパラメータ'''
</hint>
<text>
'''(Self)'''
</text>
</point>
<description>
'''try finally (Create/Free あり)'''
</description>
<author>
'''Embarcadero'''
</author>
<script language="'''Delphi'''" onenter="'''false'''" onleave="'''true'''">
'''DeclareVariable(|variable|);'''
</script>
<code language="'''Delphi'''" context="'''methodbody'''" delimiter="|"><![CDATA['''|variable| := T|control|.Create|createparms|;
'''try
'''|selected||*||end|
'''finally
'''|*||variable|.Free;
'''end;'''
''']]>
</code>
</template>
</codetemplate>
テンプレートのコードは、<code> 要素の <![CDATA[ ... ]]>
内に記述されています。上記テンプレートの先頭要素は、次のような variable というジャンプ ポイントです。
|variable|
コード内の行をインデントするための、次のような特殊文字も含まれています。
|*|
二重インデントの場合は、以下を使用します。
|*||*|
C++ 用 try テンプレート
下図は、[テンプレート]ウィンドウで C++ 用 try テンプレートの上にマウス カーソルを合わせたときにコード概要ポップアップが表示されるところを示しています。ドル記号($)は、定義済みおよび組み込みのジャンプ ポイントを強調するのに使用される特殊文字です(| も使用できます)。
下図は、C++ 用 try テンプレート([概要]は 'try-catch')をアクティブにしたときにコード エディタに挿入されるライブ テンプレートを示します。
C++ 用 try テンプレートの実際の XML は以下のようになっています。
<?xml version="1.0" encoding="utf-8" ?>
<codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
version="1.0.0">
<template name="'''try'''" surround="'''true'''" invoke="'''auto'''">
<point name="'''except'''">
<text>
...
</text>
<hint>
'''捕捉する例外クラス'''
</hint>
</point>
<description>
'''try-catch'''
</description>
<author>
'''Embarcadero'''
</author>
<code language="'''C'''" context="'''methodbody'''"><![CDATA['''try {
'''$selected$$*$$end$
'''} catch ($except$) {
'''}'''
]]>
</code>
</template>
</codetemplate>
テンプレートの実際のコードは、<code> 要素の <![CDATA[ ... ]]>
内に記述されています。
このテンプレートではドル記号($)を区切り文字として使用しているのに対して、Delphi 用 try テンプレートでは縦棒(|)を区切り文字として使用しています。次の特殊文字はコード内の行をインデントするためのものです。
$*$
二重インデントの場合は、以下を使用します。
$*$$*$
ライブ テンプレートの XML 記述
ライブ テンプレートは、以下の親要素を含むことができる XML ファイルです。
<codetemplate xmlns="http: ... //schemas.borland.com/Delphi/2005/codetemplates" version="1.0.0"> ...
</codetemplate>
<codetemplate> 要素には以下の子要素が含まれています。
- <template> </template> には属性が 4 つ(name、invoke、inplace、surround)があります。
<template name="class" invoke="manual/auto">
- name(テンプレートの名前、必須)
- invoke(テンプレートの呼び出し方)。取り得る値は auto、manual、none のいずれかです。それぞれの意味は以下のとおりです。
- auto = スペース キーまたは Tab キーを押す
- manual = Tab キーを押す
- none = Ctrl+J または Ctrl+Space を押すか、[テンプレート]ウィンドウを使用する
- inplace - (論理値)展開テンプレートであることを示します
- surround - (論理値)選択されたテキストをテンプレートで囲むことができることを示します。
- <description>
Text
</description> – テンプレートの要素([テンプレート]ウィンドウにテンプレート名と共に表示される Text が記述されます) - <author>
Author_Name
</author> – テンプレートの要素 - <point> </point> – テンプレートの要素(<description> や <author> と同様)。入力フィールドのプレースホルダを記述します。名前があり(必須)、以下の 3 つの属性(text|hint|script)が含まれています。
- text – ポイントの属性。ジャンプ ポイントに表示されるテキストが記述されます。
- hint – ポイントの属性。ポップアップ ヒントが記述されます。
- script – ポイントかテンプレートのどちらか一方の属性。ほとんどの場合、
invoke_code_completion()
の関数呼び出しが記述され、以下の言語属性が含まれています。- language='Delphi' または language='C'
- 上記以外の言語や関数呼び出しもサポートされています。詳細については、『ライブ テンプレート技術情報』(英語版)を参照してください。
- language='Delphi' または language='C'
- <code> </code> – テンプレートの要素。以下の 3 つの属性が含まれています。
- language – 取り得る値は 'C' か 'Delphi' のいずれか(必須)
- context - テンプレートがいつ使用可能かを指定します。たとえば、
typedecl - type |
やmethodbody - begin | end
など。 - delimiter='|' または '$'(コード内のジャンプ ポイントを示します)
- 内容:
<![CDATA[
ここに実際のコードを書く。
]]>
スクリプト関数呼び出し
ポイントかテンプレートそのもののどちらかに関連付けられるスクリプト要素(<script>)では、さまざまな関数呼び出しを使用できます。
以下は、各スクリプト呼び出しが含まれている既存のテンプレートの一覧です。
- language="Delphi":
- InvokeClassCompletion
- InvokeCodeCompletion(delphi\trycf.xml を参照)
- PopulateCase(|expression|)(delphi\case.xml を参照)
- DeclareVariable(|variable|)(delphi\trycf.xml を参照)
- RemoveTemplate(delphi\inlinevar.xml を参照)
- ValidateForTemplate(delphi\fors.xml を参照)
- language="C":
- invoke_code_completion(c\whiles.xml を参照)
- populate_case($expr$)(c\switch.xml を参照)