Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
b3422b98
V
Vscode
项目概览
徽霖
/
Vscode
通知
9
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,发现更多精彩内容 >>
未验证
提交
b3422b98
编写于
7月 12, 2019
作者:
S
Sandeep Somavarapu
提交者:
GitHub
7月 12, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #76377 from microsoft/sandy081/fix74859
trigger workspace contains activation event on new folders
上级
e4ea4947
498f1584
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
24 addition
and
17 deletion
+24
-17
src/vs/workbench/api/browser/mainThreadWorkspace.ts
src/vs/workbench/api/browser/mainThreadWorkspace.ts
+2
-3
src/vs/workbench/api/common/extHost.protocol.ts
src/vs/workbench/api/common/extHost.protocol.ts
+1
-1
src/vs/workbench/api/node/extHostExtensionService.ts
src/vs/workbench/api/node/extHostExtensionService.ts
+21
-13
未找到文件。
src/vs/workbench/api/browser/mainThreadWorkspace.ts
浏览文件 @
b3422b98
...
...
@@ -179,10 +179,9 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape {
return
search
;
}
$checkExists
(
includes
:
string
[],
token
:
CancellationToken
):
Promise
<
boolean
>
{
$checkExists
(
folders
:
UriComponents
[],
includes
:
string
[],
token
:
CancellationToken
):
Promise
<
boolean
>
{
const
queryBuilder
=
this
.
_instantiationService
.
createInstance
(
QueryBuilder
);
const
folders
=
this
.
_contextService
.
getWorkspace
().
folders
.
map
(
folder
=>
folder
.
uri
);
const
query
=
queryBuilder
.
file
(
folders
,
{
const
query
=
queryBuilder
.
file
(
folders
.
map
(
folder
=>
URI
.
revive
(
folder
)),
{
_reason
:
'
checkExists
'
,
includePattern
:
includes
.
join
(
'
,
'
),
expandPatterns
:
true
,
...
...
src/vs/workbench/api/common/extHost.protocol.ts
浏览文件 @
b3422b98
...
...
@@ -577,7 +577,7 @@ export interface ITextSearchComplete {
export
interface
MainThreadWorkspaceShape
extends
IDisposable
{
$startFileSearch
(
includePattern
:
string
|
undefined
,
includeFolder
:
UriComponents
|
undefined
,
excludePatternOrDisregardExcludes
:
string
|
false
|
undefined
,
maxResults
:
number
|
undefined
,
token
:
CancellationToken
):
Promise
<
UriComponents
[]
|
undefined
>
;
$startTextSearch
(
query
:
search
.
IPatternInfo
,
options
:
ITextQueryBuilderOptions
,
requestId
:
number
,
token
:
CancellationToken
):
Promise
<
ITextSearchComplete
>
;
$checkExists
(
includes
:
string
[],
token
:
CancellationToken
):
Promise
<
boolean
>
;
$checkExists
(
folders
:
UriComponents
[],
includes
:
string
[],
token
:
CancellationToken
):
Promise
<
boolean
>
;
$saveAll
(
includeUntitled
?:
boolean
):
Promise
<
boolean
>
;
$updateWorkspaceFolders
(
extensionName
:
string
,
index
:
number
,
deleteCount
:
number
,
workspaceFoldersToAdd
:
{
uri
:
UriComponents
,
name
?:
string
}[]):
Promise
<
void
>
;
$resolveProxy
(
url
:
string
):
Promise
<
string
|
undefined
>
;
...
...
src/vs/workbench/api/node/extHostExtensionService.ts
浏览文件 @
b3422b98
...
...
@@ -7,7 +7,7 @@ import * as nls from 'vs/nls';
import
*
as
path
from
'
vs/base/common/path
'
;
import
{
originalFSPath
}
from
'
vs/base/common/resources
'
;
import
{
Barrier
}
from
'
vs/base/common/async
'
;
import
{
dispose
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
dispose
,
toDisposable
,
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
import
{
TernarySearchTree
}
from
'
vs/base/common/map
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
...
...
@@ -26,7 +26,6 @@ import { CancellationTokenSource } from 'vs/base/common/cancellation';
import
*
as
errors
from
'
vs/base/common/errors
'
;
import
*
as
vscode
from
'
vscode
'
;
import
{
ExtensionIdentifier
,
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
IWorkspace
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
withNullAsUndefined
}
from
'
vs/base/common/types
'
;
import
{
VSBuffer
}
from
'
vs/base/common/buffer
'
;
...
...
@@ -91,6 +90,8 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
private
_started
:
boolean
;
private
readonly
_disposables
:
DisposableStore
;
constructor
(
hostUtils
:
IHostUtils
,
initData
:
IInitData
,
...
...
@@ -108,6 +109,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
this
.
_extHostConfiguration
=
extHostConfiguration
;
this
.
_environment
=
environment
;
this
.
_extHostLogService
=
extHostLogService
;
this
.
_disposables
=
new
DisposableStore
();
this
.
_mainThreadWorkspaceProxy
=
this
.
_extHostContext
.
getProxy
(
MainContext
.
MainThreadWorkspace
);
this
.
_mainThreadTelemetryProxy
=
this
.
_extHostContext
.
getProxy
(
MainContext
.
MainThreadTelemetry
);
...
...
@@ -433,27 +435,33 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
console
.
error
(
err
);
});
return
this
.
_handleWorkspaceContainsEagerExtensions
(
this
.
_extHostWorkspace
.
workspace
);
this
.
_disposables
.
add
(
this
.
_extHostWorkspace
.
onDidChangeWorkspace
((
e
)
=>
this
.
_handleWorkspaceContainsEagerExtensions
(
e
.
added
)));
const
folders
=
this
.
_extHostWorkspace
.
workspace
?
this
.
_extHostWorkspace
.
workspace
.
folders
:
[];
return
this
.
_handleWorkspaceContainsEagerExtensions
(
folders
);
}
private
_handleWorkspaceContainsEagerExtensions
(
workspace
:
IWorkspace
|
undefined
):
Promise
<
void
>
{
if
(
!
workspace
||
workspace
.
folders
.
length
===
0
)
{
private
_handleWorkspaceContainsEagerExtensions
(
folders
:
ReadonlyArray
<
vscode
.
WorkspaceFolder
>
):
Promise
<
void
>
{
if
(
folders
.
length
===
0
)
{
return
Promise
.
resolve
(
undefined
);
}
return
Promise
.
all
(
this
.
_registry
.
getAllExtensionDescriptions
().
map
((
desc
)
=>
{
return
this
.
_handleWorkspaceContainsEagerExtension
(
workspace
,
desc
);
return
this
.
_handleWorkspaceContainsEagerExtension
(
folders
,
desc
);
})
).
then
(()
=>
{
});
}
private
_handleWorkspaceContainsEagerExtension
(
workspace
:
IWorkspace
,
desc
:
IExtensionDescription
):
Promise
<
void
>
{
private
_handleWorkspaceContainsEagerExtension
(
folders
:
ReadonlyArray
<
vscode
.
WorkspaceFolder
>
,
desc
:
IExtensionDescription
):
Promise
<
void
>
{
const
activationEvents
=
desc
.
activationEvents
;
if
(
!
activationEvents
)
{
return
Promise
.
resolve
(
undefined
);
}
if
(
this
.
isActivated
(
desc
.
identifier
))
{
return
Promise
.
resolve
(
undefined
);
}
const
fileNames
:
string
[]
=
[];
const
globPatterns
:
string
[]
=
[];
...
...
@@ -472,16 +480,16 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
return
Promise
.
resolve
(
undefined
);
}
const
fileNamePromise
=
Promise
.
all
(
fileNames
.
map
((
fileName
)
=>
this
.
_activateIfFileName
(
workspace
,
desc
.
identifier
,
fileName
))).
then
(()
=>
{
});
const
globPatternPromise
=
this
.
_activateIfGlobPatterns
(
desc
.
identifier
,
globPatterns
);
const
fileNamePromise
=
Promise
.
all
(
fileNames
.
map
((
fileName
)
=>
this
.
_activateIfFileName
(
folders
,
desc
.
identifier
,
fileName
))).
then
(()
=>
{
});
const
globPatternPromise
=
this
.
_activateIfGlobPatterns
(
folders
,
desc
.
identifier
,
globPatterns
);
return
Promise
.
all
([
fileNamePromise
,
globPatternPromise
]).
then
(()
=>
{
});
}
private
async
_activateIfFileName
(
workspace
:
IWorkspace
,
extensionId
:
ExtensionIdentifier
,
fileName
:
string
):
Promise
<
void
>
{
private
async
_activateIfFileName
(
folders
:
ReadonlyArray
<
vscode
.
WorkspaceFolder
>
,
extensionId
:
ExtensionIdentifier
,
fileName
:
string
):
Promise
<
void
>
{
// find exact path
for
(
const
{
uri
}
of
workspace
.
folders
)
{
for
(
const
{
uri
}
of
folders
)
{
if
(
await
this
.
_hostUtils
.
exists
(
path
.
join
(
URI
.
revive
(
uri
).
fsPath
,
fileName
)))
{
// the file was found
return
(
...
...
@@ -494,7 +502,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
return
undefined
;
}
private
async
_activateIfGlobPatterns
(
extensionId
:
ExtensionIdentifier
,
globPatterns
:
string
[]):
Promise
<
void
>
{
private
async
_activateIfGlobPatterns
(
folders
:
ReadonlyArray
<
vscode
.
WorkspaceFolder
>
,
extensionId
:
ExtensionIdentifier
,
globPatterns
:
string
[]):
Promise
<
void
>
{
this
.
_extHostLogService
.
trace
(
`extensionHostMain#activateIfGlobPatterns: fileSearch, extension:
${
extensionId
.
value
}
, entryPoint: workspaceContains`
);
if
(
globPatterns
.
length
===
0
)
{
...
...
@@ -502,7 +510,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
}
const
tokenSource
=
new
CancellationTokenSource
();
const
searchP
=
this
.
_mainThreadWorkspaceProxy
.
$checkExists
(
globPatterns
,
tokenSource
.
token
);
const
searchP
=
this
.
_mainThreadWorkspaceProxy
.
$checkExists
(
folders
.
map
(
folder
=>
folder
.
uri
),
globPatterns
,
tokenSource
.
token
);
const
timer
=
setTimeout
(
async
()
=>
{
tokenSource
.
cancel
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录