mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-13 21:54:42 +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"
|
"description": "Path to ra_lsp_server executable"
|
||||||
},
|
},
|
||||||
"rust-analyzer.enableCargoWatchOnStartup": {
|
"rust-analyzer.enableCargoWatchOnStartup": {
|
||||||
"type": "boolean",
|
"type": "string",
|
||||||
"default": "true",
|
"default": "ask",
|
||||||
"description": "When enabled, ask the user whether to run `cargo watch` on startup"
|
"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": {
|
"rust-analyzer.trace.server": {
|
||||||
"type": "string",
|
"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.
|
* that, when accepted, allow us to `cargo install cargo-watch` and then run it.
|
||||||
*/
|
*/
|
||||||
export async function interactivelyStartCargoWatch() {
|
export async function interactivelyStartCargoWatch() {
|
||||||
if (!Server.config.enableCargoWatchOnStartup) {
|
if (Server.config.enableCargoWatchOnStartup === 'disabled') {
|
||||||
return;
|
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 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);
|
const { stderr } = await execPromise('cargo watch --version').catch(e => e);
|
||||||
|
|
||||||
if (stderr.includes('no such subcommand: `watch`')) {
|
if (stderr.includes('no such subcommand: `watch`')) {
|
||||||
const msg =
|
const msg =
|
||||||
'The `cargo-watch` subcommand is not installed. Install? (takes ~1-2 minutes)';
|
'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;
|
const RA_LSP_DEBUG = process.env.__RA_LSP_SERVER_DEBUG;
|
||||||
|
|
||||||
|
export type CargoWatchOptions = 'ask' | 'enabled' | 'disabled';
|
||||||
|
|
||||||
export class Config {
|
export class Config {
|
||||||
public highlightingOn = true;
|
public highlightingOn = true;
|
||||||
public enableEnhancedTyping = true;
|
public enableEnhancedTyping = true;
|
||||||
public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server';
|
public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server';
|
||||||
public showWorkspaceLoadedNotification = true;
|
public showWorkspaceLoadedNotification = true;
|
||||||
public enableCargoWatchOnStartup = true;
|
public enableCargoWatchOnStartup: CargoWatchOptions = 'ask';
|
||||||
|
|
||||||
private prevEnhancedTyping: null | boolean = null;
|
private prevEnhancedTyping: null | boolean = null;
|
||||||
|
|
||||||
|
@ -71,9 +73,9 @@ export class Config {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.has('enableCargoWatchOnStartup')) {
|
if (config.has('enableCargoWatchOnStartup')) {
|
||||||
this.enableCargoWatchOnStartup = config.get<boolean>(
|
this.enableCargoWatchOnStartup = config.get<CargoWatchOptions>(
|
||||||
'enableCargoWatchOnStartup',
|
'enableCargoWatchOnStartup',
|
||||||
true
|
'ask'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue