Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
b52e3c25
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,发现更多精彩内容 >>
提交
b52e3c25
编写于
8月 29, 2016
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
further simplify quick open around default handlers
上级
60707855
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
102 addition
and
120 deletion
+102
-120
src/vs/workbench/browser/parts/quickopen/quickOpenController.ts
.../workbench/browser/parts/quickopen/quickOpenController.ts
+72
-86
src/vs/workbench/browser/quickopen.ts
src/vs/workbench/browser/quickopen.ts
+14
-13
src/vs/workbench/parts/quickopen/browser/helpHandler.ts
src/vs/workbench/parts/quickopen/browser/helpHandler.ts
+3
-3
src/vs/workbench/parts/search/browser/openAnythingHandler.ts
src/vs/workbench/parts/search/browser/openAnythingHandler.ts
+7
-7
src/vs/workbench/test/browser/parts/quickOpen/quickopen.perf.test.ts
...bench/test/browser/parts/quickOpen/quickopen.perf.test.ts
+6
-11
未找到文件。
src/vs/workbench/browser/parts/quickopen/quickOpenController.ts
浏览文件 @
b52e3c25
此差异已折叠。
点击以展开。
src/vs/workbench/browser/quickopen.ts
浏览文件 @
b52e3c25
...
...
@@ -33,7 +33,7 @@ export class QuickOpenHandler {
* As such, returning the same model instance across multiple searches will yield best
* results in terms of performance when many items are shown.
*/
public
getResults
(
searchValue
:
string
):
TPromise
<
IModel
<
any
>>
|
QuickOpenHandlerResult
{
public
getResults
(
searchValue
:
string
):
TPromise
<
IModel
<
any
>>
{
return
TPromise
.
as
(
null
);
}
...
...
@@ -59,6 +59,13 @@ export class QuickOpenHandler {
return
true
;
}
/**
* Hints to the outside that this quick open handler typically returns results fast.
*/
public
hasShortResponseTime
():
boolean
{
return
false
;
}
/**
* Indicates if the handler wishes the quick open widget to automatically select the first result entry or an entry
* based on a specific prefix match.
...
...
@@ -100,11 +107,6 @@ export class QuickOpenHandler {
}
}
export
interface
QuickOpenHandlerResult
{
shortResponseTime
:
boolean
;
promisedModel
:
TPromise
<
IModel
<
any
>>
;
}
export
interface
QuickOpenHandlerHelpEntry
{
prefix
:
string
;
description
:
string
;
...
...
@@ -170,18 +172,17 @@ export interface IQuickOpenRegistry {
getQuickOpenHandler
(
prefix
:
string
):
QuickOpenHandlerDescriptor
;
/**
* Returns the default quick open handler
s
.
* Returns the default quick open handler.
*/
getDefaultQuickOpenHandler
s
():
QuickOpenHandlerDescriptor
[]
;
getDefaultQuickOpenHandler
():
QuickOpenHandlerDescriptor
;
}
class
QuickOpenRegistry
implements
IQuickOpenRegistry
{
private
handlers
:
QuickOpenHandlerDescriptor
[];
private
defaultHandler
s
:
QuickOpenHandlerDescriptor
[]
;
private
defaultHandler
:
QuickOpenHandlerDescriptor
;
constructor
()
{
this
.
handlers
=
[];
this
.
defaultHandlers
=
[];
}
public
registerQuickOpenHandler
(
descriptor
:
QuickOpenHandlerDescriptor
):
void
{
...
...
@@ -193,7 +194,7 @@ class QuickOpenRegistry implements IQuickOpenRegistry {
}
public
registerDefaultQuickOpenHandler
(
descriptor
:
QuickOpenHandlerDescriptor
):
void
{
this
.
defaultHandler
s
.
push
(
descriptor
)
;
this
.
defaultHandler
=
descriptor
;
}
public
getQuickOpenHandlers
():
QuickOpenHandlerDescriptor
[]
{
...
...
@@ -204,8 +205,8 @@ class QuickOpenRegistry implements IQuickOpenRegistry {
return
text
?
arrays
.
first
(
this
.
handlers
,
h
=>
strings
.
startsWith
(
text
,
h
.
prefix
),
null
)
:
null
;
}
public
getDefaultQuickOpenHandler
s
():
QuickOpenHandlerDescriptor
[]
{
return
this
.
defaultHandler
s
;
public
getDefaultQuickOpenHandler
():
QuickOpenHandlerDescriptor
{
return
this
.
defaultHandler
;
}
}
...
...
src/vs/workbench/parts/quickopen/browser/helpHandler.ts
浏览文件 @
b52e3c25
...
...
@@ -127,9 +127,9 @@ export class HelpHandler extends QuickOpenHandler {
let
registry
=
(
<
IQuickOpenRegistry
>
Registry
.
as
(
Extensions
.
Quickopen
));
let
handlerDescriptors
=
registry
.
getQuickOpenHandlers
();
let
defaultHandler
s
=
registry
.
getDefaultQuickOpenHandlers
();
if
(
defaultHandler
s
.
length
>
0
)
{
handlerDescriptors
.
push
(
...
defaultHandlers
);
let
defaultHandler
=
registry
.
getDefaultQuickOpenHandler
();
if
(
defaultHandler
)
{
handlerDescriptors
.
push
(
defaultHandler
);
}
let
workbenchScoped
:
HelpEntry
[]
=
[];
...
...
src/vs/workbench/parts/search/browser/openAnythingHandler.ts
浏览文件 @
b52e3c25
...
...
@@ -17,7 +17,7 @@ import strings = require('vs/base/common/strings');
import
{
IRange
}
from
'
vs/editor/common/editorCommon
'
;
import
{
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenEntry
,
QuickOpenModel
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
QuickOpenHandler
,
QuickOpenHandlerResult
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
QuickOpenHandler
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
FileEntry
,
OpenFileHandler
,
FileQuickOpenModel
}
from
'
vs/workbench/parts/search/browser/openFileHandler
'
;
/* tslint:disable:no-unused-variable */
import
*
as
openSymbolHandler
from
'
vs/workbench/parts/search/browser/openSymbolHandler
'
;
...
...
@@ -139,7 +139,7 @@ export class OpenAnythingHandler extends QuickOpenHandler {
});
}
public
getResults
(
searchValue
:
string
):
TPromise
<
QuickOpenModel
>
|
QuickOpenHandlerResult
{
public
getResults
(
searchValue
:
string
):
TPromise
<
QuickOpenModel
>
{
const
timerEvent
=
this
.
telemetryService
.
timedPublicLog
(
'
openAnything
'
);
const
startTime
=
timerEvent
.
startTime
?
timerEvent
.
startTime
.
getTime
()
:
Date
.
now
();
// startTime is undefined when telemetry is disabled
...
...
@@ -231,11 +231,11 @@ export class OpenAnythingHandler extends QuickOpenHandler {
};
// Trigger through delayer to prevent accumulation while the user is typing (except when expecting results to come from cache)
const
isFileCacheLoaded
=
this
.
openFileHandler
.
isCacheLoaded
;
return
{
shortResponseTime
:
isFileCacheLoaded
,
promisedModel
:
isFileCacheLoaded
?
promiseFactory
()
:
this
.
fileSearchDelayer
.
trigger
(
promiseFactory
)
}
;
return
this
.
hasShortResponseTime
()
?
promiseFactory
()
:
this
.
fileSearchDelayer
.
trigger
(
promiseFactory
)
;
}
public
hasShortResponseTime
():
boolean
{
return
this
.
openFileHandler
.
isCacheLoaded
;
}
private
extractRange
(
value
:
string
):
ISearchWithRange
{
...
...
src/vs/workbench/test/browser/parts/quickOpen/quickopen.perf.test.ts
浏览文件 @
b52e3c25
...
...
@@ -17,7 +17,7 @@ import {IUntitledEditorService, UntitledEditorService} from 'vs/workbench/servic
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
*
as
minimist
from
'
minimist
'
;
import
*
as
path
from
'
path
'
;
import
{
QuickOpenHandler
,
QuickOpenHandlerResult
,
IQuickOpenRegistry
,
Extensions
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
QuickOpenHandler
,
IQuickOpenRegistry
,
Extensions
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
Registry
}
from
'
vs/platform/platform
'
;
import
{
SearchService
}
from
'
vs/workbench/services/search/node/searchService
'
;
import
{
ServiceCollection
}
from
'
vs/platform/instantiation/common/serviceCollection
'
;
...
...
@@ -26,7 +26,6 @@ import {IEnvironmentService} from 'vs/platform/environment/common/environment';
import
*
as
Timer
from
'
vs/base/common/timer
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
IModel
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
declare
var
__dirname
:
string
;
...
...
@@ -59,16 +58,14 @@ suite('QuickOpen performance', () => {
));
const
registry
=
Registry
.
as
<
IQuickOpenRegistry
>
(
Extensions
.
Quickopen
);
const
descriptor
s
=
registry
.
getDefaultQuickOpenHandlers
();
assert
.
strictEqual
(
descriptors
.
length
,
1
);
const
descriptor
=
registry
.
getDefaultQuickOpenHandler
();
assert
.
ok
(
descriptor
);
function
measure
()
{
return
instantiationService
.
createInstance
(
descriptor
s
[
0
]
)
return
instantiationService
.
createInstance
(
descriptor
)
.
then
((
handler
:
QuickOpenHandler
)
=>
{
handler
.
onOpen
();
const
result
=
handler
.
getResults
(
'
a
'
);
const
promise
=
(
<
QuickOpenHandlerResult
>
result
).
promisedModel
||
<
TPromise
<
IModel
<
any
>>>
result
;
return
promise
.
then
(
result
=>
{
return
handler
.
getResults
(
'
a
'
).
then
(
result
=>
{
const
uncachedEvent
=
popEvent
();
assert
.
strictEqual
(
uncachedEvent
.
data
.
symbols
.
fromCache
,
false
,
'
symbols.fromCache
'
);
assert
.
strictEqual
(
uncachedEvent
.
data
.
files
.
fromCache
,
true
,
'
files.fromCache
'
);
...
...
@@ -77,9 +74,7 @@ suite('QuickOpen performance', () => {
}
return
uncachedEvent
;
}).
then
(
uncachedEvent
=>
{
const
result
=
handler
.
getResults
(
'
ab
'
);
const
promise
=
(
<
QuickOpenHandlerResult
>
result
).
promisedModel
||
<
TPromise
<
IModel
<
any
>>>
result
;
return
promise
.
then
(
result
=>
{
return
handler
.
getResults
(
'
ab
'
).
then
(
result
=>
{
const
cachedEvent
=
popEvent
();
assert
.
strictEqual
(
uncachedEvent
.
data
.
symbols
.
fromCache
,
false
,
'
symbols.fromCache
'
);
assert
.
ok
(
cachedEvent
.
data
.
files
.
fromCache
,
'
filesFromCache
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录