Есть ли способ указать исходные параметры по умолчанию в Visual Studio 2008, чтобы файл открывался с элементами, свернутыми по умолчанию? - PullRequest
7 голосов
/ 16 ноября 2008

Я хотел бы, чтобы VS2008, когда я открываю файл кода, по умолчанию свернул все члены классов / интерфейсов в файле (включая, что важно, любую документацию XML и комментарии).

Я не хочу использовать регионы вообще.

Я также хотел бы иметь возможность использовать аккорды ctrl + m, ctrl + l, чтобы переключать все элементы member (например, если все свернуто, я бы хотел расширить все члены, но не комментарии или документация XML).

возможно? Как?

Ответы [ 4 ]

5 голосов
/ 17 ноября 2008

Да, часть 1.

Не уверен насчет части 2.

Чтобы VS2008 автоматически открывал файлы в свернутом состоянии, вам нужно создать надстройку для запуска "Edit.CollapsetoDefinition" при открытии каждого документа.

Это не слишком сложно - сложная часть заключается в том, что вам нужно выполнить код через несколько миллисекунд после фактического открытия документа, поэтому для этого нужно использовать пул Threed.

  1. Создание проекта надстройки для VS2008.
  2. Добавьте этот код (см. Ниже) в конец метода OnConnection класса Connect.

    switch (connectMode)
    {
        case ext_ConnectMode.ext_cm_UISetup:
        case ext_ConnectMode.ext_cm_Startup:
            //Do nothing OnStartup will be called once IDE is initialised.
            break;
        case ext_ConnectMode.ext_cm_AfterStartup:
            //The addin was started post startup so we need to call its initialisation manually
            InitialiseHandlers();
            break;
    }
  1. Добавить этот метод в класс Connect

    private void InitialiseHandlers()
    {
        this._openHandler = new OnOpenHandler(_applicationObject);
    }
  1. Добавьте вызов метода InitialiseHandlers () в метод OnStartupComplete класса Connect.

    public void OnStartupComplete(ref Array custom)
    {
        InitialiseHandlers();
    }
  1. Добавить этот класс в проект.

    using System;
    using System.Collections.Generic;
    using System.Text;
    using EnvDTE80;
    using EnvDTE;
    using System.Threading;

    namespace Collapser
    {
        internal class OnOpenHandler
        {
            DTE2 _application = null;
            EnvDTE.Events events = null;
            EnvDTE.DocumentEvents docEvents = null;

            internal OnOpenHandler(DTE2 application)
            {
                _application = application;
                events = _application.Events;
                docEvents = events.get_DocumentEvents(null);
                docEvents.DocumentOpened +=new _dispDocumentEvents_DocumentOpenedEventHandler(OnOpenHandler_DocumentOpened);
            }

            void OnOpenHandler_DocumentOpened(EnvDTE.Document document)
            {
                if (_application.Debugger.CurrentMode != dbgDebugMode.dbgBreakMode)
                {
                    ThreadPool.QueueUserWorkItem(new WaitCallback(Collapse));
                }
            }

            private void Collapse(object o)
            {
                System.Threading.Thread.Sleep(150);
                _application.ExecuteCommand("Edit.CollapsetoDefinitions", "");
            }
        }
    }

А теперь все открытые файлы должны быть полностью свернуты.

0 голосов
/ 26 июня 2009

Быстрый способ свернуть все описания функций - это нажать: Кнопка контекстного меню * (рядом с правой кнопкой окна) *, L, O

Я использую это все время. Если есть реальная горячая клавиша для этого, пожалуйста, скажите мне:)

0 голосов
/ 26 июня 2009

Я пытался самостоятельно разработать код Visual Basic для макроса, заимствуя его из разных мест, и не смог заставить что-либо работать. Так что я сделал? Почему, я задал вопрос о StackOverflow, конечно! Он получил ответ, я добавил предложенный код в мой макрос EnvironmentEvents, и теперь, когда я открываю файлы CS, примерно через секунду все мои определения свернуты. :)

0 голосов
/ 18 марта 2009

Было бы намного проще использовать макросы Visual Studio, чтобы сделать то же самое. Редактирование файла макроса «EnvironmentEvents» в MyMacros и добавление обработчика для DocumentEvents.DocumentOpened with:
DTE.ExecuteCommand ( "Edit.CollapsetoDefinitions")

...