public TypeLookupResponse GetTypeLookupResponse(TypeLookupRequest request) { var res = _bufferParser.ParsedContent(request.Buffer, request.FileName); var loc = new TextLocation(request.Line, request.Column); var resolveResult = ResolveAtLocation.Resolve(res.Compilation, res.UnresolvedFile, res.SyntaxTree, loc); var response = new TypeLookupResponse(); var ambience = new CSharpAmbience() { ConversionFlags = AmbienceFlags, }; if (resolveResult == null || resolveResult is NamespaceResolveResult) response.Type = ""; else { response.Type = resolveResult.Type.ToString(); IEntity entity = null; if (resolveResult is CSharpInvocationResolveResult) { var result = resolveResult as CSharpInvocationResolveResult; entity = result.Member; response.Type = ambience.ConvertSymbol(result.Member); } else if (resolveResult is LocalResolveResult) { var result = resolveResult as LocalResolveResult; response.Type = ambience.ConvertVariable(result.Variable); } else if (resolveResult is MemberResolveResult) { var result = resolveResult as MemberResolveResult; entity = result.Member; response.Type = ambience.ConvertSymbol(result.Member); } else if (resolveResult is TypeResolveResult) { ambience.ConversionFlags |= ConversionFlags.UseFullyQualifiedTypeNames; response.Type = ambience.ConvertType(resolveResult.Type); } if (resolveResult.Type is UnknownType) response.Type = "Unknown Type: " + resolveResult.Type.Name; if (resolveResult.Type == SpecialType.UnknownType) response.Type = "Unknown Type"; if (request.IncludeDocumentation && entity != null) { var project = _solution.ProjectContainingFile(request.FileName); response.Documentation = new DocumentationFetcher().GetDocumentation(project, entity, _config); } } return response; }
public OverrideCompletionData(int declarationBegin, IMember m, CSharpResolver contextAtCaret) : base(m) { this.declarationBegin = declarationBegin; this.contextAtCaret = contextAtCaret; var ambience = new CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames; this.CompletionText = ambience.ConvertSymbol(m); }
public EntityCompletionData(IEntity entity) { if (entity == null) throw new ArgumentNullException("entity"); this.entity = entity; IAmbience ambience = new CSharpAmbience(); ambience.ConversionFlags = entity is ITypeDefinition ? ConversionFlags.ShowTypeParameterList : ConversionFlags.None; DisplayText = entity.Name; CompletionText = ambience.ConvertSymbol(entity); ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; if (entity is ITypeDefinition) { // Show fully qualified Type name ambience.ConversionFlags |= ConversionFlags.UseFullyQualifiedTypeNames; } Image = AvalonEdit.CodeCompletion.CompletionImage.GetImage(entity); }
public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo) { var method = (IUnresolvedMethod)dataObject; var dt = new DefaultResolvedTypeDefinition (GetContext (treeBuilder), method.DeclaringTypeDefinition); var resolved = (DefaultResolvedMethod)Resolve (treeBuilder, method, dt); var ambience = new CSharpAmbience (); try { nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (ambience.ConvertSymbol (resolved)); } catch (Exception) { nodeInfo.Label = method.Name; } if (method.IsPrivate || method.IsInternal) nodeInfo.Label = DomMethodNodeBuilder.FormatPrivate (nodeInfo.Label); nodeInfo.Icon = Context.GetIcon (resolved.GetStockIcon ()); }
FlowDocumentScrollViewer GenerateHeader() { CSharpAmbience ambience = new CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; var stringBuilder = new StringBuilder(); var formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex); ambience.ConvertSymbol(Method, formatter, CSharpFormattingPolicies.Instance.GlobalOptions.OptionsContainer.GetEffectiveOptions()); var documentation = XmlDocumentationElement.Get(Method); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; DocumentationUIBuilder b = new DocumentationUIBuilder(ambience); string parameterName = null; if (Method.Parameters.Count > highlightedParameterIndex) parameterName = Method.Parameters[highlightedParameterIndex].Name; b.AddSignatureBlock(stringBuilder.ToString(), formatter.parameterStartOffset, formatter.parameterLength, parameterName); DocumentationUIBuilder b2 = new DocumentationUIBuilder(ambience); b2.ParameterName = parameterName; b2.ShowAllParameters = false; if (documentation != null) { foreach (var child in documentation.Children) { b2.AddDocumentationElement(child); } } content = new FlowDocumentScrollViewer { Document = b2.CreateFlowDocument(), VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; var flowDocument = b.CreateFlowDocument(); flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space return new FlowDocumentScrollViewer { Document = flowDocument, VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; }
protected override object CreateFancyDescription() { var ambience = new CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.ShowDeclaringType; string header = ambience.ConvertSymbol(Entity); var documentation = XmlDocumentationElement.Get(Entity); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; var b = new CSharpDocumentationBuilder(ambience); b.AddCodeBlock(header, keepLargeMargin: true); if (documentation != null) { foreach (var child in documentation.Children) { b.AddDocumentationElement(child); } } var flowDocument = b.CreateFlowDocument(); flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space return new FlowDocumentScrollViewer { Document = flowDocument, VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; }
void GenerateHeader() { CSharpAmbience ambience = new CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; var stringBuilder = new StringBuilder(); TokenWriter formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex); ambience.ConvertSymbol(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop()); var documentation = XmlDocumentationElement.Get(Method); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; var inlineBuilder = new HighlightedInlineBuilder(stringBuilder.ToString()); header.Inlines.Clear(); header.Inlines.AddRange(inlineBuilder.CreateRuns()); }
private ICompletionData CompletionData(IEntity entity) { ICompletionData completionData; if (entity.Documentation != null) { completionData = new CompletionData(_signature, _completionText, _signature + Environment.NewLine + DocumentationConverter.ConvertDocumentation(entity.Documentation)); } else { var ambience = new CSharpAmbience { ConversionFlags = ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames | ConversionFlags.ShowReturnType | ConversionFlags.ShowBody | ConversionFlags.ShowTypeParameterList }; var documentationSignature = ambience.ConvertSymbol(entity); if (_wantDocumentation) { string documentation = new DocumentationFetcher().GetDocumentation(_project, entity); var documentationAndSignature = documentationSignature + Environment.NewLine + documentation; completionData = new CompletionData(_signature, _completionText, documentationAndSignature); } else { completionData = new CompletionData(_signature, _completionText, documentationSignature); } } return completionData; }
private void AddMethodHeader(CompletionData completionData, IMethod method) { var methodDefinition = method.MemberDefinition; if (_wantMethodHeader) { var snippetGenerator = new SnippetGenerator(false); completionData.MethodHeader = snippetGenerator.Generate(methodDefinition); } if (_wantSnippet) { var snippetGenerator = new SnippetGenerator(true); completionData.Snippet = snippetGenerator.Generate(methodDefinition); } if (_wantReturnType) { var returnTypeAmbience = new CSharpAmbience { ConversionFlags = ConversionFlags.ShowReturnType }; completionData.ReturnType = returnTypeAmbience.ConvertSymbol(method).Split(' ').First(); } }
public IEnumerable<QuickFix> GetCurrentFileMembersAsFlatWithoutAccessModifiers(CurrentFileMembersRequest request) { var context = new BufferContext(request, this._parser); var result = new List<QuickFix>(); foreach (var item in context.ParsedContent.UnresolvedFile.TopLevelTypeDefinitions) { result.Add(new QuickFix() { FileName = item.Region.FileName , Line = item.Region.BeginLine , Column = item.Region.BeginColumn , EndLine = item.Region.EndLine , EndColumn = item.Region.EndColumn , Text = item.Name }); } var members = context.ParsedContent.UnresolvedFile.TopLevelTypeDefinitions .SelectMany(x => x.Members); foreach (var item in members) { var ambience = new CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames; var memberTitle = ambience.ConvertSymbol(item.Resolve(context.ResolveContext)); var qf = new QuickFix() { FileName = item.Region.FileName , Line = item.Region.BeginLine , Column = item.Region.BeginColumn , EndLine = item.Region.EndLine , EndColumn = item.Region.EndColumn , Text = memberTitle }; result.Add(qf); } return result.OrderBy(x => x.Text); }