Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
e0882b95
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,发现更多精彩内容 >>
提交
e0882b95
编写于
5月 06, 2020
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix selection after reverting the document
上级
4bd68b7d
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
71 addition
and
7 deletion
+71
-7
extensions/vscode-notebook-tests/src/notebook.test.ts
extensions/vscode-notebook-tests/src/notebook.test.ts
+48
-0
src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts
...rkbench/contrib/notebook/browser/view/notebookCellList.ts
+15
-3
src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts
...h/contrib/notebook/browser/viewModel/notebookViewModel.ts
+8
-3
src/vs/workbench/contrib/notebook/common/notebookEditorModel.ts
.../workbench/contrib/notebook/common/notebookEditorModel.ts
+0
-1
未找到文件。
extensions/vscode-notebook-tests/src/notebook.test.ts
浏览文件 @
e0882b95
...
...
@@ -272,3 +272,51 @@ suite('notebook undo redo', () => {
await
vscode
.
commands
.
executeCommand
(
'
workbench.action.closeActiveEditor
'
);
});
});
suite
(
'
notebook working copy
'
,
()
=>
{
test
(
'
notebook revert on close
'
,
async
function
()
{
const
resource
=
vscode
.
Uri
.
parse
(
join
(
vscode
.
workspace
.
rootPath
||
''
,
'
./first.vsctestnb
'
));
await
vscode
.
commands
.
executeCommand
(
'
vscode.openWith
'
,
resource
,
'
notebookCoreTest
'
);
await
waitFor
(
500
);
await
vscode
.
commands
.
executeCommand
(
'
notebook.cell.insertCodeCellBelow
'
);
assert
.
equal
(
vscode
.
notebook
.
activeNotebookEditor
!
.
selection
?.
source
,
''
);
await
vscode
.
commands
.
executeCommand
(
'
notebook.cell.insertCodeCellAbove
'
);
await
vscode
.
commands
.
executeCommand
(
'
default:type
'
,
{
text
:
'
var abc = 0;
'
});
// close active editor from command will revert the file
await
vscode
.
commands
.
executeCommand
(
'
workbench.action.closeActiveEditor
'
);
await
vscode
.
commands
.
executeCommand
(
'
vscode.openWith
'
,
resource
,
'
notebookCoreTest
'
);
await
waitFor
(
500
);
assert
.
equal
(
vscode
.
notebook
.
activeNotebookEditor
!==
undefined
,
true
);
assert
.
equal
(
vscode
.
notebook
.
activeNotebookEditor
?.
selection
!==
undefined
,
true
);
assert
.
deepEqual
(
vscode
.
notebook
.
activeNotebookEditor
?.
document
.
cells
[
0
],
vscode
.
notebook
.
activeNotebookEditor
?.
selection
);
assert
.
equal
(
vscode
.
notebook
.
activeNotebookEditor
?.
selection
?.
source
,
'
test
'
);
await
vscode
.
commands
.
executeCommand
(
'
workbench.action.files.save
'
);
await
vscode
.
commands
.
executeCommand
(
'
workbench.action.closeActiveEditor
'
);
});
test
(
'
notebook revert
'
,
async
function
()
{
const
resource
=
vscode
.
Uri
.
parse
(
join
(
vscode
.
workspace
.
rootPath
||
''
,
'
./first.vsctestnb
'
));
await
vscode
.
commands
.
executeCommand
(
'
vscode.openWith
'
,
resource
,
'
notebookCoreTest
'
);
await
waitFor
(
500
);
await
vscode
.
commands
.
executeCommand
(
'
notebook.cell.insertCodeCellBelow
'
);
assert
.
equal
(
vscode
.
notebook
.
activeNotebookEditor
!
.
selection
?.
source
,
''
);
await
vscode
.
commands
.
executeCommand
(
'
notebook.cell.insertCodeCellAbove
'
);
await
vscode
.
commands
.
executeCommand
(
'
default:type
'
,
{
text
:
'
var abc = 0;
'
});
await
vscode
.
commands
.
executeCommand
(
'
workbench.action.files.revert
'
);
assert
.
equal
(
vscode
.
notebook
.
activeNotebookEditor
!==
undefined
,
true
);
assert
.
equal
(
vscode
.
notebook
.
activeNotebookEditor
?.
selection
!==
undefined
,
true
);
assert
.
deepEqual
(
vscode
.
notebook
.
activeNotebookEditor
?.
document
.
cells
[
0
],
vscode
.
notebook
.
activeNotebookEditor
?.
selection
);
assert
.
deepEqual
(
vscode
.
notebook
.
activeNotebookEditor
?.
document
.
cells
.
length
,
1
);
assert
.
equal
(
vscode
.
notebook
.
activeNotebookEditor
?.
selection
?.
source
,
'
test
'
);
await
vscode
.
commands
.
executeCommand
(
'
workbench.action.closeActiveEditor
'
);
});
});
src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts
浏览文件 @
e0882b95
...
...
@@ -157,7 +157,7 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
for
(
let
i
=
diff
.
start
;
i
<
diff
.
start
+
diff
.
deleteCount
;
i
++
)
{
const
cell
=
this
.
element
(
i
);
if
(
this
.
_viewModel
!
.
hasCell
(
cell
))
{
if
(
this
.
_viewModel
!
.
hasCell
(
cell
.
handle
))
{
hideOutputs
.
push
(...
cell
?.
model
.
outputs
);
}
else
{
deletedOutputs
.
push
(...
cell
?.
model
.
outputs
);
...
...
@@ -177,7 +177,7 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
for
(
let
i
=
diff
.
start
;
i
<
diff
.
start
+
diff
.
deleteCount
;
i
++
)
{
const
cell
=
this
.
element
(
i
);
if
(
this
.
_viewModel
!
.
hasCell
(
cell
))
{
if
(
this
.
_viewModel
!
.
hasCell
(
cell
.
handle
))
{
hideOutputs
.
push
(...
cell
?.
model
.
outputs
);
}
else
{
deletedOutputs
.
push
(...
cell
?.
model
.
outputs
);
...
...
@@ -299,7 +299,7 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
for
(
let
i
=
diff
.
start
;
i
<
diff
.
start
+
diff
.
deleteCount
;
i
++
)
{
const
cell
=
this
.
element
(
i
);
if
(
this
.
_viewModel
!
.
hasCell
(
cell
))
{
if
(
this
.
_viewModel
!
.
hasCell
(
cell
.
handle
))
{
hideOutputs
.
push
(...
cell
?.
model
.
outputs
);
}
else
{
deletedOutputs
.
push
(...
cell
?.
model
.
outputs
);
...
...
@@ -316,6 +316,18 @@ export class NotebookCellList extends WorkbenchList<CellViewModel> implements ID
splice2
(
start
:
number
,
deleteCount
:
number
,
elements
:
CellViewModel
[]
=
[]):
void
{
// we need to convert start and delete count based on hidden ranges
super
.
splice
(
start
,
deleteCount
,
elements
);
const
selectionsLeft
=
[];
this
.
_viewModel
!
.
selectionHandles
.
forEach
(
handle
=>
{
if
(
this
.
_viewModel
!
.
hasCell
(
handle
))
{
selectionsLeft
.
push
(
handle
);
}
});
if
(
!
selectionsLeft
.
length
&&
this
.
_viewModel
!
.
viewCells
)
{
// after splice, the selected cells are deleted
this
.
_viewModel
!
.
selectionHandles
=
[
this
.
_viewModel
!
.
viewCells
[
0
].
handle
];
}
}
getViewIndex
(
cell
:
ICellViewModel
)
{
...
...
src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts
浏览文件 @
e0882b95
...
...
@@ -268,7 +268,12 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD
});
diffs
.
reverse
().
forEach
(
diff
=>
{
this
.
_viewCells
.
splice
(
diff
[
0
],
diff
[
1
],
...
diff
[
2
]);
const
deletedCells
=
this
.
_viewCells
.
splice
(
diff
[
0
],
diff
[
1
],
...
diff
[
2
]);
deletedCells
.
forEach
(
cell
=>
{
this
.
_handleToViewCellMapping
.
delete
(
cell
.
handle
);
});
diff
[
2
].
forEach
(
cell
=>
{
this
.
_handleToViewCellMapping
.
set
(
cell
.
handle
,
cell
);
this
.
_localStore
.
add
(
cell
);
...
...
@@ -456,8 +461,8 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD
return
index
+
1
;
}
hasCell
(
cell
:
ICellViewModel
)
{
return
this
.
_handleToViewCellMapping
.
has
(
cell
.
handle
);
hasCell
(
handle
:
number
)
{
return
this
.
_handleToViewCellMapping
.
has
(
handle
);
}
getVersionId
()
{
...
...
src/vs/workbench/contrib/notebook/common/notebookEditorModel.ts
浏览文件 @
e0882b95
...
...
@@ -70,7 +70,6 @@ export class NotebookEditorModel extends EditorModel implements IWorkingCopy, IN
}
async
revert
(
options
?:
IRevertOptions
|
undefined
):
Promise
<
void
>
{
console
.
log
(
options
);
await
this
.
load
({
forceReadFromDisk
:
true
});
this
.
_dirty
=
false
;
this
.
_onDidChangeDirty
.
fire
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录