Скрытие регионов в Visual Studio - PullRequest
24 голосов
/ 13 мая 2009

Я знаю, что проблемы с свертыванием кода - старый каштан, но я не смог найти это во всех других обсуждениях, которые я просматривал:

У нас есть команда парней из C #, некоторые из них любят регионы, а другие ненавидят их, и у нас, похоже, нет среднего уровня для работы.

Существует ли плагин или надстройка для VS, которая будет просто «скрывать» регионы? Так что те, кто хочет их видеть, будут видеть их как нормальные, но люди, которые устанавливают надстройку и просматривают файл .cs, просто отсутствуют, как будто их не существует.

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

Ответы [ 7 ]

55 голосов
/ 30 мая 2011

Я ненавижу регионы (моя команда любит их) и с удивлением обнаружил, что никто не написал расширения, чтобы сделать их лучше. Наконец-то я написал один, который называется Я ненавижу # Регионы :

Сделать # регионов меньше сосать (бесплатно):

http://visualstudiogallery.msdn.microsoft.com/0ca60d35-1e02-43b7-bf59-ac7deb9afbca

  • Автоматическое расширение областей при открытии файла
  • Опционально предотвращать свертывание областей (но все же иметь возможность свернуть другой код)
  • Дайте линиям области #region / #end меньший, более светлый фон, чтобы они были менее заметными (также опция)
  • Работает в C # и VB

Region Tool Screenshot

10 голосов
/ 13 мая 2009

Существуют горячие клавиши для работы с ними:

Ctrl+M, Ctrl+M  Collapse or expand the block you're currently in.
Ctrl+M, Ctrl+O  Collapse all blocks in the file
Ctrl+M, Ctrl+L  Expand all blocks in the file
Ctrl+M, Ctrl+P  Stop outlining mode. (Ctrl+M, Ctrl+O resumes) 

См. Проблема со складыванием кода

1 голос
/ 13 мая 2009

Лично я пишу макрос VS (Инструменты> Макрос), чтобы развернуть все области при открытии файла.

0 голосов
/ 01 апреля 2012

Я думаю, что это смешно, кто ненавидит регионы. Я так сильно люблю Регионы, что написал программу Regionizer, проект с открытым исходным кодом, расположенный по адресу http://regionizer.codeplex.com

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

Попытка найти код без этого инструмента (или регионов) - это то, что я называю спагетти-кодом).

Я искал простой способ свернуть и развернуть все регионы, и MS сказала мне, что регионы являются частью файла .suo (то же имя, что и у проекта или решения), и нет простого способа получить указатель на регионы, которые возражают против себя.

Я искал все через DTE и не нашел способа свернуть все или развернуть все регионы, я собираюсь попробовать код макроса и посмотреть, работает ли он.

Скоро опубликует обновление.

0 голосов
/ 10 февраля 2012

Для пользователей VS 2008 вы можете прекратить выделение и перезапустить его программно (с помощью макроса). Я нашел этот код на http://weblogs.asp.net/rweigelt/archive/2003/07/06/9741.aspx

Imports EnvDTE

' Expands all regions in the current document    
Sub ExpandAllRegions()        
    DTE.ExecuteCommand("Edit.StopOutlining")        
    DTE.ExecuteCommand("Edit.StartAutomaticOutlining")    
End Sub

Вышесказанное работает для C # IDE; по какой-то причине IDE VB не удаляет выделение с регионами при явном указании. Надеюсь, это поможет!

- добавленное редактирование:

Вот тот, который работает для Visual Basic .NET в Visual Studio 2008. Это немного грубо, но идея состоит в том, чтобы прокомментировать все маркеры #region, расширяя схему. Следующий шаг раскомментирует их, возвращая их в исходное состояние (не совсем верно ... может иметь мошенническое использование #region в других частях кода). Этот код также не возвращает диалог «Найти и заменить» в исходное состояние. С этими предостережениями это макромодуль, который выполнит эту работу:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module MacroMod01
    Sub ExpandAllRegions()
    ' comment out all #region occurances
        DTE.ExecuteCommand("Edit.Replace")
        DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
        DTE.Find.FindWhat = "#region"
        DTE.Find.ReplaceWith = "'#region"
        DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
        DTE.Find.MatchCase = False
        DTE.Find.MatchWholeWord = False
        DTE.Find.MatchInHiddenText = True
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral
        DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
        DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
        DTE.Find.Execute()

    ' uncomment all #region occurances
        DTE.ExecuteCommand("Edit.Replace")
        DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
        DTE.Find.FindWhat = "'#region"
        DTE.Find.ReplaceWith = "#region"
        DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
        DTE.Find.MatchCase = False
        DTE.Find.MatchWholeWord = False
        DTE.Find.MatchInHiddenText = True
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral
        DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
        DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
        DTE.Find.Execute()

    'close the find 'n replace dialog
        DTE.Windows.Item("{CF2DDC32-8CAD-11D2-9302-005345000000}").Close()  

    End Sub

End Module

Может быть несколько других способов сделать это для VB в VS2008. Я выложу, как найду их.

0 голосов
/ 13 мая 2009

Это немного ... неряшливо и может иметь побочные эффекты, но:

Инструменты -> Параметры -> Среда -> Шрифты и цвета -> Ключевое слово препроцессора Измените цвет переднего плана и фона на белый (или любой другой фон по умолчанию).

Вы не увидите другие ключевые слова препроцессора.

0 голосов
/ 13 мая 2009

Честно говоря, я не знаю ни одного такого плагина. Однако, с VSTO , очень легко написать его самостоятельно.

...