Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
 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);
     }
 }