Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
9b7255b1
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,发现更多精彩内容 >>
提交
9b7255b1
编写于
5月 10, 2018
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
grid - update todo
上级
5b4225ca
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
59 addition
and
63 deletion
+59
-63
src/vs/workbench/browser/parts/editor/editorPart.ts
src/vs/workbench/browser/parts/editor/editorPart.ts
+59
-63
未找到文件。
src/vs/workbench/browser/parts/editor/editorPart.ts
浏览文件 @
9b7255b1
...
...
@@ -53,69 +53,6 @@ import { dispose } from 'vs/base/common/lifecycle';
*/
export
class
EditorPart
extends
Part
implements
IEditorPart
,
IEditorGroupService
{
//#region TODO@grid replaceEditors()
public
replaceEditors
(
editors
:
{
toReplace
:
EditorInput
,
replaceWith
:
EditorInput
,
options
?:
EditorOptions
}[],
position
?:
Position
):
TPromise
<
IEditor
[]
>
{
const
activeReplacements
:
IEditorReplacement
[]
=
[];
const
hiddenReplacements
:
IEditorReplacement
[]
=
[];
// Find editors across groups to close
editors
.
forEach
(
editor
=>
{
if
(
editor
.
toReplace
.
isDirty
())
{
return
;
// we do not handle dirty in this method, so ignore all dirty
}
// For each group
this
.
stacks
.
groups
.
forEach
(
group
=>
{
if
(
position
===
void
0
||
this
.
stacks
.
positionOfGroup
(
group
)
===
position
)
{
const
index
=
group
.
indexOf
(
editor
.
toReplace
);
if
(
index
>=
0
)
{
if
(
editor
.
options
)
{
editor
.
options
.
index
=
index
;
// make sure we respect the index of the editor to replace!
}
else
{
editor
.
options
=
EditorOptions
.
create
({
index
});
}
const
replacement
=
{
group
,
editor
:
editor
.
toReplace
,
replaceWith
:
editor
.
replaceWith
,
options
:
editor
.
options
};
if
(
group
.
activeEditor
.
matches
(
editor
.
toReplace
))
{
activeReplacements
.
push
(
replacement
);
}
else
{
hiddenReplacements
.
push
(
replacement
);
}
}
}
});
});
// Deal with hidden replacements first
hiddenReplacements
.
forEach
(
replacement
=>
{
const
group
=
replacement
.
group
;
group
.
openEditor
(
replacement
.
replaceWith
,
{
active
:
false
,
pinned
:
true
,
index
:
replacement
.
options
.
index
});
group
.
closeEditor
(
replacement
.
editor
);
});
// Now deal with active editors to be opened
const
res
=
this
.
openEditors
(
activeReplacements
.
map
(
replacement
=>
{
const
group
=
replacement
.
group
;
return
{
input
:
replacement
.
replaceWith
,
position
:
this
.
stacks
.
positionOfGroup
(
group
),
options
:
replacement
.
options
};
}));
// Close active editors to be replaced now (they are no longer active)
activeReplacements
.
forEach
(
replacement
=>
{
this
.
doCloseEditor
(
replacement
.
group
,
replacement
.
editor
,
false
);
});
return
res
;
}
//#endregion
//#region Handled or Adopted or Obsolete
public
_serviceBrand
:
any
;
...
...
@@ -231,6 +168,65 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService
this
.
registerListeners
();
}
public
replaceEditors
(
editors
:
{
toReplace
:
EditorInput
,
replaceWith
:
EditorInput
,
options
?:
EditorOptions
}[],
position
?:
Position
):
TPromise
<
IEditor
[]
>
{
const
activeReplacements
:
IEditorReplacement
[]
=
[];
const
hiddenReplacements
:
IEditorReplacement
[]
=
[];
// Find editors across groups to close
editors
.
forEach
(
editor
=>
{
if
(
editor
.
toReplace
.
isDirty
())
{
return
;
// we do not handle dirty in this method, so ignore all dirty
}
// For each group
this
.
stacks
.
groups
.
forEach
(
group
=>
{
if
(
position
===
void
0
||
this
.
stacks
.
positionOfGroup
(
group
)
===
position
)
{
const
index
=
group
.
indexOf
(
editor
.
toReplace
);
if
(
index
>=
0
)
{
if
(
editor
.
options
)
{
editor
.
options
.
index
=
index
;
// make sure we respect the index of the editor to replace!
}
else
{
editor
.
options
=
EditorOptions
.
create
({
index
});
}
const
replacement
=
{
group
,
editor
:
editor
.
toReplace
,
replaceWith
:
editor
.
replaceWith
,
options
:
editor
.
options
};
if
(
group
.
activeEditor
.
matches
(
editor
.
toReplace
))
{
activeReplacements
.
push
(
replacement
);
}
else
{
hiddenReplacements
.
push
(
replacement
);
}
}
}
});
});
// Deal with hidden replacements first
hiddenReplacements
.
forEach
(
replacement
=>
{
const
group
=
replacement
.
group
;
group
.
openEditor
(
replacement
.
replaceWith
,
{
active
:
false
,
pinned
:
true
,
index
:
replacement
.
options
.
index
});
group
.
closeEditor
(
replacement
.
editor
);
});
// Now deal with active editors to be opened
const
res
=
this
.
openEditors
(
activeReplacements
.
map
(
replacement
=>
{
const
group
=
replacement
.
group
;
return
{
input
:
replacement
.
replaceWith
,
position
:
this
.
stacks
.
positionOfGroup
(
group
),
options
:
replacement
.
options
};
}));
// Close active editors to be replaced now (they are no longer active)
activeReplacements
.
forEach
(
replacement
=>
{
this
.
doCloseEditor
(
replacement
.
group
,
replacement
.
editor
,
false
);
});
return
res
;
}
public
closeEditors
(
positions
?:
Position
[]):
TPromise
<
void
>
;
public
closeEditors
(
position
:
Position
,
filter
?:
ICloseEditorsFilter
):
TPromise
<
void
>
;
public
closeEditors
(
position
:
Position
,
editors
:
EditorInput
[]):
TPromise
<
void
>
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录