Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
94efa787
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,发现更多精彩内容 >>
提交
94efa787
编写于
1月 09, 2018
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix #40114
上级
50bc1270
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
40 addition
and
22 deletion
+40
-22
src/vs/workbench/browser/parts/editor/textEditor.ts
src/vs/workbench/browser/parts/editor/textEditor.ts
+32
-14
src/vs/workbench/browser/parts/editor/textResourceEditor.ts
src/vs/workbench/browser/parts/editor/textResourceEditor.ts
+5
-5
src/vs/workbench/parts/files/browser/editors/textFileEditor.ts
...s/workbench/parts/files/browser/editors/textFileEditor.ts
+3
-3
未找到文件。
src/vs/workbench/browser/parts/editor/textEditor.ts
浏览文件 @
94efa787
...
...
@@ -23,7 +23,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
Scope
}
from
'
vs/workbench/common/memento
'
;
import
{
getCodeEditor
}
from
'
vs/editor/browser/services/codeEditorService
'
;
import
{
getCodeEditor
,
getCodeOrDiffEditor
}
from
'
vs/editor/browser/services/codeEditorService
'
;
import
{
ITextFileService
,
SaveReason
,
AutoSaveMode
}
from
'
vs/workbench/services/textfile/common/textfiles
'
;
import
{
ITextResourceConfigurationService
}
from
'
vs/editor/common/services/resourceConfiguration
'
;
import
{
IEditorGroupService
}
from
'
vs/workbench/services/group/common/groupService
'
;
...
...
@@ -230,48 +230,66 @@ export abstract class BaseTextEditor extends BaseEditor {
}
/**
* Saves the text editor view state
under the given key
.
* Saves the text editor view state
for the given resource
.
*/
protected
saveTextEditorViewState
(
key
:
string
):
void
{
protected
saveTextEditorViewState
(
resource
:
URI
):
void
{
const
editor
=
getCodeOrDiffEditor
(
this
).
codeEditor
;
if
(
!
editor
)
{
return
;
// not supported for diff editors
}
const
model
=
editor
.
getModel
();
if
(
!
model
)
{
return
;
// view state always needs a model
}
const
modelUri
=
model
.
uri
;
if
(
!
modelUri
)
{
return
;
// model URI is needed to make sure we save the view state correctly
}
if
(
modelUri
.
toString
()
!==
resource
.
toString
())
{
return
;
// prevent saving view state for a model that is not the expected one
}
const
memento
=
this
.
getMemento
(
this
.
storageService
,
Scope
.
WORKSPACE
);
let
textEditorViewStateMemento
:
{
[
key
:
string
]:
{
[
position
:
number
]:
IEditorViewState
}
}
=
memento
[
TEXT_EDITOR_VIEW_STATE_PREFERENCE_KEY
];
if
(
!
textEditorViewStateMemento
)
{
textEditorViewStateMemento
=
Object
.
create
(
null
);
memento
[
TEXT_EDITOR_VIEW_STATE_PREFERENCE_KEY
]
=
textEditorViewStateMemento
;
}
const
editorViewState
=
this
.
getControl
().
saveViewState
();
let
lastKnownViewState
=
textEditorViewStateMemento
[
key
];
let
lastKnownViewState
=
textEditorViewStateMemento
[
resource
.
toString
()];
if
(
!
lastKnownViewState
)
{
lastKnownViewState
=
Object
.
create
(
null
);
textEditorViewStateMemento
[
key
]
=
lastKnownViewState
;
textEditorViewStateMemento
[
resource
.
toString
()
]
=
lastKnownViewState
;
}
if
(
typeof
this
.
position
===
'
number
'
)
{
lastKnownViewState
[
this
.
position
]
=
editor
ViewState
;
lastKnownViewState
[
this
.
position
]
=
editor
.
saveViewState
()
;
}
}
/**
* Clears the text editor view state
under the given key
.
* Clears the text editor view state
for the given resources
.
*/
protected
clearTextEditorViewState
(
keys
:
string
[]):
void
{
protected
clearTextEditorViewState
(
resources
:
URI
[]):
void
{
const
memento
=
this
.
getMemento
(
this
.
storageService
,
Scope
.
WORKSPACE
);
const
textEditorViewStateMemento
:
{
[
key
:
string
]:
{
[
position
:
number
]:
IEditorViewState
}
}
=
memento
[
TEXT_EDITOR_VIEW_STATE_PREFERENCE_KEY
];
if
(
textEditorViewStateMemento
)
{
keys
.
forEach
(
key
=>
delete
textEditorViewStateMemento
[
key
]);
resources
.
forEach
(
resource
=>
delete
textEditorViewStateMemento
[
resource
.
toString
()
]);
}
}
/**
* Loads the text editor view state for the given
key
and returns it.
* Loads the text editor view state for the given
resource
and returns it.
*/
protected
loadTextEditorViewState
(
key
:
string
):
IEditorViewState
{
protected
loadTextEditorViewState
(
resource
:
URI
):
IEditorViewState
{
const
memento
=
this
.
getMemento
(
this
.
storageService
,
Scope
.
WORKSPACE
);
const
textEditorViewStateMemento
:
{
[
key
:
string
]:
{
[
position
:
number
]:
IEditorViewState
}
}
=
memento
[
TEXT_EDITOR_VIEW_STATE_PREFERENCE_KEY
];
if
(
textEditorViewStateMemento
)
{
const
viewState
=
textEditorViewStateMemento
[
key
];
const
viewState
=
textEditorViewStateMemento
[
resource
.
toString
()
];
if
(
viewState
)
{
return
viewState
[
this
.
position
];
}
...
...
src/vs/workbench/browser/parts/editor/textResourceEditor.ts
浏览文件 @
94efa787
...
...
@@ -107,7 +107,7 @@ export class AbstractTextResourceEditor extends BaseTextEditor {
protected
restoreViewState
(
input
:
EditorInput
)
{
if
(
input
instanceof
UntitledEditorInput
||
input
instanceof
ResourceEditorInput
)
{
const
viewState
=
this
.
loadTextEditorViewState
(
input
.
getResource
()
.
toString
()
);
const
viewState
=
this
.
loadTextEditorViewState
(
input
.
getResource
());
if
(
viewState
)
{
this
.
getControl
().
restoreViewState
(
viewState
);
}
...
...
@@ -177,20 +177,20 @@ export class AbstractTextResourceEditor extends BaseTextEditor {
return
;
// only enabled for untitled and resource inputs
}
const
key
=
input
.
getResource
().
toString
();
const
resource
=
input
.
getResource
();
// Clear view state if input is disposed
if
(
input
.
isDisposed
())
{
super
.
clearTextEditorViewState
([
key
]);
super
.
clearTextEditorViewState
([
resource
]);
}
// Otherwise save it
else
{
super
.
saveTextEditorViewState
(
key
);
super
.
saveTextEditorViewState
(
resource
);
// Make sure to clean up when the input gets disposed
once
(
input
.
onDispose
)(()
=>
{
super
.
clearTextEditorViewState
([
key
]);
super
.
clearTextEditorViewState
([
resource
]);
});
}
}
...
...
src/vs/workbench/parts/files/browser/editors/textFileEditor.ts
浏览文件 @
94efa787
...
...
@@ -62,7 +62,7 @@ export class TextFileEditor extends BaseTextEditor {
private
onFilesChanged
(
e
:
FileChangesEvent
):
void
{
const
deleted
=
e
.
getDeleted
();
if
(
deleted
&&
deleted
.
length
)
{
this
.
clearTextEditorViewState
(
deleted
.
map
(
d
=>
d
.
resource
.
toString
()
));
this
.
clearTextEditorViewState
(
deleted
.
map
(
d
=>
d
.
resource
));
}
}
...
...
@@ -127,7 +127,7 @@ export class TextFileEditor extends BaseTextEditor {
textEditor
.
setModel
(
textFileModel
.
textEditorModel
);
// Always restore View State if any associated
const
editorViewState
=
this
.
loadTextEditorViewState
(
this
.
input
.
getResource
()
.
toString
()
);
const
editorViewState
=
this
.
loadTextEditorViewState
(
this
.
input
.
getResource
());
if
(
editorViewState
)
{
textEditor
.
restoreViewState
(
editorViewState
);
}
...
...
@@ -235,7 +235,7 @@ export class TextFileEditor extends BaseTextEditor {
private
doSaveTextEditorViewState
(
input
:
FileEditorInput
):
void
{
if
(
input
&&
!
input
.
isDisposed
())
{
this
.
saveTextEditorViewState
(
input
.
getResource
()
.
toString
()
);
this
.
saveTextEditorViewState
(
input
.
getResource
());
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录