2009-09-25 11 views
14

Mi piacerebbe davvero che VS2008 indentasse automaticamente il contenuto di una regione. Un campione sarebbe probabilmente il migliore.Come far rientrare il contenuto della regione con C#?

Ciò che è ora fa:

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

Quello che mi piace è:

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

Come posso ottenere VS per fare questo?

MODIFICA: Per quanto vale, VS fa fare ciò in VB.NET.

+2

potrebbe valere la pena di leggere: http://stackoverflow.com/questions/1476550/c-any-standard-way-to-divide-a-class-into-regions/1476582#1476582 –

+3

commenti interessanti e l'horror in codice il blog era interessante Il commento che mi interessava di più era l'analogia con un chirurgo. Cioè il paziente è coperto eccetto dove il chirurgo lavorerà. È così che la mia mente funziona meglio, concentrati sulla questione in questione. Grazie comunque per il diverso punto di vista! –

+0

I tipici commenti del programmatore C# in questo articolo SO collegato! Anche se non ti piacciono le regioni (e lo faccio, e mi manca il VB auto-indentato che mi ha dato), è ancora una domanda valida! –

risposta

4

Fuori dalla scatola? Non puoi

+1

Eventuali addin/strumenti che farebbero questo? –

+0

Non che io sappia. Non uso le regioni! Ho appena controllato le opzioni di ReSharper, ma non ho visto nulla. –

+0

Downvoter: per favore lascia un commento. Fare altrimenti è improduttivo. –

-1

Strumenti Opzioni Text Editor C# Tabs Rientro intelligente Ident

+2

Questo non ha effettivamente indentato il contenuto di una regione (almeno per me). –

6

Questa macro dovrebbe funzionare, per la maggior parte:

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

Grazie per la macro. Questo fa ciò che è suggerito (supponendo che tu faccia effettivamente una selezione ... DOH!): Fa rientrare le linee sotto una regione. Tuttavia, non appena uso Ctl + K + D per riformattare, il lavoro è annullato! Quindi, per ora, ci sto semplicemente convivendo. –

+0

È possibile scrivere una macro che esegue il formato smart e quindi esegue le aree di rientro. Non so se potresti re-mappare Ctrl + K D alla macro (sono sicuro che potresti mappare un'altra sequenza di tasti, però). –

+0

È una buona idea ... ci proverò. –

1

Direi che l'unico modo per simulare questo è utilizzare le parentesi "{" e "}" all'interno delle regioni, delimitando il blocco di codice. Purtroppo questo funziona solo all'interno dei codici di funzioni e metodi, quindi questo non funzionerà per il tuo esempio. In alcuni casi, la delimitazione dei blocchi di codice potrebbe essere incompatibile e richiedere regolazioni in base alla logica del codice.

function Test(){ 

    #region Example 
    { 
     your code 
    } 
    #end region 

} 
3

Cambiare il colore di sfondo a un altro colore diverso lo sfondo della pagina principale (io ho usato l'argento sulla parte superiore del bianco) e darà modo che indentato sente che si sta cercando.

Options Articoli>Environment>Fonts and Colors> Display: Preprocessor Keyword e quindi modificare il item background discesa.

+1

amo questa risposta. ci sono indent e trattini :) – timothy

+1

Questo funziona bene, non è quello che è stato chiesto, ma fa il trucco di evidenziare visivamente le regioni. – MaurGi

Problemi correlati