Создайте надстройку VS2010, чтобы свернуть все методы моего активного документа - PullRequest
2 голосов
/ 16 ноября 2011

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

TextSelection selection = (TextSelection)_applicationObject.ActiveDocument.Selection;
var editPoint = selection.ActivePoint.CreateEditPoint();
editPoint.MoveToLineAndOffset(1, 1);

while (!editPoint.AtEndOfDocument)
{
    editPoint.StartOfLine();
    var line = editPoint.GetText(editPoint.LineLength).TrimStart();

    if (line.StartsWith("public"))
    {
        selection.MoveToLineAndOffset(editPoint.Line, 1);
        _applicationObject.ExecuteCommand("Edit.ToggleOutliningExpansion");
    }

    // go to the next line
}

Кто-нибудь может мне сказать, в порядке ли я или есть более простой способ?

1 Ответ

0 голосов
/ 17 ноября 2011

Может быть, я не очень хорошо задал вопрос.Моей настоящей целью было свернуть весь код: свойства, методы, комментарии с помощью ///, using;но не регионы.
Вот одно из решений:

// reduce everything like Ctrl+M+O
_applicationObject.ExecuteCommand("Edit.CollapsetoDefinitions");

// save the cursor position
TextSelection selection = (TextSelection)_applicationObject.ActiveDocument.Selection;
var selectedLine = selection.ActivePoint.Line;
var selectedColumn = selection.ActivePoint.DisplayColumn;

// open the regions
selection.StartOfDocument();
while (selection.FindText("#region", (int)vsFindOptions.vsFindOptionsMatchInHiddenText))
{
    // do nothing since FindText automatically expands any found #region
}

// put back the cursor at its original position
selection.MoveToDisplayColumn(selectedLine, selectedColumn);

Я надеюсь, что это может помочь

...