public async Task <object> GetColorizedDescriptionAsync(INavigationToken token, CancellationToken cancellationToken) { if (token == null) { return(null); } cancellationToken.ThrowIfCancellationRequested(); var typeName = token.Type.GetName(); var document = token.Document; var snapshot = document.CurrentSnapshot; var builder = new ClassifiedTextBuilder(); if (token.Type == RadAsmTokenType.Instruction) { builder .AddClassifiedText($"({typeName} ") .AddClassifiedText(RadAsmTokenType.Instruction, Path.GetFileNameWithoutExtension(document.Path)) .AddClassifiedText(") "); } else { builder.AddClassifiedText($"({typeName}) "); } builder.AddClassifiedText(token); if (token.Type == RadAsmTokenType.FunctionName) { cancellationToken.ThrowIfCancellationRequested(); var analysisResult = await document.DocumentAnalysis.GetAnalysisResultAsync(snapshot); var block = analysisResult.GetBlock(token.GetEnd()); cancellationToken.ThrowIfCancellationRequested(); if (block is FunctionBlock functionBlock) { for (var i = 0; i < functionBlock.Parameters.Count; i++) { builder.AddClassifiedText(" ") .AddClassifiedText(_navigationTokenService.CreateToken(functionBlock.Parameters[i], document)); if (i != functionBlock.Parameters.Count - 1) { builder.AddClassifiedText(","); } } } } else if (token.Type == RadAsmTokenType.GlobalVariable || token.Type == RadAsmTokenType.LocalVariable) { var variableToken = (VariableToken)token.Definition; if (variableToken.DefaultValue != default) { var defaultValueText = variableToken.DefaultValue.GetText(snapshot); builder.AddClassifiedText(" = ") .AddClassifiedText(RadAsmTokenType.Number, defaultValueText); } } cancellationToken.ThrowIfCancellationRequested(); builder.SetAsElement(); if (token.Definition is IDefinitionToken definitionToken) { var description = definitionToken.GetDescription(_documentFactoryLazy.Value); if (description != null) { builder.AddClassifiedText(description).SetAsElement(); } } return(builder.Build()); }