99
1010namespace OmniSharp . Extensions . LanguageServer . Server . Matchers
1111{
12- public class ResolveCommandMatcher : IHandlerMatcher , IHandlerPostProcessorMatcher , IHandlerPostProcessor
12+ public class ResolveCommandMatcher : IHandlerMatcher , IHandlerPostProcessorMatcher , IHandlerPreProcessor , IHandlerPostProcessor
1313 {
1414 private readonly ILogger _logger ;
1515 internal static string PrivateHandlerTypeName = "$$___handlerType___$$" ;
@@ -67,7 +67,6 @@ public IEnumerable<ILspHandlerDescriptor> FindHandler(object parameters, IEnumer
6767 descriptor . Handler . GetType ( ) . FullName ) ;
6868 if ( descriptor . Handler . GetType ( ) . FullName == handlerType || descriptor . HandlerType . FullName == handlerType )
6969 {
70- canBeResolved . Data = canBeResolved . Data [ "data" ] ;
7170 yield return descriptor ;
7271 }
7372 }
@@ -91,6 +90,23 @@ public IEnumerable<IHandlerPostProcessor> FindPostProcessor(ILspHandlerDescripto
9190 }
9291 }
9392
93+ public object Process ( ILspHandlerDescriptor descriptor , object parameters )
94+ {
95+ if ( parameters is ICanBeResolved canBeResolved )
96+ {
97+ string handlerType = null ;
98+ if ( canBeResolved . Data != null && canBeResolved . Data . Type == JTokenType . Object )
99+ handlerType = canBeResolved . Data ? [ PrivateHandlerTypeName ] ? . ToString ( ) ;
100+
101+ if ( ! string . IsNullOrWhiteSpace ( handlerType ) )
102+ {
103+ canBeResolved . Data = canBeResolved . Data [ "data" ] ;
104+ }
105+ }
106+
107+ return parameters ;
108+ }
109+
94110 public object Process ( ILspHandlerDescriptor descriptor , object parameters , object response )
95111 {
96112 // Only pin the handler type, if we know the source handler (codelens) is also the resolver.
0 commit comments