为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Visual Studio SDK,我将如何折叠一段代码?

使用 Visual Studio SDK,我将如何折叠一段代码?

C#
青春有我 2021-10-24 14:13:09
我可以通过 TextSelection 选择文本。我可以突出显示特定部分。我将如何折叠所述部分,在 Visual Studio SDK 的文档中找不到有关折叠或隐藏部分的任何内容。编辑 1 我要折叠的代码使用 c++ 语法编辑 2 我正在尝试编写一个允许我折叠代码的扩展,但是我似乎无法从 Visual Studio SDK 文档中找到有关如何调用此类选项的参考。
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

IOutliningManager可能正是您要找的。


它提供了允许您获取所有可折叠区域、折叠区域的方法,以及允许您展开或折叠给定区域的方法。


例如,您可能会发现这很有用。尽管 OP 的代码存在未通过链接线程解决的问题,但提供的代码片段可能会让您朝着正确的方向前进。我已经包含了下面的片段:


[Microsoft.VisualStudio.Utilities.ContentType("text")]

[Microsoft.VisualStudio.Text.Editor.TextViewRole(Microsoft.VisualStudio.Text.Editor.PredefinedTextViewRoles.Editable)]

[Export(typeof(IVsTextViewCreationListener))]

public class Main : IVsTextViewCreationListener

{

    private IOutliningManager _outliningManager;

    private IVsEditorAdaptersFactoryService _editorAdaptersFactoryService;


    public void VsTextViewCreated(IVsTextView textViewAdapter)

    {


        IComponentModel componentModel = (IComponentModel)ServiceProvider.GlobalProvider.GetService(typeof(SComponentModel));

        if (componentModel != null)

        {

            IOutliningManagerService outliningManagerService = componentModel.GetService<IOutliningManagerService>();

            _editorAdaptersFactoryService = componentModel.GetService<IVsEditorAdaptersFactoryService>();


            if (outliningManagerService != null)

            {

                if (textViewAdapter != null && _editorAdaptersFactoryService != null)

                {

                    var textView = _editorAdaptersFactoryService.GetWpfTextView(textViewAdapter);

                    var snapshot = textView.TextSnapshot;

                    var snapshotSpan = new Microsoft.VisualStudio.Text.SnapshotSpan(snapshot, new Microsoft.VisualStudio.Text.Span(0, snapshot.Length));

                    _outliningManager = outliningManagerService.GetOutliningManager(textView);

                    var regions = _outliningManager.GetAllRegions(snapshotSpan);

                    foreach (var reg in regions)

                    {

                        _outliningManager.TryCollapse(reg);

                    }

                }

            }

        }

    }

}

祝你好运!


查看完整回答
反对 回复 2021-10-24
  • 1 回答
  • 0 关注
  • 229 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信