aboutsummaryrefslogtreecommitdiff
path: root/editors/code/src
diff options
context:
space:
mode:
Diffstat (limited to 'editors/code/src')
-rw-r--r--editors/code/src/commands/cargo_watch.ts26
-rw-r--r--editors/code/src/commands/runnables.ts8
-rw-r--r--editors/code/src/commands/watch_status.ts17
-rw-r--r--editors/code/src/extension.ts2
4 files changed, 31 insertions, 22 deletions
diff --git a/editors/code/src/commands/cargo_watch.ts b/editors/code/src/commands/cargo_watch.ts
index c6ce6ba06..037f1e302 100644
--- a/editors/code/src/commands/cargo_watch.ts
+++ b/editors/code/src/commands/cargo_watch.ts
@@ -2,7 +2,7 @@ import * as child_process from 'child_process';
2import * as path from 'path'; 2import * as path from 'path';
3import * as timers from 'timers'; 3import * as timers from 'timers';
4import * as vscode from 'vscode'; 4import * as vscode from 'vscode';
5import {StatusDisplay} from './watch_status'; 5import { StatusDisplay } from './watch_status';
6 6
7export class CargoWatchProvider { 7export class CargoWatchProvider {
8 private diagnosticCollection?: vscode.DiagnosticCollection; 8 private diagnosticCollection?: vscode.DiagnosticCollection;
@@ -12,19 +12,22 @@ export class CargoWatchProvider {
12 12
13 public activate(subscriptions: vscode.Disposable[]) { 13 public activate(subscriptions: vscode.Disposable[]) {
14 subscriptions.push(this); 14 subscriptions.push(this);
15 this.diagnosticCollection = vscode.languages.createDiagnosticCollection('rustc'); 15 this.diagnosticCollection = vscode.languages.createDiagnosticCollection(
16 'rustc'
17 );
16 18
17 this.statusDisplay = new StatusDisplay(subscriptions); 19 this.statusDisplay = new StatusDisplay(subscriptions);
18 20
19 // Start the cargo watch with json message 21 // Start the cargo watch with json message
20 this.cargoProcess = child_process.spawn('cargo', 22 this.cargoProcess = child_process.spawn(
21 ['watch', '-x', '\"check --message-format json\"'], 23 'cargo',
24 ['watch', '-x', '"check --message-format json"'],
22 { 25 {
23 // stdio: ['ignore', 'pipe', 'ignore'], 26 // stdio: ['ignore', 'pipe', 'ignore'],
24 shell: true, 27 shell: true,
25 cwd: vscode.workspace.rootPath, 28 cwd: vscode.workspace.rootPath
26 }); 29 }
27 30 );
28 31
29 this.cargoProcess.stdout.on('data', (s: string) => { 32 this.cargoProcess.stdout.on('data', (s: string) => {
30 this.processOutput(s); 33 this.processOutput(s);
@@ -109,7 +112,9 @@ export class CargoWatchProvider {
109 112
110 const fileUrl = vscode.Uri.file(fileName!); 113 const fileUrl = vscode.Uri.file(fileName!);
111 114
112 const diagnostics: vscode.Diagnostic[] = [...(this.diagnosticCollection!.get(fileUrl) || [])]; 115 const diagnostics: vscode.Diagnostic[] = [
116 ...(this.diagnosticCollection!.get(fileUrl) || [])
117 ];
113 diagnostics.push(diagnostic); 118 diagnostics.push(diagnostic);
114 119
115 this.diagnosticCollection!.set(fileUrl, diagnostics); 120 this.diagnosticCollection!.set(fileUrl, diagnostics);
@@ -129,5 +134,4 @@ export class CargoWatchProvider {
129 eolIndex = this.outBuffer.indexOf('\n'); 134 eolIndex = this.outBuffer.indexOf('\n');
130 } 135 }
131 } 136 }
132
133} 137}
diff --git a/editors/code/src/commands/runnables.ts b/editors/code/src/commands/runnables.ts
index 0adb85d5f..7bba6f9cb 100644
--- a/editors/code/src/commands/runnables.ts
+++ b/editors/code/src/commands/runnables.ts
@@ -134,8 +134,9 @@ export async function handleSingle(runnable: Runnable) {
134 * provide inline diagnostics; the user is met with a series of dialog boxes 134 * provide inline diagnostics; the user is met with a series of dialog boxes
135 * that, when accepted, allow us to `cargo install cargo-watch` and then run it. 135 * that, when accepted, allow us to `cargo install cargo-watch` and then run it.
136 */ 136 */
137export async function interactivelyStartCargoWatch(context: vscode.ExtensionContext) { 137export async function interactivelyStartCargoWatch(
138 138 context: vscode.ExtensionContext
139) {
139 if (Server.config.enableCargoWatchOnStartup === 'disabled') { 140 if (Server.config.enableCargoWatchOnStartup === 'disabled') {
140 return; 141 return;
141 } 142 }
@@ -195,7 +196,6 @@ export async function interactivelyStartCargoWatch(context: vscode.ExtensionCont
195 } 196 }
196 } 197 }
197 198
198
199 const validater = new CargoWatchProvider(); 199 const validater = new CargoWatchProvider();
200 validater.activate(context.subscriptions); 200 validater.activate(context.subscriptions);
201} 201}
diff --git a/editors/code/src/commands/watch_status.ts b/editors/code/src/commands/watch_status.ts
index 0943e8533..1b0611ce3 100644
--- a/editors/code/src/commands/watch_status.ts
+++ b/editors/code/src/commands/watch_status.ts
@@ -9,15 +9,20 @@ export class StatusDisplay {
9 private timer?: NodeJS.Timeout; 9 private timer?: NodeJS.Timeout;
10 10
11 constructor(subscriptions: vscode.Disposable[]) { 11 constructor(subscriptions: vscode.Disposable[]) {
12 this.statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 10); 12 this.statusBarItem = vscode.window.createStatusBarItem(
13 vscode.StatusBarAlignment.Left,
14 10
15 );
13 subscriptions.push(this.statusBarItem); 16 subscriptions.push(this.statusBarItem);
14 this.statusBarItem.hide(); 17 this.statusBarItem.hide();
15 } 18 }
16 19
17 public show() { 20 public show() {
18 this.timer = this.timer || setInterval(() => { 21 this.timer =
19 this.statusBarItem!.text = 'cargo check ' + this.frame(); 22 this.timer ||
20 }, 300); 23 setInterval(() => {
24 this.statusBarItem!.text = 'cargo check ' + this.frame();
25 }, 300);
21 26
22 this.statusBarItem!.show(); 27 this.statusBarItem!.show();
23 } 28 }
@@ -32,6 +37,6 @@ export class StatusDisplay {
32 } 37 }
33 38
34 private frame() { 39 private frame() {
35 return spinnerFrames[this.i = ++this.i % spinnerFrames.length]; 40 return spinnerFrames[(this.i = ++this.i % spinnerFrames.length)];
36 } 41 }
37} \ No newline at end of file 42}
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts
index 5cbf285e5..ef83c0b8b 100644
--- a/editors/code/src/extension.ts
+++ b/editors/code/src/extension.ts
@@ -2,7 +2,7 @@ import * as vscode from 'vscode';
2import * as lc from 'vscode-languageclient'; 2import * as lc from 'vscode-languageclient';
3 3
4import * as commands from './commands'; 4import * as commands from './commands';
5import { interactivelyStartCargoWatch} from './commands/runnables'; 5import { interactivelyStartCargoWatch } from './commands/runnables';
6import { SyntaxTreeContentProvider } from './commands/syntaxTree'; 6import { SyntaxTreeContentProvider } from './commands/syntaxTree';
7import * as events from './events'; 7import * as events from './events';
8import * as notifications from './notifications'; 8import * as notifications from './notifications';