diff --git a/server/src/RescriptEditorSupport.ts b/server/src/RescriptEditorSupport.ts index bf5d2d654..0259ff055 100644 --- a/server/src/RescriptEditorSupport.ts +++ b/server/src/RescriptEditorSupport.ts @@ -1,5 +1,6 @@ import { fileURLToPath } from "url"; import { RequestMessage } from "vscode-languageserver"; +import { CompletionItem } from "vscode-languageserver-protocol"; import * as utils from "./utils"; import * as path from "path"; import { execFileSync } from "child_process"; @@ -60,11 +61,11 @@ export function runDumpCommand(msg: RequestMessage): dumpCommandResult | null { } } -type completionCommandResult = [{ label: string }]; +// TODO: the result will never be null soon when the updated binary syncs export function runCompletionCommand( msg: RequestMessage, code: string -): completionCommandResult | null { +): CompletionItem[] | null { let executable = findExecutable(msg.params.textDocument.uri); if (executable == null) { return null; diff --git a/server/src/server.ts b/server/src/server.ts index c93d23426..d7b0093ed 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -385,22 +385,13 @@ function onMessage(msg: m.Message) { send(emptyDefinitionResponse); } } else if (msg.method === p.CompletionRequest.method) { - let emptyCompletionResponse: m.ResponseMessage = { + let code = getOpenedFileContent(msg.params.textDocument.uri); + let completionResponse: m.ResponseMessage = { jsonrpc: c.jsonrpcVersion, id: msg.id, - result: null, + result: runCompletionCommand(msg, code), }; - let code = getOpenedFileContent(msg.params.textDocument.uri); - let result = runCompletionCommand(msg, code); - if (result === null) { - send(emptyCompletionResponse); - } else { - let definitionResponse: m.ResponseMessage = { - ...emptyCompletionResponse, - result: result, - }; - send(definitionResponse); - } + send(completionResponse); } else if (msg.method === p.DocumentFormattingRequest.method) { // technically, a formatting failure should reply with the error. Sadly // the LSP alert box for these error replies sucks (e.g. doesn't actually