Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
65f46a1d
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
65f46a1d
编写于
8月 10, 2018
作者:
C
Christof Marti
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use QuickInput (#29096)
上级
c8ac8ec3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
43 deletion
+36
-43
src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts
...rkbench/parts/tasks/electron-browser/task.contribution.ts
+36
-43
未找到文件。
src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts
浏览文件 @
65f46a1d
...
...
@@ -57,7 +57,6 @@ import { IJSONSchema } from 'vs/base/common/jsonSchema';
import
{
IStatusbarItem
,
IStatusbarRegistry
,
Extensions
as
StatusbarExtensions
,
StatusbarItemDescriptor
,
StatusbarAlignment
}
from
'
vs/workbench/browser/parts/statusbar/statusbar
'
;
import
{
IQuickOpenRegistry
,
Extensions
as
QuickOpenExtensions
,
QuickOpenHandlerDescriptor
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
IQuickOpenService
,
IPickOpenEntry
,
IPickOpenAction
,
IPickOpenItem
}
from
'
vs/platform/quickOpen/common/quickOpen
'
;
import
{
IPanelService
}
from
'
vs/workbench/services/panel/common/panelService
'
;
import
Constants
from
'
vs/workbench/parts/markers/electron-browser/constants
'
;
import
{
IPartService
}
from
'
vs/workbench/services/part/common/partService
'
;
...
...
@@ -90,7 +89,7 @@ import { QuickOpenActionContributor } from '../browser/quickOpen';
import
{
Themable
,
STATUS_BAR_FOREGROUND
,
STATUS_BAR_NO_FOLDER_FOREGROUND
}
from
'
vs/workbench/common/theme
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IQuickInputService
}
from
'
vs/platform/quickinput/common/quickInput
'
;
import
{
IQuickInputService
,
IQuickPickItem
,
QuickPickInput
}
from
'
vs/platform/quickinput/common/quickInput
'
;
let
tasksCategory
=
nls
.
localize
(
'
tasksCategory
'
,
"
Tasks
"
);
...
...
@@ -425,7 +424,7 @@ class TaskMap {
}
}
interface
TaskQuickPickEntry
extends
I
PickOpenEntry
{
interface
TaskQuickPickEntry
extends
I
QuickPickItem
{
task
:
Task
;
}
...
...
@@ -475,7 +474,6 @@ class TaskService implements ITaskService {
@
ILifecycleService
lifecycleService
:
ILifecycleService
,
@
IModelService
private
modelService
:
IModelService
,
@
IExtensionService
private
extensionService
:
IExtensionService
,
@
IQuickOpenService
private
quickOpenService
:
IQuickOpenService
,
@
IQuickInputService
private
quickInputService
:
IQuickInputService
,
@
IConfigurationResolverService
private
configurationResolverService
:
IConfigurationResolverService
,
@
ITerminalService
private
terminalService
:
ITerminalService
,
...
...
@@ -873,12 +871,12 @@ class TaskService implements ITaskService {
}
private
attachProblemMatcher
(
task
:
ContributedTask
|
CustomTask
):
TPromise
<
Task
>
{
interface
ProblemMatcherPickEntry
extends
I
PickOpenEntry
{
interface
ProblemMatcherPickEntry
extends
I
QuickPickItem
{
matcher
:
NamedProblemMatcher
;
never
?:
boolean
;
learnMore
?:
boolean
;
}
let
entries
:
ProblemMatcherPickEntry
[]
=
[];
let
entries
:
QuickPickInput
<
ProblemMatcherPickEntry
>
[]
=
[];
for
(
let
key
of
ProblemMatcherRegistry
.
keys
())
{
let
matcher
=
ProblemMatcherRegistry
.
get
(
key
);
if
(
matcher
.
deprecated
)
{
...
...
@@ -896,15 +894,14 @@ class TaskService implements ITaskService {
}
if
(
entries
.
length
>
0
)
{
entries
=
entries
.
sort
((
a
,
b
)
=>
a
.
label
.
localeCompare
(
b
.
label
));
entries
[
0
].
separator
=
{
border
:
true
,
label
:
nls
.
localize
(
'
TaskService.associate
'
,
'
associate
'
)
}
;
entries
.
unshift
({
type
:
'
separator
'
,
border
:
true
,
label
:
nls
.
localize
(
'
TaskService.associate
'
,
'
associate
'
)
})
;
entries
.
unshift
(
{
label
:
nls
.
localize
(
'
TaskService.attachProblemMatcher.continueWithout
'
,
'
Continue without scanning the task output
'
),
matcher
:
undefined
},
{
label
:
nls
.
localize
(
'
TaskService.attachProblemMatcher.never
'
,
'
Never scan the task output
'
),
matcher
:
undefined
,
never
:
true
},
{
label
:
nls
.
localize
(
'
TaskService.attachProblemMatcher.learnMoreAbout
'
,
'
Learn more about scanning the task output
'
),
matcher
:
undefined
,
learnMore
:
true
}
);
return
this
.
quick
Open
Service
.
pick
(
entries
,
{
return
this
.
quick
Input
Service
.
pick
(
entries
,
{
placeHolder
:
nls
.
localize
(
'
selectProblemMatcher
'
,
'
Select for which kind of errors and warnings to scan the task output
'
),
autoFocus
:
{
autoFocusFirstEntry
:
true
}
}).
then
((
selected
)
=>
{
if
(
selected
)
{
if
(
selected
.
learnMore
)
{
...
...
@@ -1807,32 +1804,13 @@ class TaskService implements ITaskService {
}
return
{
label
:
task
.
_label
,
description
,
task
};
};
let
taskService
=
this
;
let
action
=
new
class
extends
Action
implements
IPickOpenAction
{
constructor
()
{
super
(
'
configureAction
'
,
'
Configure Task
'
,
'
quick-open-task-configure
'
,
true
);
}
public
run
(
item
:
IPickOpenItem
):
TPromise
<
boolean
>
{
let
task
:
Task
=
item
.
getPayload
();
taskService
.
quickOpenService
.
close
();
if
(
ContributedTask
.
is
(
task
))
{
taskService
.
customize
(
task
,
undefined
,
true
);
}
else
if
(
CustomTask
.
is
(
task
))
{
taskService
.
openConfig
(
task
);
}
return
TPromise
.
as
(
false
);
function
fillEntries
(
entries
:
QuickPickInput
<
TaskQuickPickEntry
>
[],
tasks
:
Task
[],
groupLabel
:
string
,
withBorder
:
boolean
=
false
):
void
{
if
(
tasks
.
length
)
{
entries
.
push
({
type
:
'
separator
'
,
label
:
groupLabel
,
border
:
withBorder
});
}
};
function
fillEntries
(
entries
:
TaskQuickPickEntry
[],
tasks
:
Task
[],
groupLabel
:
string
,
withBorder
:
boolean
=
false
):
void
{
let
first
=
true
;
for
(
let
task
of
tasks
)
{
let
entry
:
TaskQuickPickEntry
=
TaskQuickPickEntry
(
task
);
if
(
first
)
{
first
=
false
;
entry
.
separator
=
{
label
:
groupLabel
,
border
:
withBorder
};
}
entry
.
action
=
action
;
entry
.
payload
=
task
;
entry
.
buttons
=
[{
iconClass
:
'
quick-open-task-configure
'
,
tooltip
:
nls
.
localize
(
'
configureTask
'
,
"
Configure Task
"
)
}];
entries
.
push
(
entry
);
}
}
...
...
@@ -1896,12 +1874,24 @@ class TaskService implements ITaskService {
return
tasks
.
then
((
tasks
)
=>
this
.
createTaskQuickPickEntries
(
tasks
,
group
,
sort
));
}
};
return
this
.
quick
Open
Service
.
pick
(
_createEntries
().
then
((
entries
)
=>
{
return
this
.
quick
Input
Service
.
pick
(
_createEntries
().
then
((
entries
)
=>
{
if
(
entries
.
length
===
0
&&
defaultEntry
)
{
entries
.
push
(
defaultEntry
);
}
return
entries
;
}),
{
placeHolder
,
autoFocus
:
{
autoFocusFirstEntry
:
true
},
matchOnDescription
:
true
}).
then
(
entry
=>
entry
?
entry
.
task
:
undefined
);
}),
{
placeHolder
,
matchOnDescription
:
true
,
onDidTriggerItemButton
:
context
=>
{
let
task
=
context
.
item
.
task
;
this
.
quickInputService
.
cancel
();
if
(
ContributedTask
.
is
(
task
))
{
this
.
customize
(
task
,
undefined
,
true
);
}
else
if
(
CustomTask
.
is
(
task
))
{
this
.
openConfig
(
task
);
}
}
}).
then
(
entry
=>
entry
?
entry
.
task
:
undefined
);
}
private
showIgnoredFoldersMessage
():
TPromise
<
void
>
{
...
...
@@ -2254,8 +2244,8 @@ class TaskService implements ITaskService {
}
};
function
isTaskEntry
(
value
:
I
PickOpenEntry
):
value
is
IPickOpenEntry
&
{
task
:
Task
}
{
let
candidate
:
I
PickOpenEntry
&
{
task
:
Task
}
=
value
as
any
;
function
isTaskEntry
(
value
:
I
QuickPickItem
):
value
is
IQuickPickItem
&
{
task
:
Task
}
{
let
candidate
:
I
QuickPickItem
&
{
task
:
Task
}
=
value
as
any
;
return
candidate
&&
!!
candidate
.
task
;
}
...
...
@@ -2267,8 +2257,8 @@ class TaskService implements ITaskService {
let
openLabel
=
nls
.
localize
(
'
TaskService.openJsonFile
'
,
'
Open tasks.json file
'
);
let
entries
=
TPromise
.
join
(
stats
).
then
((
stats
)
=>
{
return
taskPromise
.
then
((
taskMap
)
=>
{
type
EntryType
=
(
I
PickOpenEntry
&
{
task
:
Task
;
})
|
(
IPickOpenEntry
&
{
folder
:
IWorkspaceFolder
;
});
let
entries
:
EntryType
[]
=
[];
type
EntryType
=
(
I
QuickPickItem
&
{
task
:
Task
;
})
|
(
IQuickPickItem
&
{
folder
:
IWorkspaceFolder
;
});
let
entries
:
QuickPickInput
<
EntryType
>
[]
=
[];
if
(
this
.
contextService
.
getWorkbenchState
()
===
WorkbenchState
.
FOLDER
)
{
let
tasks
=
taskMap
.
all
();
let
needsCreateOrOpen
:
boolean
=
true
;
...
...
@@ -2283,7 +2273,10 @@ class TaskService implements ITaskService {
}
if
(
needsCreateOrOpen
)
{
let
label
=
stats
[
0
]
!==
void
0
?
openLabel
:
createLabel
;
entries
.
push
({
label
,
folder
:
this
.
contextService
.
getWorkspace
().
folders
[
0
],
separator
:
entries
.
length
>
0
?
{
border
:
true
}
:
undefined
});
if
(
entries
.
length
)
{
entries
.
push
({
type
:
'
separator
'
,
border
:
true
});
}
entries
.
push
({
label
,
folder
:
this
.
contextService
.
getWorkspace
().
folders
[
0
]
});
}
}
else
{
let
folders
=
this
.
contextService
.
getWorkspace
().
folders
;
...
...
@@ -2295,14 +2288,14 @@ class TaskService implements ITaskService {
for
(
let
i
=
0
;
i
<
tasks
.
length
;
i
++
)
{
let
entry
:
EntryType
=
{
label
:
tasks
[
i
].
_label
,
task
:
tasks
[
i
],
description
:
folder
.
name
};
if
(
i
===
0
)
{
entr
y
.
separator
=
{
label
:
folder
.
name
,
border
:
index
>
0
}
;
entr
ies
.
push
({
type
:
'
separator
'
,
label
:
folder
.
name
,
border
:
index
>
0
})
;
}
entries
.
push
(
entry
);
}
}
else
{
let
label
=
stats
[
index
]
!==
void
0
?
openLabel
:
createLabel
;
let
entry
:
EntryType
=
{
label
,
folder
:
folder
};
entr
y
.
separator
=
{
label
:
folder
.
name
,
border
:
index
>
0
}
;
entr
ies
.
push
({
type
:
'
separator
'
,
label
:
folder
.
name
,
border
:
index
>
0
})
;
entries
.
push
(
entry
);
}
index
++
;
...
...
@@ -2312,8 +2305,8 @@ class TaskService implements ITaskService {
});
});
this
.
quick
Open
Service
.
pick
(
entries
,
{
placeHolder
:
nls
.
localize
(
'
TaskService.pickTask
'
,
'
Select a task to configure
'
)
,
autoFocus
:
{
autoFocusFirstEntry
:
true
}
}).
this
.
quick
Input
Service
.
pick
(
entries
,
{
placeHolder
:
nls
.
localize
(
'
TaskService.pickTask
'
,
'
Select a task to configure
'
)
}).
then
((
selection
)
=>
{
if
(
!
selection
)
{
return
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录