2009-09-25 11 views
14

Naprawdę chciałbym, aby VS2008 automatycznie wciskał zawartość regionu. Próbka prawdopodobnie byłaby najlepsza.Jak wcięcia zawartości regionu za pomocą C#?

Co robi teraz:

#region [ Fields ] 
public int Count; 
public int Total; 
#endregion 

Co chciałbym to:

#region [ Fields ] 
    public int Count; 
    public int Total; 
#endregion 

Jak mogę uzyskać VS to zrobić?

EDYTOWANIE: EDYTOWANIE: Co jest warte, VS ma zrobić to w VB.NET.

+2

może być warta przeczytania: http://stackoverflow.com/questions/1476550/c-any-standard-way-to-divide--class-into-regions/1476582#1476582 –

+3

Interesujące komentarze i horror kodujący blog był interesujący. Najbardziej interesującym komentarzem była analogia z chirurgiem. To znaczy. pacjent jest przykryty, chyba że chirurg będzie pracował. W ten sposób mój umysł działa najlepiej, koncentrując się na tej kwestii. Dzięki za inny punkt widzenia! –

+0

Typowe komentarze programisty C# w tym połączonym artykule SO! Nawet jeśli nie lubisz regionów (i robię to, i tęsknię za automatycznym wciskaniem VB dał mi), to wciąż jest poprawne pytanie! –

Odpowiedz

4

Po wyjęciu z pudełka? Nie możesz.

+1

Dowolny dodatek/narzędzia, które by to zrobiły? –

+0

Nie jestem tego świadomy. Nie używam regionów! Właśnie sprawdziłem opcje ReSharper, ale nic nie widziałem. –

+0

Downvoter: zostaw komentarz. Inaczej jest bezproduktywne. –

-1

Narzędzia Opcje Text Editor C# Tabs wcięcie Inteligentne Ozn

+2

To nie spowodowało wcięcia zawartości regionu (przynajmniej dla mnie). –

6

To makro powinny działać, w przeważającej części:

Public Sub IndentRegions() 
    'Assume that the document has been smart formatted 
    Dim TS As TextSelection = DTE.ActiveDocument.Selection 
    TS.SelectAll() 
    Dim lines As String() = TS.Text.Split(vbNewLine) 

    Dim level As Integer = 0 

    TS.StartOfDocument() 

    While Not TS.ActivePoint.AtEndOfDocument 

     If lines(TS.ActivePoint.Line - 1).Trim().StartsWith("#endregion") Then 
      level = level - 1 
     End If 

     For i = 1 To level 
      TS.Indent() 
     Next 

     If lines(TS.ActivePoint.Line - 1).Trim().StartsWith("#region") Then 
      level = level + 1 
     End If 

     TS.LineDown() 
     TS.StartOfLine() 
    End While 
End Sub 
+1

Dzięki za makro. Robi się to, co jest sugerowane (zakładając, że dokonujesz wyboru ... DOH!): Wcina linie w obszarze. Jednak, gdy tylko użyję Ctl + K + D do ponownego sformatowania, praca zostanie przerwana! Więc, na razie żyję z tym. –

+0

Można napisać makro wykonujące format inteligentny, a następnie uruchamiające wcięte regiony. Nie wiem, czy można ponownie mapować Ctrl + K D do makra (jestem pewien, że można mapować inną sekwencję klawiszy). –

+0

To dobry pomysł ... Spróbuję tego. –

1

Powiedziałbym, że jedynym sposobem, aby symulować to używać nawiasów klamrowych "{" i "}" wewnątrz regionów, ograniczając blok kodu. Niestety działa to tylko w kodach funkcji i metod, dlatego to nie zadziała dla twojego przykładu. W niektórych przypadkach ograniczanie bloków kodu może być niezgodne i wymagać korekty zgodnie z logiką kodu.

function Test(){ 

    #region Example 
    { 
     your code 
    } 
    #end region 

} 
3

zmienić kolor tła do innego koloru innego niż tło strony głównej (użyłam srebra na górze biały) i to daje to, że wcięte czują, że szukasz.

Options>Environment>Fonts and Colors> Pokaż przedmioty: Preprocessor Keyword a następnie zmienić item background rozwijanej.

+1

Uwielbiam tę odpowiedź. są tam wcięcia i wcięcia :) – timothy

+1

To działa dobrze, a nie to, o co go proszono, ale robi sztuczkę wizualnie podkreślając regiony. – MaurGi

Powiązane problemy