[vscode-go] src/goExplorer.ts: update tree item icons

44 views
Skip to first unread message

Jamal Carvalho (Gerrit)

unread,
Mar 9, 2022, 1:26:54 PM3/9/22
to goph...@pubsubhelper.golang.org, golang-...@googlegroups.com, kokoro, Hyang-Ah Hana Kim, golang-co...@googlegroups.com

Jamal Carvalho submitted this change.

View Change



1 is the latest approved patch-set.
The change was submitted with unreviewed changes in the following files:

```
The name of the file: src/goExplorer.ts
Insertions: 2, Deletions: 2.

@@ -1,8 +1,9 @@
/*---------------------------------------------------------
- * Copyright (C) Microsoft Corporation. All rights reserved.
+ * Copyright 2022 The Go Authors. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------*/
import vscode = require('vscode');
+import vscodeUri = require('vscode-uri');
import cp = require('child_process');
import util = require('util');
import os = require('os');
@@ -20,7 +21,8 @@
export class GoExplorerProvider implements vscode.TreeDataProvider<vscode.TreeItem> {
private goEnvCache = new Cache((uri) => GoEnv.get(uri ? vscode.Uri.parse(uri) : undefined), Time.MINUTE);
private toolDetailCache = new Cache((name) => getToolDetail(name), Time.HOUR);
- private activeFolder: vscode.WorkspaceFolder;
+ private activeFolder?: vscode.WorkspaceFolder;
+ private activeDocument?: vscode.TextDocument;

static setup(ctx: vscode.ExtensionContext) {
const provider = new this();
@@ -40,6 +42,11 @@
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) {
@@ -68,6 +75,7 @@
}
const { activeTextEditor } = vscode.window;
const { getWorkspaceFolder, workspaceFolders } = vscode.workspace;
+ this.activeDocument = activeTextEditor?.document;
this.activeFolder = activeTextEditor?.document
? getWorkspaceFolder(activeTextEditor.document.uri) || workspaceFolders?.[0]
: workspaceFolders?.[0];
@@ -85,11 +93,21 @@
const { name, uri } = this.activeFolder;
return new EnvTree(name, uri);
}
- return new EnvTree('');
+ if (this.activeDocument) {
+ const { fileName, uri } = this.activeDocument;
+ return new EnvTree(path.basename(fileName), vscodeUri.Utils.dirname(uri));
+ }
+ return new EnvTree();
}

private async envTreeItems(uri?: vscode.Uri) {
- const env = await this.goEnvCache.get(uri?.toString());
+ let env: Record<string, string>;
+ try {
+ env = await this.goEnvCache.get(uri?.toString());
+ } catch (e) {
+ vscode.window.showErrorMessage(`Failed to run "go env": ${e.message}`);
+ return;
+ }
const items = [];
for (const [k, v] of Object.entries(env)) {
if (v !== '') {
@@ -119,7 +137,7 @@
label = 'env';
contextValue = 'go:explorer:env';
collapsibleState = vscode.TreeItemCollapsibleState.Expanded;
- iconPath = new vscode.ThemeIcon('terminal');
+ iconPath = new vscode.ThemeIcon('symbol-folder');
constructor(public description = '', public workspace?: vscode.Uri) {}
}

@@ -127,10 +145,12 @@
return item?.contextValue === 'go:explorer:env';
}

-class EnvTreeItem extends vscode.TreeItem {
+class EnvTreeItem implements vscode.TreeItem {
file?: vscode.Uri;
+ label: string;
+ contextValue?: string;
+ tooltip?: string;
constructor(public key: string, public value: string) {
- super('');
this.label = `${key}=${replaceHome(value)}`;
this.contextValue = 'go:explorer:envitem';
if (GoEnv.fileVars.includes(key)) {
@@ -198,7 +218,7 @@
class ToolTree implements vscode.TreeItem {
label = 'tools';
contextValue = 'go:explorer:tools';
- collapsibleState = vscode.TreeItemCollapsibleState.Expanded;
+ collapsibleState = vscode.TreeItemCollapsibleState.Collapsed;
iconPath = new vscode.ThemeIcon('tools');
}

@@ -206,14 +226,15 @@
return item?.contextValue === 'go:explorer:tools';
}

-class ToolTreeItem extends vscode.TreeItem {
+class ToolTreeItem implements vscode.TreeItem {
+ contextValue = 'go:explorer:toolitem';
+ description = 'not installed';
+ label: string;
children: vscode.TreeItem[];
-
+ collapsibleState?: vscode.TreeItemCollapsibleState;
+ tooltip: string;
constructor({ name, version, goVersion, binPath, error }: ToolDetail) {
- super('');
this.label = name;
- this.contextValue = 'go:explorer:toolitem';
- this.description = 'not installed';
if (binPath) {
this.collapsibleState = vscode.TreeItemCollapsibleState.Collapsed;
this.children = [new ToolDetailTreeItem(binPath, goVersion)];
@@ -232,12 +253,14 @@
return item?.contextValue === 'go:explorer:toolitem';
}

-class ToolDetailTreeItem extends vscode.TreeItem {
+class ToolDetailTreeItem implements vscode.TreeItem {
+ contextValue = 'go:explorer:tooldetail';
+ label: string;
+ description: string;
+ tooltip: string;
constructor(bin: string, goVersion: string) {
- super('');
this.label = replaceHome(bin);
this.description = goVersion;
- this.contextValue = 'go:explorer:tooldetail';
this.tooltip = `${bin} ${goVersion}`;
}
}
@@ -296,7 +319,11 @@
}

clear() {
- this.cache.clear();
+ return this.cache.clear();
+ }
+
+ delete(key: string) {
+ return this.cache.delete(key);
}
}

```

Approvals: Hyang-Ah Hana Kim: Looks good to me, approved Jamal Carvalho: Trusted; Run TryBots kokoro: TryBots succeeded
src/goExplorer.ts: update tree item icons

Change-Id: I720ba62c1f2704f1e825e4530ed229d0388b0bba
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/388755
Trust: Jamal Carvalho <ja...@golang.org>
Run-TryBot: Jamal Carvalho <ja...@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hya...@gmail.com>
TryBot-Result: kokoro <noreply...@google.com>
---
M src/goExplorer.ts
1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/goExplorer.ts b/src/goExplorer.ts
index aa1abff..d38a63a 100644
--- a/src/goExplorer.ts
+++ b/src/goExplorer.ts
@@ -137,7 +137,7 @@
label = 'env';
contextValue = 'go:explorer:env';
collapsibleState = vscode.TreeItemCollapsibleState.Expanded;
- iconPath = new vscode.ThemeIcon('folder-opened');
+ iconPath = new vscode.ThemeIcon('symbol-folder');
constructor(public description = '', public workspace?: vscode.Uri) {}
}

@@ -218,8 +218,8 @@
class ToolTree implements vscode.TreeItem {
label = 'tools';
contextValue = 'go:explorer:tools';
- collapsibleState = vscode.TreeItemCollapsibleState.Expanded;
- iconPath = new vscode.ThemeIcon('package');
+ collapsibleState = vscode.TreeItemCollapsibleState.Collapsed;
+ iconPath = new vscode.ThemeIcon('tools');
}

function isToolTree(item?: vscode.TreeItem): item is ToolTree {

To view, visit change 388755. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: vscode-go
Gerrit-Branch: master
Gerrit-Change-Id: I720ba62c1f2704f1e825e4530ed229d0388b0bba
Gerrit-Change-Number: 388755
Gerrit-PatchSet: 5
Gerrit-Owner: Jamal Carvalho <ja...@golang.org>
Gerrit-Reviewer: Hyang-Ah Hana Kim <hya...@gmail.com>
Gerrit-Reviewer: Jamal Carvalho <ja...@golang.org>
Gerrit-Reviewer: kokoro <noreply...@google.com>
Gerrit-MessageType: merged
Reply all
Reply to author
Forward
0 new messages