Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
805dc25e
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,发现更多精彩内容 >>
提交
805dc25e
编写于
11月 29, 2016
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
💄
上级
dae4c97d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
54 addition
and
41 deletion
+54
-41
src/vs/workbench/parts/backup/common/backupRestorer.ts
src/vs/workbench/parts/backup/common/backupRestorer.ts
+54
-41
未找到文件。
src/vs/workbench/parts/backup/common/backupRestorer.ts
浏览文件 @
805dc25e
...
...
@@ -30,55 +30,68 @@ export class BackupRestorer implements IWorkbenchContribution {
@
ITextModelResolverService
private
textModelResolverService
:
ITextModelResolverService
,
@
IEditorGroupService
private
groupService
:
IEditorGroupService
)
{
this
.
restoreBackups
();
}
private
restoreBackups
():
void
{
if
(
!
this
.
environmentService
.
isExtensionDevelopment
)
{
this
.
restoreBackups
();
this
.
partService
.
joinCreation
().
then
(()
=>
{
this
.
doRestoreBackups
().
done
(
null
,
errors
.
onUnexpectedError
);
});
}
}
private
restoreBackups
():
void
{
private
doRestoreBackups
():
TPromise
<
any
>
{
// Find all files and untitled with backups
return
this
.
backupFileService
.
getWorkspaceFileBackups
().
then
(
backups
=>
{
// Wait for all editors being restored before restoring backups
this
.
partService
.
joinCreation
().
then
(()
=>
{
const
stacks
=
this
.
groupService
.
getStacksModel
();
const
hasOpenedEditors
=
stacks
.
groups
.
length
>
0
;
// Find all files and untitled with backups
this
.
backupFileService
.
getWorkspaceFileBackups
().
then
(
backups
=>
{
const
restorePromises
:
TPromise
<
any
>
[]
=
[];
const
editorsToOpen
:
URI
[]
=
[];
// Restore any backup that is opened and remember those that are not yet
backups
.
forEach
(
backup
=>
{
if
(
stacks
.
isOpen
(
backup
))
{
if
(
backup
.
scheme
===
'
file
'
)
{
restorePromises
.
push
(
this
.
textModelResolverService
.
createModelReference
(
backup
));
}
else
if
(
backup
.
scheme
===
'
untitled
'
)
{
restorePromises
.
push
(
this
.
untitledEditorService
.
get
(
backup
).
resolve
());
}
}
else
{
editorsToOpen
.
push
(
backup
);
}
});
// Restore all backups that are opened as editors
return
TPromise
.
join
(
restorePromises
).
then
(()
=>
{
if
(
editorsToOpen
.
length
>
0
)
{
const
resourceToInputs
=
TPromise
.
join
(
editorsToOpen
.
map
(
resource
=>
this
.
editorService
.
createInput
({
resource
})));
return
resourceToInputs
.
then
(
inputs
=>
{
const
openEditorsArgs
=
inputs
.
map
((
input
,
index
)
=>
{
return
{
input
,
options
:
{
pinned
:
true
,
preserveFocus
:
true
,
inactive
:
index
>
0
||
hasOpenedEditors
},
position
:
Position
.
ONE
};
});
// Open all remaining backups as editors and resolve them to load their backups
return
this
.
editorService
.
openEditors
(
openEditorsArgs
).
then
(()
=>
TPromise
.
join
(
inputs
.
map
(
input
=>
input
.
resolve
())));
});
}
});
}).
done
(
null
,
errors
.
onUnexpectedError
);
// Resolve backups that are opened in stacks model
return
this
.
doResolveOpenedBackups
(
backups
).
then
(
unresolved
=>
{
// Some failed to restore or were not opened at all so we open and resolve them manually
if
(
unresolved
.
length
>
0
)
{
return
this
.
doOpenEditors
(
unresolved
).
then
(()
=>
this
.
doResolveOpenedBackups
(
unresolved
));
}
});
});
}
private
doOpenEditors
(
inputs
:
URI
[]):
TPromise
<
void
>
{
const
stacks
=
this
.
groupService
.
getStacksModel
();
const
hasOpenedEditors
=
stacks
.
groups
.
length
>
0
;
return
TPromise
.
join
(
inputs
.
map
(
resource
=>
this
.
editorService
.
createInput
({
resource
}))).
then
(
inputs
=>
{
const
openEditorsArgs
=
inputs
.
map
((
input
,
index
)
=>
{
return
{
input
,
options
:
{
pinned
:
true
,
preserveFocus
:
true
,
inactive
:
index
>
0
||
hasOpenedEditors
},
position
:
Position
.
ONE
};
});
// Open all remaining backups as editors and resolve them to load their backups
return
this
.
editorService
.
openEditors
(
openEditorsArgs
).
then
(()
=>
void
0
);
});
}
private
doResolveOpenedBackups
(
backups
:
URI
[]):
TPromise
<
URI
[]
>
{
const
stacks
=
this
.
groupService
.
getStacksModel
();
const
restorePromises
:
TPromise
<
any
>
[]
=
[];
const
unresolved
:
URI
[]
=
[];
backups
.
forEach
(
backup
=>
{
if
(
stacks
.
isOpen
(
backup
))
{
if
(
backup
.
scheme
===
'
file
'
)
{
restorePromises
.
push
(
this
.
textModelResolverService
.
createModelReference
(
backup
).
then
(
null
,
()
=>
unresolved
.
push
(
backup
)));
}
else
if
(
backup
.
scheme
===
'
untitled
'
)
{
restorePromises
.
push
(
this
.
untitledEditorService
.
get
(
backup
).
resolve
().
then
(
null
,
()
=>
unresolved
.
push
(
backup
)));
}
}
else
{
unresolved
.
push
(
backup
);
}
});
return
TPromise
.
join
(
restorePromises
).
then
(()
=>
unresolved
,
()
=>
unresolved
);
}
public
getId
():
string
{
return
'
vs.backup.backupRestorer
'
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录