Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
42f01095
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,发现更多精彩内容 >>
提交
42f01095
编写于
9月 13, 2016
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use heapService for workspace symbol provider, #11455
上级
cf922621
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
27 deletion
+25
-27
src/vs/workbench/api/node/extHostLanguageFeatures.ts
src/vs/workbench/api/node/extHostLanguageFeatures.ts
+19
-26
src/vs/workbench/api/node/mainThreadLanguageFeatures.ts
src/vs/workbench/api/node/mainThreadLanguageFeatures.ts
+6
-1
未找到文件。
src/vs/workbench/api/node/extHostLanguageFeatures.ts
浏览文件 @
42f01095
...
...
@@ -403,30 +403,25 @@ class OnTypeFormattingAdapter {
}
}
interface
MyWorkspaceSymbol
extends
IWorkspaceSymbol
{
idx
:
number
;
}
class
NavigateTypeAdapter
implements
IWorkspaceSymbolProvider
{
private
_provider
:
vscode
.
WorkspaceSymbolProvider
;
private
_
cache
:
vscode
.
SymbolInformation
[]
;
private
_
heapService
:
ExtHostHeapService
;
constructor
(
provider
:
vscode
.
WorkspaceSymbolProvider
)
{
constructor
(
provider
:
vscode
.
WorkspaceSymbolProvider
,
heapService
:
ExtHostHeapService
)
{
this
.
_provider
=
provider
;
this
.
_heapService
=
heapService
;
}
provideWorkspaceSymbols
(
search
:
string
):
TPromise
<
IWorkspaceSymbol
[]
>
{
this
.
_cache
=
[];
return
asWinJsPromise
(
token
=>
this
.
_provider
.
provideWorkspaceSymbols
(
search
,
token
)).
then
(
value
=>
{
if
(
Array
.
isArray
(
value
))
{
this
.
_cache
=
value
;
return
value
.
map
((
item
,
idx
)
=>
{
const
result
=
<
MyWorkspaceSymbol
>
TypeConverters
.
fromSymbolInformation
(
item
);
result
.
idx
=
idx
;
return
result
;
return
value
.
map
(
item
=>
{
const
id
=
this
.
_heapService
.
keep
(
item
);
const
result
=
TypeConverters
.
fromSymbolInformation
(
item
);
return
ObjectIdentifier
.
mixin
(
result
,
id
);
});
}
});
...
...
@@ -435,17 +430,15 @@ class NavigateTypeAdapter implements IWorkspaceSymbolProvider {
resolveWorkspaceSymbol
(
item
:
IWorkspaceSymbol
):
TPromise
<
IWorkspaceSymbol
>
{
if
(
typeof
this
.
_provider
.
resolveWorkspaceSymbol
!==
'
function
'
)
{
return
;
return
TPromise
.
as
(
item
)
;
}
const
idx
=
(
<
MyWorkspaceSymbol
>
item
).
idx
;
if
(
typeof
idx
!==
'
number
'
)
{
return
;
const
symbolInfo
=
this
.
_heapService
.
get
<
vscode
.
SymbolInformation
>
(
ObjectIdentifier
.
get
(
item
));
if
(
symbolInfo
)
{
return
asWinJsPromise
(
token
=>
this
.
_provider
.
resolveWorkspaceSymbol
(
symbolInfo
,
token
)).
then
(
value
=>
{
return
value
&&
TypeConverters
.
fromSymbolInformation
(
value
);
});
}
return
asWinJsPromise
(
token
=>
this
.
_provider
.
resolveWorkspaceSymbol
(
this
.
_cache
[
idx
],
token
)).
then
(
value
=>
{
return
value
&&
TypeConverters
.
fromSymbolInformation
(
value
);
});
}
}
...
...
@@ -505,9 +498,9 @@ class SuggestAdapter {
private
_provider
:
vscode
.
CompletionItemProvider
;
private
_disposables
:
{
[
id
:
number
]:
IDisposable
[]
}
=
[];
constructor
(
documents
:
ExtHostDocuments
,
heap
Monitor
:
ExtHostHeapService
,
provider
:
vscode
.
CompletionItemProvider
)
{
constructor
(
documents
:
ExtHostDocuments
,
heap
Service
:
ExtHostHeapService
,
provider
:
vscode
.
CompletionItemProvider
)
{
this
.
_documents
=
documents
;
this
.
_heapService
=
heap
Monitor
;
this
.
_heapService
=
heap
Service
;
this
.
_provider
=
provider
;
}
...
...
@@ -662,7 +655,7 @@ export class ExtHostLanguageFeatures extends ExtHostLanguageFeaturesShape {
private
_proxy
:
MainThreadLanguageFeaturesShape
;
private
_documents
:
ExtHostDocuments
;
private
_commands
:
ExtHostCommands
;
private
_heap
Monitor
:
ExtHostHeapService
;
private
_heap
Service
:
ExtHostHeapService
;
private
_diagnostics
:
ExtHostDiagnostics
;
private
_adapter
:
{
[
handle
:
number
]:
Adapter
}
=
Object
.
create
(
null
);
...
...
@@ -677,7 +670,7 @@ export class ExtHostLanguageFeatures extends ExtHostLanguageFeaturesShape {
this
.
_proxy
=
threadService
.
get
(
MainContext
.
MainThreadLanguageFeatures
);
this
.
_documents
=
documents
;
this
.
_commands
=
commands
;
this
.
_heap
Monitor
=
heapMonitor
;
this
.
_heap
Service
=
heapMonitor
;
this
.
_diagnostics
=
diagnostics
;
}
...
...
@@ -834,7 +827,7 @@ export class ExtHostLanguageFeatures extends ExtHostLanguageFeaturesShape {
registerWorkspaceSymbolProvider
(
provider
:
vscode
.
WorkspaceSymbolProvider
):
vscode
.
Disposable
{
const
handle
=
this
.
_nextHandle
();
this
.
_adapter
[
handle
]
=
new
NavigateTypeAdapter
(
provider
);
this
.
_adapter
[
handle
]
=
new
NavigateTypeAdapter
(
provider
,
this
.
_heapService
);
this
.
_proxy
.
$registerNavigateTypeSupport
(
handle
);
return
this
.
_createDisposable
(
handle
);
}
...
...
@@ -864,7 +857,7 @@ export class ExtHostLanguageFeatures extends ExtHostLanguageFeaturesShape {
registerCompletionItemProvider
(
selector
:
vscode
.
DocumentSelector
,
provider
:
vscode
.
CompletionItemProvider
,
triggerCharacters
:
string
[]):
vscode
.
Disposable
{
const
handle
=
this
.
_nextHandle
();
this
.
_adapter
[
handle
]
=
new
SuggestAdapter
(
this
.
_documents
,
this
.
_heap
Monitor
,
provider
);
this
.
_adapter
[
handle
]
=
new
SuggestAdapter
(
this
.
_documents
,
this
.
_heap
Service
,
provider
);
this
.
_proxy
.
$registerSuggestSupport
(
handle
,
selector
,
triggerCharacters
);
return
this
.
_createDisposable
(
handle
);
}
...
...
src/vs/workbench/api/node/mainThreadLanguageFeatures.ts
浏览文件 @
42f01095
...
...
@@ -155,7 +155,12 @@ export class MainThreadLanguageFeatures extends MainThreadLanguageFeaturesShape
$registerNavigateTypeSupport
(
handle
:
number
):
TPromise
<
any
>
{
this
.
_registrations
[
handle
]
=
WorkspaceSymbolProviderRegistry
.
register
(
<
IWorkspaceSymbolProvider
>
{
provideWorkspaceSymbols
:
(
search
:
string
):
TPromise
<
IWorkspaceSymbol
[]
>
=>
{
return
this
.
_proxy
.
$provideWorkspaceSymbols
(
handle
,
search
);
return
this
.
_proxy
.
$provideWorkspaceSymbols
(
handle
,
search
).
then
(
result
=>
{
for
(
const
item
of
result
)
{
trackGarbageCollection
(
item
,
ObjectIdentifier
.
get
(
item
));
}
return
result
;
});
},
resolveWorkspaceSymbol
:
(
item
:
IWorkspaceSymbol
):
TPromise
<
IWorkspaceSymbol
>
=>
{
return
this
.
_proxy
.
$resolveWorkspaceSymbol
(
handle
,
item
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录