private void HandleSignatureHelpRequest(string id, string paramsJson) { if (id == null) { _sendToClient(JsonRpcHelper.CreateErrorResult(id, JsonRpcHelper.ErrorCode.InvalidRequest)); return; } Contracts.AssertValue(id); Contracts.AssertValue(paramsJson); if (!TryParseParams(paramsJson, out SignatureHelpParams signatureHelpParams)) { _sendToClient(JsonRpcHelper.CreateErrorResult(id, JsonRpcHelper.ErrorCode.ParseError)); return; } var documentUri = signatureHelpParams.TextDocument.Uri; var scope = _scopeFactory.GetOrCreateInstance(documentUri); var uri = new Uri(documentUri); var expression = HttpUtility.ParseQueryString(uri.Query).Get("expression"); if (expression == null) { _sendToClient(JsonRpcHelper.CreateErrorResult(id, JsonRpcHelper.ErrorCode.InvalidParams)); return; } var cursorPosition = GetPosition(expression, signatureHelpParams.Position.Line, signatureHelpParams.Position.Character); var result = scope.Suggest(expression, cursorPosition); _sendToClient(JsonRpcHelper.CreateSuccessResult(id, result.SignatureHelp)); }
private void HandleInitialFixupRequest(string id, string paramsJson) { if (id == null) { _sendToClient(JsonRpcHelper.CreateErrorResult(id, JsonRpcHelper.ErrorCode.InvalidRequest)); return; } Contracts.AssertValue(id); Contracts.AssertValue(paramsJson); if (!TryParseParams(paramsJson, out InitialFixupParams initialFixupParams)) { _sendToClient(JsonRpcHelper.CreateErrorResult(id, JsonRpcHelper.ErrorCode.ParseError)); return; } var documentUri = initialFixupParams.TextDocument.Uri; var scope = _scopeFactory.GetOrCreateInstance(documentUri); var expression = initialFixupParams.TextDocument.Text; var scopeDisplayName = scope as IPowerFxScopeDisplayName; if (scopeDisplayName != null) { expression = scopeDisplayName.TranslateToDisplayName(expression); } _sendToClient(JsonRpcHelper.CreateSuccessResult(id, new TextDocumentItem() { Uri = documentUri, Text = expression })); }
private void HandleCompletionRequest(string id, string paramsJson) { if (id == null) { _sendToClient(JsonRpcHelper.CreateErrorResult(id, JsonRpcHelper.ErrorCode.InvalidRequest)); return; } Contracts.AssertValue(id); Contracts.AssertValue(paramsJson); if (!TryParseParams(paramsJson, out CompletionParams completionParams)) { _sendToClient(JsonRpcHelper.CreateErrorResult(id, JsonRpcHelper.ErrorCode.ParseError)); return; } var documentUri = completionParams.TextDocument.Uri; var scope = _scopeFactory.GetOrCreateInstance(documentUri); var uri = new Uri(documentUri); var expression = HttpUtility.ParseQueryString(uri.Query).Get("expression"); if (expression == null) { _sendToClient(JsonRpcHelper.CreateErrorResult(id, JsonRpcHelper.ErrorCode.InvalidParams)); return; } var cursorPosition = GetPosition(expression, completionParams.Position.Line, completionParams.Position.Character); var result = scope.Suggest(expression, cursorPosition); var items = new List <CompletionItem>(); foreach (var item in result.Suggestions) { items.Add(new CompletionItem() { Label = item.DisplayText.Text, Detail = item.FunctionParameterDescription, Documentation = item.Definition, Kind = GetCompletionItemKind(item.Kind) }); } _sendToClient(JsonRpcHelper.CreateSuccessResult(id, new { items, isIncomplete = false })); }