public ForwardTextIterator(IDocumentInformation docInfo, Gtk.TextView document, int endOffset) { Debug.Assert(endOffset >= 0 && endOffset < BufferLength); this.docInfo = docInfo; this.textBuffer = document.Buffer; this.endOffset = endOffset; Reset(); }
public DefaultSearchResult(ITextIterator iter, int length) { position = iter.Position; offset = iter.DocumentOffset; line = iter.Line + 1; column = iter.Column + 1; this.length = length; documentInformation = iter.DocumentInformation; }
public ForwardTextFileIterator(IDocumentInformation document, string fileName) { this.document = document; this.fileName = fileName; stream = new FileStream (fileName, FileMode.Open, FileAccess.Read); streamReader = new StreamReader (stream); reader = new ExtendedStreamReader (streamReader); Reset(); line = lineStartOffset = 0; lineInSync = true; }
public SourceViewTextIterator(IDocumentInformation docInfo, Gtk.TextView document, int endOffset) : base(docInfo, document, endOffset) { }
public ISearchResult Find(SearchOptions options, bool reverse) { // insanity check Debug.Assert(searchStrategy != null); Debug.Assert(documentIterator != null); Debug.Assert(options != null); while (!cancelled) { if (info != null && textIterator != null && documentIterator.CurrentFileName != null) { if (info.FileName != documentIterator.CurrentFileName || lastWasReverse != reverse) { // create new iterator, if document changed or search direction has changed. info = documentIterator.Current; textIterator = info.GetTextIterator (); reverseSearchMap = null; lastResultPos = -1; if (reverse) textIterator.MoveToEnd (); } ISearchResult result; if (!reverse) result = searchStrategy.FindNext (textIterator, options, false); else { if (searchStrategy.SupportsReverseSearch (textIterator, options)) { result = searchStrategy.FindNext (textIterator, options, true); } else { if (reverseSearchMap == null) { reverseSearchMap = new SearchMap (); reverseSearchMap.Build (searchStrategy, textIterator, options); } if (lastResultPos == -1) lastResultPos = textIterator.Position; result = reverseSearchMap.GetPreviousMatch (lastResultPos); if (result != null) textIterator.Position = result.Position; } } if (result != null) { matches++; lastResultPos = result.Position; lastWasReverse = reverse; return result; } } if (textIterator != null) textIterator.Close (); // not found or first start -> move forward to the next document bool more = !reverse ? documentIterator.MoveForward () : documentIterator.MoveBackward (); if (more) { searchedFiles++; info = documentIterator.Current; textIterator = info.GetTextIterator (); reverseSearchMap = null; lastResultPos = -1; if (reverse) textIterator.MoveToEnd (); } else cancelled = true; lastWasReverse = reverse; } cancelled = false; return null; }
public SourceViewTextIterator (IDocumentInformation docInfo, Gtk.TextView document, int endOffset) : base (docInfo, document, endOffset) { // Make sure the iterator is ready for use this.MoveAhead(1); this.hasWrapped = false; }