2010-02-03 8 views
5

In VS 2008 gibt es XML-Code-Schnipsel, die ziemlich toll zu sein scheinen :) Es scheint jedoch, dass die von uns erstellten Snippets nicht richtig einrücken. Zum Beispiel, wenn wir den folgenden Code haben:VS 2008 Code Snippet Einrückung

{ 
    ... 
    { 
    ... 
     { 
      InsertSnippet here. 

Wir bekommen so etwas wie:

{ 
    ... 
    { 
    ... 
     { 
      FirstLineofSnippet 
SecondLineOfSnippet 
ThirdLineOfSnippet 

Gibt es eine Möglichkeit, um es zu machen, dass alle Linien die gleiche Vertiefung halten?

+4

'Ctrl-K, D' wird den Trick machen =) –

+0

@Rubens - niemand hat eine bessere Idee, also machen Sie es zu beantworten und ich gebe Ihnen Kredit für die richtige Antwort. – Daniel

+0

lassen Sie uns das für ein paar Tage halten; Sie können ein Kopfgeld in ein paar Tagen erstellen, und vielleicht erscheint jemand anderes mit einer Idee. –

Antwort

0

Fügen Sie die erste Zeile ohne Einrückung ein, wählen Sie dann den Block und die Registerkarte aus, bis der gesamte Block den gewünschten Einzug erreicht. AFAIK, was Sie sehen, ist das Standardverhalten und es passiert, weil der Ort, von dem Sie einfügen, nicht eingerückt wurde, so weit Sie wollten.

0

Mein unit test snippet scheint korrekt eingerückt zu sein. Dies liegt möglicherweise daran, dass der Code in einen CDATA-Block eingebunden ist. VisualStudio neigt auch dazu, den Block automatisch zu formatieren, sobald er dem Code hinzugefügt wird. Hat Ihr Snippet so viele offene und abschließende Klammern? Wenn die beiden übereinstimmen und das Snippet an einer gültigen/kompilierbaren Position eingefügt wird, sollte es automatisch formatiert werden.

0

Versuchen Insert spaces-Keep tabs in Tools>Options>TextEditor>C#>Tabs swithing, es funktionierte für mich.

0

Es scheint, dass Visual Studio ein automatisches Format für die eingefügten Zeilen erstellt. Mein Auszug wurde nicht korrekt formatiert (d. H. Eingerückt), weder durch Schnipseleinfügung noch durch manuelles Format (Strg-K-F). Es enthielt "Delegate {...}", vielleicht kann der Formatierer das nicht handhaben.

4

Dies weist normalerweise darauf hin, dass der Code, den Sie einfügen, semantisch nicht korrekt ist - zum Zeitpunkt der Einfügung, nicht beim Ausfüllen der Snippet-Werte.

Um dies zu verhindern, können Sie Standardwerte in Ihrem Snippet verwenden, um die Snipped-Syntax korrekt zu machen. Z.B.

<Literal Editable="true"> 
    <ID>methodArguments</ID> 
    <ToolTip>methodArguments</ToolTip> 
    <Default>params object[] args</Default> 
    <Function> 
    </Function> 
</Literal> 

Das <Default> Element liefert die Erklärung: eine Argumentliste für eine Funktion zu erklären. Also mit diesem in einem Snippet einen funciton erklärt wird dazu führen:

public void FunctionName(params object[] args) { } 

Und es läßt dann ersetzen Sie params object[] args mit dem, was Argumente Erklärungen die Sie benötigen.