SignatureHelpSession(SignatureHelpService signatureHelpService, Lazy <ISignatureHelpBroker> signatureHelpBroker, ITextView textView) { this.signatureHelpBroker = signatureHelpBroker; this.textView = textView; signatures = new List <Signature>(); this.signatureHelpService = signatureHelpService; }
SignatureHelpInfo(SignatureHelpService signatureHelpService, Document document, SourceText sourceText, ITextSnapshot snapshot) { SignatureHelpService = signatureHelpService; Document = document; SourceText = sourceText; Snapshot = snapshot; }
public async Task <SignatureHelpResult> GetSignatureHelp(WorkspaceRequest request, Budget budget) { budget ??= new TimeBudget(TimeSpan.FromSeconds(defaultBudgetInSeconds)); var package = await _packageFinder.Find <ICreateWorkspace>(request.Workspace.WorkspaceType); var workspace = await request.Workspace.InlineBuffersAsync(); var sourceFiles = workspace.GetSourceFiles(); var(compilation, project) = await package.GetCompilationForLanguageServices(sourceFiles, GetSourceCodeKind(request), GetUsings(request.Workspace), budget); var documents = project.Documents.ToList(); var selectedDocument = documents.FirstOrDefault(doc => doc.IsMatch(request.ActiveBufferId.FileName)) ?? (documents.Count == 1 ? documents.Single() : null); if (selectedDocument == null) { return(new SignatureHelpResult(requestId: request.RequestId)); } var diagnostics = await DiagnosticsExtractor.ExtractSerializableDiagnosticsFromDocument(request.ActiveBufferId, budget, selectedDocument, workspace); var tree = await selectedDocument.GetSyntaxTreeAsync(); var absolutePosition = workspace.GetAbsolutePositionForGetBufferWithSpecifiedIdOrSingleBufferIfThereIsOnlyOne(request.ActiveBufferId); var syntaxNode = tree.GetRoot().FindToken(absolutePosition).Parent; var result = await SignatureHelpService.GetSignatureHelp( () => Task.FromResult(compilation.GetSemanticModel(tree)), syntaxNode, absolutePosition); result.RequestId = request.RequestId; if (diagnostics?.Count > 0) { result.Diagnostics = diagnostics; } return(result); }
private async Task <SignatureHelp> GetSignatureHelp(string source) { var lineColumn = TestHelpers.GetLineAndColumnFromDollar(source); source = source.Replace("$", string.Empty); var request = new SignatureHelpRequest() { FileName = "dummy.cs", Line = lineColumn.Line, Column = lineColumn.Column, Buffer = source }; var workspace = await TestHelpers.CreateSimpleWorkspace(source); var controller = new SignatureHelpService(workspace); return(await controller.Handle(request)); }
public static SignatureHelpInfo?Create(ITextSnapshot snapshot) { if (snapshot == null) { throw new ArgumentNullException(nameof(snapshot)); } var sourceText = snapshot.AsText(); var document = sourceText.GetOpenDocumentInCurrentContextWithChanges(); if (document == null) { return(null); } var signatureHelpService = SignatureHelpService.GetService(document); if (signatureHelpService == null) { return(null); } return(new SignatureHelpInfo(signatureHelpService, document, sourceText, snapshot)); }
private async Task<SignatureHelp> GetSignatureHelp(string source) { var lineColumn = TestHelpers.GetLineAndColumnFromDollar(source); source = source.Replace("$", string.Empty); var request = new SignatureHelpRequest() { FileName = "dummy.cs", Line = lineColumn.Line, Column = lineColumn.Column, Buffer = source }; var workspace = await TestHelpers.CreateSimpleWorkspace(source); var controller = new SignatureHelpService(workspace); return await controller.Handle(request); }