Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
4fc25c28
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,发现更多精彩内容 >>
未验证
提交
4fc25c28
编写于
3月 17, 2020
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Maintain version id across model disposing
上级
c2bac14b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
1 deletion
+26
-1
src/vs/editor/common/model/textModel.ts
src/vs/editor/common/model/textModel.ts
+4
-0
src/vs/editor/common/services/modelServiceImpl.ts
src/vs/editor/common/services/modelServiceImpl.ts
+3
-1
src/vs/editor/test/common/services/modelService.test.ts
src/vs/editor/test/common/services/modelService.test.ts
+19
-0
未找到文件。
src/vs/editor/common/model/textModel.ts
浏览文件 @
4fc25c28
...
...
@@ -705,6 +705,10 @@ export class TextModel extends Disposable implements model.ITextModel {
this
.
_alternativeVersionId
=
this
.
_versionId
;
}
public
_overwriteVersionId
(
versionId
:
number
):
void
{
this
.
_versionId
=
versionId
;
}
public
_overwriteAlternativeVersionId
(
newAlternativeVersionId
:
number
):
void
{
this
.
_alternativeVersionId
=
newAlternativeVersionId
;
}
...
...
src/vs/editor/common/services/modelServiceImpl.ts
浏览文件 @
4fc25c28
...
...
@@ -140,6 +140,7 @@ class DisposedModelInfo {
constructor
(
public
readonly
uri
:
URI
,
public
readonly
sha1
:
string
,
public
readonly
versionId
:
number
,
public
readonly
alternativeVersionId
:
number
,
)
{
}
}
...
...
@@ -346,6 +347,7 @@ export class ModelServiceImpl extends Disposable implements IModelService {
element
.
setModel
(
model
);
}
this
.
_undoRedoService
.
setElementsIsValid
(
resource
,
true
);
model
.
_overwriteVersionId
(
disposedModelData
.
versionId
);
model
.
_overwriteAlternativeVersionId
(
disposedModelData
.
alternativeVersionId
);
}
else
{
this
.
_undoRedoService
.
removeElements
(
resource
);
...
...
@@ -481,7 +483,7 @@ export class ModelServiceImpl extends Disposable implements IModelService {
if
(
maintainUndoRedoStack
)
{
// We only invalidate the elements, but they remain in the undo-redo service.
this
.
_undoRedoService
.
setElementsIsValid
(
resource
,
false
);
this
.
_disposedModels
.
set
(
MODEL_ID
(
resource
),
new
DisposedModelInfo
(
resource
,
computeModelSha1
(
model
),
model
.
getAlternativeVersionId
()));
this
.
_disposedModels
.
set
(
MODEL_ID
(
resource
),
new
DisposedModelInfo
(
resource
,
computeModelSha1
(
model
),
model
.
get
VersionId
(),
model
.
get
AlternativeVersionId
()));
}
else
{
this
.
_undoRedoService
.
removeElements
(
resource
);
}
...
...
src/vs/editor/test/common/services/modelService.test.ts
浏览文件 @
4fc25c28
...
...
@@ -327,6 +327,25 @@ suite('ModelService', () => {
model2
.
undo
();
assert
.
equal
(
model2
.
getValue
(),
'
text
'
);
});
test
(
'
maintains version id and alternative version id for same resource and same content
'
,
()
=>
{
const
resource
=
URI
.
parse
(
'
file://test.txt
'
);
// create a model
const
model1
=
modelService
.
createModel
(
'
text
'
,
null
,
resource
);
// make an edit
model1
.
pushEditOperations
(
null
,
[{
range
:
new
Range
(
1
,
5
,
1
,
5
),
text
:
'
1
'
}],
()
=>
[
new
Selection
(
1
,
5
,
1
,
5
)]);
assert
.
equal
(
model1
.
getValue
(),
'
text1
'
);
const
versionId
=
model1
.
getVersionId
();
const
alternativeVersionId
=
model1
.
getAlternativeVersionId
();
// dispose it
modelService
.
destroyModel
(
resource
);
// create a new model with the same content
const
model2
=
modelService
.
createModel
(
'
text1
'
,
null
,
resource
);
assert
.
equal
(
model2
.
getVersionId
(),
versionId
);
assert
.
equal
(
model2
.
getAlternativeVersionId
(),
alternativeVersionId
);
});
}
test
(
'
does not maintain undo for same resource and different content
'
,
()
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录