简体   繁体   English

Visual Studio中折叠的区域

[英]Collapsed regions in Visual Studio

I'm doing a Visual Studio extension and it contains editor margin, which show comment for each code line and data linked by line number. 我正在做一个Visual Studio扩展,它包含编辑器边距,它显示每个代码行的注释和按行号链接的数据。

When I have code have collapsed regions (functions, code blocks or regions), I'm getting incorrect line numbers. 当我的代码有折叠区域(函数,代码块或区域)时,我得到的行号不正确。

How can I calculate what lines collapsed? 如何计算折叠的线条? Or more simply, how can I expand all collapsed blocks and disable collapse buttons? 或者更简单地说,如何展开所有折叠的块并禁用折叠按钮?

I found solution: 我找到了解决方案

    Dim _outliningManager As Outlining.IOutliningManager
Dim _oldCollapsedRegions As List(Of ICollapsed)

'Getting access to ServiceProvider
<Import>
Dim ServiceProvider As SVsServiceProvider

'Getting IOutliningManagerService object
 Dim componentModel As IComponentModel = ServiceProvider.GetService(GetType(SComponentModel))
 Dim outliningManagerService As IOutliningManagerService = componentModel.GetService(Of IOutliningManagerService)()

    'Creating IOutliningManager for current textView
    If outliningManagerService IsNot Nothing Then
        _outliningManager = outliningManagerService.GetOutliningManager(textView)
        If _outliningManager IsNot Nothing Then AddHandler _outliningManager.RegionsCollapsed, AddressOf RegionCollapsed

    End If

    'Getting all regions and expand them
    If _outliningManager IsNot Nothing Then
        Dim snapshot = _textView.TextSnapshot
        Dim snapshotSpan = New Microsoft.VisualStudio.Text.SnapshotSpan(snapshot, New Microsoft.VisualStudio.Text.Span(0, snapshot.Length))
        _oldCollapsedRegions = _outliningManager.GetCollapsedRegions(snapshotSpan).ToList()
        For Each reg In _oldCollapsedRegions
            _outliningManager.Expand(reg)
        Next
    End If


'Blocking regions collapsed
Sub RegionCollapsed(sender As Object, e As RegionsCollapsedEventArgs)
    If Me.Visibility = Windows.Visibility.Visible Then
        For Each reg In e.CollapsedRegions
            _outliningManager.Expand(reg)
        Next
    End If
End Sub

Require referenses to: microsoft.visualstudio.shell.immutable.10.0, Microsoft.VisualStudio.ComponentModelHost and, sure, Microsoft.VisualStudio.Text 需要参考:microsoft.visualstudio.shell.immutable.10.0,Microsoft.VisualStudio.ComponentModelHost,当然,Microsoft.VisualStudio.Text

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM