mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Merge #1010
1010: Change enableCargoWatchOnStartup to have three states r=matklad a=vipentti This fixes #1005. Defaults to `ask` which prompts users each time whether to start `cargo watch` or not. `enabled` always starts `cargo watch` and `disabled` does not. Co-authored-by: Ville Penttinen <villem.penttinen@gmail.com>
This commit is contained in:
commit
48472f55c3
3 changed files with 31 additions and 16 deletions
|
@ -169,9 +169,19 @@
|
|||
"description": "Path to ra_lsp_server executable"
|
||||
},
|
||||
"rust-analyzer.enableCargoWatchOnStartup": {
|
||||
"type": "boolean",
|
||||
"default": "true",
|
||||
"description": "When enabled, ask the user whether to run `cargo watch` on startup"
|
||||
"type": "string",
|
||||
"default": "ask",
|
||||
"enum": [
|
||||
"ask",
|
||||
"enabled",
|
||||
"disabled"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Asks each time whether to run `cargo watch`",
|
||||
"`cargo watch` is always started",
|
||||
"Don't start `cargo watch`"
|
||||
],
|
||||
"description": "Whether to run `cargo watch` on startup"
|
||||
},
|
||||
"rust-analyzer.trace.server": {
|
||||
"type": "string",
|
||||
|
|
|
@ -153,22 +153,25 @@ export const autoCargoWatchTask: vscode.Task = {
|
|||
* that, when accepted, allow us to `cargo install cargo-watch` and then run it.
|
||||
*/
|
||||
export async function interactivelyStartCargoWatch() {
|
||||
if (!Server.config.enableCargoWatchOnStartup) {
|
||||
if (Server.config.enableCargoWatchOnStartup === 'disabled') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Server.config.enableCargoWatchOnStartup === 'ask') {
|
||||
const watch = await vscode.window.showInformationMessage(
|
||||
'Start watching changes with cargo? (Executes `cargo watch`, provides inline diagnostics)',
|
||||
'yes',
|
||||
'no'
|
||||
);
|
||||
if (watch === 'no') {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const execPromise = util.promisify(child_process.exec);
|
||||
|
||||
const watch = await vscode.window.showInformationMessage(
|
||||
'Start watching changes with cargo? (Executes `cargo watch`, provides inline diagnostics)',
|
||||
'yes',
|
||||
'no'
|
||||
);
|
||||
if (watch === 'no') {
|
||||
return;
|
||||
}
|
||||
|
||||
const { stderr } = await execPromise('cargo watch --version').catch(e => e);
|
||||
|
||||
if (stderr.includes('no such subcommand: `watch`')) {
|
||||
const msg =
|
||||
'The `cargo-watch` subcommand is not installed. Install? (takes ~1-2 minutes)';
|
||||
|
|
|
@ -4,12 +4,14 @@ import { Server } from './server';
|
|||
|
||||
const RA_LSP_DEBUG = process.env.__RA_LSP_SERVER_DEBUG;
|
||||
|
||||
export type CargoWatchOptions = 'ask' | 'enabled' | 'disabled';
|
||||
|
||||
export class Config {
|
||||
public highlightingOn = true;
|
||||
public enableEnhancedTyping = true;
|
||||
public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server';
|
||||
public showWorkspaceLoadedNotification = true;
|
||||
public enableCargoWatchOnStartup = true;
|
||||
public enableCargoWatchOnStartup: CargoWatchOptions = 'ask';
|
||||
|
||||
private prevEnhancedTyping: null | boolean = null;
|
||||
|
||||
|
@ -71,9 +73,9 @@ export class Config {
|
|||
}
|
||||
|
||||
if (config.has('enableCargoWatchOnStartup')) {
|
||||
this.enableCargoWatchOnStartup = config.get<boolean>(
|
||||
this.enableCargoWatchOnStartup = config.get<CargoWatchOptions>(
|
||||
'enableCargoWatchOnStartup',
|
||||
true
|
||||
'ask'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue