Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
c1c46d00
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
c1c46d00
编写于
12月 19, 2019
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
editors observer
💄
上级
cd976be1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
15 deletion
+16
-15
src/vs/workbench/browser/parts/editor/editorsObserver.ts
src/vs/workbench/browser/parts/editor/editorsObserver.ts
+16
-15
未找到文件。
src/vs/workbench/browser/parts/editor/editorsObserver.ts
浏览文件 @
c1c46d00
...
...
@@ -33,7 +33,7 @@ interface ISerializedEditorIdentifier {
*/
export
class
EditorsObserver
extends
Disposable
{
private
static
readonly
STORAGE_KEY
=
'
editors
Observer.state
'
;
private
static
readonly
STORAGE_KEY
=
'
editors
.mru
'
;
private
readonly
keyMap
=
new
Map
<
GroupIdentifier
,
Map
<
IEditorInput
,
IEditorIdentifier
>>
();
private
readonly
mostRecentEditorsMap
=
new
LinkedMap
<
IEditorIdentifier
,
IEditorIdentifier
>
();
...
...
@@ -214,6 +214,15 @@ export class EditorsObserver extends Disposable {
}
private
async
ensureOpenedEditorsLimit
(
exclude
:
IEditorIdentifier
|
undefined
,
groupId
?:
GroupIdentifier
):
Promise
<
void
>
{
if
(
!
this
.
editorGroupsService
.
partOptions
.
limit
?.
enabled
||
typeof
this
.
editorGroupsService
.
partOptions
.
limit
.
value
!==
'
number
'
||
this
.
editorGroupsService
.
partOptions
.
limit
.
value
<=
0
)
{
return
;
// return early if not enabled or invalid
}
const
limit
=
this
.
editorGroupsService
.
partOptions
.
limit
.
value
;
// In editor group
if
(
this
.
editorGroupsService
.
partOptions
.
limit
?.
perEditorGroup
)
{
...
...
@@ -222,7 +231,7 @@ export class EditorsObserver extends Disposable {
if
(
typeof
groupId
===
'
number
'
)
{
const
group
=
this
.
editorGroupsService
.
getGroup
(
groupId
);
if
(
group
)
{
this
.
doEnsureOpenedEditorsLimit
(
group
.
getEditors
(
EditorsOrder
.
MOST_RECENTLY_ACTIVE
).
map
(
editor
=>
({
editor
,
groupId
})),
exclude
);
this
.
doEnsureOpenedEditorsLimit
(
limit
,
group
.
getEditors
(
EditorsOrder
.
MOST_RECENTLY_ACTIVE
).
map
(
editor
=>
({
editor
,
groupId
})),
exclude
);
}
}
...
...
@@ -236,21 +245,13 @@ export class EditorsObserver extends Disposable {
// Across all editor groups
else
{
this
.
doEnsureOpenedEditorsLimit
(
this
.
mostRecentEditorsMap
.
values
(),
exclude
);
this
.
doEnsureOpenedEditorsLimit
(
limit
,
this
.
mostRecentEditorsMap
.
values
(),
exclude
);
}
}
private
async
doEnsureOpenedEditorsLimit
(
mostRecentEditors
:
IEditorIdentifier
[],
exclude
?:
IEditorIdentifier
):
Promise
<
void
>
{
if
(
!
this
.
editorGroupsService
.
partOptions
.
limit
?.
enabled
)
{
return
;
// only if enabled
}
if
(
typeof
this
.
editorGroupsService
.
partOptions
.
limit
.
value
!==
'
number
'
||
this
.
editorGroupsService
.
partOptions
.
limit
.
value
<=
0
||
this
.
editorGroupsService
.
partOptions
.
limit
.
value
>=
mostRecentEditors
.
length
)
{
return
;
// only if opened editors exceed setting and is valid
private
async
doEnsureOpenedEditorsLimit
(
limit
:
number
,
mostRecentEditors
:
IEditorIdentifier
[],
exclude
?:
IEditorIdentifier
):
Promise
<
void
>
{
if
(
limit
>=
mostRecentEditors
.
length
)
{
return
;
// only if opened editors exceed setting and is valid and enabled
}
// Extract least recently used editors that can be closed
...
...
@@ -267,7 +268,7 @@ export class EditorsObserver extends Disposable {
});
// Close editors until we reached the limit again
let
editorsToCloseCount
=
mostRecentEditors
.
length
-
this
.
editorGroupsService
.
partOptions
.
limit
.
value
;
let
editorsToCloseCount
=
mostRecentEditors
.
length
-
limit
;
const
mapGroupToEditorsToClose
=
new
Map
<
GroupIdentifier
,
IEditorInput
[]
>
();
for
(
const
{
groupId
,
editor
}
of
leastRecentlyClosableEditors
)
{
let
editorsInGroupToClose
=
mapGroupToEditorsToClose
.
get
(
groupId
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录