/// <summary> /// Gets the first offset greater or equal to <paramref name="startOffset"/> where a folded folding starts. /// Returns -1 if there are no foldings after <paramref name="startOffset"/>. /// </summary> public int GetNextFoldedFoldingStart(int startOffset) { FoldingSection fs = foldings.FindFirstSegmentWithStartAfter(startOffset); while (fs != null && !fs.IsFolded) { fs = foldings.GetNextSegment(fs); } return(fs != null ? fs.StartOffset : -1); }
public IEnumerable <Tuple <CodeReference, TextEditorLocation> > GetCodeReferences(int line, int column) { int offset = TextEditor.Document.GetOffset(line, column); var refSeg = references.FindFirstSegmentWithStartAfter(offset); while (refSeg != null) { yield return(Tuple.Create(refSeg.ToCodeReference(), GetLocation(refSeg))); refSeg = references.GetNextSegment(refSeg); } }
public T GetCachedObject <T>(int offset, int lookaheadCount, Predicate <T> conditon) where T : AXmlObject, new() { TextSegment obj = segments.FindFirstSegmentWithStartAfter(offset); while (obj != null && offset <= obj.StartOffset && obj.StartOffset <= offset + lookaheadCount) { if (obj is T && ((AXmlObject)obj).IsCached && conditon((T)obj)) { return((T)obj); } obj = segments.GetNextSegment(obj); } return(null); }
void DoTest(TextSegmentCollection<SearchResult> segments, int[] expectedIndexes) { var result = segments.FirstSegment; const string message = "Expected {0} th match : {1}; actually {2}"; for(int i = 0; i < segments.Count; ++i){ Assert.AreEqual(expectedIndexes[i], result.StartOffset, message, i + 1, expectedIndexes[i], result.StartOffset); result = segments.GetNextSegment(result); } }