From 81fc825f7e84a8ae500a3c1bf81f9aa37040b6f7 Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Tue, 25 Oct 2022 16:28:11 -0300 Subject: [PATCH 1/3] refactor: custom lsp requests --- client/src/commands/create_interface.ts | 7 ++--- client/src/commands/open_compiled.ts | 17 ++++-------- server/src/server.ts | 36 ++++++++++--------------- server/src/utils.ts | 2 +- 4 files changed, 24 insertions(+), 38 deletions(-) diff --git a/client/src/commands/create_interface.ts b/client/src/commands/create_interface.ts index 5f7a19207..4c020c740 100644 --- a/client/src/commands/create_interface.ts +++ b/client/src/commands/create_interface.ts @@ -1,4 +1,5 @@ import * as fs from "fs"; +import * as p from "vscode-languageserver-protocol"; import { LanguageClient, RequestType } from "vscode-languageclient/node"; import { window } from "vscode"; @@ -7,10 +8,10 @@ interface CreateInterfaceRequestParams { } export const createInterfaceRequest = new RequestType< - CreateInterfaceRequestParams, - string, + p.TextDocumentIdentifier, + p.TextDocumentIdentifier, void ->("rescript-vscode.create_interface"); +>("textDocument/createInterface"); export const createInterface = (client: LanguageClient) => { if (!client) { diff --git a/client/src/commands/open_compiled.ts b/client/src/commands/open_compiled.ts index 5ba7d0a8e..aca4d5624 100644 --- a/client/src/commands/open_compiled.ts +++ b/client/src/commands/open_compiled.ts @@ -1,20 +1,13 @@ import * as fs from "fs"; +import * as p from "vscode-languageserver-protocol"; import { window, Uri, ViewColumn } from "vscode"; import { LanguageClient, RequestType } from "vscode-languageclient/node"; -interface OpenCompiledFileRequestParams { - uri: string; -} - -interface OpenCompiledFileResponseParams { - uri: string; -} - let openCompiledFileRequest = new RequestType< - OpenCompiledFileRequestParams, - OpenCompiledFileResponseParams, + p.TextDocumentIdentifier, + p.TextDocumentIdentifier, void ->("rescript-vscode.open_compiled"); +>("textDocument/openCompiled"); export const openCompiled = (client: LanguageClient) => { if (!client) { @@ -36,7 +29,7 @@ export const openCompiled = (client: LanguageClient) => { uri: editor.document.uri.toString(), }) .then((response) => { - const document = Uri.file(response.uri); + const document = Uri.parse(response.uri); return window.showTextDocument(document, { viewColumn: ViewColumn.Beside, diff --git a/server/src/server.ts b/server/src/server.ts index 2fb305f59..5b3be2505 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -139,25 +139,17 @@ let findPlatformPath = (projectRootPath: p.DocumentUri | null) => { let findBscExeBinary = (projectRootPath: p.DocumentUri | null) => utils.findBinary(findPlatformPath(projectRootPath), c.bscExeName); -interface CreateInterfaceRequestParams { - uri: string; -} - let createInterfaceRequest = new v.RequestType< - CreateInterfaceRequestParams, - string, + p.TextDocumentIdentifier, + p.TextDocumentIdentifier, void ->("rescript-vscode.create_interface"); - -interface OpenCompiledFileParams { - uri: string; -} +>("textDocument/createInterface"); let openCompiledFileRequest = new v.RequestType< - OpenCompiledFileParams, - OpenCompiledFileParams, + p.TextDocumentIdentifier, + p.TextDocumentIdentifier, void ->("rescript-vscode.open_compiled"); +>("textDocument/openCompiled"); let getCurrentCompilerDiagnosticsForFile = ( fileUri: string @@ -859,7 +851,7 @@ let updateDiagnosticSyntax = (fileUri: string, fileContent: string) => { }; function createInterface(msg: p.RequestMessage): p.Message { - let params = msg.params as CreateInterfaceRequestParams; + let params = msg.params as p.TextDocumentIdentifier; let extension = path.extname(params.uri); let filePath = fileURLToPath(params.uri); let projDir = utils.findProjectRootOfFile(filePath); @@ -953,7 +945,9 @@ function createInterface(msg: p.RequestMessage): p.Message { let response: p.ResponseMessage = { jsonrpc: c.jsonrpcVersion, id: msg.id, - result: "Interface successfully created.", + result: { + uri: utils.pathToURI(resiPath) + }, }; return response; } catch (e) { @@ -970,7 +964,7 @@ function createInterface(msg: p.RequestMessage): p.Message { } function openCompiledFile(msg: p.RequestMessage): p.Message { - let params = msg.params as OpenCompiledFileParams; + let params = msg.params as p.TextDocumentIdentifier; let filePath = fileURLToPath(params.uri); let projDir = utils.findProjectRootOfFile(filePath); @@ -1014,14 +1008,12 @@ function openCompiledFile(msg: p.RequestMessage): p.Message { return response; } - let result: OpenCompiledFileParams = { - uri: compiledFilePath.result, - }; - let response: p.ResponseMessage = { jsonrpc: c.jsonrpcVersion, id: msg.id, - result, + result: { + uri: utils.pathToURI(compiledFilePath.result), + } }; return response; diff --git a/server/src/utils.ts b/server/src/utils.ts index 1535c7050..cb40d9b03 100644 --- a/server/src/utils.ts +++ b/server/src/utils.ts @@ -323,7 +323,7 @@ export let runBuildWatcherUsingValidBuildPath = ( */ // parser helpers -let pathToURI = (file: string) => { +export let pathToURI = (file: string) => { return process.platform === "win32" ? `file:\\\\\\${file}` : `file://${file}`; }; let parseFileAndRange = (fileAndRange: string) => { From b26b7570fb1325613f75df92f51694763d87eb5e Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Wed, 26 Oct 2022 16:59:58 -0300 Subject: [PATCH 2/3] remove unused interface --- client/src/commands/create_interface.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/client/src/commands/create_interface.ts b/client/src/commands/create_interface.ts index 4c020c740..49ff5b773 100644 --- a/client/src/commands/create_interface.ts +++ b/client/src/commands/create_interface.ts @@ -3,10 +3,6 @@ import * as p from "vscode-languageserver-protocol"; import { LanguageClient, RequestType } from "vscode-languageclient/node"; import { window } from "vscode"; -interface CreateInterfaceRequestParams { - uri: string; -} - export const createInterfaceRequest = new RequestType< p.TextDocumentIdentifier, p.TextDocumentIdentifier, From 42cb7180f371aa5f1a5e97889a69201e11217ceb Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Wed, 9 Nov 2022 11:24:14 -0300 Subject: [PATCH 3/3] update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef3772753..2348a1b0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ ## master +#### :nail_care: Polish + +- Rename custom LSP methods names. https://github.com/rescript-lang/rescript-vscode/pull/611 + ## v1.8.2 #### :rocket: New Feature