Visual Studio 2005: Snippety pre IntelliSense

Publikoval Michal Kočí dňa 17.2.2005 o 22:39 v kategórii .Net

V novom, pomaly sa blížiacom, Visual Studiu 2005 je zase o trochu vylepšený IntelliSense. Okrem toho, že si môžete nastaviť, aby začal s ponukou hneď po začatí písania v editore, má aj dve novinky, ktoré sa mi ozaj pozdávajú:

  • Expansions
  • Surround With...

Tieto sú prístupné ako z hlavného menu, tak aj z kontextového v editore kódu a samozrejme sa dajú vyvolať aj klávesovou skratkou. Tým, že sa jedná o nové a nie až tak moc popisované veci, trochu mi činí problém nájsť slovenské ekvivalenty, takže sa obmedzím na anglické originály.

Jedná sa o dve veľmi podobné veci. Expansion je ako keby nejaká šablóna často používaného textu (kódu, komentára, ...), ktorý zvyknete často písať len v jemne modifikovanej podobe. Táto modifikovaná modoba sa líši iba niečím, čo by som si dovolil nazvať parametrami. Napríklad keď chcete vytvoriť triedu, vždy napíšete

class NejakaTrieda{}

Keď idete vytvoriť inú triedu, napíšete

class NejakaInaTrieda{}

Kostra je vždy rovnaká, mení sa len názov triedy. No a vo VS2005 máte množstvo takýchto predpripravených Expansions, ktoré môžete jednoducho vyvolať a pomeniť len parametre (v mnou uvedenom ozaj jednoduchom príklade by to bol práve ten spomínaný názov triedy). VS2005 prináša niečo okolo 45 rôznych, častou používaných snippetov, ktoré pokrývajú také oblasti ako napríklad triedu, namespace, rôzne cykly, try/catch/finally bloky apod.  Namiesto snippet (preklad: úryvok, útržok) sa mi zdá, že by to lepšie vystihol názov šablóna, preto v ďaľšom texte budem používať práve tento názov.

Voľba Surround With je velice podobná, len s tým rozdielom, že šablóna vie, kde v nej je to správne miesto, ktoré má byť šablónou obklopené. Napríklad píšete kód, zopár metód

SomeMethod();
SomeOtherMethod();

Vtedy si uvedomíte, že ich chcete mať v try/catch bloku. Jednoducho metódy označíte (myšou, klávesnicou), vyberiete Surround With a necháte si ich obaliť try/catch blokom, výsledok bude vyzerať tak ako si predstavujete:

try
{
    SomeMethod();
    SomeOtherMethod();
}
catch(System.Exception)
{
    throw;
}

Teraz sa trochu vrátim k spomínaným parametrom. Každá šablóna vie, ake parametre požaduje, ake majú byť ich predvolené hodnoty aj aké majú mať tooltip-y. Funguje to tak, že v momente keď vyvoláte šablónu, nastaví sa Vám kurzor na prvý parameter. Tabulátor potom cyklíte po parametroch a enterom potvrdíte, že ste dokončili ich editáciu.

Ako som spomínal, šablón máte k dispozícii približne 45, ale nebolo by dobré, keby ste si nemohli vytvoriť aj nejaké vlastné šablóny. Samozrejme že môžete. Šablóny pre C# nájdete v adresári {visuualstudio2005}\VC#\Expansions\1033. Jedná sa o XML súbory, ktoré sú už na prvý pohľad jednoduché, len škoda, že som nenašiel ich popis. Predpokladám, že vo finálnej verzii Studia bude tento v nápovede, dovtedy Vám nezostáva nič iné, len sa nechať inšpirovať stávajúcimi súbormi.

Ako príklad som zobral prvú šablónu, ktorá mi prišle pod ruku - šablónu pre for cyklus:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippet Format="1.0.0">
    <Header>
        <Title>for-iteration by index</Title>
        <Shortcut>for</Shortcut>
        <Description>Expansion snippet for 'for' loop</Description>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>
        <Declarations>
            <Literal>
                <ID>index</ID>
                <Default>i</Default>
                <ToolTip>Index</ToolTip>
            </Literal>
            <Literal>
                <ID>max</ID>
                <Default>length</Default>
                <ToolTip>Max Length</ToolTip>
            </Literal>
        </Declarations>
        <Code Language="csharp" Format="CData">
            <![CDATA[for (int $index$ = 0; $index$ < $max$; $index$++)
                {
                    $selected$ $end$
            }]]>
        </Code>
    </Snippet>
</CodeSnippet>

Element Header obsahuje okrem názvu (Title), popisu (Description), textu ktorý šablónu vyvoláva (Shortcut) aj informáciu o tom, či sa šablóna dá použiť ako Expansion alebo ako Surround With (SnippetTypes).

Samotný snippet obsahuje deklaráciu parametrov (Declaration) a samotný kód (Code). Parameter (Literal) obsahuje identifikátor (ID), tooltip (ToolTip) a predvolenú hodnotu (Default). Samotný kód sa na parametre odvoláva ich identifikátorom uzatvoreným do znakov dolára. Okrem parametrov sa v kóde dajú použiť aj špeciálne parametre: kam sa má vložiť text pri použití Surround With ($selected$) a kde sa má nachádzať kurzor po ukončení editácie parametrov ($end$).

Predpokladám, že pri hlbšom zasurfovaní sa isto dá nájsť niečo obdobné (nejaký AddIn) pre stávajúce Visual Studio, ale je príjemné, že v tom budúcom to bude vstavané. Potešilo ma aj to, že sa to jednoducho konfiguruje cez xml súbory a teda nič nebude brániť tomu, vytvoriť si pre často sa opakujúci kód vlastné snippety.

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.