示例#1
0
        public static int FindNextWordStart(IDocument document, int offset)
        {
            LineSegment lineSegmentForOffset = document.GetLineSegmentForOffset(offset);
            int         num = lineSegmentForOffset.Offset + lineSegmentForOffset.Length;

            TextUtilities.CharacterType characterType = TextUtilities.GetCharacterType(document.GetCharAt(offset));
            while (offset < num)
            {
                if (TextUtilities.GetCharacterType(document.GetCharAt(offset)) != characterType)
                {
                    break;
                }
                offset++;
            }
            while (offset < num && TextUtilities.GetCharacterType(document.GetCharAt(offset)) == TextUtilities.CharacterType.WhiteSpace)
            {
                offset++;
            }
            return(offset);
        }
 public static int FindPrevWordStart(IDocument document, int offset)
 {
     if (offset > 0)
     {
         LineSegment lineSegmentForOffset          = document.GetLineSegmentForOffset(offset);
         TextUtilities.CharacterType characterType = TextUtilities.GetCharacterType(document.GetCharAt(offset - 1));
         while (offset > lineSegmentForOffset.Offset && TextUtilities.GetCharacterType(document.GetCharAt(offset - 1)) == characterType)
         {
             offset--;
         }
         if (characterType == TextUtilities.CharacterType.WhiteSpace && offset > lineSegmentForOffset.Offset)
         {
             characterType = TextUtilities.GetCharacterType(document.GetCharAt(offset - 1));
             while (offset > lineSegmentForOffset.Offset && TextUtilities.GetCharacterType(document.GetCharAt(offset - 1)) == characterType)
             {
                 offset--;
             }
         }
     }
     return(offset);
 }
示例#3
0
        public TextMarker ErrMarker(CompilerError err)
        {
            IDocument   doc  = editor.Document;
            LineSegment line = null;

            if (err.Line > 0 && err.Line < doc.LineSegmentCollection.Count + 1)
            {
                line = doc.GetLineSegment(err.Line - 1);
            }
            if (line != null)
            {
                int        start  = line.Offset + err.Column - 1;
                int        end    = line.Offset + line.Length;
                int        offset = start;
                TextMarker marker;
                if (offset < end)
                {
                    TextUtilities.CharacterType type = TextUtilities.GetCharacterType(doc.GetCharAt(offset++));

                    while (offset < end && (TextUtilities.GetCharacterType(doc.GetCharAt(offset)) == type))
                    {
                        offset++;
                    }
                }
                Color color;
                if (err.IsWarning)
                {
                    color = Color.Blue;
                }
                else
                {
                    color = Color.Red;
                }
                marker         = new TextMarker(start, offset - start, TextMarkerType.WaveLine, color);
                marker.ToolTip = err.ErrorText;
                return(marker);
            }
            return(null);
        }