Exemple #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);
        }
Exemple #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);
        }