protected override void OnBeforeQueryStatus(object sender, EventArgs e) { base.OnBeforeQueryStatus(sender, e); ITextView view = TextEditor.GetCurrentView(); if (view == null) { return; } ITextCaret caret = view.Caret; if (caret == null) { return; } var point = TextEditor.MapCaretToPrimaryBuffer(view); //SnapshotPoint? point = caret.Position.BufferPosition; if (point != null) { IUserOutlining outlining = OutliningManager.Get(point.Value.Snapshot.TextBuffer); Command.Enabled = outlining.IsInOutliningRegion(point.Value); } }
protected override void OnInvoke(object sender, EventArgs e) { base.OnInvoke(sender, e); ITextView view = TextEditor.GetCurrentView(); if (view == null) { return; } ITextCaret caret = view.Caret; if (caret == null) { return; } var point = TextEditor.MapCaretToPrimaryBuffer(view); //SnapshotPoint? point = caret.Position.BufferPosition; if (point != null) { IUserOutlining outlining = OutliningManager.Get(point.Value.Snapshot.TextBuffer); outlining.RemoveAt(point.Value); } }
private IUserOutlining GetOutlining(out ITextBuffer buffer) { buffer = null; ITextView view = TextEditor.GetCurrentView(); if (view != null) { buffer = TextEditor.GetPrimaryBuffer(view); //buffer = view.TextBuffer; return(OutliningManager.Get(buffer)); } return(null); }
private void AddOutlining(ITextBuffer buffer, SnapshotSpan span) { var outlines = OutliningManager.Get(buffer); outlines.Add(span); }
/// <summary> /// Walk through all the regions, calculate their levels and collapse all regions where n = level +1. /// </summary> private void Collapse(int level) { var tv = TextViewRegistry.GetActiveTextView(this.textManager); if (tv == null) { return; } var componentModel = this.ServiceProvider.GetService(typeof(SComponentModel)) as IComponentModel; if (componentModel != null) { var outliningManagerService = componentModel.GetService <IOutliningManagerService>(); if (outliningManagerService != null) { OutliningManager = outliningManagerService.GetOutliningManager(tv); } } if (OutliningManager != null) { try { var length = tv.TextSnapshot.Length; var textViewSpan = new SnapshotSpan(tv.TextSnapshot, 0, length); var regions = OutliningManager.GetAllRegions(textViewSpan); Dictionary <ICollapsible, int> regionCount = new Dictionary <ICollapsible, int>(); foreach (var region in regions) { var extent = region.Extent; var span = extent.GetSpan(tv.TextSnapshot); foreach (var compareTo in regions) { if (compareTo.Equals(region)) { continue; } if (!regionCount.ContainsKey(region)) { regionCount[region] = 1; } var compareToSpan = compareTo.Extent.GetSpan(tv.TextSnapshot); var regionSpan = region.Extent.GetSpan(tv.TextSnapshot); if (compareToSpan.Contains(regionSpan)) { regionCount[region] = regionCount[region] + 1; } } } OutliningManager.ExpandAll(textViewSpan, (y) => (true)); foreach (var pair in regionCount) { if (pair.Value == level) { OutliningManager.TryCollapse(pair.Key); } } } catch (ObjectDisposedException) { // TODO Investigate, happened once while testing some early version. } } }