diff options
author | Aleksei Sidorov <[email protected]> | 2019-06-24 11:02:20 +0100 |
---|---|---|
committer | Aleksei Sidorov <[email protected]> | 2019-06-24 11:02:20 +0100 |
commit | 4722e6d491a29bdb077fc01aa8c5bdc734282c69 (patch) | |
tree | 681b4fd62ce9b2166180713236254a8a25f2b60f | |
parent | 7d79be32801036c39507fe96f87ed316e3934662 (diff) |
Introduce cargo-watch.check-command
-rw-r--r-- | editors/code/package.json | 7 | ||||
-rw-r--r-- | editors/code/src/commands/cargo_watch.ts | 6 | ||||
-rw-r--r-- | editors/code/src/commands/watch_status.ts | 8 | ||||
-rw-r--r-- | 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 c2ed8d126..e4fc682df 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -203,9 +203,14 @@ | |||
203 | }, | 203 | }, |
204 | "rust-analyzer.cargo-watch.check-arguments": { | 204 | "rust-analyzer.cargo-watch.check-arguments": { |
205 | "type": "string", | 205 | "type": "string", |
206 | "description": "`cargo-watch` check arguments. (e.g: `--features=\"shumway,pdf\"` will run as `cargo watch -x \"check --features=\"shumway,pdf\"\"` )", | 206 | "description": "`cargo-watch` arguments. (e.g: `--features=\"shumway,pdf\"` will run as `cargo watch -x \"check --features=\"shumway,pdf\"\"` )", |
207 | "default": "" | 207 | "default": "" |
208 | }, | 208 | }, |
209 | "rust-analyzer.cargo-watch.check-command": { | ||
210 | "type": "string", | ||
211 | "description": "`cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )", | ||
212 | "default": "check" | ||
213 | }, | ||
209 | "rust-analyzer.trace.server": { | 214 | "rust-analyzer.trace.server": { |
210 | "type": "string", | 215 | "type": "string", |
211 | "scope": "window", | 216 | "scope": "window", |
diff --git a/editors/code/src/commands/cargo_watch.ts b/editors/code/src/commands/cargo_watch.ts index 6ba794bb3..db92e03f4 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 { | |||
43 | this.diagnosticCollection = vscode.languages.createDiagnosticCollection( | 43 | this.diagnosticCollection = vscode.languages.createDiagnosticCollection( |
44 | 'rustc' | 44 | 'rustc' |
45 | ); | 45 | ); |
46 | this.statusDisplay = new StatusDisplay(); | 46 | this.statusDisplay = new StatusDisplay(Server.config.cargoWatchOptions.checkCommand); |
47 | this.outputChannel = vscode.window.createOutputChannel( | 47 | this.outputChannel = vscode.window.createOutputChannel( |
48 | 'Cargo Watch Trace' | 48 | 'Cargo Watch Trace' |
49 | ); | 49 | ); |
@@ -57,7 +57,9 @@ export class CargoWatchProvider implements vscode.Disposable { | |||
57 | return; | 57 | return; |
58 | } | 58 | } |
59 | 59 | ||
60 | let args = 'check --all-targets --message-format json'; | 60 | let command = Server.config.cargoWatchOptions.checkCommand; |
61 | |||
62 | let args = command + ' --all-targets --message-format json'; | ||
61 | if (Server.config.cargoWatchOptions.checkArguments.length > 0) { | 63 | if (Server.config.cargoWatchOptions.checkArguments.length > 0) { |
62 | // Excape the double quote string: | 64 | // Excape the double quote string: |
63 | args += ' ' + Server.config.cargoWatchOptions.checkArguments; | 65 | args += ' ' + Server.config.cargoWatchOptions.checkArguments; |
diff --git a/editors/code/src/commands/watch_status.ts b/editors/code/src/commands/watch_status.ts index a3b0178f2..91bc7195b 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 { | |||
7 | 7 | ||
8 | private i = 0; | 8 | private i = 0; |
9 | private statusBarItem: vscode.StatusBarItem; | 9 | private statusBarItem: vscode.StatusBarItem; |
10 | private command: string; | ||
10 | private timer?: NodeJS.Timeout; | 11 | private timer?: NodeJS.Timeout; |
11 | 12 | ||
12 | constructor() { | 13 | constructor(command: string) { |
13 | this.statusBarItem = vscode.window.createStatusBarItem( | 14 | this.statusBarItem = vscode.window.createStatusBarItem( |
14 | vscode.StatusBarAlignment.Left, | 15 | vscode.StatusBarAlignment.Left, |
15 | 10 | 16 | 10 |
16 | ); | 17 | ); |
18 | this.command = command; | ||
17 | this.statusBarItem.hide(); | 19 | this.statusBarItem.hide(); |
18 | } | 20 | } |
19 | 21 | ||
@@ -24,11 +26,11 @@ export class StatusDisplay implements vscode.Disposable { | |||
24 | this.timer || | 26 | this.timer || |
25 | setInterval(() => { | 27 | setInterval(() => { |
26 | if (this.packageName) { | 28 | if (this.packageName) { |
27 | this.statusBarItem!.text = `cargo check [${ | 29 | this.statusBarItem!.text = `cargo ${this.command} [${ |
28 | this.packageName | 30 | this.packageName |
29 | }] ${this.frame()}`; | 31 | }] ${this.frame()}`; |
30 | } else { | 32 | } else { |
31 | this.statusBarItem!.text = `cargo check ${this.frame()}`; | 33 | this.statusBarItem!.text = `cargo ${this.command} ${this.frame()}`; |
32 | } | 34 | } |
33 | }, 300); | 35 | }, 300); |
34 | 36 | ||
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index 3024546d2..85366fc34 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts | |||
@@ -1,6 +1,7 @@ | |||
1 | import * as vscode from 'vscode'; | 1 | import * as vscode from 'vscode'; |
2 | 2 | ||
3 | import { Server } from './server'; | 3 | import { Server } from './server'; |
4 | import { strict } from 'assert'; | ||
4 | 5 | ||
5 | const RA_LSP_DEBUG = process.env.__RA_LSP_SERVER_DEBUG; | 6 | const RA_LSP_DEBUG = process.env.__RA_LSP_SERVER_DEBUG; |
6 | 7 | ||
@@ -10,6 +11,7 @@ export type CargoWatchTraceOptions = 'off' | 'error' | 'verbose'; | |||
10 | export interface CargoWatchOptions { | 11 | export interface CargoWatchOptions { |
11 | enableOnStartup: CargoWatchStartupOptions; | 12 | enableOnStartup: CargoWatchStartupOptions; |
12 | checkArguments: string; | 13 | checkArguments: string; |
14 | checkCommand: string; | ||
13 | trace: CargoWatchTraceOptions; | 15 | trace: CargoWatchTraceOptions; |
14 | } | 16 | } |
15 | 17 | ||
@@ -23,7 +25,8 @@ export class Config { | |||
23 | public cargoWatchOptions: CargoWatchOptions = { | 25 | public cargoWatchOptions: CargoWatchOptions = { |
24 | enableOnStartup: 'ask', | 26 | enableOnStartup: 'ask', |
25 | trace: 'off', | 27 | trace: 'off', |
26 | checkArguments: '' | 28 | checkArguments: '', |
29 | checkCommand: '' | ||
27 | }; | 30 | }; |
28 | 31 | ||
29 | private prevEnhancedTyping: null | boolean = null; | 32 | private prevEnhancedTyping: null | boolean = null; |
@@ -110,6 +113,14 @@ export class Config { | |||
110 | '' | 113 | '' |
111 | ); | 114 | ); |
112 | } | 115 | } |
116 | |||
117 | if (config.has('cargo-watch.check-command')) { | ||
118 | this.cargoWatchOptions.checkCommand = config.get<string>( | ||
119 | 'cargo-watch.check-command', | ||
120 | '' | ||
121 | ); | ||
122 | } | ||
123 | |||
113 | if (config.has('lruCapacity')) { | 124 | if (config.has('lruCapacity')) { |
114 | this.lruCapacity = config.get('lruCapacity') as number; | 125 | this.lruCapacity = config.get('lruCapacity') as number; |
115 | } | 126 | } |