From a4b0ce07f80773146c72004befc77be4e576c677 Mon Sep 17 00:00:00 2001 From: Edwin Cheng Date: Mon, 13 Apr 2020 00:05:33 +0800 Subject: Add config for proc_macro --- crates/rust-analyzer/src/cli/load_cargo.rs | 2 +- crates/rust-analyzer/src/config.rs | 8 ++++++++ crates/rust-analyzer/src/world.rs | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) (limited to 'crates') diff --git a/crates/rust-analyzer/src/cli/load_cargo.rs b/crates/rust-analyzer/src/cli/load_cargo.rs index f70d92c7f..dfda488fb 100644 --- a/crates/rust-analyzer/src/cli/load_cargo.rs +++ b/crates/rust-analyzer/src/cli/load_cargo.rs @@ -70,7 +70,7 @@ pub(crate) fn load_cargo( }) .collect::>(); - let proc_macro_client = if with_proc_macro { + let proc_macro_client = if !with_proc_macro { ProcMacroClient::dummy() } else { ProcMacroClient::extern_process(Path::new("ra_proc_macro_srv")).unwrap() diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 4734df16a..46a89b37e 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -131,6 +131,14 @@ impl Config { set(value, "/cargo/allFeatures", &mut self.cargo.all_features); set(value, "/cargo/features", &mut self.cargo.features); set(value, "/cargo/loadOutDirsFromCheck", &mut self.cargo.load_out_dirs_from_check); + + match get::(value, "/procMacro/enabled") { + Some(true) => { + set(value, "/procMacro/serverPath", &mut self.proc_macro_srv); + } + _ => self.proc_macro_srv = None, + } + match get::>(value, "/rustfmt/overrideCommand") { Some(mut args) if !args.is_empty() => { let command = args.remove(0); diff --git a/crates/rust-analyzer/src/world.rs b/crates/rust-analyzer/src/world.rs index 6c42e1d76..b7142e83b 100644 --- a/crates/rust-analyzer/src/world.rs +++ b/crates/rust-analyzer/src/world.rs @@ -64,6 +64,7 @@ pub struct WorldState { pub latest_requests: Arc>, pub flycheck: Option, pub diagnostics: DiagnosticCollection, + pub proc_macro_client: ProcMacroClient, } /// An immutable snapshot of the world's state at a point in time. @@ -192,6 +193,7 @@ impl WorldState { latest_requests: Default::default(), flycheck, diagnostics: Default::default(), + proc_macro_client, } } -- cgit v1.2.3