Skip to content

Commit

Permalink
Merge pull request #313 from badsyntax/freeze-fix
Browse files Browse the repository at this point in the history
Freeze fix
  • Loading branch information
badsyntax authored Apr 28, 2020
2 parents a7fb6a1 + 0dc4730 commit 1326560
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 10 deletions.
14 changes: 10 additions & 4 deletions extension/src/gradleView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ import {
} from './config';
import { logger } from './logger';

type IconPath = { light: string | vscode.Uri; dark: string | vscode.Uri };

const localize = nls.loadMessageBundle();
const taskTreeItemMap: Map<string, GradleTaskTreeItem> = new Map();
const projectBuildFiles: Set<string> = new Set();

function treeItemSortCompareFunc(
a: vscode.TreeItem,
Expand All @@ -26,6 +30,10 @@ function treeItemSortCompareFunc(
return a.label!.localeCompare(b.label!);
}

export function hasBuildFile(buildFile: string): boolean {
return projectBuildFiles.has(buildFile);
}

class WorkspaceTreeItem extends vscode.TreeItem {
projects: ProjectTreeItem[] = [];
projectFolders: WorkspaceTreeItem[] = [];
Expand Down Expand Up @@ -112,8 +120,6 @@ function getTreeItemState(task: vscode.Task, javaDebug?: JavaDebug): string {
: GradleTaskTreeItem.STATE_IDLE;
}

type IconPath = { light: string | vscode.Uri; dark: string | vscode.Uri };

export class GradleTaskTreeItem extends vscode.TreeItem {
public readonly task: vscode.Task;
public readonly parentTreeItem: vscode.TreeItem;
Expand Down Expand Up @@ -184,8 +190,6 @@ class NoTasksTreeItem extends vscode.TreeItem {
}
}

const taskTreeItemMap: Map<string, GradleTaskTreeItem> = new Map();

export class GradleTasksTreeDataProvider
implements vscode.TreeDataProvider<vscode.TreeItem> {
private collapsed = true;
Expand Down Expand Up @@ -242,6 +246,7 @@ export class GradleTasksTreeDataProvider

buildTreeItems(): void {
taskTreeItemMap.clear();
projectBuildFiles.clear();
if (this.taskItems.length === 0) {
this.treeItems = [new NoTasksTreeItem(this.context)];
} else {
Expand Down Expand Up @@ -364,6 +369,7 @@ export class GradleTasksTreeDataProvider
);
workspaceTreeItem.addProject(projectTreeItem);
projectTreeItems.set(projectName, projectTreeItem);
projectBuildFiles.add(definition.buildFile);
}

const taskName = definition.script.slice(
Expand Down
19 changes: 13 additions & 6 deletions extension/src/tasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
GradleBuild,
} from './proto/gradle_tasks_pb';
import { SERVER_TASK_NAME } from './server';
import { hasBuildFile } from './gradleView';

const localize = nls.loadMessageBundle();

Expand Down Expand Up @@ -598,17 +599,23 @@ export function registerTaskProvider(
context: vscode.ExtensionContext,
client: GradleTasksClient
): GradleTaskProvider {
function refreshTasks(): void {
vscode.commands.executeCommand('gradle.refresh', false);
function handleBuildFileChange(uri: vscode.Uri): void {
// Ignore any nested build files outside of the multi-project builds
if (hasBuildFile(uri.fsPath)) {
vscode.commands.executeCommand('gradle.refresh');
}
}
function handleWorkspaceFoldersChange(): void {
vscode.commands.executeCommand('gradle.refresh');
}
const buildFileGlob = `**/*.{gradle,gradle.kts}`;
const watcher = vscode.workspace.createFileSystemWatcher(buildFileGlob);
context.subscriptions.push(watcher);
watcher.onDidChange(refreshTasks);
watcher.onDidDelete(refreshTasks);
watcher.onDidCreate(refreshTasks);
watcher.onDidChange(handleBuildFileChange);
watcher.onDidDelete(handleBuildFileChange);
watcher.onDidCreate(handleBuildFileChange);
context.subscriptions.push(
vscode.workspace.onDidChangeWorkspaceFolders(refreshTasks)
vscode.workspace.onDidChangeWorkspaceFolders(handleWorkspaceFoldersChange)
);
const provider = new GradleTaskProvider(client);
const taskProvider = vscode.tasks.registerTaskProvider('gradle', provider);
Expand Down
1 change: 1 addition & 0 deletions extension/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ module.exports = () => {
},
],
},
devtool: 'source-map',
externals: {
vscode: 'commonjs vscode',
},
Expand Down

0 comments on commit 1326560

Please sign in to comment.