Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
0851a2aa
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,发现更多精彩内容 >>
提交
0851a2aa
编写于
4月 03, 2017
作者:
D
Dirk Baeumer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes #23756: Insiders can't find existing preLaunchTask
上级
11a11588
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
39 addition
and
37 deletion
+39
-37
src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts
...rkbench/parts/tasks/electron-browser/task.contribution.ts
+39
-37
未找到文件。
src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts
浏览文件 @
0851a2aa
...
...
@@ -893,52 +893,54 @@ class TaskService extends EventEmitter implements ITaskService {
}
private
computeWorkspaceTasks
():
TPromise
<
WorkspaceTaskResult
>
{
let
{
config
,
hasParseErrors
}
=
this
.
getConfiguration
();
if
(
hasParseErrors
)
{
return
TPromise
.
as
({
taskSet
:
undefined
,
hasErrors
:
true
});
}
let
configPromise
:
TPromise
<
{
config
:
TaskConfig
.
ExternalTaskRunnerConfiguration
;
hasErrors
:
boolean
}
>
;
if
(
config
)
{
let
engine
=
TaskConfig
.
ExecutionEngine
.
from
(
config
);
if
(
engine
===
ExecutionEngine
.
Process
&&
this
.
hasDetectorSupport
(
config
))
{
configPromise
=
new
ProcessRunnerDetector
(
this
.
fileService
,
this
.
contextService
,
this
.
configurationResolverService
,
config
).
detect
(
true
).
then
((
value
)
=>
{
let
hasErrors
=
this
.
printStderr
(
value
.
stderr
);
let
detectedConfig
=
value
.
config
;
if
(
!
detectedConfig
)
{
return
config
;
}
let
result
:
TaskConfig
.
ExternalTaskRunnerConfiguration
=
Objects
.
clone
(
config
);
let
configuredTasks
:
IStringDictionary
<
TaskConfig
.
TaskDescription
>
=
Object
.
create
(
null
);
if
(
!
result
.
tasks
)
{
if
(
detectedConfig
.
tasks
)
{
result
.
tasks
=
detectedConfig
.
tasks
;
{
let
{
config
,
hasParseErrors
}
=
this
.
getConfiguration
();
if
(
hasParseErrors
)
{
return
TPromise
.
as
({
taskSet
:
undefined
,
hasErrors
:
true
});
}
if
(
config
)
{
let
engine
=
TaskConfig
.
ExecutionEngine
.
from
(
config
);
if
(
engine
===
ExecutionEngine
.
Process
&&
this
.
hasDetectorSupport
(
config
))
{
configPromise
=
new
ProcessRunnerDetector
(
this
.
fileService
,
this
.
contextService
,
this
.
configurationResolverService
,
config
).
detect
(
true
).
then
((
value
)
=>
{
let
hasErrors
=
this
.
printStderr
(
value
.
stderr
);
let
detectedConfig
=
value
.
config
;
if
(
!
detectedConfig
)
{
return
config
;
}
}
else
{
result
.
tasks
.
forEach
(
task
=>
configuredTasks
[
task
.
taskName
]
=
task
);
detectedConfig
.
tasks
.
forEach
((
task
)
=>
{
if
(
!
configuredTasks
[
task
.
taskName
]
)
{
result
.
tasks
.
push
(
task
)
;
let
result
:
TaskConfig
.
ExternalTaskRunnerConfiguration
=
Objects
.
clone
(
config
);
let
configuredTasks
:
IStringDictionary
<
TaskConfig
.
TaskDescription
>
=
Object
.
create
(
null
);
if
(
!
result
.
tasks
)
{
if
(
detectedConfig
.
tasks
)
{
result
.
tasks
=
detectedConfig
.
tasks
;
}
});
}
return
{
config
:
result
,
hasErrors
};
});
}
else
{
result
.
tasks
.
forEach
(
task
=>
configuredTasks
[
task
.
taskName
]
=
task
);
detectedConfig
.
tasks
.
forEach
((
task
)
=>
{
if
(
!
configuredTasks
[
task
.
taskName
])
{
result
.
tasks
.
push
(
task
);
}
});
}
return
{
config
:
result
,
hasErrors
};
});
}
else
{
configPromise
=
TPromise
.
as
({
config
,
hasErrors
:
false
});
}
}
else
{
configPromise
=
TPromise
.
as
({
config
,
hasErrors
:
false
});
configPromise
=
new
ProcessRunnerDetector
(
this
.
fileService
,
this
.
contextService
,
this
.
configurationResolverService
).
detect
(
true
).
then
((
value
)
=>
{
let
hasErrors
=
this
.
printStderr
(
value
.
stderr
);
return
{
config
:
value
.
config
,
hasErrors
};
});
}
}
else
{
configPromise
=
new
ProcessRunnerDetector
(
this
.
fileService
,
this
.
contextService
,
this
.
configurationResolverService
).
detect
(
true
).
then
((
value
)
=>
{
let
hasErrors
=
this
.
printStderr
(
value
.
stderr
);
return
{
config
:
value
.
config
,
hasErrors
};
});
}
return
configPromise
.
then
((
value
)
=>
{
return
configPromise
.
then
((
resolved
)
=>
{
return
ProblemMatcherRegistry
.
onReady
().
then
(()
=>
{
if
(
!
value
||
!
value
.
config
)
{
return
{
taskSet
:
undefined
,
hasErrors
:
value
!==
void
0
?
value
.
hasErrors
:
false
};
if
(
!
resolved
||
!
resolved
.
config
)
{
return
{
taskSet
:
undefined
,
hasErrors
:
resolved
!==
void
0
?
resolved
.
hasErrors
:
false
};
}
let
problemReporter
=
new
ProblemReporter
(
this
.
outputChannel
);
let
parseResult
=
TaskConfig
.
parse
(
config
,
problemReporter
);
let
parseResult
=
TaskConfig
.
parse
(
resolved
.
config
,
problemReporter
);
let
hasErrors
=
false
;
if
(
!
parseResult
.
validationStatus
.
isOK
())
{
hasErrors
=
true
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录