From fca68b5a7b2a29abf0b40e0ca1384ec05bb44969 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sun, 25 Apr 2021 15:17:13 +0200 Subject: [PATCH 1/3] Hook up command to go to references. --- CHANGELOG.md | 1 + package-lock.json | 2 -- server/src/server.ts | 33 ++++++++++++++++++++++++++------- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59e0fa91b..4d3e78325 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ Features: - `->` autocomplete for built-in list, array, string, option types. And for string and array literals. - Hover on labels in component functions with compiler version 9.1, and labels with type annotation. - Don't show file path on hover (cleaner). +- Show References. ## 1.0.8 diff --git a/package-lock.json b/package-lock.json index f45600fc7..f9b48f36b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "rescript-vscode", "version": "1.0.8", "hasInstallScript": true, "license": "MIT", @@ -73,7 +72,6 @@ "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", diff --git a/server/src/server.ts b/server/src/server.ts index 04996a0e1..90ae772ab 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -39,7 +39,7 @@ let projectsFiles: Map< // ^ caching AND states AND distributed system. Why does LSP has to be stupid like this // will be properly defined later depending on the mode (stdio/node-rpc) -let send: (msg: m.Message) => void = (_) => { }; +let send: (msg: m.Message) => void = (_) => {}; let sendUpdatedDiagnostics = () => { projectsFiles.forEach(({ filesWithDiagnostics }, projectRootPath) => { @@ -296,6 +296,7 @@ function onMessage(msg: m.Message) { documentFormattingProvider: true, hoverProvider: true, definitionProvider: true, + referencesProvider: true, completionProvider: { triggerCharacters: [".", ">", "@", "~"] }, }, }; @@ -375,6 +376,24 @@ function onMessage(msg: m.Message) { // error: code and message set in case an exception happens during the definition request. }; send(definitionResponse); + } else if (msg.method === p.ReferencesRequest.method) { + // https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_references + let result: Location | null = utils.runAnalysisAfterSanityCheck( + msg, + (filePath) => [ + "references", + filePath, + msg.params.position.line, + msg.params.position.character, + ] + ); + let definitionResponse: m.ResponseMessage = { + jsonrpc: c.jsonrpcVersion, + id: msg.id, + result, + // error: code and message set in case an exception happens during the definition request. + }; + send(definitionResponse); } else if (msg.method === p.CompletionRequest.method) { let code = getOpenedFileContent(msg.params.textDocument.uri); let tmpname = utils.createFileInTempDir(); @@ -382,12 +401,12 @@ function onMessage(msg: m.Message) { let result: | CompletionItem[] | null = utils.runAnalysisAfterSanityCheck(msg, (filePath) => [ - "complete", - filePath, - msg.params.position.line, - msg.params.position.character, - tmpname, - ]); + "complete", + filePath, + msg.params.position.line, + msg.params.position.character, + tmpname, + ]); fs.unlink(tmpname, () => null); let completionResponse: m.ResponseMessage = { jsonrpc: c.jsonrpcVersion, From 931ea9d2d5bfa2ca88c6cce0509531aa71a09d4c Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sun, 25 Apr 2021 15:27:23 +0200 Subject: [PATCH 2/3] Type of result for definition command. --- server/src/server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/server.ts b/server/src/server.ts index 90ae772ab..64107c563 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -360,7 +360,7 @@ function onMessage(msg: m.Message) { send(hoverResponse); } else if (msg.method === p.DefinitionRequest.method) { // https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_definition - let result: Location | null = utils.runAnalysisAfterSanityCheck( + let result: Location[] | null = utils.runAnalysisAfterSanityCheck( msg, (filePath) => [ "definition", From d8a66197109b3122f278db2108baf5a7dbe7e767 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sun, 25 Apr 2021 15:32:39 +0200 Subject: [PATCH 3/3] revert package.lock --- package-lock.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package-lock.json b/package-lock.json index f9b48f36b..f45600fc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "rescript-vscode", "version": "1.0.8", "hasInstallScript": true, "license": "MIT", @@ -72,6 +73,7 @@ "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", + "fsevents": "~2.1.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1",