private static IClassificationType GetClassificationType(Token token) { var pSTokenType = PSToken.GetPSTokenType(token); var classificationType = PowerShellClassifier.GetClassificationType(pSTokenType); return(classificationType); }
public static string ToDebugString(this Token token) { //Replace NewLine Char var text = token.Text.Replace("\r\n", @"\r\n").Replace("\n", @"\n"); return(String.Format("{0,-20} : {1,-30} : {2,-20} : {3}", token.Kind, token.TokenFlags, PSToken.GetPSTokenType(token), text)); }
private static bool IsInTokenTypesArea(int position, TextArea textArea, EdgeTrackingMode edgeTrackingMode, params PSTokenType[] selectedPSTokenTypes) { if (position < 0 || position > textArea.Document.Text.Length) { return(false); } var scriptToCaret = string.Empty; Execute.OnUIThread(() => { scriptToCaret = textArea.Document.Text.Substring(0, textArea.Caret.Offset); }); Token[] tokens; ParseError[] errors; System.Management.Automation.Language.Parser.ParseInput(scriptToCaret, out tokens, out errors); if (tokens.Length > 0) { var filteredTokens = tokens.Where(t => selectedPSTokenTypes.Any(k => PSToken.GetPSTokenType(t) == k)).ToList(); switch (edgeTrackingMode) { case EdgeTrackingMode.NoneEdgeIncluded: foreach (var token in filteredTokens) { if (token.Extent.StartOffset < position && position < token.Extent.EndOffset) { return(true); } if (position <= token.Extent.StartOffset) { return(false); } } break; case EdgeTrackingMode.LeftEdgeIncluded: foreach (var token in filteredTokens) { if (token.Extent.StartOffset <= position && position < token.Extent.EndOffset) { return(true); } if (position < token.Extent.StartOffset) { return(false); } } break; case EdgeTrackingMode.RightEdgeIncluded: foreach (var token in filteredTokens) { if (token.Extent.StartOffset < position && position <= token.Extent.EndOffset) { return(true); } if (position < token.Extent.StartOffset) { return(false); } } break; case EdgeTrackingMode.BothEdgesIncluded: foreach (var token in filteredTokens) { if (token.Extent.StartOffset <= position && position <= token.Extent.EndOffset) { return(true); } if (position < token.Extent.StartOffset) { return(false); } } break; } } return(false); }
private static bool IsInCertainPSTokenTypesArea(int position, ITextBuffer buffer, EdgeTrackingMode edgeTrackingMode, params PSTokenType[] selectedPSTokenTypes) { if (position < 0 || position > buffer.CurrentSnapshot.Length) { return(false); } Token[] tokens; if (buffer.Properties.TryGetProperty <Token[]>(BufferProperties.Tokens, out tokens) && tokens != null && tokens.Length != 0) { var filteredTokens = tokens.Where(t => selectedPSTokenTypes.Any(k => PSToken.GetPSTokenType(t) == k)).ToList(); switch (edgeTrackingMode) { case EdgeTrackingMode.NoneEdgeIncluded: foreach (var token in filteredTokens) { if (token.Extent.StartOffset < position && position < token.Extent.EndOffset) { return(true); } if (position <= token.Extent.StartOffset) { return(false); } } break; case EdgeTrackingMode.LeftEdgeIncluded: foreach (var token in filteredTokens) { if (token.Extent.StartOffset <= position && position < token.Extent.EndOffset) { return(true); } if (position < token.Extent.StartOffset) { return(false); } } break; case EdgeTrackingMode.RightEdgeIncluded: foreach (var token in filteredTokens) { if (token.Extent.StartOffset < position && position <= token.Extent.EndOffset) { return(true); } if (position < token.Extent.StartOffset) { return(false); } } break; case EdgeTrackingMode.BothEdgesIncluded: foreach (var token in filteredTokens) { if (token.Extent.StartOffset <= position && position <= token.Extent.EndOffset) { return(true); } if (position < token.Extent.StartOffset) { return(false); } } break; default: break; } } return(false); }
public static PSTokenType GetPSTokenType(this Token token) { return(PSToken.GetPSTokenType(token)); }