src/goExplorer.ts: add handler registrations to disposables

The handler regsitrations in the go explorer must be added
to subscriptions so they'll be removed when the extension is
deactivated.

Change-Id: I4f0bd6542f3a1fe486336f4334f437aa6c7d850c
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/406298
Run-TryBot: Jamal Carvalho <jamal@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/src/goExplorer.ts b/src/goExplorer.ts
index 8423cc6..52fdbc3 100644
--- a/src/goExplorer.ts
+++ b/src/goExplorer.ts
@@ -22,17 +22,19 @@
 	private activeFolder?: vscode.WorkspaceFolder;
 	private activeDocument?: vscode.TextDocument;
 
-	static setup({ subscriptions }: vscode.ExtensionContext) {
-		const provider = new this();
+	static setup(ctx: vscode.ExtensionContext) {
+		const provider = new this(ctx);
 		const {
 			window: { registerTreeDataProvider },
 			commands: { registerCommand, executeCommand }
 		} = vscode;
-		subscriptions.push(registerTreeDataProvider('go.explorer', provider));
-		subscriptions.push(registerCommand('go.explorer.refresh', () => provider.update(true)));
-		subscriptions.push(registerCommand('go.explorer.open', (item) => provider.open(item)));
-		subscriptions.push(registerCommand('go.workspace.editEnv', (item) => provider.editEnv(item)));
-		subscriptions.push(registerCommand('go.workspace.resetEnv', (item) => provider.resetEnv(item)));
+		ctx.subscriptions.push(
+			registerTreeDataProvider('go.explorer', provider),
+			registerCommand('go.explorer.refresh', () => provider.update(true)),
+			registerCommand('go.explorer.open', (item) => provider.open(item)),
+			registerCommand('go.workspace.editEnv', (item) => provider.editEnv(item)),
+			registerCommand('go.workspace.resetEnv', (item) => provider.resetEnv(item))
+		);
 		executeCommand('setContext', 'go.showExplorer', true);
 		return provider;
 	}
@@ -40,16 +42,18 @@
 	private _onDidChangeTreeData = new vscode.EventEmitter<vscode.TreeItem | void>();
 	readonly onDidChangeTreeData = this._onDidChangeTreeData.event;
 
-	constructor() {
+	constructor(ctx: vscode.ExtensionContext) {
 		this.update();
-		vscode.window.onDidChangeActiveTextEditor(() => this.update());
-		vscode.workspace.onDidChangeWorkspaceFolders(() => this.update());
-		vscode.workspace.onDidChangeConfiguration(() => this.update(true));
-		vscode.workspace.onDidCloseTextDocument((doc) => {
-			if (!this.activeFolder) {
-				this.goEnvCache.delete(vscodeUri.Utils.dirname(doc.uri).toString());
-			}
-		});
+		ctx.subscriptions.push(
+			vscode.window.onDidChangeActiveTextEditor(() => this.update()),
+			vscode.workspace.onDidChangeWorkspaceFolders(() => this.update()),
+			vscode.workspace.onDidChangeConfiguration(() => this.update(true)),
+			vscode.workspace.onDidCloseTextDocument((doc) => {
+				if (!this.activeFolder) {
+					this.goEnvCache.delete(vscodeUri.Utils.dirname(doc.uri).toString());
+				}
+			})
+		);
 	}
 
 	getTreeItem(element: vscode.TreeItem) {