예제 #1
0
    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);
                    }
                }
            }
        }
    }
예제 #2
0
 /// <summary>
 /// An event handler raised when a code item parent's expanded state has changed.
 /// </summary>
 /// <param name="sender">The sender of the event.</param>
 /// <param name="eventArgs">The event arguments.</param>
 private void OnCodeItemParentIsExpandedChanged(object sender, EventArgs eventArgs)
 {
     if (sender is ICodeItemParent codeItemParent)
     {
         var iCollapsible = FindCollapsibleFromCodeItemParent(codeItemParent);
         if (iCollapsible != null)
         {
             if (codeItemParent.IsExpanded && iCollapsible.IsCollapsed)
             {
                 _outliningManager.Expand(iCollapsible as ICollapsed);
             }
             else if (!codeItemParent.IsExpanded && !iCollapsible.IsCollapsed)
             {
                 _outliningManager.TryCollapse(iCollapsible);
             }
         }
     }
 }
예제 #3
0
        /// <summary>
        /// An event handler raised when a code item parent's expanded state has changed.
        /// </summary>
        /// <param name="sender">The sender of the event.</param>
        /// <param name="eventArgs">The event arguments.</param>
        private static void OnIsExpandedChanged(object sender, EventArgs eventArgs)
        {
            var item = sender as IMembers;

            if (item != null)
            {
                var iCollapsible = FindCollapsibleFromCodeItem((CodeItem)item, _manager, _textView);
                if (iCollapsible != null)
                {
                    if (item.IsExpanded && iCollapsible.IsCollapsed)
                    {
                        _manager.Expand(iCollapsible as ICollapsed);
                    }
                    else if (!item.IsExpanded && !iCollapsible.IsCollapsed)
                    {
                        _manager.TryCollapse(iCollapsible);
                    }
                }
            }
        }
예제 #4
0
        private void ToggleCurrent()
        {
            var caretPosition = _textView.Caret.Position.BufferPosition;
            var snapshot      = _textView.TextBuffer.CurrentSnapshot;
            var span          = new SnapshotSpan(snapshot, new Span(caretPosition, 0));

            var regions = OutliningManager.GetAllRegions(span);

            // Find innermost one
            ICollapsible region = null;

            int regionStart = 0;
            int regionEnd   = snapshot.Length;

            foreach (ICollapsible c in regions)
            {
                int start = c.Extent.GetStartPoint(snapshot);
                int end   = c.Extent.GetEndPoint(snapshot);

                if (start >= regionStart && end < regionEnd)
                {
                    regionStart = start;
                    regionEnd   = end;

                    region = c;
                }
            }

            if (region != null)
            {
                if (region.IsCollapsed)
                {
                    OutliningManager.Expand(region as ICollapsed);
                }
                else
                {
                    OutliningManager.TryCollapse(region);
                }
            }
        }