From 40515c5aa0de550a187ba7621d3a905c62b096eb Mon Sep 17 00:00:00 2001 From: Erich Gamma Date: Thu, 26 Apr 2018 12:58:16 +0200 Subject: [PATCH] fixing #48590 use task API to fetch tasks --- extensions/npm/src/main.ts | 15 +++++++-------- extensions/npm/src/npmView.ts | 8 +++----- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/extensions/npm/src/main.ts b/extensions/npm/src/main.ts index d1331783c55..d3ebc055c7d 100644 --- a/extensions/npm/src/main.ts +++ b/extensions/npm/src/main.ts @@ -14,13 +14,14 @@ import { provideNpmScripts, hasNpmScripts, explorerIsEnabled } from './tasks'; let taskProvider: vscode.Disposable | undefined; export async function activate(context: vscode.ExtensionContext): Promise { - taskProvider = registerTaskProvider(context); + taskProvider = registerTaskProvider(); + registerExplorer(context); configureHttpRequest(); vscode.workspace.onDidChangeConfiguration(() => configureHttpRequest()); context.subscriptions.push(addJSONProviders(httpRequest.xhr)); } -function registerTaskProvider(context: vscode.ExtensionContext): vscode.Disposable | undefined { +function registerTaskProvider(): vscode.Disposable | undefined { if (vscode.workspace.workspaceFolders) { let provider: vscode.TaskProvider = { provideTasks: () => { @@ -30,16 +31,14 @@ function registerTaskProvider(context: vscode.ExtensionContext): vscode.Disposab return undefined; } }; - let disposable = vscode.workspace.registerTaskProvider('npm', provider); - registerExplorer(context, provider); - return disposable; + return vscode.workspace.registerTaskProvider('npm', provider); } return undefined; } -async function registerExplorer(context: vscode.ExtensionContext, provider: vscode.TaskProvider) { - if (explorerIsEnabled()) { - let treeDataProvider = vscode.window.registerTreeDataProvider('npm', new NpmScriptsTreeDataProvider(context, provider)); +async function registerExplorer(context: vscode.ExtensionContext) { + if (explorerIsEnabled() && vscode.workspace.workspaceFolders) { + let treeDataProvider = vscode.window.registerTreeDataProvider('npm', new NpmScriptsTreeDataProvider(context)); context.subscriptions.push(treeDataProvider); if (await hasNpmScripts()) { vscode.commands.executeCommand('setContext', 'hasNpmScripts', true); diff --git a/extensions/npm/src/npmView.ts b/extensions/npm/src/npmView.ts index 94f9bdbebbc..2eaad7d831a 100644 --- a/extensions/npm/src/npmView.ts +++ b/extensions/npm/src/npmView.ts @@ -6,7 +6,7 @@ import * as path from 'path'; import { - DebugConfiguration, Event, EventEmitter, ExtensionContext, Task, TaskProvider, + DebugConfiguration, Event, EventEmitter, ExtensionContext, Task, TextDocument, ThemeIcon, TreeDataProvider, TreeItem, TreeItemCollapsibleState, Uri, WorkspaceFolder, commands, debug, window, workspace, Selection } from 'vscode'; @@ -92,14 +92,12 @@ class NpmScript extends TreeItem { export class NpmScriptsTreeDataProvider implements TreeDataProvider { private taskTree: Folder[] | PackageJSON[] | null = null; - private taskProvider: TaskProvider; private extensionContext: ExtensionContext; private _onDidChangeTreeData: EventEmitter = new EventEmitter(); readonly onDidChangeTreeData: Event = this._onDidChangeTreeData.event; - constructor(context: ExtensionContext, taskProvider: TaskProvider) { + constructor(context: ExtensionContext) { const subscriptions = context.subscriptions; - this.taskProvider = taskProvider; this.extensionContext = context; subscriptions.push(commands.registerCommand('npm.runScript', this.runScript, this)); subscriptions.push(commands.registerCommand('npm.debugScript', this.debugScript, this)); @@ -265,7 +263,7 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider { async getChildren(element?: TreeItem): Promise { if (!this.taskTree) { - let tasks = await this.taskProvider.provideTasks(); + let tasks = await workspace.fetchTasks({ type: 'npm' }); if (tasks) { this.taskTree = this.buildTaskTree(tasks); } -- GitLab