2010-02-03 12 views
5

En VS 2008, hay fragmentos de código XML que parecen ser bastante impresionantes :) Sin embargo, parece que los fragmentos que creamos no sangran correctamente. Por ejemplo si tenemos el siguiente código:Indentación de fragmento de código de VS 2008

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

Nos conseguir algo como:

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

¿Hay alguna manera de hacerlo de modo que todas las líneas mantienen el mismo sangrado?

+4

'Ctrl-K, D' hará el truco =) –

+0

@Rubens: nadie tiene una idea mejor, así que hazlo responder y te daré crédito por la respuesta correcta. – Daniel

+0

mantengamos esto por unos días más; puedes crear una recompensa en un par de días y, tal vez, alguien más se presente con una idea. –

Respuesta

0

pegue la primera línea sin sangría, luego seleccione el bloque y la pestaña hasta que obtenga todo el bloque a la sangría que desea. AFAIK lo que ves es el comportamiento estándar y sucede porque la ubicación desde la que pegas no está sangrada tanto como quisieras.

0

Mi unit test snippet parece estar sangrando correctamente. Puede deberse al hecho de que el código está envuelto en un bloque CDATA. VisualStudio también tiende a formatear automáticamente el bloque tan pronto como se agrega al código. ¿Su fragmento tiene tantas llaves abiertas como las de cierre? Si los dos coinciden, y el fragmento se inserta en una ubicación válida/compilable, debe formatear automáticamente.

0

Trate swithing Insert spaces-Keep tabs en Tools>Options>TextEditor>C#>Tabs, que trabajó para mí.

0

Parece que Visual Studio realiza un auto-formato en las líneas insertadas. Mi fragmento no estaba correctamente formateado (es decir, sangrado), ni por inserción de fragmentos ni por formato manual (Ctrl-K-F). Contenía "delegate {...}", tal vez el formateador no puede manejar esto.

4

Esto generalmente indica que el código que está insertando es semánticamente incorrecto: en el momento de la inserción, no cuando ingresó los valores de los fragmentos.

Para evitar esto, puede usar los valores predeterminados en su fragmento para hacer que el recorte sea sintactilmente correcto. P.ej. para declarar una lista de argumentos para una función:

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

El <Default> elemento proporciona la declaración. Por lo que usar esto en un fragmento de declarar una Funciton dará lugar a esto:

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

Y a continuación, le permite reemplazar params object[] args con cualquier argumento declaraciones que necesita.

Cuestiones relacionadas