public ChangeSignatureCodeAction( AbstractChangeSignatureService changeSignatureService, ChangeSignatureAnalysisSucceededContext context ) { _changeSignatureService = changeSignatureService; _context = context; }
private bool ExecuteCommand(ITextView textView, ITextBuffer subjectBuffer, CommandExecutionContext context) { using (context.OperationContext.AddScope(allowCancellation: true, FeaturesResources.Change_signature)) { if (!IsAvailable(subjectBuffer, out var workspace)) { return(false); } var caretPoint = textView.GetCaretPoint(subjectBuffer); if (!caretPoint.HasValue) { return(false); } var document = subjectBuffer.CurrentSnapshot.GetFullyLoadedOpenDocumentInCurrentContextWithChanges( context.OperationContext, _threadingContext); if (document == null) { return(false); } var changeSignatureService = document.GetRequiredLanguageService <AbstractChangeSignatureService>(); var cancellationToken = context.OperationContext.UserCancellationToken; // TODO: Make asynchronous and avoid expensive semantic operations on UI thread: // https://github.com/dotnet/roslyn/issues/62135 // Async operation to determine the change signature var changeSignatureContext = changeSignatureService.GetChangeSignatureContextAsync( document, caretPoint.Value.Position, restrictToDeclarations: false, _globalOptions.CreateProvider(), cancellationToken).WaitAndGetResult(context.OperationContext.UserCancellationToken); // UI thread bound operation to show the change signature dialog. var changeSignatureOptions = AbstractChangeSignatureService.GetChangeSignatureOptions(changeSignatureContext); // Async operation to compute the new solution created from the specified options. var result = changeSignatureService.ChangeSignatureWithContextAsync(changeSignatureContext, changeSignatureOptions, cancellationToken).WaitAndGetResult(cancellationToken); // UI thread bound operation to show preview changes dialog / show error message, then apply the solution changes (if applicable). HandleResult(result, document.Project.Solution, workspace, context); return(true); } }
public ChangeSignatureCodeAction(AbstractChangeSignatureService changeSignatureService, ChangeSignatureAnalyzedContext context) { _changeSignatureService = changeSignatureService; _context = context; }
public ChangeSignatureCodeAction(AbstractChangeSignatureService changeSignatureService, ChangeSignatureAnalyzedContext context) { this.changeSignatureService = changeSignatureService; this.context = context; }
public override object?GetOptions(CancellationToken cancellationToken) => AbstractChangeSignatureService.GetChangeSignatureOptions(_context);
public override object GetOptions(CancellationToken cancellationToken) => AbstractChangeSignatureService.GetChangeSignatureOptions(_context) ?? new ChangeSignatureOptionsResult(null !, false);