创建VS2010插件来折叠活动文档的每个方法

本文关键字:方法 文档 活动 VS2010 插件 折叠 创建 | 更新日期: 2023-09-27 18:14:43

我正在寻找使用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
}

有没有人能告诉我,我走的是好路,还是有更简单的路?

创建VS2010插件来折叠活动文档的每个方法

也许我的问题问得不太好。我真正的目标是折叠所有的代码:属性,方法,注释with///, 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);

我希望这对你有帮助