提交 40515c5a 编写于 作者: E Erich Gamma

fixing #48590 use task API to fetch tasks

上级 3929ea09
......@@ -14,13 +14,14 @@ import { provideNpmScripts, hasNpmScripts, explorerIsEnabled } from './tasks';
let taskProvider: vscode.Disposable | undefined;
export async function activate(context: vscode.ExtensionContext): Promise<void> {
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);
......
......@@ -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<TreeItem> {
private taskTree: Folder[] | PackageJSON[] | null = null;
private taskProvider: TaskProvider;
private extensionContext: ExtensionContext;
private _onDidChangeTreeData: EventEmitter<TreeItem | null> = new EventEmitter<TreeItem | null>();
readonly onDidChangeTreeData: Event<TreeItem | null> = 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<TreeItem> {
async getChildren(element?: TreeItem): Promise<TreeItem[]> {
if (!this.taskTree) {
let tasks = await this.taskProvider.provideTasks();
let tasks = await workspace.fetchTasks({ type: 'npm' });
if (tasks) {
this.taskTree = this.buildTaskTree(tasks);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册