Skip to content

Commit 3e2076e

Browse files
authored
custom LSP requests (#611)
* refactor: custom lsp requests * remove unused interface * update changelog
1 parent 86e4808 commit 3e2076e

File tree

5 files changed

+28
-42
lines changed

5 files changed

+28
-42
lines changed

Diff for: CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
1313
## master
1414

15+
#### :nail_care: Polish
16+
17+
- Rename custom LSP methods names. https://github.com/rescript-lang/rescript-vscode/pull/611
18+
1519
#### :bug: Bug Fix
1620

1721
- Fix issue where `-open Some.Path` in `"bsc-flags"` would sometimes be treated differently from `open Some.Path` locally in a file https://github.com/rescript-lang/rescript-vscode/pull/616

Diff for: client/src/commands/create_interface.ts

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import * as fs from "fs";
2+
import * as p from "vscode-languageserver-protocol";
23
import { LanguageClient, RequestType } from "vscode-languageclient/node";
34
import { window } from "vscode";
45

5-
interface CreateInterfaceRequestParams {
6-
uri: string;
7-
}
8-
96
export const createInterfaceRequest = new RequestType<
10-
CreateInterfaceRequestParams,
11-
string,
7+
p.TextDocumentIdentifier,
8+
p.TextDocumentIdentifier,
129
void
13-
>("rescript-vscode.create_interface");
10+
>("textDocument/createInterface");
1411

1512
export const createInterface = (client: LanguageClient) => {
1613
if (!client) {

Diff for: client/src/commands/open_compiled.ts

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
11
import * as fs from "fs";
2+
import * as p from "vscode-languageserver-protocol";
23
import { window, Uri, ViewColumn } from "vscode";
34
import { LanguageClient, RequestType } from "vscode-languageclient/node";
45

5-
interface OpenCompiledFileRequestParams {
6-
uri: string;
7-
}
8-
9-
interface OpenCompiledFileResponseParams {
10-
uri: string;
11-
}
12-
136
let openCompiledFileRequest = new RequestType<
14-
OpenCompiledFileRequestParams,
15-
OpenCompiledFileResponseParams,
7+
p.TextDocumentIdentifier,
8+
p.TextDocumentIdentifier,
169
void
17-
>("rescript-vscode.open_compiled");
10+
>("textDocument/openCompiled");
1811

1912
export const openCompiled = (client: LanguageClient) => {
2013
if (!client) {
@@ -36,7 +29,7 @@ export const openCompiled = (client: LanguageClient) => {
3629
uri: editor.document.uri.toString(),
3730
})
3831
.then((response) => {
39-
const document = Uri.file(response.uri);
32+
const document = Uri.parse(response.uri);
4033

4134
return window.showTextDocument(document, {
4235
viewColumn: ViewColumn.Beside,

Diff for: server/src/server.ts

+14-22
Original file line numberDiff line numberDiff line change
@@ -139,25 +139,17 @@ let findPlatformPath = (projectRootPath: p.DocumentUri | null) => {
139139
let findBscExeBinary = (projectRootPath: p.DocumentUri | null) =>
140140
utils.findBinary(findPlatformPath(projectRootPath), c.bscExeName);
141141

142-
interface CreateInterfaceRequestParams {
143-
uri: string;
144-
}
145-
146142
let createInterfaceRequest = new v.RequestType<
147-
CreateInterfaceRequestParams,
148-
string,
143+
p.TextDocumentIdentifier,
144+
p.TextDocumentIdentifier,
149145
void
150-
>("rescript-vscode.create_interface");
151-
152-
interface OpenCompiledFileParams {
153-
uri: string;
154-
}
146+
>("textDocument/createInterface");
155147

156148
let openCompiledFileRequest = new v.RequestType<
157-
OpenCompiledFileParams,
158-
OpenCompiledFileParams,
149+
p.TextDocumentIdentifier,
150+
p.TextDocumentIdentifier,
159151
void
160-
>("rescript-vscode.open_compiled");
152+
>("textDocument/openCompiled");
161153

162154
let getCurrentCompilerDiagnosticsForFile = (
163155
fileUri: string
@@ -859,7 +851,7 @@ let updateDiagnosticSyntax = (fileUri: string, fileContent: string) => {
859851
};
860852

861853
function createInterface(msg: p.RequestMessage): p.Message {
862-
let params = msg.params as CreateInterfaceRequestParams;
854+
let params = msg.params as p.TextDocumentIdentifier;
863855
let extension = path.extname(params.uri);
864856
let filePath = fileURLToPath(params.uri);
865857
let projDir = utils.findProjectRootOfFile(filePath);
@@ -953,7 +945,9 @@ function createInterface(msg: p.RequestMessage): p.Message {
953945
let response: p.ResponseMessage = {
954946
jsonrpc: c.jsonrpcVersion,
955947
id: msg.id,
956-
result: "Interface successfully created.",
948+
result: {
949+
uri: utils.pathToURI(resiPath)
950+
},
957951
};
958952
return response;
959953
} catch (e) {
@@ -970,7 +964,7 @@ function createInterface(msg: p.RequestMessage): p.Message {
970964
}
971965

972966
function openCompiledFile(msg: p.RequestMessage): p.Message {
973-
let params = msg.params as OpenCompiledFileParams;
967+
let params = msg.params as p.TextDocumentIdentifier;
974968
let filePath = fileURLToPath(params.uri);
975969
let projDir = utils.findProjectRootOfFile(filePath);
976970

@@ -1014,14 +1008,12 @@ function openCompiledFile(msg: p.RequestMessage): p.Message {
10141008
return response;
10151009
}
10161010

1017-
let result: OpenCompiledFileParams = {
1018-
uri: compiledFilePath.result,
1019-
};
1020-
10211011
let response: p.ResponseMessage = {
10221012
jsonrpc: c.jsonrpcVersion,
10231013
id: msg.id,
1024-
result,
1014+
result: {
1015+
uri: utils.pathToURI(compiledFilePath.result),
1016+
}
10251017
};
10261018

10271019
return response;

Diff for: server/src/utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ export let runBuildWatcherUsingValidBuildPath = (
323323
*/
324324

325325
// parser helpers
326-
let pathToURI = (file: string) => {
326+
export let pathToURI = (file: string) => {
327327
return process.platform === "win32" ? `file:\\\\\\${file}` : `file://${file}`;
328328
};
329329
let parseFileAndRange = (fileAndRange: string) => {

0 commit comments

Comments
 (0)