Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
b86a54e7
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,发现更多精彩内容 >>
提交
b86a54e7
编写于
3月 13, 2017
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix #22453
上级
95f4f8d0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
66 addition
and
51 deletion
+66
-51
extensions/vscode-api-tests/src/window.test.ts
extensions/vscode-api-tests/src/window.test.ts
+11
-0
src/vs/workbench/api/node/extHostQuickOpen.ts
src/vs/workbench/api/node/extHostQuickOpen.ts
+46
-41
src/vs/workbench/browser/parts/quickopen/quickOpenController.ts
.../workbench/browser/parts/quickopen/quickOpenController.ts
+9
-10
未找到文件。
extensions/vscode-api-tests/src/window.test.ts
浏览文件 @
b86a54e7
...
...
@@ -290,6 +290,17 @@ suite('window namespace tests', () => {
});
});
test
(
'
showQuickPick, never resolve promise and cancel - #22453
'
,
function
()
{
const
result
=
window
.
showQuickPick
(
new
Promise
<
string
[]
>
(
resolve
=>
{
}));
const
a
=
result
.
then
(
value
=>
{
assert
.
equal
(
value
,
undefined
);
});
const
b
=
commands
.
executeCommand
(
'
workbench.action.closeQuickOpen
'
),
return
Promise
.
all
([
a
,
b
]);
});
test
(
'
editor, selection change kind
'
,
()
=>
{
return
workspace
.
openTextDocument
(
join
(
workspace
.
rootPath
||
''
,
'
./far.js
'
)).
then
(
doc
=>
window
.
showTextDocument
(
doc
)).
then
(
editor
=>
{
...
...
src/vs/workbench/api/node/extHostQuickOpen.ts
浏览文件 @
b86a54e7
...
...
@@ -39,53 +39,58 @@ export class ExtHostQuickOpen extends ExtHostQuickOpenShape {
ignoreFocusLost
:
options
&&
options
.
ignoreFocusOut
});
const
promise
=
itemsPromise
.
then
(
items
=>
{
let
pickItems
:
MyQuickPickItems
[]
=
[];
for
(
let
handle
=
0
;
handle
<
items
.
length
;
handle
++
)
{
let
item
=
items
[
handle
];
let
label
:
string
;
let
description
:
string
;
let
detail
:
string
;
if
(
typeof
item
===
'
string
'
)
{
label
=
item
;
}
else
{
label
=
item
.
label
;
description
=
item
.
description
;
detail
=
item
.
detail
;
}
pickItems
.
push
({
label
,
description
,
handle
,
detail
});
}
// handle selection changes
if
(
options
&&
typeof
options
.
onDidSelectItem
===
'
function
'
)
{
this
.
_onDidSelectItem
=
(
handle
)
=>
{
options
.
onDidSelectItem
(
items
[
handle
]);
};
const
promise
=
TPromise
.
any
(
<
TPromise
<
number
|
Item
[]
>
[]
>
[
quickPickWidget
,
itemsPromise
]).
then
(
values
=>
{
if
(
values
.
key
===
'
0
'
)
{
return
undefined
;
}
// show items
this
.
_proxy
.
$setItems
(
pickItems
);
return
itemsPromise
.
then
(
items
=>
{
let
pickItems
:
MyQuickPickItems
[]
=
[];
for
(
let
handle
=
0
;
handle
<
items
.
length
;
handle
++
)
{
let
item
=
items
[
handle
];
let
label
:
string
;
let
description
:
string
;
let
detail
:
string
;
if
(
typeof
item
===
'
string
'
)
{
label
=
item
;
}
else
{
label
=
item
.
label
;
description
=
item
.
description
;
detail
=
item
.
detail
;
}
pickItems
.
push
({
label
,
description
,
handle
,
detail
});
}
return
quickPickWidget
.
then
(
handle
=>
{
if
(
typeof
handle
===
'
number
'
)
{
return
items
[
handle
];
// handle selection changes
if
(
options
&&
typeof
options
.
onDidSelectItem
===
'
function
'
)
{
this
.
_onDidSelectItem
=
(
handle
)
=>
{
options
.
onDidSelectItem
(
items
[
handle
]);
};
}
return
undefined
;
});
},
(
err
)
=>
{
this
.
_proxy
.
$setError
(
err
);
return
TPromise
.
wrapError
(
err
);
});
// show items
this
.
_proxy
.
$setItems
(
pickItems
);
return
quickPickWidget
.
then
(
handle
=>
{
if
(
typeof
handle
===
'
number
'
)
{
return
items
[
handle
];
}
return
undefined
;
});
},
(
err
)
=>
{
this
.
_proxy
.
$setError
(
err
);
return
TPromise
.
wrapError
(
err
);
});
});
return
wireCancellationToken
(
token
,
promise
,
true
);
}
...
...
src/vs/workbench/browser/parts/quickopen/quickOpenController.ts
浏览文件 @
b86a54e7
...
...
@@ -318,16 +318,15 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
this
.
pickOpenWidget
.
layout
(
this
.
layoutDimensions
);
}
// Detect cancellation while pick promise is loading
let
cancelTriggered
=
false
;
this
.
pickOpenWidget
.
setCallbacks
({
onOk
:
()
=>
{
/* ignore, handle later */
},
onCancel
:
()
=>
{
cancelTriggered
=
true
;
},
onType
:
(
value
:
string
)
=>
{
/* ignore, handle later */
},
});
return
new
TPromise
<
IPickOpenEntry
|
string
>
((
complete
,
error
,
progress
)
=>
{
// Detect cancellation while pick promise is loading
this
.
pickOpenWidget
.
setCallbacks
({
onCancel
:
()
=>
{
complete
(
void
0
);
},
onOk
:
()
=>
{
/* ignore, handle later */
},
onType
:
(
value
:
string
)
=>
{
/* ignore, handle later */
},
});
// hide widget when being cancelled
token
.
onCancellationRequested
(
e
=>
{
if
(
this
.
currentPickerToken
===
currentPickerToken
)
{
...
...
@@ -339,7 +338,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
// Resolve picks
picksPromise
.
then
(
picks
=>
{
if
(
this
.
currentPickerToken
!==
currentPickerToken
||
cancelTriggered
)
{
if
(
this
.
currentPickerToken
!==
currentPickerToken
)
{
return
complete
(
void
0
);
// Return as canceled if another request came after or user canceled
}
...
...
@@ -827,7 +826,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
const
entry
=
this
.
instantiationService
.
createInstance
(
EditorHistoryEntry
,
input
);
const
{
labelHighlights
,
descriptionHighlights
}
=
QuickOpenEntry
.
highlight
(
entry
,
searchValue
);
const
{
labelHighlights
,
descriptionHighlights
}
=
QuickOpenEntry
.
highlight
(
entry
,
searchValue
);
entry
.
setHighlights
(
labelHighlights
,
descriptionHighlights
);
results
.
push
(
entry
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录