Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
13872112
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,发现更多精彩内容 >>
提交
13872112
编写于
3月 09, 2020
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
document INotebookEditor.
上级
18b40451
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
75 addition
and
11 deletion
+75
-11
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
+68
-1
src/vs/workbench/contrib/notebook/browser/notebookEditor.ts
src/vs/workbench/contrib/notebook/browser/notebookEditor.ts
+5
-7
src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts
src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts
+2
-3
未找到文件。
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
浏览文件 @
13872112
...
...
@@ -22,20 +22,77 @@ export interface NotebookLayoutInfo {
}
export
interface
INotebookEditor
{
viewType
:
string
|
undefined
;
/**
* Notebook view model attached to the current editor
*/
viewModel
:
NotebookViewModel
|
undefined
;
/**
* Focus the notebook editor cell list
*/
focus
():
void
;
/**
* Layout info for the notebook editor
*/
getLayoutInfo
():
NotebookLayoutInfo
;
/**
* Fetch the output renderers for notebook outputs.
*/
getOutputRenderer
():
OutputRenderer
;
/**
* Insert a new cell around `cell`
*/
insertEmptyNotebookCell
(
cell
:
CellViewModel
,
type
:
CellKind
,
direction
:
'
above
'
|
'
below
'
):
Promise
<
void
>
;
/**
* Delete a cell from the notebook
*/
deleteNotebookCell
(
cell
:
CellViewModel
):
void
;
/**
* Switch the cell into editing mode.
*
* For code cell, the monaco editor will be focused.
* For markdown cell, it will switch from preview mode to editing mode, which focuses the monaco editor.
*/
editNotebookCell
(
cell
:
CellViewModel
):
void
;
/**
* Quit cell editing mode.
*/
saveNotebookCell
(
cell
:
CellViewModel
):
void
;
/**
* Focus the container of a cell (the monaco editor inside is not focused).
*/
focusNotebookCell
(
cell
:
CellViewModel
,
focusEditor
:
boolean
):
void
;
/**
* Get current active cell
*/
getActiveCell
():
CellViewModel
|
undefined
;
/**
* Layout the cell with a new height
*/
layoutNotebookCell
(
cell
:
CellViewModel
,
height
:
number
):
void
;
/**
* Render the output in webview layer
*/
createInset
(
cell
:
CellViewModel
,
output
:
IOutput
,
shadowContent
:
string
,
offset
:
number
):
void
;
/**
* Remove the output from the webview layer
*/
removeInset
(
output
:
IOutput
):
void
;
/**
* Trigger the editor to scroll from scroll event programmatically
*/
triggerScroll
(
event
:
IMouseWheelEvent
):
void
;
/**
...
...
@@ -73,7 +130,17 @@ export interface INotebookEditor {
* The notebook is virtualized and this method should be called to create/delete editor decorations safely.
*/
changeDecorations
(
callback
:
(
changeAccessor
:
IModelDecorationsChangeAccessor
)
=>
any
):
any
;
/**
* Show Find Widget.
*
* Currently Find is still part of the NotebookEditor core
*/
showFind
():
void
;
/**
* Hide Find Widget
*/
hideFind
():
void
;
}
...
...
src/vs/workbench/contrib/notebook/browser/notebookEditor.ts
浏览文件 @
13872112
...
...
@@ -21,7 +21,7 @@ import { contrastBorder, editorBackground, focusBorder, foreground, textBlockQuo
import
{
IThemeService
,
registerThemingParticipant
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
BaseEditor
}
from
'
vs/workbench/browser/parts/editor/baseEditor
'
;
import
{
EditorOptions
,
IEditorMemento
,
ICompositeCodeEditor
,
IEditorCloseEvent
}
from
'
vs/workbench/common/editor
'
;
import
{
INotebookEditor
,
CellFindMatch
,
NotebookLayoutInfo
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
INotebookEditor
,
NotebookLayoutInfo
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
NotebookEditorInput
,
NotebookEditorModel
}
from
'
vs/workbench/contrib/notebook/browser/notebookEditorInput
'
;
import
{
INotebookService
}
from
'
vs/workbench/contrib/notebook/browser/notebookService
'
;
import
{
OutputRenderer
}
from
'
vs/workbench/contrib/notebook/browser/view/output/outputRenderer
'
;
...
...
@@ -170,8 +170,6 @@ export class NotebookEditor extends BaseEditor implements INotebookEditor {
set
minimumWidth
(
value
:
number
)
{
/*noop*/
}
set
maximumWidth
(
value
:
number
)
{
/*noop*/
}
get
viewType
()
{
return
this
.
notebookViewModel
?.
viewType
;
}
//#region Editor Core
...
...
@@ -272,7 +270,7 @@ export class NotebookEditor extends BaseEditor implements INotebookEditor {
this
.
list
?.
splice
(
0
,
this
.
list
?.
length
);
if
(
this
.
notebookViewModel
&&
!
this
.
notebookViewModel
.
isDirty
())
{
this
.
notebookService
.
destoryNotebookDocument
(
this
.
viewType
!
,
this
.
notebookViewModel
!
.
notebookDocument
);
this
.
notebookService
.
destoryNotebookDocument
(
this
.
notebookViewModel
.
viewType
!
,
this
.
notebookViewModel
!
.
notebookDocument
);
this
.
notebookViewModel
.
dispose
();
this
.
notebookViewModel
=
undefined
;
}
...
...
@@ -506,7 +504,7 @@ export class NotebookEditor extends BaseEditor implements INotebookEditor {
DOM
.
scheduleAtNextAnimationFrame
(()
=>
{
splices
.
reverse
().
forEach
((
diff
)
=>
{
this
.
list
?.
splice
(
diff
[
0
],
diff
[
1
],
diff
[
2
].
map
(
cell
=>
{
return
this
.
instantiationService
.
createInstance
(
CellViewModel
,
this
.
viewType
!
,
this
.
notebookViewModel
!
.
handle
,
cell
);
return
this
.
instantiationService
.
createInstance
(
CellViewModel
,
this
.
notebookViewModel
!
.
viewType
,
this
.
notebookViewModel
!
.
handle
,
cell
);
}));
});
});
...
...
@@ -517,7 +515,7 @@ export class NotebookEditor extends BaseEditor implements INotebookEditor {
const
language
=
newLanguages
&&
newLanguages
.
length
?
newLanguages
[
0
]
:
'
markdown
'
;
const
index
=
this
.
notebookViewModel
!
.
getViewCellIndex
(
cell
);
const
insertIndex
=
direction
===
'
above
'
?
index
:
index
+
1
;
const
newModeCell
=
await
this
.
notebookService
.
createNotebookCell
(
this
.
viewType
!
,
this
.
notebookViewModel
!
.
uri
,
insertIndex
,
language
,
type
);
const
newModeCell
=
await
this
.
notebookService
.
createNotebookCell
(
this
.
notebookViewModel
!
.
viewType
,
this
.
notebookViewModel
!
.
uri
,
insertIndex
,
language
,
type
);
const
newCell
=
this
.
notebookViewModel
!
.
insertCell
(
insertIndex
,
newModeCell
!
);
this
.
list
?.
splice
(
insertIndex
,
0
,
[
newCell
]);
...
...
@@ -534,7 +532,7 @@ export class NotebookEditor extends BaseEditor implements INotebookEditor {
async
deleteNotebookCell
(
cell
:
CellViewModel
):
Promise
<
void
>
{
const
index
=
this
.
notebookViewModel
!
.
getViewCellIndex
(
cell
);
await
this
.
notebookService
.
deleteNotebookCell
(
this
.
viewType
!
,
this
.
notebookViewModel
!
.
uri
,
index
);
await
this
.
notebookService
.
deleteNotebookCell
(
this
.
notebookViewModel
!
.
viewType
,
this
.
notebookViewModel
!
.
uri
,
index
);
this
.
notebookViewModel
!
.
deleteCell
(
index
);
this
.
list
?.
splice
(
index
,
1
);
}
...
...
src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts
浏览文件 @
13872112
...
...
@@ -12,7 +12,7 @@ import { NotebookViewModel, IModelDecorationsChangeAccessor } from 'vs/workbench
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
CellViewModel
}
from
'
vs/workbench/contrib/notebook/browser/viewModel/notebookCellViewModel
'
;
import
{
NotebookEditorModel
}
from
'
vs/workbench/contrib/notebook/browser/notebookEditorInput
'
;
import
{
INotebookEditor
,
CellFindMatch
,
NotebookLayoutInfo
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
INotebookEditor
,
NotebookLayoutInfo
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
IMouseWheelEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
OutputRenderer
}
from
'
vs/workbench/contrib/notebook/browser/view/output/outputRenderer
'
;
import
{
BareFontInfo
}
from
'
vs/editor/common/config/fontInfo
'
;
...
...
@@ -93,7 +93,6 @@ export class TestNotebookEditor implements INotebookEditor {
}
constructor
(
public
viewType
:
string
)
{
}
...
...
@@ -176,7 +175,7 @@ export function createTestCellViewModel(instantiationService: IInstantiationServ
export
function
withTestNotebook
(
instantiationService
:
IInstantiationService
,
cells
:
[
string
[],
string
,
CellKind
,
IOutput
[]][],
callback
:
(
editor
:
TestNotebookEditor
,
viewModel
:
NotebookViewModel
)
=>
void
)
{
const
viewType
=
'
notebook
'
;
const
editor
=
new
TestNotebookEditor
(
viewType
);
const
editor
=
new
TestNotebookEditor
();
const
notebook
=
new
TestNotebook
(
0
,
viewType
,
URI
.
parse
(
'
test
'
));
notebook
.
cells
=
cells
.
map
((
cell
,
index
)
=>
{
return
new
TestCell
(
viewType
,
index
,
cell
[
0
],
cell
[
1
],
cell
[
2
],
cell
[
3
]);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录