示例#1
0
 public override void Analyze(TextDocument doc, DocumentLine line, Chunk startChunk, int startOffset, int endOffset)
 {
     if (endOffset <= startOffset || startOffset >= doc.TextLength || inUpdate)
     {
         return;
     }
     if (startChunk.Style != "Comment(Line)" && startChunk.Style != "Comment(Block)")
     {
         return;
     }
     inUpdate = true;
     try {
         string text        = doc.GetTextAt(startOffset, System.Math.Min(endOffset, doc.TextLength) - startOffset);
         int    startColumn = startOffset - line.Offset;
         var    markers     = new List <UrlMarker> (line.Markers.OfType <UrlMarker> ());
         markers.ForEach(m => doc.RemoveMarker(m, false));
         foreach (System.Text.RegularExpressions.Match m in UrlRegex.Matches(text))
         {
             doc.AddMarker(line, new UrlMarker(doc, line, m.Value, UrlType.Url, syntax, startColumn + m.Index, startColumn + m.Index + m.Length), false);
         }
         foreach (System.Text.RegularExpressions.Match m in MailRegex.Matches(text))
         {
             doc.AddMarker(line, new UrlMarker(doc, line, m.Value, UrlType.Email, syntax, startColumn + m.Index, startColumn + m.Index + m.Length), false);
         }
     } finally {
         inUpdate = false;
     }
 }
        private void SetMarker(UnderlineTextSegmentMarker newMarker)
        {
            var oldMarker = marker;

            marker = newMarker;

            if (textDocument == null)
            {
                return;
            }

            if (oldMarker != null)
            {
                textDocument.RemoveMarker(oldMarker);
            }
            if (newMarker != null)
            {
                textDocument.AddMarker(newMarker);
            }
        }
示例#3
0
 internal void AddTo(TextDocument document, DocumentLine line)
 {
     this.document = document;
     document.AddMarker(line, IconMarker);
     document.AddMarker(TextMarker);
 }
示例#4
0
 public void AddMarker(HighlightSegmentMarker marker)
 {
     _markers.Add(marker);
     _document.AddMarker(marker);
 }