Beispiel #1
0
 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;
     }
 }
Beispiel #2
0
 public HighlightingHandler(Search.SearchState searchOpts, IWordSelection wordSelection)
 {
     this.searchOpts    = searchOpts;
     this.wordSelection = wordSelection;
 }
Beispiel #3
0
 private static IEnumerable <(int, int, Color)> GetSelectionHighlightingRanges(
     IMessage msg, Search.SearchState searchOpts, IWordSelection wordSelection, (IMessage msg, int charIdx) originalSelection)