Adds config option for cargo-watch --ignore flag

This commit is contained in:
Roberto Vidal 2019-10-17 15:22:39 +02:00
parent e8a7a7b19a
commit f4d50de275
4 changed files with 22 additions and 2 deletions

View file

@ -79,6 +79,7 @@ See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) f
* `rust-analyzer.cargo-watch.command`: `cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` ) * `rust-analyzer.cargo-watch.command`: `cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )
* `rust-analyzer.cargo-watch.arguments`: cargo-watch check arguments. * `rust-analyzer.cargo-watch.arguments`: cargo-watch check arguments.
(e.g: `--features="shumway,pdf"` will run as `cargo watch -x "check --features="shumway,pdf""` ) (e.g: `--features="shumway,pdf"` will run as `cargo watch -x "check --features="shumway,pdf""` )
* `rust-analyzer.cargo-watch.ignore`: list of patterns for cargo-watch to ignore (will be passed as `--ignore`)
* `rust-analyzer.trace.server`: enables internal logging * `rust-analyzer.trace.server`: enables internal logging
* `rust-analyzer.trace.cargo-watch`: enables cargo-watch logging * `rust-analyzer.trace.cargo-watch`: enables cargo-watch logging
* `RUST_SRC_PATH`: environment variable that overwrites the sysroot * `RUST_SRC_PATH`: environment variable that overwrites the sysroot

View file

@ -224,6 +224,11 @@
"description": "`cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )", "description": "`cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )",
"default": "check" "default": "check"
}, },
"rust-analyzer.cargo-watch.ignore": {
"type": "array",
"description": "A list of patterns for cargo-watch to ignore (will be passed as `--ignore`)",
"default": []
},
"rust-analyzer.showWorkspaceLoadedNotification": { "rust-analyzer.showWorkspaceLoadedNotification": {
"type": "boolean", "type": "boolean",
"description": "Controls whether rust-analyzer displays a notification when a project is loaded.", "description": "Controls whether rust-analyzer displays a notification when a project is loaded.",

View file

@ -93,10 +93,15 @@ export class CargoWatchProvider implements vscode.Disposable {
args = '"' + args + '"'; args = '"' + args + '"';
} }
const ignoreFlags = Server.config.cargoWatchOptions.ignore.reduce(
(flags, pattern) => [...flags, '--ignore', pattern],
[] as string[]
);
// Start the cargo watch with json message // Start the cargo watch with json message
this.cargoProcess = child_process.spawn( this.cargoProcess = child_process.spawn(
'cargo', 'cargo',
['watch', '-x', args], ['watch', '-x', args, ...ignoreFlags],
{ {
stdio: ['ignore', 'pipe', 'pipe'], stdio: ['ignore', 'pipe', 'pipe'],
cwd: vscode.workspace.rootPath, cwd: vscode.workspace.rootPath,

View file

@ -12,6 +12,7 @@ export interface CargoWatchOptions {
arguments: string; arguments: string;
command: string; command: string;
trace: CargoWatchTraceOptions; trace: CargoWatchTraceOptions;
ignore: string[];
} }
export class Config { export class Config {
@ -29,7 +30,8 @@ export class Config {
enableOnStartup: 'ask', enableOnStartup: 'ask',
trace: 'off', trace: 'off',
arguments: '', arguments: '',
command: '' command: '',
ignore: []
}; };
private prevEnhancedTyping: null | boolean = null; private prevEnhancedTyping: null | boolean = null;
@ -124,6 +126,13 @@ export class Config {
); );
} }
if (config.has('cargo-watch.ignore')) {
this.cargoWatchOptions.ignore = config.get<string[]>(
'cargo-watch.ignore',
[]
);
}
if (config.has('lruCapacity')) { if (config.has('lruCapacity')) {
this.lruCapacity = config.get('lruCapacity') as number; this.lruCapacity = config.get('lruCapacity') as number;
} }