diff options
author | Veetaha <[email protected]> | 2020-02-05 20:39:47 +0000 |
---|---|---|
committer | Veetaha <[email protected]> | 2020-02-05 20:39:47 +0000 |
commit | 8153b60e1d8abdcefbf6c7c9657f1ce65a216d7a (patch) | |
tree | 68f445e973268dffce86c66cfc396c9221bf4ca3 | |
parent | 8d0f7da2f5f2ae1dc5711005f08fde0007da165b (diff) |
vscode: eliminate floating promises and insane amount of resource handle leaks
-rw-r--r-- | editors/code/package.json | 2 | ||||
-rw-r--r-- | editors/code/src/commands/index.ts | 2 | ||||
-rw-r--r-- | editors/code/src/commands/syntax_tree.ts | 2 | ||||
-rw-r--r-- | editors/code/src/config.ts | 2 | ||||
-rw-r--r-- | editors/code/src/highlighting.ts | 2 | ||||
-rw-r--r-- | editors/code/src/inlay_hints.ts | 34 | ||||
-rw-r--r-- | editors/code/src/status_display.ts | 10 | ||||
-rw-r--r-- | editors/code/tslint.json | 3 |
8 files changed, 36 insertions, 21 deletions
diff --git a/editors/code/package.json b/editors/code/package.json index c9404a4dd..11d37053e 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -21,7 +21,7 @@ | |||
21 | "vscode:prepublish": "tsc && rollup -c", | 21 | "vscode:prepublish": "tsc && rollup -c", |
22 | "package": "vsce package", | 22 | "package": "vsce package", |
23 | "watch": "tsc --watch", | 23 | "watch": "tsc --watch", |
24 | "fmt": "tsfmt -r && tslint -c tslint.json 'src/**/*.ts' --fix" | 24 | "fmt": "tsfmt -r && tslint -p tsconfig.json -c tslint.json 'src/**/*.ts' --fix" |
25 | }, | 25 | }, |
26 | "dependencies": { | 26 | "dependencies": { |
27 | "jsonc-parser": "^2.1.0", | 27 | "jsonc-parser": "^2.1.0", |
diff --git a/editors/code/src/commands/index.ts b/editors/code/src/commands/index.ts index 5a4c1df5e..aee969432 100644 --- a/editors/code/src/commands/index.ts +++ b/editors/code/src/commands/index.ts | |||
@@ -35,7 +35,7 @@ export function showReferences(ctx: Ctx): Cmd { | |||
35 | 35 | ||
36 | export function applySourceChange(ctx: Ctx): Cmd { | 36 | export function applySourceChange(ctx: Ctx): Cmd { |
37 | return async (change: sourceChange.SourceChange) => { | 37 | return async (change: sourceChange.SourceChange) => { |
38 | sourceChange.applySourceChange(ctx, change); | 38 | await sourceChange.applySourceChange(ctx, change); |
39 | }; | 39 | }; |
40 | } | 40 | } |
41 | 41 | ||
diff --git a/editors/code/src/commands/syntax_tree.ts b/editors/code/src/commands/syntax_tree.ts index 211f2251f..7dde66ad1 100644 --- a/editors/code/src/commands/syntax_tree.ts +++ b/editors/code/src/commands/syntax_tree.ts | |||
@@ -22,6 +22,7 @@ export function syntaxTree(ctx: Ctx): Cmd { | |||
22 | if (doc.languageId !== 'rust') return; | 22 | if (doc.languageId !== 'rust') return; |
23 | afterLs(() => tdcp.eventEmitter.fire(tdcp.uri)); | 23 | afterLs(() => tdcp.eventEmitter.fire(tdcp.uri)); |
24 | }, | 24 | }, |
25 | null, | ||
25 | ctx.subscriptions, | 26 | ctx.subscriptions, |
26 | ); | 27 | ); |
27 | 28 | ||
@@ -30,6 +31,7 @@ export function syntaxTree(ctx: Ctx): Cmd { | |||
30 | if (!editor || editor.document.languageId !== 'rust') return; | 31 | if (!editor || editor.document.languageId !== 'rust') return; |
31 | tdcp.eventEmitter.fire(tdcp.uri); | 32 | tdcp.eventEmitter.fire(tdcp.uri); |
32 | }, | 33 | }, |
34 | null, | ||
33 | ctx.subscriptions, | 35 | ctx.subscriptions, |
34 | ); | 36 | ); |
35 | 37 | ||
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index fc21c8813..585229ed0 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts | |||
@@ -45,7 +45,7 @@ export class Config { | |||
45 | private prevCargoWatchOptions: null | CargoWatchOptions = null; | 45 | private prevCargoWatchOptions: null | CargoWatchOptions = null; |
46 | 46 | ||
47 | constructor(ctx: vscode.ExtensionContext) { | 47 | constructor(ctx: vscode.ExtensionContext) { |
48 | vscode.workspace.onDidChangeConfiguration(_ => this.refresh(), ctx.subscriptions); | 48 | vscode.workspace.onDidChangeConfiguration(_ => this.refresh(), null, ctx.subscriptions); |
49 | this.refresh(); | 49 | this.refresh(); |
50 | } | 50 | } |
51 | 51 | ||
diff --git a/editors/code/src/highlighting.ts b/editors/code/src/highlighting.ts index 66216e0fc..22458a391 100644 --- a/editors/code/src/highlighting.ts +++ b/editors/code/src/highlighting.ts | |||
@@ -32,6 +32,7 @@ export function activateHighlighting(ctx: Ctx) { | |||
32 | 32 | ||
33 | vscode.workspace.onDidChangeConfiguration( | 33 | vscode.workspace.onDidChangeConfiguration( |
34 | _ => highlighter.removeHighlights(), | 34 | _ => highlighter.removeHighlights(), |
35 | null, | ||
35 | ctx.subscriptions, | 36 | ctx.subscriptions, |
36 | ); | 37 | ); |
37 | 38 | ||
@@ -52,6 +53,7 @@ export function activateHighlighting(ctx: Ctx) { | |||
52 | ); | 53 | ); |
53 | highlighter.setHighlights(editor, decorations); | 54 | highlighter.setHighlights(editor, decorations); |
54 | }, | 55 | }, |
56 | null, | ||
55 | ctx.subscriptions, | 57 | ctx.subscriptions, |
56 | ); | 58 | ); |
57 | } | 59 | } |
diff --git a/editors/code/src/inlay_hints.ts b/editors/code/src/inlay_hints.ts index ae7510183..1c019a51b 100644 --- a/editors/code/src/inlay_hints.ts +++ b/editors/code/src/inlay_hints.ts | |||
@@ -5,19 +5,27 @@ import { Ctx, sendRequestWithRetry } from './ctx'; | |||
5 | 5 | ||
6 | export function activateInlayHints(ctx: Ctx) { | 6 | export function activateInlayHints(ctx: Ctx) { |
7 | const hintsUpdater = new HintsUpdater(ctx); | 7 | const hintsUpdater = new HintsUpdater(ctx); |
8 | vscode.window.onDidChangeVisibleTextEditors(async _ => { | 8 | vscode.window.onDidChangeVisibleTextEditors( |
9 | await hintsUpdater.refresh(); | 9 | async _ => hintsUpdater.refresh(), |
10 | }, ctx.subscriptions); | 10 | null, |
11 | 11 | ctx.subscriptions | |
12 | vscode.workspace.onDidChangeTextDocument(async e => { | 12 | ); |
13 | if (e.contentChanges.length === 0) return; | 13 | |
14 | if (e.document.languageId !== 'rust') return; | 14 | vscode.workspace.onDidChangeTextDocument( |
15 | await hintsUpdater.refresh(); | 15 | async event => { |
16 | }, ctx.subscriptions); | 16 | if (event.contentChanges.length !== 0) return; |
17 | 17 | if (event.document.languageId !== 'rust') return; | |
18 | vscode.workspace.onDidChangeConfiguration(_ => { | 18 | await hintsUpdater.refresh(); |
19 | hintsUpdater.setEnabled(ctx.config.displayInlayHints); | 19 | }, |
20 | }, ctx.subscriptions); | 20 | null, |
21 | ctx.subscriptions | ||
22 | ); | ||
23 | |||
24 | vscode.workspace.onDidChangeConfiguration( | ||
25 | async _ => hintsUpdater.setEnabled(ctx.config.displayInlayHints), | ||
26 | null, | ||
27 | ctx.subscriptions | ||
28 | ); | ||
21 | 29 | ||
22 | ctx.onDidRestart(_ => hintsUpdater.setEnabled(ctx.config.displayInlayHints)); | 30 | ctx.onDidRestart(_ => hintsUpdater.setEnabled(ctx.config.displayInlayHints)); |
23 | } | 31 | } |
diff --git a/editors/code/src/status_display.ts b/editors/code/src/status_display.ts index 4317410c7..51dbf388b 100644 --- a/editors/code/src/status_display.ts +++ b/editors/code/src/status_display.ts | |||
@@ -9,12 +9,14 @@ const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', ' | |||
9 | export function activateStatusDisplay(ctx: Ctx) { | 9 | export function activateStatusDisplay(ctx: Ctx) { |
10 | const statusDisplay = new StatusDisplay(ctx.config.cargoWatchOptions.command); | 10 | const statusDisplay = new StatusDisplay(ctx.config.cargoWatchOptions.command); |
11 | ctx.pushCleanup(statusDisplay); | 11 | ctx.pushCleanup(statusDisplay); |
12 | ctx.onDidRestart(client => { | 12 | ctx.onDidRestart(client => ctx.pushCleanup(client.onProgress( |
13 | client.onProgress(WorkDoneProgress.type, 'rustAnalyzer/cargoWatcher', params => statusDisplay.handleProgressNotification(params)); | 13 | WorkDoneProgress.type, |
14 | }); | 14 | 'rustAnalyzer/cargoWatcher', |
15 | params => statusDisplay.handleProgressNotification(params) | ||
16 | ))); | ||
15 | } | 17 | } |
16 | 18 | ||
17 | class StatusDisplay implements vscode.Disposable, Disposable { | 19 | class StatusDisplay implements Disposable { |
18 | packageName?: string; | 20 | packageName?: string; |
19 | 21 | ||
20 | private i: number = 0; | 22 | private i: number = 0; |
diff --git a/editors/code/tslint.json b/editors/code/tslint.json index 0df11b2f1..333e2a321 100644 --- a/editors/code/tslint.json +++ b/editors/code/tslint.json | |||
@@ -4,6 +4,7 @@ | |||
4 | true, | 4 | true, |
5 | "always" | 5 | "always" |
6 | ], | 6 | ], |
7 | "prefer-const": true | 7 | "prefer-const": true, |
8 | "no-floating-promises": true | ||
8 | } | 9 | } |
9 | } | 10 | } |