mirror of
https://github.com/Microsoft/vscode
synced 2024-10-12 06:17:18 +00:00
fixing #48590 use task API to fetch tasks
This commit is contained in:
parent
3929ea0941
commit
40515c5aa0
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue