2009-07-08 7 views
4

Les extraits de code C# que je crée ne peuvent être terminés qu'en appuyant sur Entrée, alors que les fragments intégrés tels que 'struct' peuvent être complétés en tabulant les champs personnalisés.Ecrivez des extraits C# qui se terminent en tapant TAB

Ce n'est pas un gros problème mais c'est embêtant. J'ai essayé de copier le code XML entier pour l'extrait de structure dans le mien, en remplaçant seulement le nom du raccourci. Même ainsi, j'ai dû appuyer sur Entrée pour terminer l'insertion.

Des idées pourquoi tout cela est-il ainsi? Quelqu'un d'autre peut-il reproduire ce comportement?

Voici l'extrait que je suis en train d'écrire:

<?xml version="1.0" encoding="utf-8" ?> 
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
    <Title>cmd</Title> 
    <Shortcut>cmd</Shortcut> 
    <Description>Code snippet for ICommand</Description> 
    <Author>Andreas Larsen</Author> 
    <SnippetTypes> 
    <SnippetType>Expansion</SnippetType> 
    </SnippetTypes> 
</Header> 
<Snippet> 
    <Declarations> 
    <Literal> 
     <ID>name</ID> 
     <ToolTip>Command name</ToolTip> 
     <Default>My</Default> 
    </Literal> 
    </Declarations> 
    <Code Language="csharp"><![CDATA[public ICommand $name$Command 
    { 
    get 
    { 
    if (_$name$Command == null) 
     _$name$Command = new DelegateCommand($name$); 
    return _$name$Command; 
    } 
} 
$end$]]> 
    </Code> 
</Snippet> 
</CodeSnippet> 
</CodeSnippets> 

Edit: Comme l'a souligné Carl G, le comportement Visual Studio est de mettre fin par ENTRER ou ESC uniquement. La fin de TAB est un comportement ReSharper Live Template.

+2

Vous trouverez probablement plus facile d'utiliser un outil tel que http://snipper.codeplex.com/, http://snippetdesigner.codeplex.com/, http://snippeteditor.codeplex.com/ –

+0

. le dernier, c'est VB –

Répondre

1

Je l'ai compris maintenant. J'utilise l'add-in ReSharper et il semble avoir une fonction Live Template qui remplace les snippets de Visual Studio. ReSharper a ajouté la fonctionnalité que TAB pourrait être utilisée pour compléter un extrait sur les extraits VS natifs ainsi que sur ses modèles en direct.

Lorsque j'ai converti mes extraits personnalisés en modèles dynamiques, j'ai obtenu le comportement voulu. Je peux maintenant TAB dans chaque champ et les changer comme je vais, et terminer l'extrait en tapant passé l'élément final.

Pour les personnes intéressées, les modèles dynamiques offrent une fonctionnalité d'extraits enrichis beaucoup plus riche en fonctionnalités. Par exemple, vous pouvez exécuter des macros simples sur les champs, de sorte que par exemple les champs de support peuvent avoir une première lettre minuscule (si c'est votre convention de nommage) lors de la réutilisation du nom d'une propriété. Très recommandé si vous pouvez vous le permettre!

+1

Il serait utile que ceux qui sont en retard vous précisent dans votre question ou quelque part que les extraits de Visual Studio ne se terminent PAS par un onglet. Ce sont seulement les snippets ReSharper qui se terminent via l'onglet. Donc, il n'y a pas de réponse à votre question, sauf si vous avez inclus ou un répondant a deviné que vous aviez également installé ReSharper. –

+1

Merci, j'ai ajouté une précision à la question. – angularsen

3

Je ne peux obtenir l'extrait de structure à valider qu'en appuyant sur Entrée/Échap mais pas sur un onglet. Je ne pense pas que ce que vous voulez réaliser est possible (ou raisonnable d'ailleurs). La convention avec des extraits à compléter est d'appuyer sur Entrée ou d'échapper this is the documented behaviour.

Faire quoi que ce soit d'autre brise la convention sûrement? Vous pouvez voir pourquoi la convention est utile lorsque vous utilisez des extraits paramétrés tels que pour. La tabulation vous permet de modifier les valeurs plusieurs fois avant que vous ne soyez satisfait de votre décision et d'appuyer sur Entrée.

+0

Je suppose que vous avez raison, mais si j'ai plusieurs champs que je veux passer en revue et il est très pratique de continuer à tabuler pour compléter l'extrait. D'autant plus que les snippets intégrés supportent cela aussi c'est devenu un comportement naturel pour moi. – angularsen

+2

Comment l'extrait peut-il être renseigné sur un onglet? Tous ceux que j'ai utilisés vous permettent de faire un tabulation entre les champs et quand vous arrivez au dernier champ et appuyez de nouveau sur Tab, cela revient simplement au premier champ. J'ai seulement vu entrer ou échapper terminer l'extrait. –

Questions connexes