From 4722e6d491a29bdb077fc01aa8c5bdc734282c69 Mon Sep 17 00:00:00 2001 From: Aleksei Sidorov Date: Mon, 24 Jun 2019 13:02:20 +0300 Subject: [PATCH] Introduce cargo-watch.check-command --- editors/code/package.json | 7 ++++++- editors/code/src/commands/cargo_watch.ts | 6 ++++-- editors/code/src/commands/watch_status.ts | 8 +++++--- editors/code/src/config.ts | 13 ++++++++++++- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/editors/code/package.json b/editors/code/package.json index c2ed8d1268..e4fc682df9 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -203,9 +203,14 @@ }, "rust-analyzer.cargo-watch.check-arguments": { "type": "string", - "description": "`cargo-watch` check arguments. (e.g: `--features=\"shumway,pdf\"` will run as `cargo watch -x \"check --features=\"shumway,pdf\"\"` )", + "description": "`cargo-watch` arguments. (e.g: `--features=\"shumway,pdf\"` will run as `cargo watch -x \"check --features=\"shumway,pdf\"\"` )", "default": "" }, + "rust-analyzer.cargo-watch.check-command": { + "type": "string", + "description": "`cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )", + "default": "check" + }, "rust-analyzer.trace.server": { "type": "string", "scope": "window", diff --git a/editors/code/src/commands/cargo_watch.ts b/editors/code/src/commands/cargo_watch.ts index 6ba794bb33..db92e03f4c 100644 --- a/editors/code/src/commands/cargo_watch.ts +++ b/editors/code/src/commands/cargo_watch.ts @@ -43,7 +43,7 @@ export class CargoWatchProvider implements vscode.Disposable { this.diagnosticCollection = vscode.languages.createDiagnosticCollection( 'rustc' ); - this.statusDisplay = new StatusDisplay(); + this.statusDisplay = new StatusDisplay(Server.config.cargoWatchOptions.checkCommand); this.outputChannel = vscode.window.createOutputChannel( 'Cargo Watch Trace' ); @@ -57,7 +57,9 @@ export class CargoWatchProvider implements vscode.Disposable { return; } - let args = 'check --all-targets --message-format json'; + let command = Server.config.cargoWatchOptions.checkCommand; + + let args = command + ' --all-targets --message-format json'; if (Server.config.cargoWatchOptions.checkArguments.length > 0) { // Excape the double quote string: args += ' ' + Server.config.cargoWatchOptions.checkArguments; diff --git a/editors/code/src/commands/watch_status.ts b/editors/code/src/commands/watch_status.ts index a3b0178f20..91bc7195b2 100644 --- a/editors/code/src/commands/watch_status.ts +++ b/editors/code/src/commands/watch_status.ts @@ -7,13 +7,15 @@ export class StatusDisplay implements vscode.Disposable { private i = 0; private statusBarItem: vscode.StatusBarItem; + private command: string; private timer?: NodeJS.Timeout; - constructor() { + constructor(command: string) { this.statusBarItem = vscode.window.createStatusBarItem( vscode.StatusBarAlignment.Left, 10 ); + this.command = command; this.statusBarItem.hide(); } @@ -24,11 +26,11 @@ export class StatusDisplay implements vscode.Disposable { this.timer || setInterval(() => { if (this.packageName) { - this.statusBarItem!.text = `cargo check [${ + this.statusBarItem!.text = `cargo ${this.command} [${ this.packageName }] ${this.frame()}`; } else { - this.statusBarItem!.text = `cargo check ${this.frame()}`; + this.statusBarItem!.text = `cargo ${this.command} ${this.frame()}`; } }, 300); diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index 3024546d25..85366fc341 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -1,6 +1,7 @@ import * as vscode from 'vscode'; import { Server } from './server'; +import { strict } from 'assert'; const RA_LSP_DEBUG = process.env.__RA_LSP_SERVER_DEBUG; @@ -10,6 +11,7 @@ export type CargoWatchTraceOptions = 'off' | 'error' | 'verbose'; export interface CargoWatchOptions { enableOnStartup: CargoWatchStartupOptions; checkArguments: string; + checkCommand: string; trace: CargoWatchTraceOptions; } @@ -23,7 +25,8 @@ export class Config { public cargoWatchOptions: CargoWatchOptions = { enableOnStartup: 'ask', trace: 'off', - checkArguments: '' + checkArguments: '', + checkCommand: '' }; private prevEnhancedTyping: null | boolean = null; @@ -110,6 +113,14 @@ export class Config { '' ); } + + if (config.has('cargo-watch.check-command')) { + this.cargoWatchOptions.checkCommand = config.get( + 'cargo-watch.check-command', + '' + ); + } + if (config.has('lruCapacity')) { this.lruCapacity = config.get('lruCapacity') as number; }