Ejemplo n.º 1
0
        public async Task <Container <ColorInformation> > Handle(DocumentColorParams request, CancellationToken cancellationToken)
        {
            await _server.DocumentHandler.WaitForParse();

            var ranges = _server.LastParse?.ScriptFromUri(request.TextDocument.Uri.ToUri())?.GetColorRanges();

            return(new Container <ColorInformation>(ranges ?? new ColorInformation[0]));
        }
Ejemplo n.º 2
0
        public async Task <Container <ColorInformation> > Handle(DocumentColorParams request, CancellationToken cancellationToken)
        {
            var delegatedRequest = await _languageServer.SendRequestAsync(LanguageServerConstants.RazorProvideHtmlDocumentColorEndpoint, request).ConfigureAwait(false);

            var documentColors = await delegatedRequest.Returning <Container <ColorInformation>?>(cancellationToken).ConfigureAwait(false);

            if (documentColors is null)
            {
                return(EmptyDocumentColors);
            }

            // HTML and Razor documents have identical mapping locations. Because of this we can return the result as-is.

            return(documentColors);
        }
Ejemplo n.º 3
0
 public static Task <Container <ColorPresentation> > DocumentColor(this ILanguageClientDocument mediator, DocumentColorParams @params)
 {
     return(mediator.SendRequest <DocumentColorParams, Container <ColorPresentation> >(DocumentNames.DocumentColor, @params));
 }
 public override Task <Container <ColorInformation> > Handle(DocumentColorParams request, CancellationToken cancellationToken) => _handler.Invoke(request, cancellationToken);
 public abstract Task <Container <ColorInformation> > Handle(DocumentColorParams request, CancellationToken cancellationToken);
Ejemplo n.º 6
0
 public abstract RpcResult DocumentColor(DocumentColorParams args);
 public abstract Task <IReadOnlyList <ColorInformation> > ProvideHtmlDocumentColorAsync(DocumentColorParams documentColorParams, CancellationToken cancellationToken);
 public static Task <Container <ColorPresentation> > DocumentColor(this ILanguageClientDocument mediator, DocumentColorParams @params, CancellationToken cancellationToken = default)
 {
     return(mediator.SendRequest(@params, cancellationToken));
 }
Ejemplo n.º 9
0
        public override async Task <IReadOnlyList <ColorInformation> > ProvideHtmlDocumentColorAsync(DocumentColorParams documentColorParams, CancellationToken cancellationToken)
        {
            if (documentColorParams is null)
            {
                throw new ArgumentNullException(nameof(documentColorParams));
            }

            var htmlDoc = GetHtmlDocumentSnapshsot(documentColorParams.TextDocument.Uri);

            if (htmlDoc is null)
            {
                return(Array.Empty <ColorInformation>());
            }

            documentColorParams.TextDocument.Uri = htmlDoc.Uri;
            var htmlTextBuffer = htmlDoc.Snapshot.TextBuffer;
            var requests       = _requestInvoker.ReinvokeRequestOnMultipleServersAsync <DocumentColorParams, ColorInformation[]>(
                htmlTextBuffer,
                Methods.DocumentColorRequest.Name,
                SupportsDocumentColor,
                documentColorParams,
                cancellationToken).ConfigureAwait(false);

            var colorInformation = new List <ColorInformation>();

            await foreach (var response in requests)
            {
                if (response.Response is not null)
                {
                    colorInformation.AddRange(response.Response);
                }
            }

            return(colorInformation);
        }