예제 #1
0
        public override async Task <RazorDiagnosticsResponse> TranslateAsync(
            RazorLanguageKind languageKind,
            Uri razorDocumentUri,
            Diagnostic[] diagnostics,
            CancellationToken cancellationToken)
        {
            if (razorDocumentUri is null)
            {
                throw new ArgumentNullException(nameof(razorDocumentUri));
            }

            if (diagnostics is null)
            {
                throw new ArgumentNullException(nameof(diagnostics));
            }

            var diagnosticsParams = new RazorDiagnosticsParams()
            {
                Kind             = languageKind,
                RazorDocumentUri = razorDocumentUri,
                Diagnostics      = diagnostics
            };

            var diagnosticResponse = await _requestInvoker.ReinvokeRequestOnServerAsync <RazorDiagnosticsParams, RazorDiagnosticsResponse>(
                LanguageServerConstants.RazorTranslateDiagnosticsEndpoint,
                RazorLSPConstants.RazorLSPContentTypeName,
                diagnosticsParams,
                cancellationToken).ConfigureAwait(false);

            return(diagnosticResponse);
        }
        public override async Task <RazorDiagnosticsResponse?> TranslateAsync(
            RazorLanguageKind languageKind,
            Uri razorDocumentUri,
            Diagnostic[] diagnostics,
            CancellationToken cancellationToken)
        {
            if (!_documentManager.TryGetDocument(razorDocumentUri, out var documentSnapshot))
            {
                return(new RazorDiagnosticsResponse()
                {
                    Diagnostics = Array.Empty <Diagnostic>(),
                });
            }

            var diagnosticsParams = new RazorDiagnosticsParams()
            {
                Kind             = languageKind,
                RazorDocumentUri = razorDocumentUri,
                Diagnostics      = diagnostics
            };

            var response = await _requestInvoker.ReinvokeRequestOnServerAsync <RazorDiagnosticsParams, RazorDiagnosticsResponse>(
                documentSnapshot.Snapshot.TextBuffer,
                LanguageServerConstants.RazorTranslateDiagnosticsEndpoint,
                RazorLSPConstants.RazorLanguageServerName,
                diagnosticsParams,
                cancellationToken).ConfigureAwait(false);

            if (!ReinvocationResponseHelper.TryExtractResultOrLog(response, _logger, RazorLSPConstants.RazorLanguageServerName, out var result))
            {
                return(null);
            }

            return(result);
        }