예제 #1
0
        private void ProcessFoundOccurrence(SnapshotSpan occurrence)
        {
            if (!Selections.Any(s => s.OverlapsWith(occurrence, Snapshot)))
            {
                var start = Snapshot.CreateTrackingPoint(occurrence.Start, PointTrackingMode.Positive);
                var end   = Snapshot.CreateTrackingPoint(occurrence.End, PointTrackingMode.Positive);

                // If previous selection was reversed, set this caret to beginning of this selection
                var caret = Selections.Last().Caret.GetPosition(Snapshot) == Selections.Last().Start.GetPosition(Snapshot) ?
                            start : end;

                Selections.Add(
                    new Selection
                {
                    Start = start,
                    End   = end,
                    Caret = caret
                }
                    );

                outliningManager.ExpandAll(occurrence, r => r.IsCollapsed);

                view.Caret.MoveTo(caret == start ? occurrence.Start : occurrence.End);

                view.ViewScroller.EnsureSpanVisible(
                    new SnapshotSpan(
                        view.Caret.Position.BufferPosition,
                        0
                        )
                    );
            }
        }
예제 #2
0
        private void ExpandAll()
        {
            ITextSnapshot snapshot     = _textView.TextBuffer.CurrentSnapshot;
            SnapshotSpan  snapshotSpan = new SnapshotSpan(snapshot, 0, snapshot.Length);

            OutliningManager.ExpandAll(snapshotSpan, (collapsible => true));
        }
예제 #3
0
        private void ProcessFoundOccurrence(SnapshotSpan occurrence)
        {
            if (!Selections.Any(s => s.OverlapsWith(occurrence, Snapshot)))
            {
                var start = Snapshot.CreateTrackingPoint(occurrence.Start);
                var end   = Snapshot.CreateTrackingPoint(occurrence.End);
                var caret = Selections.Last().IsReversed(Snapshot)
                    ? start : end;

                Selections.Add(
                    new Selection
                {
                    Start          = start,
                    End            = end,
                    Caret          = caret,
                    ColumnPosition = Snapshot.GetLineColumnFromPosition(caret.GetPoint(Snapshot))
                }
                    );

                outliningManager.ExpandAll(occurrence, r => r.IsCollapsed);

                view.Caret.MoveTo(caret == start ? occurrence.Start : occurrence.End);

                view.ViewScroller.EnsureSpanVisible(
                    new SnapshotSpan(view.Caret.Position.BufferPosition, 0)
                    );
            }
        }
        private void OutliningManagerOnRegionsChanged(object sender, RegionsChangedEventArgs args)
        {
            outliningManager.RegionsChanged -= OutliningManagerOnRegionsChanged;

            var currentSnapshot = textView.TextBuffer.CurrentSnapshot;
            var span            = new SnapshotSpan(currentSnapshot, 0, currentSnapshot.Length);

            if (settings.BehaviorMode == BehaviorMode.ExpandAll || settings.BehaviorMode == BehaviorMode.PreventCollapse)
            {
                outliningManager.ExpandAll(span, c => c.IsCollapsed && IsRegion(c));
            }
            else if (settings.BehaviorMode == BehaviorMode.CollapseAll)
            {
                outliningManager.CollapseAll(span, c => !c.IsCollapsed && IsRegion(c));
            }
        }