Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
711489ac
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
711489ac
编写于
11月 04, 2019
作者:
A
Alex Ross
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix tasks.json not being opened
Part of #83836
上级
5337703f
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
33 addition
and
33 deletion
+33
-33
src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts
...vs/workbench/contrib/tasks/browser/abstractTaskService.ts
+33
-33
未找到文件。
src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts
浏览文件 @
711489ac
...
...
@@ -90,6 +90,8 @@ export namespace ConfigureTaskAction {
export
const
TEXT
=
nls
.
localize
(
'
ConfigureTaskRunnerAction.label
'
,
"
Configure Task
"
);
}
type
TaskQuickPickEntryType
=
(
IQuickPickItem
&
{
task
:
Task
;
})
|
(
IQuickPickItem
&
{
folder
:
IWorkspaceFolder
;
});
class
ProblemReporter
implements
TaskConfig
.
IProblemReporter
{
private
_validationStatus
:
ValidationStatus
;
...
...
@@ -2461,19 +2463,12 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
});
}
private
async
runConfigureTasks
():
Promise
<
void
>
{
if
(
!
this
.
canRunCommand
())
{
return
undefined
;
}
let
taskPromise
:
Promise
<
TaskMap
>
;
if
(
this
.
schemaVersion
===
JsonSchemaVersion
.
V2_0_0
)
{
taskPromise
=
this
.
getGroupedTasks
();
}
else
{
taskPromise
=
Promise
.
resolve
(
new
TaskMap
());
private
isTaskEntry
(
value
:
IQuickPickItem
):
value
is
IQuickPickItem
&
{
task
:
Task
}
{
let
candidate
:
IQuickPickItem
&
{
task
:
Task
}
=
value
as
any
;
return
candidate
&&
!!
candidate
.
task
;
}
let
configureTask
=
(
task
:
Task
):
void
=>
{
private
configureTask
(
task
:
Task
)
{
if
(
ContributedTask
.
is
(
task
))
{
this
.
customize
(
task
,
undefined
,
true
);
}
else
if
(
CustomTask
.
is
(
task
))
{
...
...
@@ -2481,36 +2476,41 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
}
else
if
(
ConfiguringTask
.
is
(
task
))
{
// Do nothing.
}
};
function
isTaskEntry
(
value
:
IQuickPickItem
):
value
is
IQuickPickItem
&
{
task
:
Task
}
{
let
candidate
:
IQuickPickItem
&
{
task
:
Task
}
=
value
as
any
;
return
candidate
&&
!!
candidate
.
task
;
}
let
stats
=
this
.
contextService
.
getWorkspace
().
folders
.
map
<
Promise
<
IFileStat
|
undefined
>>
((
folder
)
=>
{
return
this
.
fileService
.
resolve
(
folder
.
toResource
(
'
.vscode/tasks.json
'
)).
then
(
stat
=>
stat
,
()
=>
undefined
);
});
type
EntryType
=
(
IQuickPickItem
&
{
task
:
Task
;
})
|
(
IQuickPickItem
&
{
folder
:
IWorkspaceFolder
;
});
function
handleSelection
(
this
:
any
,
selection
:
EntryType
)
{
private
handleSelection
(
selection
:
TaskQuickPickEntryType
)
{
if
(
!
selection
)
{
return
;
}
if
(
isTaskEntry
(
selection
))
{
configureTask
(
selection
.
task
);
if
(
this
.
isTaskEntry
(
selection
))
{
this
.
configureTask
(
selection
.
task
);
}
else
{
this
.
openTaskFile
(
selection
.
folder
.
toResource
(
'
.vscode/tasks.json
'
));
}
}
private
async
runConfigureTasks
():
Promise
<
void
>
{
if
(
!
this
.
canRunCommand
())
{
return
undefined
;
}
let
taskPromise
:
Promise
<
TaskMap
>
;
if
(
this
.
schemaVersion
===
JsonSchemaVersion
.
V2_0_0
)
{
taskPromise
=
this
.
getGroupedTasks
();
}
else
{
taskPromise
=
Promise
.
resolve
(
new
TaskMap
());
}
let
stats
=
this
.
contextService
.
getWorkspace
().
folders
.
map
<
Promise
<
IFileStat
|
undefined
>>
((
folder
)
=>
{
return
this
.
fileService
.
resolve
(
folder
.
toResource
(
'
.vscode/tasks.json
'
)).
then
(
stat
=>
stat
,
()
=>
undefined
);
});
let
createLabel
=
nls
.
localize
(
'
TaskService.createJsonFile
'
,
'
Create tasks.json file from template
'
);
let
openLabel
=
nls
.
localize
(
'
TaskService.openJsonFile
'
,
'
Open tasks.json file
'
);
const
tokenSource
=
new
CancellationTokenSource
();
const
cancellationToken
:
CancellationToken
=
tokenSource
.
token
;
let
entries
=
Promise
.
all
(
stats
).
then
((
stats
)
=>
{
return
taskPromise
.
then
((
taskMap
)
=>
{
let
entries
:
QuickPickInput
<
EntryType
>
[]
=
[];
let
entries
:
QuickPickInput
<
TaskQuickPick
EntryType
>
[]
=
[];
let
needsCreateOrOpen
:
boolean
=
true
;
if
(
this
.
contextService
.
getWorkbenchState
()
!==
WorkbenchState
.
EMPTY
)
{
let
tasks
=
taskMap
.
all
();
...
...
@@ -2538,7 +2538,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
if
(
tasks
.
length
>
0
)
{
tasks
=
tasks
.
slice
().
sort
((
a
,
b
)
=>
a
.
_label
.
localeCompare
(
b
.
_label
));
for
(
let
i
=
0
;
i
<
tasks
.
length
;
i
++
)
{
let
entry
:
EntryType
=
{
label
:
tasks
[
i
].
_label
,
task
:
tasks
[
i
],
description
:
folder
.
name
};
let
entry
:
TaskQuickPick
EntryType
=
{
label
:
tasks
[
i
].
_label
,
task
:
tasks
[
i
],
description
:
folder
.
name
};
if
(
i
===
0
)
{
entries
.
push
({
type
:
'
separator
'
,
label
:
folder
.
name
});
}
...
...
@@ -2546,7 +2546,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
}
}
else
{
let
label
=
stats
[
index
]
!==
undefined
?
openLabel
:
createLabel
;
let
entry
:
EntryType
=
{
label
,
folder
:
folder
};
let
entry
:
TaskQuickPick
EntryType
=
{
label
,
folder
:
folder
};
entries
.
push
({
type
:
'
separator
'
,
label
:
folder
.
name
});
entries
.
push
(
entry
);
}
...
...
@@ -2573,7 +2573,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
if
(
!
timeout
&&
((
await
entries
).
length
===
1
)
&&
this
.
configurationService
.
getValue
<
boolean
>
(
QUICKOPEN_SKIP_CONFIG
))
{
const
entry
:
any
=
<
any
>
((
await
entries
)[
0
]);
if
(
entry
.
task
)
{
handleSelection
(
entry
);
this
.
handleSelection
(
entry
);
return
;
}
}
...
...
@@ -2585,10 +2585,10 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
// canceled when there's only one task
const
task
=
(
await
entries
)[
0
];
if
((
<
any
>
task
).
task
)
{
selection
=
<
EntryType
>
task
;
selection
=
<
TaskQuickPick
EntryType
>
task
;
}
}
handleSelection
(
selection
);
this
.
handleSelection
(
selection
);
});
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录