diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-10-17 19:44:59 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-10-17 19:44:59 +0100 |
commit | b060d8446767c8071197bbd49e700867722b564e (patch) | |
tree | b55fba950d29f6bd041f26e78e3e56cefb649c31 | |
parent | e8a7a7b19aab195d2b37a0b13abca4e006e9bbd5 (diff) | |
parent | f4d50de2758b38208745d9594ccbcf0227d49d5b (diff) |
Merge #2029
2029: Adds config option for cargo-watch `--ignore` flag r=matklad a=jrvidal
I presume this is a nice-to-have to avoid spurious watching.
* I don't know much about Windows, so I'm not sure if the extra args need some special escaping.
* I suppose we could reuse and/or integrate with `rust-analyzer.excludeGlobs`. I find this simpler, but I'm open to suggestions.
Co-authored-by: Roberto Vidal <[email protected]>
-rw-r--r-- | docs/user/README.md | 1 | ||||
-rw-r--r-- | editors/code/package.json | 5 | ||||
-rw-r--r-- | editors/code/src/commands/cargo_watch.ts | 7 | ||||
-rw-r--r-- | editors/code/src/config.ts | 11 |
4 files changed, 22 insertions, 2 deletions
diff --git a/docs/user/README.md b/docs/user/README.md index 036b51d58..5b7502132 100644 --- a/docs/user/README.md +++ b/docs/user/README.md | |||
@@ -79,6 +79,7 @@ See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) f | |||
79 | * `rust-analyzer.cargo-watch.command`: `cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` ) | 79 | * `rust-analyzer.cargo-watch.command`: `cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` ) |
80 | * `rust-analyzer.cargo-watch.arguments`: cargo-watch check arguments. | 80 | * `rust-analyzer.cargo-watch.arguments`: cargo-watch check arguments. |
81 | (e.g: `--features="shumway,pdf"` will run as `cargo watch -x "check --features="shumway,pdf""` ) | 81 | (e.g: `--features="shumway,pdf"` will run as `cargo watch -x "check --features="shumway,pdf""` ) |
82 | * `rust-analyzer.cargo-watch.ignore`: list of patterns for cargo-watch to ignore (will be passed as `--ignore`) | ||
82 | * `rust-analyzer.trace.server`: enables internal logging | 83 | * `rust-analyzer.trace.server`: enables internal logging |
83 | * `rust-analyzer.trace.cargo-watch`: enables cargo-watch logging | 84 | * `rust-analyzer.trace.cargo-watch`: enables cargo-watch logging |
84 | * `RUST_SRC_PATH`: environment variable that overwrites the sysroot | 85 | * `RUST_SRC_PATH`: environment variable that overwrites the sysroot |
diff --git a/editors/code/package.json b/editors/code/package.json index 6649f5b73..5ae050110 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -224,6 +224,11 @@ | |||
224 | "description": "`cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )", | 224 | "description": "`cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )", |
225 | "default": "check" | 225 | "default": "check" |
226 | }, | 226 | }, |
227 | "rust-analyzer.cargo-watch.ignore": { | ||
228 | "type": "array", | ||
229 | "description": "A list of patterns for cargo-watch to ignore (will be passed as `--ignore`)", | ||
230 | "default": [] | ||
231 | }, | ||
227 | "rust-analyzer.showWorkspaceLoadedNotification": { | 232 | "rust-analyzer.showWorkspaceLoadedNotification": { |
228 | "type": "boolean", | 233 | "type": "boolean", |
229 | "description": "Controls whether rust-analyzer displays a notification when a project is loaded.", | 234 | "description": "Controls whether rust-analyzer displays a notification when a project is loaded.", |
diff --git a/editors/code/src/commands/cargo_watch.ts b/editors/code/src/commands/cargo_watch.ts index 00b24dbce..59d4ba97a 100644 --- a/editors/code/src/commands/cargo_watch.ts +++ b/editors/code/src/commands/cargo_watch.ts | |||
@@ -93,10 +93,15 @@ export class CargoWatchProvider implements vscode.Disposable { | |||
93 | args = '"' + args + '"'; | 93 | args = '"' + args + '"'; |
94 | } | 94 | } |
95 | 95 | ||
96 | const ignoreFlags = Server.config.cargoWatchOptions.ignore.reduce( | ||
97 | (flags, pattern) => [...flags, '--ignore', pattern], | ||
98 | [] as string[] | ||
99 | ); | ||
100 | |||
96 | // Start the cargo watch with json message | 101 | // Start the cargo watch with json message |
97 | this.cargoProcess = child_process.spawn( | 102 | this.cargoProcess = child_process.spawn( |
98 | 'cargo', | 103 | 'cargo', |
99 | ['watch', '-x', args], | 104 | ['watch', '-x', args, ...ignoreFlags], |
100 | { | 105 | { |
101 | stdio: ['ignore', 'pipe', 'pipe'], | 106 | stdio: ['ignore', 'pipe', 'pipe'], |
102 | cwd: vscode.workspace.rootPath, | 107 | cwd: vscode.workspace.rootPath, |
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index a4581485c..49bdf7d72 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts | |||
@@ -12,6 +12,7 @@ export interface CargoWatchOptions { | |||
12 | arguments: string; | 12 | arguments: string; |
13 | command: string; | 13 | command: string; |
14 | trace: CargoWatchTraceOptions; | 14 | trace: CargoWatchTraceOptions; |
15 | ignore: string[]; | ||
15 | } | 16 | } |
16 | 17 | ||
17 | export class Config { | 18 | export class Config { |
@@ -29,7 +30,8 @@ export class Config { | |||
29 | enableOnStartup: 'ask', | 30 | enableOnStartup: 'ask', |
30 | trace: 'off', | 31 | trace: 'off', |
31 | arguments: '', | 32 | arguments: '', |
32 | command: '' | 33 | command: '', |
34 | ignore: [] | ||
33 | }; | 35 | }; |
34 | 36 | ||
35 | private prevEnhancedTyping: null | boolean = null; | 37 | private prevEnhancedTyping: null | boolean = null; |
@@ -124,6 +126,13 @@ export class Config { | |||
124 | ); | 126 | ); |
125 | } | 127 | } |
126 | 128 | ||
129 | if (config.has('cargo-watch.ignore')) { | ||
130 | this.cargoWatchOptions.ignore = config.get<string[]>( | ||
131 | 'cargo-watch.ignore', | ||
132 | [] | ||
133 | ); | ||
134 | } | ||
135 | |||
127 | if (config.has('lruCapacity')) { | 136 | if (config.has('lruCapacity')) { |
128 | this.lruCapacity = config.get('lruCapacity') as number; | 137 | this.lruCapacity = config.get('lruCapacity') as number; |
129 | } | 138 | } |