未验证 提交 77ef532f 编写于 作者: D David 提交者: GitHub

Merge pull request #45068 from dibarbet/fix_deserialization_resolve

Only send relevant completion resolve parameters
......@@ -201,7 +201,8 @@ protected static LSP.VSCompletionItem CreateCompletionItem(string text, LSP.Comp
Data = new CompletionResolveData()
{
DisplayText = text,
CompletionParams = requestParameters
TextDocument = requestParameters.TextDocument,
Position = requestParameters.Position
},
Icon = tags != null ? new ImageElement(tags.ToImmutableArray().GetFirstGlyph().GetImageId()) : null
};
......
......@@ -90,7 +90,7 @@ static TCompletionItem CreateCompletionItem<TCompletionItem>(LSP.CompletionParam
SortText = item.SortText,
FilterText = item.FilterText,
Kind = GetCompletionKind(item.Tags),
Data = new CompletionResolveData { CompletionParams = request, DisplayText = item.DisplayText }
Data = new CompletionResolveData { TextDocument = request.TextDocument, Position = request.Position, DisplayText = item.DisplayText }
};
}
......
......@@ -8,7 +8,10 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler
{
internal class CompletionResolveData
{
public CompletionParams CompletionParams { get; set; }
public TextDocumentIdentifier TextDocument { get; set; }
public Position Position { get; set; }
public string DisplayText { get; set; }
}
}
......@@ -44,15 +44,13 @@ public CompletionResolveHandler(ILspSolutionProvider solutionProvider) : base(so
data = ((JToken)completionItem.Data).ToObject<CompletionResolveData>();
}
var request = data.CompletionParams;
var document = SolutionProvider.GetDocument(request.TextDocument, clientName);
var document = SolutionProvider.GetDocument(data.TextDocument, clientName);
if (document == null)
{
return completionItem;
}
var position = await document.GetPositionFromLinePositionAsync(ProtocolConversions.PositionToLinePosition(request.Position), cancellationToken).ConfigureAwait(false);
var position = await document.GetPositionFromLinePositionAsync(ProtocolConversions.PositionToLinePosition(data.Position), cancellationToken).ConfigureAwait(false);
var completionService = document.Project.LanguageServices.GetRequiredService<CompletionService>();
var list = await completionService.GetCompletionsAsync(document, position, cancellationToken: cancellationToken).ConfigureAwait(false);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册