Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
5b1bd55f
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,发现更多精彩内容 >>
提交
5b1bd55f
编写于
1月 26, 2018
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
extract common delta code
上级
49eb0959
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
21 deletion
+22
-21
src/vs/workbench/api/node/extHostWorkspace.ts
src/vs/workbench/api/node/extHostWorkspace.ts
+22
-21
未找到文件。
src/vs/workbench/api/node/extHostWorkspace.ts
浏览文件 @
5b1bd55f
...
...
@@ -7,7 +7,7 @@
import
URI
from
'
vs/base/common/uri
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
normalize
}
from
'
vs/base/common/paths
'
;
import
{
delta
}
from
'
vs/base/common/arrays
'
;
import
{
delta
as
arrayDelta
}
from
'
vs/base/common/arrays
'
;
import
{
relative
,
dirname
}
from
'
path
'
;
import
{
Workspace
,
WorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceData
,
ExtHostWorkspaceShape
,
MainContext
,
MainThreadWorkspaceShape
,
IMainContext
}
from
'
./extHost.protocol
'
;
...
...
@@ -22,6 +22,25 @@ function isFolderEqual(folderA: URI, folderB: URI): boolean {
return
isEqual
(
folderA
,
folderB
,
!
isLinux
);
}
function
compareWorkspaceFolderByUri
(
a
:
vscode
.
WorkspaceFolder
,
b
:
vscode
.
WorkspaceFolder
):
number
{
return
isFolderEqual
(
a
.
uri
,
b
.
uri
)
?
0
:
compare
(
a
.
uri
.
toString
(),
b
.
uri
.
toString
());
}
function
compareWorkspaceFolderByUriAndNameAndIndex
(
a
:
vscode
.
WorkspaceFolder
,
b
:
vscode
.
WorkspaceFolder
):
number
{
if
(
a
.
index
!==
b
.
index
)
{
return
a
.
index
<
b
.
index
?
-
1
:
1
;
}
return
isFolderEqual
(
a
.
uri
,
b
.
uri
)
?
compare
(
a
.
name
,
b
.
name
)
:
compare
(
a
.
uri
.
toString
(),
b
.
uri
.
toString
());
}
function
delta
(
oldFolders
:
vscode
.
WorkspaceFolder
[],
newFolders
:
vscode
.
WorkspaceFolder
[],
compare
:
(
a
:
vscode
.
WorkspaceFolder
,
b
:
vscode
.
WorkspaceFolder
)
=>
number
):
{
removed
:
vscode
.
WorkspaceFolder
[],
added
:
vscode
.
WorkspaceFolder
[]
}
{
const
oldSortedFolders
=
oldFolders
.
sort
(
compare
);
const
newSortedFolders
=
newFolders
.
sort
(
compare
);
return
arrayDelta
(
oldSortedFolders
,
newSortedFolders
,
compare
);
}
interface
MutableWorkspaceFolder
extends
vscode
.
WorkspaceFolder
{
name
:
string
;
index
:
number
;
...
...
@@ -63,27 +82,11 @@ class ExtHostWorkspaceImpl extends Workspace {
newWorkspaceFolders
.
sort
((
f1
,
f2
)
=>
f1
.
index
<
f2
.
index
?
-
1
:
1
);
const
workspace
=
new
ExtHostWorkspaceImpl
(
id
,
name
,
newWorkspaceFolders
);
const
oldRoots
=
oldWorkspace
?
oldWorkspace
.
workspaceFolders
.
sort
(
ExtHostWorkspaceImpl
.
compareWorkspaceFolderByUri
)
:
[];
const
newRoots
=
workspace
.
workspaceFolders
.
sort
(
ExtHostWorkspaceImpl
.
compareWorkspaceFolderByUri
);
const
{
added
,
removed
}
=
delta
(
oldRoots
,
newRoots
,
ExtHostWorkspaceImpl
.
compareWorkspaceFolderByUri
);
const
{
added
,
removed
}
=
delta
(
oldWorkspace
?
oldWorkspace
.
workspaceFolders
:
[],
workspace
.
workspaceFolders
,
compareWorkspaceFolderByUri
);
return
{
workspace
,
added
,
removed
};
}
static
compareWorkspaceFolderByUri
(
a
:
vscode
.
WorkspaceFolder
,
b
:
vscode
.
WorkspaceFolder
,
includeName
?:
boolean
):
number
{
return
isFolderEqual
(
a
.
uri
,
b
.
uri
)
?
0
:
compare
(
a
.
uri
.
toString
(),
b
.
uri
.
toString
());
}
static
compareWorkspaceFolderByUriAndNameAndIndex
(
a
:
vscode
.
WorkspaceFolder
,
b
:
vscode
.
WorkspaceFolder
):
number
{
if
(
a
.
index
!==
b
.
index
)
{
return
a
.
index
<
b
.
index
?
-
1
:
1
;
}
return
isFolderEqual
(
a
.
uri
,
b
.
uri
)
?
compare
(
a
.
name
,
b
.
name
)
:
compare
(
a
.
uri
.
toString
(),
b
.
uri
.
toString
());
}
private
static
_findFolder
(
workspace
:
ExtHostWorkspaceImpl
,
folderUriToFind
:
URI
):
MutableWorkspaceFolder
{
for
(
let
i
=
0
;
i
<
workspace
.
folders
.
length
;
i
++
)
{
const
folder
=
workspace
.
workspaceFolders
[
i
];
...
...
@@ -180,9 +183,7 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape {
const
newWorkspaceFolders
=
currentWorkspaceFolders
.
slice
(
0
);
newWorkspaceFolders
.
splice
(
index
,
deleteCount
,
...
validatedDistinctWorkspaceFoldersToAdd
.
map
((
f
,
index
)
=>
({
uri
:
f
.
uri
,
name
:
f
.
name
||
basenameOrAuthority
(
f
.
uri
),
index
})));
const
oldRoots
=
currentWorkspaceFolders
.
sort
(
ExtHostWorkspaceImpl
.
compareWorkspaceFolderByUri
);
const
newRoots
=
newWorkspaceFolders
.
sort
(
ExtHostWorkspaceImpl
.
compareWorkspaceFolderByUri
);
const
{
added
,
removed
}
=
delta
(
oldRoots
,
newRoots
,
ExtHostWorkspaceImpl
.
compareWorkspaceFolderByUriAndNameAndIndex
);
const
{
added
,
removed
}
=
delta
(
currentWorkspaceFolders
,
newWorkspaceFolders
,
compareWorkspaceFolderByUriAndNameAndIndex
);
if
(
added
.
length
===
0
&&
removed
.
length
===
0
)
{
return
false
;
// nothing actually changed
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录