2010-02-03 5 views
5

В VS 2008 есть фрагменты кода XML, которые кажутся довольно устрашающими :) Однако кажется, что созданные нами фрагменты не отступают должным образом. Например, если мы имеем следующий код:VS 2008 Код фрагмента Отступ

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

Мы получаем что-то вроде:

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

Есть ли способ сделать это так, чтобы все линии держать же отступ?

+4

'Ctrl-K, D' сделает трюк =) –

+0

@Rubens - никто не имеет никакой идеи, поэтому дайте ему ответ, и я дам вам кредит за правильный ответ. – Daniel

+0

держим это еще несколько дней; вы можете создать щедрость через пару дней, и, может быть, кто-то еще появится с идеей. –

ответ

0

вставьте первую строку без отступов, затем выберите блок и вкладку, пока не получите весь блок в желаемом отступе. AFAIK, что вы видите, является стандартным поведением, и это происходит потому, что место, в которое вы вставляете, не было отступом, насколько вам хотелось.

0

У меня unit test snippet кажется отступом правильно. Это может быть связано с тем, что код завернут в блок CDATA. VisualStudio также имеет тенденцию автоматически форматировать блок, как только он будет добавлен в код. Есть ли у вашего фрагмента столько открытых брекетов, как закрытие? Если они совпадают, и фрагмент вставлен в допустимое/компилируемое местоположение, он должен автоматически форматироваться.

0

Попробуйте swithing от Insert spaces до Keep tabs в Tools>Options>TextEditor>C#>Tabs, он работал на меня.

0

Кажется, что Visual Studio делает автоматический формат на вставленных строках. Мой фрагмент не был правильно отформатирован (например, отступом), ни путем вставки фрагмента, ни с помощью ручного формата (Ctrl-K-F). В нем содержится «delegate {...}», возможно, форматировщик не может справиться с этим.

4

Это обычно указывает, что введенный вами код семантически некорректен - во время ввода, а не когда вы заполняете значения фрагмента.

Чтобы предотвратить это, вы можете использовать значения по умолчанию в своем фрагменте, чтобы сделать отлаженный синтаксивальный правильный. Например. объявить список аргументов для функции:

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

<Default> Элемент содержит объявление. Таким образом, используя это в сниппета об объявлении Funciton приведет к следующему:

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

И затем позволяет заменить params object[] args с каким-либо аргумент деклараций вам нужно.