static IEnumerable <Tuple <int, int> > FindAllHightlighRanges( IMessage msg, Search.SearchState searchOpts, bool reverseSearch, IWordSelection wordSelection) { for (int?startPos = null; ;) { var matchedTextRangle = Search.SearchInMessageText(msg, searchOpts, startPos); if (!matchedTextRangle.HasValue) { yield break; } var r = matchedTextRangle.Value; if (r.WholeTextMatched) { yield break; } if (r.MatchBegin == r.MatchEnd) { yield break; } if (wordSelection == null || wordSelection.IsWordBoundary(r.SourceText, r.MatchBegin, r.MatchEnd)) { yield return(new Tuple <int, int>(r.MatchBegin, r.MatchEnd)); } startPos = reverseSearch ? r.MatchBegin : r.MatchEnd; } }
public HighlightingHandler(Search.SearchState searchOpts, IWordSelection wordSelection) { this.searchOpts = searchOpts; this.wordSelection = wordSelection; }
private static IEnumerable <(int, int, Color)> GetSelectionHighlightingRanges( IMessage msg, Search.SearchState searchOpts, IWordSelection wordSelection, (IMessage msg, int charIdx) originalSelection)