diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-03-11 10:51:07 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2020-03-11 10:51:07 +0000 |
commit | c48dcf74118b6e0df747f036a9b66701037f3fc7 (patch) | |
tree | bc047c31d43d2e16428c56bf7cdf305f4a30fa66 /editors/code | |
parent | 7b323b45a15809a20052f13d5a8f073aaa274a86 (diff) | |
parent | 6ea7c319154f9ec10721f4041afc9d07d6b2476b (diff) |
Merge #3549
3549: Implement env! macro r=matklad a=edwin0cheng
This PR implements `env!` macro by adding following things:
1. Added `additional_outdirs` settings in vscode. (naming to be bikeshed)
2. Added `ExternSourceId` which is a wrapping for SourceRootId but only used in extern sources. It is because `OUT_DIR` is not belonged to any crate and we have to access it behind an `AstDatabase`.
3. This PR does not implement the `OUT_DIR` parsing from `cargo check`. I don't have general design about this, @kiljacken could we reuse some cargo watch code for that ?
~~Block on [#3536]~~
PS: After this PR , we (kind of) completed the `include!(concat!(env!('OUT_DIR'), "foo.rs")` macro call combo. [Exodia Obliterate!](https://www.youtube.com/watch?v=RfqNH3FoGi0)
Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'editors/code')
-rw-r--r-- | editors/code/package.json | 5 | ||||
-rw-r--r-- | editors/code/src/client.ts | 1 | ||||
-rw-r--r-- | editors/code/src/config.ts | 1 |
3 files changed, 7 insertions, 0 deletions
diff --git a/editors/code/package.json b/editors/code/package.json index 512885454..1fe8e9f8a 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -224,6 +224,11 @@ | |||
224 | "default": true, | 224 | "default": true, |
225 | "description": "Whether to ask for permission before downloading any files from the Internet" | 225 | "description": "Whether to ask for permission before downloading any files from the Internet" |
226 | }, | 226 | }, |
227 | "rust-analyzer.additionalOutDirs": { | ||
228 | "type": "object", | ||
229 | "default": {}, | ||
230 | "markdownDescription": "Fine grained controls for OUT_DIR `env!(\"OUT_DIR\")` variable. e.g. `{\"foo\":\"/path/to/foo\"}`, " | ||
231 | }, | ||
227 | "rust-analyzer.serverPath": { | 232 | "rust-analyzer.serverPath": { |
228 | "type": [ | 233 | "type": [ |
229 | "null", | 234 | "null", |
diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index 540f7c9ea..6ce3b9235 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts | |||
@@ -37,6 +37,7 @@ export async function createClient(config: Config, serverPath: string): Promise< | |||
37 | excludeGlobs: config.excludeGlobs, | 37 | excludeGlobs: config.excludeGlobs, |
38 | useClientWatching: config.useClientWatching, | 38 | useClientWatching: config.useClientWatching, |
39 | featureFlags: config.featureFlags, | 39 | featureFlags: config.featureFlags, |
40 | additionalOutDirs: config.additionalOutDirs, | ||
40 | withSysroot: config.withSysroot, | 41 | withSysroot: config.withSysroot, |
41 | cargoFeatures: config.cargoFeatures, | 42 | cargoFeatures: config.cargoFeatures, |
42 | rustfmtArgs: config.rustfmtArgs, | 43 | rustfmtArgs: config.rustfmtArgs, |
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index b72206d3c..3ade7e900 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts | |||
@@ -154,6 +154,7 @@ export class Config { | |||
154 | get excludeGlobs() { return this.cfg.get("excludeGlobs") as string[]; } | 154 | get excludeGlobs() { return this.cfg.get("excludeGlobs") as string[]; } |
155 | get useClientWatching() { return this.cfg.get("useClientWatching") as boolean; } | 155 | get useClientWatching() { return this.cfg.get("useClientWatching") as boolean; } |
156 | get featureFlags() { return this.cfg.get("featureFlags") as Record<string, boolean>; } | 156 | get featureFlags() { return this.cfg.get("featureFlags") as Record<string, boolean>; } |
157 | get additionalOutDirs() { return this.cfg.get("additionalOutDirs") as Record<string, string>; } | ||
157 | get rustfmtArgs() { return this.cfg.get("rustfmtArgs") as string[]; } | 158 | get rustfmtArgs() { return this.cfg.get("rustfmtArgs") as string[]; } |
158 | 159 | ||
159 | get cargoWatchOptions(): CargoWatchOptions { | 160 | get cargoWatchOptions(): CargoWatchOptions { |