21 ноября 2011 г.

Code Templates

В 7-ой версии Delphi настраивать шаблоны очень просто: Tools -> Editor Options….
 На закладке Source Options жмем кнопку Edit Code Templates… и открывается окно редактора шаблонов,
где доступно изменение существующих, создание новых, импорт и экспорт шаблонов.

Разберемся, как сделать свой шаблон в Delphi 2007.

Если почитать справку (иногда полезно :) ), то вот что можно выяснить:
To add a template:
  1. Choose Tools -> Options -> Editor Options.
  2. Click the Source Options tab and then the Edit Code Templates button.
  3. In the Templates section, click Add.
  4. Type a name for the template after Shortcut name, enter a brief description of the new template, and click OK.
  5. Add the template code to the Code text box.
  6. Click OK.
но если пройти на указанную закладку диалога настройки, то никакой кнопки найти там не удастся.
Исследование главного меню подсказывает, что нужный нам список можно найти тут: View -> Templates.
Это окно не так функционально, как в предыдущих версиях Delphi, но здесь можно добавлять новые шаблоны и редактировать имеющиеся. То же самое можно сделать и прямым доступом к файлам, файлы шаблонов лежат в папке $(BDS)ObjRepos\Code_Templates.

Например, стандартный шаблон tryf я исправил таким образом:
<?xml version="1.0" encoding="utf-8" ?>

<codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
    version="1.0.0">
 <template name="tryf" surround="true" invoke="manual">
  <description>
   try finally
  </description>
  <author>
   Embarcadero
  </author>
  <code language="Delphi" context="methodbody" delimiter="|"><![CDATA[try

finally
|selected||*||end|
end;
]]>
  </code>
 </template>
</codetemplate>
Теперь курсор после вызова становится между finally и end. А вот пример нового шаблона mess, я использую его для вывода отладочных сообщений (вместо ShowMessage):
<?xml version="1.0" encoding="utf-8" ?>
 
<codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
    version="1.0.0">
 <template name="mess" surround="true" invoke="manual">
  <point name="message">
   <hint>
    Сообщение для показа
   </hint>
   <text>
    сообщение
   </text>
  </point>
  <description>
   MessageBox
  </description>
  <author>
   mínich
  </author>
  <code language="Delphi" context="methodbody" delimiter="|">
    <![CDATA[MessageBox(0, PChar(|selected||message||end|), nil, MB_OK);]]>
  </code>
 </template>
</codetemplate>
В Delphi XE всё то же самое, что и в более старой Delphi 2007, разве что справка не содержит досадной неточности.
При редактировании файлов шаблонов не через среду, а сторонними редакторами, обратите внимание на кодировку: если шаблон содержит кириллицу, то сохраняйте файл в кодировке UTF-8, а не ANSI.