Custom Live Templates voor Delphi 2006

Custom Live Templates voor Delphi 2006

Wie al met Delphi 2006 heeft gewerkt, of demonstraties heeft gezien, zal het niet ontgaan zijn dat de code editor is uitgebreid met een feature genaamd Live Templates. In dit artikel zal ik laten zien hoe we zelf Live Templates kunnen maken voor Delphi 2006, en hoe we ze vervolgens kunnen gebruiken.

Live Templates zitten in een XML  bestand. Als je een nieuw Live Template wilt maken, kun je File | New | Other doen, en dan kiezen voor de Code Template in de Other Files category:

Het resultaat is een template1.xml bestand, met de volgende inhoud:

 
  xmlns="http://schemas.borland.com/Delphi/2005/codetemplates" 
  version="1.0.0"> 
   

De cursor staat midden tussen de twee dubbele quotes voor de name. Hier moet je de naam voor je code template invullen. Maar je kunt niet zomaar alles invullen wat je wilt, want deze naam is meteen de tekst die je straks in de IDE moet intikken om het live template te activeren. Een korte pakkende naam als “log” is hierbij handiger dan een naam als “loganothermessageinlogfile”. Als eerste voorbeeld wil ik hier “md” intikken, omdat ik een MessageDlg template wil maken.

Na de naam, zou je ook de invoke method een andere waarde kunnen geven. Deze staat default op “manual”, maar kan ook op “auto” of “none” gezet worden. Als je invoke op “auto” zet, dan is een spatie na de naam van het live template genoeg om hem te activeren. Als je invoke op “manual” laat staan, dan moet je een Tab of Ctrl+J intikken om het live template te activeren. Als je invoke op “none” zet kun je alleen Ctrl+J of Ctrl+Space gebruiken in de code editor om het live template te activeren.

Deze kennis kun je trouwens ook gebruiken om bestaande code templates aan te passen. Het for template bijvoorbeeld vind ik persoonlijk erg irritant, en ik heb zelf inmiddels invoke=”auto” op invoke=”manual” gezet.

Optioneel kun je de ruimte tussen de description en author tags invullen, met nadere informatie over wat je live template doet, wie de auteur was, etc. Het belangrijkste onderdeel is echter het stuk voor de code tags. Binnen de code tag vinden we allereerst het language attribuut. Hier kun je de taal opgeven, zoals Delphi, CSharp, C, etc. Voor ons voorbeeld kies ik hier voor “Delphi”.

De code zelf moeten we niet tussen de code tags zetten, maar binnen de binnenste [] haken van de CDATA. Voor ons “MessageDlg” voorbeeld ziet dat er inmiddels als volgt uit:

 
 
   

Het | teken dat tussen de quotes van de MessageDlg staat geeft aan waar de cursor komt nadat het template is geactiveerd. Hier kun je dus meteen het bericht intikken dat je wilt laten zien.

Live Template Points

Soms heb je meer dan één punt om in te vullen, en actieve Live Templates kunnen dan met behulp van de Tab toets van punt naar punt springen. Om dergelijke punten aan te geven moeten we vóór de code tags eerst voor ieder punt een “point” tag opnemen, met daarin als attribuut de naam van het point, en optioneel een text en hint. De inhoud van de text verschijnt als default text in het template, terwijl de hint vertoond wordt om aan te geven wat de bedoeling is.

Als we in het bestaande voorbeeld zowel de Message als de MessageType en de MessageButtons als een “point” willen aangeven (en erdoorheen willen tabben), dan kunnen we dat als volgt aangeven:

 
 
  

Let ook op de |end| die aan het eind van het live template staat, en aangeeft waar de cursor moet komen nadat het template gedeactiveerd is.

Deployment

Als je eenmaal een nieuw Live Template hebt beschreven in een XML bestand zoals we dat zojuist hebben gedaan, dan kun je dat bewaren, waarbij het default in de C:\Document and Settings\\Local Settings\Application Data\Borland\BDS\4.0\code_templates directory komt. Dat is niet een fijne plek vind ik zelf, dus kopieer ik het meestal naar de plek waar de reeds bestaande Live Templates staan, namelijk in de C:\Program Files\Borland\BDS\4.0\Objrepos\code_templates directory, waarbinnen al subdirectories voor C, CSharp, Delphi en XML te vinden zijn. Mijn voorbeeld heb ik als md.xml in de BDS\4.0\Objrepos\code_templates\delphi directory bewaard.

Demo

Als je dan uiteindelijk in de code editor de tekst “md” intikt gevolgd door een spatie, dan wordt het “md” Live Template geactiveerd en krijg je het volgende effect:

We kunnen nu de message invullen, en met Tab of Shift+Tab navigeren van de Message naar de MessageType en de MessageButtons. Na een laatste Tab of een Escape wordt het Live Template weer gedeactiveerd, en staan we aan het eind van de gegenereerde code, precies als we met het |end| attribuut aangaven.

References

Voor meer informatie en extra voorbeelden, zie de volgende weblog posts.

Commentaar van anderen:
lkm op 12-8-2010 om 7:59
The protest leaderA Line Wedding Dresswas seen getting into Wedding Dresses for Bridea verbal altercation with the mother of a young concert attendee who was crying due to the Simple Bridal dressesprotester’s taunts. Phelps-Roper sBest Wedding Dressesaid that Bieber wedding dresseshad to change his bridal dressesattitude and message in order to avoid the repercussions.
ChristianLouboutin op 16-8-2010 om 4:50
Christian Louboutin Shoes, Christian Louboutin, Christian Louboutin Shoes, Wedding Shoes, Christian Louboutin comfortable shoes are women best resolution Whoever you, Drafted this think you can expect to take pleasure in Christian Louboutin Shoes, Wedding Shoes, Christian Louboutin, Christian Louboutin Shoes. This sneakers experience women charm additionally sexy. Wedding Shoes, Discount Christian Louboutin, Christian, Louboutin, Christian Louboutin Sale This is usually fantastic Louboutin Shoes, Louboutin Sale, Cheap Christian Louboutin, Christian Louboutin Discount, Christian Louboutin Boots. As a result exist to help opt designed for style, you cherish it is usually to help opt in order for most of the eye-catching Christian Louboutin Pumps, Christian Louboutin Sandals, Christian Louboutin Flats, Christian Louboutin Evening, Christian Louboutin Wedges taht can acquire inspiration designed for his fatal stiletto investigation connected with an incident that will occurred as part of his the beginning of the twenties. Christian Louboutin Pumps, Christian Louboutin Boots, Christian Louboutin Sandals, Christian Louboutin Flats, Manolo Blahnik Shoes He visited a museum and furthermore, saw a warning that will forbade women in order to really act, Yves Saint Laurent Shoes, Yves Saint Laurent Boots, YSL Shoes, Miu Miu Shoes during bearing stilettos ready, fearing damage in order to this extensive wood floors. Herve Leger V Neck Dress, Herve Leger Bandage Dress, Herve Leger Dress, Herve Leger V Neck Dress This image stayed in their head, along with he used this idea later in his louboutin shoes.
ChristianLouboutin op 16-8-2010 om 4:50
Christian Louboutin Shoes, Christian Louboutin, Christian Louboutin Shoes, Wedding Shoes, Christian Louboutin comfortable shoes are women best resolution Whoever you, Drafted this think you can expect to take pleasure in Christian Louboutin Shoes, Wedding Shoes, Christian Louboutin, Christian Louboutin Shoes. This sneakers experience women charm additionally sexy. Wedding Shoes, Discount Christian Louboutin, Christian, Louboutin, Christian Louboutin Sale This is usually fantastic Louboutin Shoes, Louboutin Sale, Cheap Christian Louboutin, Christian Louboutin Discount, Christian Louboutin Boots. As a result exist to help opt designed for style, you cherish it is usually to help opt in order for most of the eye-catching Christian Louboutin Pumps, Christian Louboutin Sandals, Christian Louboutin Flats, Christian Louboutin Evening, Christian Louboutin Wedges taht can acquire inspiration designed for his fatal stiletto investigation connected with an incident that will occurred as part of his the beginning of the twenties. Christian Louboutin Pumps, Christian Louboutin Boots, Christian Louboutin Sandals, Christian Louboutin Flats, Manolo Blahnik Shoes He visited a museum and furthermore, saw a warning that will forbade women in order to really act, Yves Saint Laurent Shoes, Yves Saint Laurent Boots, YSL Shoes, Miu Miu Shoes during bearing stilettos ready, fearing damage in order to this extensive wood floors. Herve Leger V Neck Dress, Herve Leger Bandage Dress, Herve Leger Dress, Herve Leger V Neck Dress This image stayed in their head, along with he used this idea later in his louboutin shoes.
Geef feedback:

CAPTCHA image
Vul de bovenstaande code hieronder in
Verzend Commentaar