From 900f4a3f11e39895c2333e11f814004e3840aaf7 Mon Sep 17 00:00:00 2001 From: Green-Avocado Date: Tue, 30 Nov 2021 15:54:29 -0800 Subject: [PATCH 1/5] read custom project config from rust-analyzer.json --- lib/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/index.js b/lib/index.js index fcb59c2..8473015 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,6 @@ const cp = require("child_process") const os = require("os") +const fs = require("fs") const path = require("path") const { CompositeDisposable, Disposable } = require("atom") const { AutoLanguageClient } = require("atom-languageclient") @@ -450,6 +451,11 @@ class RustLanguageClient extends AutoLanguageClient { params.initializationOptions = params.initializationOptions || {} // Don't build straight after initialize, wait for first `workspace/didChangeConfiguration` params.initializationOptions.omitInitBuild = true + + let rlsConfigPath = path.join(projectPath, "rust-analyzer.json") + let options = fs.readFileSync(rlsConfigPath) + Object.assign(params.initializationOptions, JSON.parse(options)) + return params } From 793ba06e30375d7037408e3f67cd806c76a6ad23 Mon Sep 17 00:00:00 2001 From: Green-Avocado Date: Tue, 30 Nov 2021 16:04:45 -0800 Subject: [PATCH 2/5] catch exceptions reading config file --- lib/index.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/index.js b/lib/index.js index 8473015..4599249 100644 --- a/lib/index.js +++ b/lib/index.js @@ -452,9 +452,13 @@ class RustLanguageClient extends AutoLanguageClient { // Don't build straight after initialize, wait for first `workspace/didChangeConfiguration` params.initializationOptions.omitInitBuild = true - let rlsConfigPath = path.join(projectPath, "rust-analyzer.json") - let options = fs.readFileSync(rlsConfigPath) - Object.assign(params.initializationOptions, JSON.parse(options)) + try { + let rlsConfigPath = path.join(projectPath, "rust-analyzer.json") + let options = fs.readFileSync(rlsConfigPath) + Object.assign(params.initializationOptions, JSON.parse(options)) + } catch(e) { + console.warn("Could not read config file") + } return params } From 2bfe61160c9ef9177156fbae23e2bd9faa1ce39d Mon Sep 17 00:00:00 2001 From: Green-Avocado Date: Tue, 30 Nov 2021 19:25:21 -0800 Subject: [PATCH 3/5] check that config file exists before reading --- lib/index.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/index.js b/lib/index.js index 4599249..740f4ae 100644 --- a/lib/index.js +++ b/lib/index.js @@ -452,12 +452,15 @@ class RustLanguageClient extends AutoLanguageClient { // Don't build straight after initialize, wait for first `workspace/didChangeConfiguration` params.initializationOptions.omitInitBuild = true - try { - let rlsConfigPath = path.join(projectPath, "rust-analyzer.json") - let options = fs.readFileSync(rlsConfigPath) - Object.assign(params.initializationOptions, JSON.parse(options)) - } catch(e) { - console.warn("Could not read config file") + let rlsConfigPath = path.join(projectPath, "rust-analyzer.json") + + if (fs.existsSync(rlsConfigPath)) { + try { + let options = fs.readFileSync(rlsConfigPath) + Object.assign(params.initializationOptions, JSON.parse(options)) + } catch(e) { + console.warn("Error reading config file\n", e) + } } return params From a48863a9d3777298268fbb1c38afee9d163713e5 Mon Sep 17 00:00:00 2001 From: Green-Avocado Date: Tue, 30 Nov 2021 19:30:28 -0800 Subject: [PATCH 4/5] change reading config log level from warn to error --- lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index 740f4ae..096abd2 100644 --- a/lib/index.js +++ b/lib/index.js @@ -459,7 +459,7 @@ class RustLanguageClient extends AutoLanguageClient { let options = fs.readFileSync(rlsConfigPath) Object.assign(params.initializationOptions, JSON.parse(options)) } catch(e) { - console.warn("Error reading config file\n", e) + console.error("Error reading config file\n", e) } } From 886940743072d0fd966239ce45e20884c8f2bada Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Tue, 30 Nov 2021 22:24:30 -0600 Subject: [PATCH 5/5] fix: use atom.notifications.addError --- lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index 096abd2..51dd02b 100644 --- a/lib/index.js +++ b/lib/index.js @@ -459,7 +459,7 @@ class RustLanguageClient extends AutoLanguageClient { let options = fs.readFileSync(rlsConfigPath) Object.assign(params.initializationOptions, JSON.parse(options)) } catch(e) { - console.error("Error reading config file\n", e) + atom.notifications.addError("Error reading rust-analyzer config file\n", e) } }