提交 8db0fe8c 编写于 作者: D David Wengier

More clean up for TypeScriptHandlerShim

上级 8edcedb1
......@@ -63,8 +63,7 @@ public Task<LanguageServer.Protocol.CompletionItem[]> HandleAsync(object input,
// However, this works through liveshare on the LSP client, but not the LSP extension.
// see https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1107682 for tracking.
var request = ((JObject)input).ToObject<CompletionParams>(s_jsonSerializer);
var textDocument = GetTextDocumentIdentifier(request);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(request, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(request, context, cancellationToken);
}
}
......@@ -80,8 +79,7 @@ public TypeScriptCompletionResolverHandlerShim(ILspSolutionProvider solutionProv
public Task<LanguageServer.Protocol.CompletionItem> HandleAsync(LanguageServer.Protocol.CompletionItem param, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var textDocument = GetTextDocumentIdentifier(param);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(param, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(param, context, cancellationToken);
}
}
......@@ -97,8 +95,7 @@ public TypeScriptDocumentHighlightHandlerShim(ILspSolutionProvider solutionProvi
public Task<DocumentHighlight[]> HandleAsync(TextDocumentPositionParams param, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var textDocument = GetTextDocumentIdentifier(param);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(param, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(param, context, cancellationToken);
}
}
......@@ -121,8 +118,7 @@ public async Task<SymbolInformation[]> HandleAsync(DocumentSymbolParams param, R
clientCapabilities.TextDocument.DocumentSymbol.HierarchicalDocumentSymbolSupport = false;
}
var textDocument = GetTextDocumentIdentifier(param);
var context = SolutionProvider.CreateRequestContext(textDocument, clientCapabilities);
var context = this.CreateRequestContext(param, SolutionProvider, clientCapabilities);
var response = await base.HandleRequestAsync(param, context, cancellationToken).ConfigureAwait(false);
// Since hierarchicalSupport will never be true, it is safe to cast the response to SymbolInformation[]
......@@ -142,8 +138,7 @@ public TypeScriptFormatDocumentHandlerShim(ILspSolutionProvider solutionProvider
public Task<TextEdit[]> HandleAsync(DocumentFormattingParams request, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var textDocument = GetTextDocumentIdentifier(request);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(request, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(request, context, cancellationToken);
}
......@@ -167,8 +162,7 @@ public TypeScriptFormatDocumentRangeHandlerShim(ILspSolutionProvider solutionPro
public Task<TextEdit[]> HandleAsync(DocumentRangeFormattingParams request, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var textDocument = GetTextDocumentIdentifier(request);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(request, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(request, context, cancellationToken);
}
......@@ -192,8 +186,7 @@ public TypeScriptFormatDocumentOnTypeHandlerShim(ILspSolutionProvider solutionPr
public Task<TextEdit[]> HandleAsync(DocumentOnTypeFormattingParams request, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var textDocument = GetTextDocumentIdentifier(request);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(request, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(request, context, cancellationToken);
}
......@@ -224,8 +217,7 @@ public TypeScriptFindImplementationsHandlerShim(ILspSolutionProvider solutionPro
public Task<LanguageServer.Protocol.Location[]> HandleAsync(TextDocumentPositionParams request, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var textDocument = GetTextDocumentIdentifier(request);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(request, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(request, context, cancellationToken);
}
......@@ -252,7 +244,7 @@ internal class TypeScriptInitializeHandlerShim : InitializeHandler, ILspRequestH
public async Task<InitializeResult> HandleAsync(InitializeParams param, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var context = _solutionProvider.CreateRequestContext(null, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(param, _solutionProvider, requestContext.GetClientCapabilities());
var initializeResult = await base.HandleRequestAsync(param, context, cancellationToken).ConfigureAwait(false);
initializeResult.Capabilities.Experimental = new RoslynExperimentalCapabilities { SyntacticLspProvider = true };
return initializeResult;
......@@ -271,8 +263,7 @@ internal class TypeScriptSignatureHelpHandlerShim : SignatureHelpHandler, ILspRe
public Task<SignatureHelp> HandleAsync(TextDocumentPositionParams param, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var textDocument = GetTextDocumentIdentifier(param);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(param, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(param, context, cancellationToken);
}
}
......@@ -288,8 +279,7 @@ public TypeScriptRenameHandlerShim(ILspSolutionProvider solutionProvider) : base
public Task<WorkspaceEdit?> HandleAsync(RenameParams param, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var textDocument = GetTextDocumentIdentifier(param);
var context = SolutionProvider.CreateRequestContext(textDocument, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(param, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(param, context, cancellationToken);
}
}
......@@ -306,7 +296,7 @@ public TypeScriptWorkspaceSymbolsHandlerShim(ILspSolutionProvider solutionProvid
[JsonRpcMethod(UseSingleObjectParameterDeserialization = true)]
public Task<SymbolInformation[]> HandleAsync(WorkspaceSymbolParams request, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var context = SolutionProvider.CreateRequestContext(null, requestContext.GetClientCapabilities());
var context = this.CreateRequestContext(request, SolutionProvider, requestContext.GetClientCapabilities());
return base.HandleRequestAsync(request, context, cancellationToken);
}
}
......@@ -316,8 +306,10 @@ public Task<SymbolInformation[]> HandleAsync(WorkspaceSymbolParams request, Requ
/// </summary>
internal static class Extensions
{
public static LSP.RequestContext CreateRequestContext(this ILspSolutionProvider provider, TextDocumentIdentifier textDocument, ClientCapabilities clientCapabilities, string? clientName = null)
public static LSP.RequestContext CreateRequestContext<TRequest, TResponse>(this IRequestHandler<TRequest, TResponse> requestHandler, TRequest request, ILspSolutionProvider provider, ClientCapabilities clientCapabilities, string? clientName = null)
{
var textDocument = requestHandler.GetTextDocumentIdentifier(request);
var (document, solution) = provider.GetDocumentAndSolution(textDocument, clientName);
return new LSP.RequestContext(document, solution, null, clientCapabilities, clientName);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册