public async Task <TextEditContainer> Handle(DocumentFormattingParams request, CancellationToken cancellationToken) { if (!_optionsMonitor.CurrentValue.EnableFormatting) { return(null); } var document = await Task.Factory.StartNew(() => { _documentResolver.TryResolveDocument(request.TextDocument.Uri.GetAbsoluteOrUNCPath(), out var documentSnapshot); return(documentSnapshot); }, cancellationToken, TaskCreationOptions.None, _foregroundDispatcher.ForegroundScheduler); if (document is null || cancellationToken.IsCancellationRequested) { return(null); } var codeDocument = await document.GetGeneratedOutputAsync(); if (codeDocument.IsUnsupported()) { return(null); } var span = TextSpan.FromBounds(0, codeDocument.Source.Length); var range = span.AsRange(codeDocument.GetSourceText()); var edits = await _razorFormattingService.FormatAsync(request.TextDocument.Uri, document, range, request.Options, cancellationToken); var editContainer = new TextEditContainer(edits); return(editContainer); }
public async Task <TextEditContainer?> Handle(DocumentFormattingParams request, CancellationToken cancellationToken) { if (!_optionsMonitor.CurrentValue.EnableFormatting) { return(null); } var document = await _projectSnapshotManagerDispatcher.RunOnDispatcherThreadAsync(() => { _documentResolver.TryResolveDocument(request.TextDocument.Uri.GetAbsoluteOrUNCPath(), out var documentSnapshot); return(documentSnapshot); }, cancellationToken).ConfigureAwait(false); if (document is null || cancellationToken.IsCancellationRequested) { return(null); } var codeDocument = await document.GetGeneratedOutputAsync(); if (codeDocument.IsUnsupported()) { return(null); } var span = TextSpan.FromBounds(0, codeDocument.Source.Length); var range = span.AsRange(codeDocument.GetSourceText()); var edits = await _razorFormattingService.FormatAsync(request.TextDocument.Uri, document, range, request.Options, cancellationToken); var editContainer = new TextEditContainer(edits); return(editContainer); }