2013-08-08 11 views
11

Mi chiedo se c'è un modo per rendere #region Some Region #endregion Some Region. Se non c'è modo di farlo, forse è possibile con Resharper?Crea automaticamente #regione con lo stesso nome in #endregion

Spero sia chiaro cosa sto cercando di ottenere qui.

Edit:

<?xml version="1.0" encoding="utf-8" ?> 
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
<CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>#region</Title> 
     <Shortcut>#region</Shortcut> 
     <Description>Code snippet for #region</Description> 
     <Author>Microsoft Corporation</Author> 
     <SnippetTypes> 
      <SnippetType>Expansion</SnippetType> 
      <SnippetType>SurroundsWith</SnippetType> 
     </SnippetTypes> 
    </Header> 
    <Snippet> 
     <Declarations> 
      <Literal> 
       <ID>name</ID> 
       <ToolTip>Region name</ToolTip> 
       <Default>MyRegion</Default> 
      </Literal> 
     </Declarations> 
     <Code Language="csharp"><![CDATA[#region $name$ 
    $selected$ $end$ 
#endregion $name$]]> 
     </Code> 
    </Snippet> 
</CodeSnippet> 
</CodeSnippets> 

Seconda modifica: È un lavoro, ma solo quando faccio frammento di inserimento. Da intellisense, usando alcuni altri frammenti.

Quindi c'è un modo per aggiungere la mia regione da intellisense non dal menu di inserimento frammento?

+1

in Visual Studio è possibile farlo selezionando il testo -> Tasto destro del mouse -> surround -> Regione –

+0

Credo VS sostegno doesnt che, http: // connect.microsoft.com/VisualStudio/feedback/details/266197/match-region-endregion-name – Kurubaran

+0

Non penso che sia una buona idea. Se cambi mai il nome della regione, probabilmente ti dimenticheresti di farlo nella parte '# endregion', creando incoerenze confuse. –

risposta

11

Se ciò che si sta cercando di acheive è ...

#region MyRegion 
//...lots of code... 
#endregion // end of MyRegion 

Si può fare questo con un cosiddetto frammento 'SurroundsWith'. Ecco un frammento di tale dalla mia biblioteca ...

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippet Format="1.0.0"  
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <Header> 
    <Title>Enregions a block of code</Title> 
    <Author>GJV</Author> 
    <Shortcut>enr</Shortcut> 
    <Description>Surrounds a block of code with region directives</Description> 
    <SnippetTypes> 
     <SnippetType>SurroundsWith</SnippetType> 
     <SnippetType>Expansion</SnippetType> 
    </SnippetTypes> 
    </Header> 
    <Snippet> 
    <Declarations> 
     <Literal Editable="True"> 
     <ID>RegionName</ID> 
     <ToolTip>Region Name</ToolTip> 
     <Default>MyRegion</Default> 
     </Literal> 
    </Declarations> 
    <Code Language="CSharp"> 
    <![CDATA[ 
    #region $RegionName$ 
    $end$   
    $selected$  
    #endregion // end of $RegionName$ 
    ]]>   
    </Code> 
    </Snippet> 
</CodeSnippet> 

di utilizzarlo in Visual Studio, mettere il frammento in un file .snippet e salvarlo nella directory frammenti, poi vai a Strumenti => Code Snippets Direttore => Aggiungi. Una volta aggiunto, puoi utilizzare lo standard CTRK K + X per accedervi.

L'unica cosa che ti dà lo snippet incorporato per la regione è la flessibilità di aggiungere il commento finale per indicare la fine della regione. Puoi inoltre personalizzare ulteriormente aggiungendo altre espansioni.

NOTA: i contrassegni $ end di $ sentinella dove si desidera che il cursore si fermi quando l'operazione è completa.

-2

Non è necessario.

Si può solo fare questo:

#region Some Region 
//I 
//am 
//assuming 
//a 
//lot 
//of 
//code 
//you 
//want 
//to 
//hide 
//goes 
//here 
//here 
#endregion 
//note that it doesn't say Some Region in the endregion 
+0

Penso che voglia che la regione finale specifichi il nome della regione? – christiandev

+0

@christiandev Lo so, ma perché? Non fa differenza, a meno che non voglia fare qualcosa del genere: '#region 1 #region 2 #endregion 1 #endregion 2' e questo causerà solo a VS un carico di confusione. –

+3

Con una classe grande, le regioni sono spesso grandi e con la #endregion indicano quale #regione corrisponde (dato che l'inizio della regione può essere fuori campo) può aiutare a distinguere la posizione corrente nel codice. Non penso che l'OP stia tentando di annidare/sovrapporre le regioni. Penso che l'OP sta cercando di fare qualcosa di simile ai commenti che si potrebbero lasciare dopo la parentesi di chiusura di un blocco, ad es. 'if (x) {...} // end if (x)' ... ma immagina che il corpo sia grande e multilinea. Non è niente per aiutare il compilatore; solo il ragazzo dietro la tastiera. –

1

È possibile modificare modello predefinito ReSharper per #region a:

#region $name$ 
    $END$ 
#endregion $name$ 

Aggiornamento:

Strano, ma se si cambia impostazione predefinita #region template, niente funziona. È necessario definire il proprio modello, impostare uno snippet per esso (cioè reg) e inserire il codice scritto sopra in esso.

+0

come utilizzare questo modello di sostituzione? Ho fatto questo, ma ancora usando quello vecchio :( – harry180

+0

Risposta aggiornata. Prova a creare un nuovo modello. – rpeshkov

+0

Ho modificato il modello creato per regione ma sembra non funzionare;/ Ho modificato il mio post con come lo cambio – harry180

1

Raccomando VSCommands.

Dai un'occhiata alla parte "Codice Fine blocco Tagger Miglioramenti"

Modifica 25.08.2014

Si metterà l'inizio del blocco di codice (nome del metodo aso.) come collegamento ipertestuale grigio chiaro a la fine del blocco di codice. Come collegamento ipertestuale perché è cliccabile e puoi navigare all'inizio del blocco di codice.

1

La versione built-in di Visual Studio è Ctrl K + X

+0

Questo non aggiunge lo stesso nome in endregion, come la domanda richiesta. – Ben

4

Visual Studio 2017

Tipo #rTABTAB, quindi digitare il nome del regione.

Questo comportamento è incorporato.

Problemi correlati