コード例 #1
0
 public IEnumerable <IHandlerPostProcessor> FindPostProcessor(ILspHandlerDescriptor descriptor, object parameters, object response)
 {
     if (descriptor.Method == DocumentNames.CodeLens || descriptor.Method == DocumentNames.Completion)
     {
         _logger.LogTrace("Using handler {Method}:{Handler}",
                          descriptor.Method,
                          descriptor.Handler.GetType().FullName);
         yield return(this);
     }
 }
コード例 #2
0
 public IEnumerable <IHandlerPreProcessor> FindPreProcessor(ILspHandlerDescriptor descriptor, object parameters)
 {
     if (parameters is ICanBeResolved canBeResolved)
     {
         _logger.LogTrace("Using handler {Method}:{Handler}",
                          descriptor.Method,
                          descriptor.Handler.GetType().FullName);
         yield return(this);
     }
 }
コード例 #3
0
 public bool AllowsDynamicRegistration(ILspHandlerDescriptor descriptor)
 {
     if (descriptor.HasCapability && _supports.TryGetValue(descriptor.CapabilityType, out var capability))
     {
         if (capability is DynamicCapability dc)
         {
             return(dc.DynamicRegistration);
         }
     }
     return(false);
 }
コード例 #4
0
        public void SetCapability(ILspHandlerDescriptor descriptor, IJsonRpcHandler handler)
        {
            if (!descriptor.HasCapability)
            {
                return;
            }

            if (_supports.TryGetValue(descriptor.CapabilityType, out var capability))
            {
                SetCapabilityInnerMethod
                .MakeGenericMethod(descriptor.CapabilityType)
                .Invoke(null, new[] { handler, capability });
            }
        }
コード例 #5
0
        public object Process(ILspHandlerDescriptor descriptor, object parameters)
        {
            if (parameters is ICanBeResolved canBeResolved)
            {
                string handlerType = null;
                if (canBeResolved.Data != null && canBeResolved.Data.Type == JTokenType.Object)
                {
                    handlerType = canBeResolved.Data?[PrivateHandlerTypeName]?.ToString();
                }

                if (!string.IsNullOrWhiteSpace(handlerType))
                {
                    canBeResolved.Data = canBeResolved.Data["data"];
                }
            }

            return(parameters);
        }
コード例 #6
0
 public object Process(ILspHandlerDescriptor descriptor, object parameters, object response)
 {
     // Only pin the handler type, if we know the source handler (codelens) is also the resolver.
     if (response is IEnumerable <ICanBeResolved> canBeResolveds &&
         descriptor.CanBeResolvedHandlerType.GetTypeInfo().IsAssignableFrom(descriptor.Handler.GetType()))
     {
         _logger.LogTrace("Updating Resolve items with wrapped data for {Method}:{Handler}",
                          descriptor.Method,
                          descriptor.Handler.GetType().FullName);
         foreach (var item in canBeResolveds)
         {
             // Originally we were going to change Data to be a JObject instead of JToken
             // This allows us to leave data alone by simply wrapping it
             // Since we're always going to intercept these items, we can control this.
             var data = new JObject();
             data["data"] = item.Data;
             data[PrivateHandlerTypeName] = descriptor.Handler.GetType().FullName;
             item.Data = data;
         }
     }
     return(response);
 }
 public ResolveCommandPipeline(IRequestContext context, ILogger <ResolveCommandPipeline <TRequest, TResponse> > logger)
 {
     _logger     = logger;
     _descriptor = context.Descriptor as ILspHandlerDescriptor;
 }
コード例 #8
0
 public object Process(ILspHandlerDescriptor descriptor, object parameters, object response)
 {
     _descriptor = descriptor;
     return(response);
 }
コード例 #9
0
 // ReSharper disable once UnusedParameter.Local
 // ReSharper disable once UnusedMember.Local
 public bool AllowsDynamicRegistration(ILspHandlerDescriptor descriptor) => false;
 public void SetCapability(ILspHandlerDescriptor descriptor, IJsonRpcHandler handler)
 {
 }
コード例 #11
0
 public static IJsonRpcHandler InitializeHandler(ILspHandlerDescriptor descriptor, ISupportedCapabilities supportedCapabilities, IJsonRpcHandler handler)
 {
     supportedCapabilities.SetCapability(descriptor, handler);
     return(handler);
 }
コード例 #12
0
 // ReSharper disable once UnusedParameter.Local
 // ReSharper disable once UnusedMember.Local
 public bool AllowsDynamicRegistration(ILspHandlerDescriptor descriptor)
 {
     return(false);
 }