/// <summary> /// Group several Tokens in a special span, specifying it's type /// </summary> /// <param name="start"></param> /// <param name="stop"></param> /// <param name="snapshot"></param> /// <param name="type"></param> /// <returns></returns> private ClassificationSpan Token2ClassificationSpan(IToken start, IToken stop, ITextSnapshot snapshot, IClassificationType type) { TextSpan tokenSpan = new TextSpan(start.StartIndex, stop.StopIndex - start.StartIndex + 1); XsClassificationSpan span = tokenSpan.ToClassificationSpan(snapshot, type); span.startTokenType = start.Type; span.endTokenType = stop.Type; return(span); }
/// <summary> /// "Mark" a Token, specifying it's type and the span it covers /// </summary> /// <param name="token"></param> /// <param name="snapshot"></param> /// <param name="type"></param> /// <returns></returns> private ClassificationSpan Token2ClassificationSpan(IToken token, ITextSnapshot snapshot, IClassificationType type) { if (token != null && snapshot != null) { TextSpan tokenSpan = new TextSpan(token.StartIndex, token.StopIndex - token.StartIndex + 1); XsClassificationSpan span = tokenSpan.ToClassificationSpan(snapshot, type); span.startTokenType = token.Type; span.endTokenType = -1; return(span); } return(default);