2013-08-08 28 views
11

Zastanawiam się, czy istnieje sposób na zrobienie #region Some Region #endregion Some Region. Jeśli nie ma sposobu, aby to zrobić, to może jest to możliwe z Resharper?Automatyczne tworzenie #region o tej samej nazwie w #endregion

Mam nadzieję, że to jasne, co staram się osiągnąć tutaj.

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> 

Druga edycja: Jest to praca, ale tylko wtedy, gdy robię wstawiania fragmentu. Z intellisense to przy użyciu niektórych innych snippet, jak sądzę.

Więc czy istnieje sposób na dodanie mojego regionu z intellisense nie z menu fragmentu kodu?

+1

w Visual Studio można to zrobić wybierając tekst -> kliknij prawym -> przestrzennym -> Region –

+0

Chyba VS wsparcie nie robi, że http: // connect.microsoft.com/VisualStudio/feedback/details/266197/match-region-endregion-name – Kurubaran

+0

Nie sądzę, że to dobry pomysł. Jeśli kiedykolwiek zmienisz nazwę regionu, prawdopodobnie zapomnisz to zrobić w części '# endregion', tworząc mylące niespójności. –

Odpowiedz

11

Jeśli próbujesz acheive jest ...

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

Można to zrobić za pomocą tzw fragmencie „SurroundsWith”. Tu jest taki fragment z mojej biblioteki ...

<?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> 

Aby użyć go w programie Visual Studio, umieścić fragment w .snippet plik i zapisać go w katalogu fragmenty, a następnie przejdź do Narzędzia => Menedżer fragmenty kodu => Dodaj. Po dodaniu możesz użyć standardowego CTRK K + X, aby uzyskać do niego dostęp.

Jedyną rzeczą, którą można uzyskać dzięki wbudowanemu fragmentowi regionu, jest elastyczność dodawania komentarza końcowego, który wskazuje koniec regionu. Możesz także jeszcze bardziej dostosować to, dodając dodatkowe rozszerzenia.

UWAGA: znak końca $ $ wskazuje miejsce, w którym kursor ma się wylądować po zakończeniu operacji.

-2

Nie musisz.

można po prostu to zrobić:

#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

Myślę, że chce, aby region końcowy określał nazwę regionu? – christiandev

+0

@christiandev Wiem, ale dlaczego? Nie robi to różnicy, chyba że chce zrobić coś takiego: '#region 1 #region 2 #endregion 1 #endregion 2' i to tylko spowoduje, że VS stanie się nieporozumieniem. –

+3

W przypadku dużej klasy, regiony są często duże i posiadające #endregion wskazują, do którego #regionu odpowiada (ponieważ początek regionu może być poza ekranem) może pomóc w rozpoznaniu bieżącej lokalizacji w swoim kodzie. Nie sądzę, że OP próbuje zagnieżdżać/nakładać regiony. Myślę, że OP próbuje zrobić coś podobnego do komentarzy, które można zostawić po klamrze zamykającej blok, np. 'if (x) {...} // end if (x)' ... ale wyobraź sobie, że ciało było duże i wieloliniowe. Nic nie pomoże kompilatorowi; tylko facet za klawiaturą. –

1

Możesz zmienić domyślny szablon ReSharper do #region do:

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

UPDATE:

Dziwne, ale jeśli zmienisz domyślne #region szablon, nic nie działa. Musisz zdefiniować własny szablon, ustawić dla niego fragment (np. Reg) i umieścić w nim kod napisany powyżej.

+0

jak korzystać z tego szablonu zastępowania? Zrobiłem to, ale nadal używając starego :( – harry180

+0

Zaktualizowana odpowiedź Spróbuj utworzyć nowy szablon – rpeshkov

+0

Edytowałem szablon do kompilacji dla regionu, ale wygląda na to, że nie działa;/ Zmieniłem mój post, zmieniając go – harry180

1

Polecam VSCommands.

Zapraszamy do obejrzenia strony „Kod Blok Koniec Tagger ulepszenia”

Edycja 25.08.2014

Będzie umieścić początku bloku kodu (nazwa metody Aso.) jako hiperłącze na jasnoszarym koniec bloku kodu. Jako hiperlink, ponieważ jest klikalny i możesz przejść do początku bloku kodu.

1

Wbudowana wersja Visual Studio jest Ctrl K + X

+0

To nie powoduje dodania tej samej nazwy w regionie docelowym, co wymagane pytanie. – Ben

4

Visual Studio 2017

Rodzaj #rTABTAB, a następnie wpisz nazwę z region.

Jest to wbudowane zachowanie.

Powiązane problemy