Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
b5831f5b
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,发现更多精彩内容 >>
提交
b5831f5b
编写于
5月 18, 2020
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
notebook content change events.
上级
a328f500
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
103 addition
and
22 deletion
+103
-22
src/vs/vscode.proposed.d.ts
src/vs/vscode.proposed.d.ts
+40
-1
src/vs/workbench/api/common/extHost.api.impl.ts
src/vs/workbench/api/common/extHost.api.impl.ts
+1
-0
src/vs/workbench/api/common/extHostNotebook.ts
src/vs/workbench/api/common/extHostNotebook.ts
+54
-21
src/vs/workbench/api/common/extHostTypes.ts
src/vs/workbench/api/common/extHostTypes.ts
+8
-0
未找到文件。
src/vs/vscode.proposed.d.ts
浏览文件 @
b5831f5b
...
@@ -1800,6 +1800,45 @@ declare module 'vscode' {
...
@@ -1800,6 +1800,45 @@ declare module 'vscode' {
preloads
?:
Uri
[];
preloads
?:
Uri
[];
}
}
export
enum
NotebookCellsChangeType
{
ModelChange
=
1
,
MoveCell
=
2
,
ClearCellOutputs
=
3
,
ClearAllCellsOutputs
=
4
,
ChangeCellLanguage
=
5
}
export
interface
NotebookCellsModelChangedEvent
{
readonly
kind
:
NotebookCellsChangeType
.
ModelChange
;
readonly
start
:
number
;
readonly
deletedCount
:
number
;
readonly
items
:
NotebookCell
[];
}
export
interface
NotebookCellsModelMoveEvent
{
readonly
kind
:
NotebookCellsChangeType
.
MoveCell
;
readonly
index
:
number
;
readonly
newIndex
:
number
;
}
export
interface
NotebookCellClearOutputEvent
{
readonly
kind
:
NotebookCellsChangeType
.
ClearCellOutputs
;
readonly
index
:
number
;
}
export
interface
NotebookCellsClearOutputEvent
{
readonly
kind
:
NotebookCellsChangeType
.
ClearAllCellsOutputs
;
}
export
interface
NotebookCellsChangeLanguageEvent
{
readonly
kind
:
NotebookCellsChangeType
.
ChangeCellLanguage
;
readonly
index
:
number
;
readonly
language
:
string
;
}
export
type
NotebookContentChangeEvent
=
NotebookCellsModelChangedEvent
|
NotebookCellsModelMoveEvent
|
NotebookCellClearOutputEvent
|
NotebookCellsClearOutputEvent
|
NotebookCellsChangeLanguageEvent
;
export
interface
NotebookDocumentChangeEvent
{
export
interface
NotebookDocumentChangeEvent
{
/**
/**
...
@@ -1810,7 +1849,7 @@ declare module 'vscode' {
...
@@ -1810,7 +1849,7 @@ declare module 'vscode' {
/**
/**
* An array of content changes.
* An array of content changes.
*/
*/
// readonly contentChanges: ReadonlyArray<TextDocument
ContentChangeEvent>;
readonly
contentChanges
:
ReadonlyArray
<
Notebook
ContentChangeEvent
>
;
}
}
export
interface
NotebookCellData
{
export
interface
NotebookCellData
{
...
...
src/vs/workbench/api/common/extHost.api.impl.ts
浏览文件 @
b5831f5b
...
@@ -1083,6 +1083,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
...
@@ -1083,6 +1083,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
CellKind
:
extHostTypes
.
CellKind
,
CellKind
:
extHostTypes
.
CellKind
,
CellOutputKind
:
extHostTypes
.
CellOutputKind
,
CellOutputKind
:
extHostTypes
.
CellOutputKind
,
NotebookCellRunState
:
extHostTypes
.
NotebookCellRunState
,
NotebookCellRunState
:
extHostTypes
.
NotebookCellRunState
,
NotebookCellsChangeType
:
extHostTypes
.
NotebookCellsChangeType
,
AuthenticationSession2
:
extHostTypes
.
AuthenticationSession
AuthenticationSession2
:
extHostTypes
.
AuthenticationSession
};
};
};
};
...
...
src/vs/workbench/api/common/extHostNotebook.ts
浏览文件 @
b5831f5b
...
@@ -14,7 +14,7 @@ import { CellKind, CellOutputKind, ExtHostNotebookShape, IMainContext, MainConte
...
@@ -14,7 +14,7 @@ import { CellKind, CellOutputKind, ExtHostNotebookShape, IMainContext, MainConte
import
{
ExtHostCommands
}
from
'
vs/workbench/api/common/extHostCommands
'
;
import
{
ExtHostCommands
}
from
'
vs/workbench/api/common/extHostCommands
'
;
import
{
ExtHostDocumentsAndEditors
}
from
'
vs/workbench/api/common/extHostDocumentsAndEditors
'
;
import
{
ExtHostDocumentsAndEditors
}
from
'
vs/workbench/api/common/extHostDocumentsAndEditors
'
;
import
{
CellEditType
,
CellUri
,
diff
,
ICellEditOperation
,
ICellInsertEdit
,
IErrorOutput
,
INotebookDisplayOrder
,
INotebookEditData
,
IOrderedMimeType
,
IStreamOutput
,
ITransformedDisplayOutputDto
,
mimeTypeSupportedByCore
,
NotebookCellsChangedEvent
,
NotebookCellsSplice2
,
sortMimeTypes
,
ICellDeleteEdit
,
notebookDocumentMetadataDefaults
,
NotebookCellsChangeType
,
NotebookDataDto
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
CellEditType
,
CellUri
,
diff
,
ICellEditOperation
,
ICellInsertEdit
,
IErrorOutput
,
INotebookDisplayOrder
,
INotebookEditData
,
IOrderedMimeType
,
IStreamOutput
,
ITransformedDisplayOutputDto
,
mimeTypeSupportedByCore
,
NotebookCellsChangedEvent
,
NotebookCellsSplice2
,
sortMimeTypes
,
ICellDeleteEdit
,
notebookDocumentMetadataDefaults
,
NotebookCellsChangeType
,
NotebookDataDto
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
Disposable
as
VSCodeDisposable
}
from
'
.
/extHostTypes
'
;
import
*
as
extHostTypes
from
'
vs/workbench/api/common
/extHostTypes
'
;
import
{
CancellationToken
}
from
'
vs/base/common/cancellation
'
;
import
{
CancellationToken
}
from
'
vs/base/common/cancellation
'
;
import
{
ExtHostDocumentData
}
from
'
vs/workbench/api/common/extHostDocumentData
'
;
import
{
ExtHostDocumentData
}
from
'
vs/workbench/api/common/extHostDocumentData
'
;
import
{
NotImplementedProxy
}
from
'
vs/base/common/types
'
;
import
{
NotImplementedProxy
}
from
'
vs/base/common/types
'
;
...
@@ -251,31 +251,35 @@ export class ExtHostNotebookDocument extends Disposable implements vscode.Notebo
...
@@ -251,31 +251,35 @@ export class ExtHostNotebookDocument extends Disposable implements vscode.Notebo
get
isDirty
()
{
return
false
;
}
get
isDirty
()
{
return
false
;
}
accpetModelChanged
(
event
:
NotebookCellsChangedEvent
)
{
accpetModelChanged
(
event
:
NotebookCellsChangedEvent
):
vscode
.
NotebookContentChangeEvent
[]
{
let
modelEvents
:
vscode
.
NotebookContentChangeEvent
[]
=
[];
if
(
event
.
kind
===
NotebookCellsChangeType
.
ModelChange
)
{
if
(
event
.
kind
===
NotebookCellsChangeType
.
ModelChange
)
{
this
.
$spliceNotebookCells
(
event
.
changes
);
modelEvents
=
this
.
$spliceNotebookCells
(
event
.
changes
);
}
else
if
(
event
.
kind
===
NotebookCellsChangeType
.
Move
)
{
}
else
if
(
event
.
kind
===
NotebookCellsChangeType
.
Move
)
{
this
.
$moveCell
(
event
.
index
,
event
.
newIdx
);
modelEvents
=
this
.
$moveCell
(
event
.
index
,
event
.
newIdx
);
}
else
if
(
event
.
kind
===
NotebookCellsChangeType
.
CellClearOutput
)
{
}
else
if
(
event
.
kind
===
NotebookCellsChangeType
.
CellClearOutput
)
{
this
.
$clearCellOutputs
(
event
.
index
);
modelEvents
=
this
.
$clearCellOutputs
(
event
.
index
);
}
else
if
(
event
.
kind
===
NotebookCellsChangeType
.
CellsClearOutput
)
{
}
else
if
(
event
.
kind
===
NotebookCellsChangeType
.
CellsClearOutput
)
{
this
.
$clearAllCellOutputs
();
modelEvents
=
this
.
$clearAllCellOutputs
();
}
else
if
(
event
.
kind
===
NotebookCellsChangeType
.
ChangeLanguage
)
{
}
else
if
(
event
.
kind
===
NotebookCellsChangeType
.
ChangeLanguage
)
{
this
.
$changeCellLanguage
(
event
.
index
,
event
.
language
);
modelEvents
=
this
.
$changeCellLanguage
(
event
.
index
,
event
.
language
);
}
}
this
.
_versionId
=
event
.
versionId
;
this
.
_versionId
=
event
.
versionId
;
return
modelEvents
;
}
}
private
$spliceNotebookCells
(
splices
:
NotebookCellsSplice2
[]):
v
oid
{
private
$spliceNotebookCells
(
splices
:
NotebookCellsSplice2
[]):
v
scode
.
NotebookContentChangeEvent
[]
{
if
(
this
.
_disposed
)
{
if
(
this
.
_disposed
)
{
return
;
return
[]
;
}
}
if
(
!
splices
.
length
)
{
if
(
!
splices
.
length
)
{
return
;
return
[]
;
}
}
let
contentChangeEvents
:
vscode
.
NotebookCellsModelChangedEvent
[]
=
[];
splices
.
reverse
().
forEach
(
splice
=>
{
splices
.
reverse
().
forEach
(
splice
=>
{
let
cellDtos
=
splice
[
2
];
let
cellDtos
=
splice
[
2
];
let
newCells
=
cellDtos
.
map
(
cell
=>
{
let
newCells
=
cellDtos
.
map
(
cell
=>
{
...
@@ -306,26 +310,55 @@ export class ExtHostNotebookDocument extends Disposable implements vscode.Notebo
...
@@ -306,26 +310,55 @@ export class ExtHostNotebookDocument extends Disposable implements vscode.Notebo
}
}
this
.
cells
.
splice
(
splice
[
0
],
splice
[
1
],
...
newCells
);
this
.
cells
.
splice
(
splice
[
0
],
splice
[
1
],
...
newCells
);
contentChangeEvents
.
push
({
kind
:
extHostTypes
.
NotebookCellsChangeType
.
ModelChange
,
start
:
splice
[
0
],
deletedCount
:
splice
[
1
],
items
:
newCells
});
});
});
return
contentChangeEvents
;
}
}
private
$moveCell
(
index
:
number
,
newIdx
:
number
)
{
private
$moveCell
(
index
:
number
,
newIdx
:
number
)
:
vscode
.
NotebookContentChangeEvent
[]
{
const
cells
=
this
.
cells
.
splice
(
index
,
1
);
const
cells
=
this
.
cells
.
splice
(
index
,
1
);
this
.
cells
.
splice
(
newIdx
,
0
,
...
cells
);
this
.
cells
.
splice
(
newIdx
,
0
,
...
cells
);
return
[{
kind
:
extHostTypes
.
NotebookCellsChangeType
.
MoveCell
,
index
,
newIndex
:
newIdx
}];
}
}
private
$clearCellOutputs
(
index
:
number
)
{
private
$clearCellOutputs
(
index
:
number
)
:
vscode
.
NotebookContentChangeEvent
[]
{
const
cell
=
this
.
cells
[
index
];
const
cell
=
this
.
cells
[
index
];
cell
.
outputs
=
[];
cell
.
outputs
=
[];
return
[{
kind
:
extHostTypes
.
NotebookCellsChangeType
.
ClearCellOutputs
,
index
}];
}
}
private
$clearAllCellOutputs
()
{
private
$clearAllCellOutputs
()
:
vscode
.
NotebookContentChangeEvent
[]
{
this
.
cells
.
forEach
(
cell
=>
cell
.
outputs
=
[]);
this
.
cells
.
forEach
(
cell
=>
cell
.
outputs
=
[]);
return
[{
kind
:
extHostTypes
.
NotebookCellsChangeType
.
ClearAllCellsOutputs
,
}];
}
}
private
$changeCellLanguage
(
index
:
number
,
language
:
string
)
{
private
$changeCellLanguage
(
index
:
number
,
language
:
string
)
:
vscode
.
NotebookContentChangeEvent
[]
{
const
cell
=
this
.
cells
[
index
];
const
cell
=
this
.
cells
[
index
];
cell
.
language
=
language
;
cell
.
language
=
language
;
return
[{
kind
:
extHostTypes
.
NotebookCellsChangeType
.
ChangeCellLanguage
,
index
,
language
}];
}
}
eventuallyUpdateCellOutputs
(
cell
:
ExtHostCell
,
diffs
:
ISplice
<
vscode
.
CellOutput
>
[])
{
eventuallyUpdateCellOutputs
(
cell
:
ExtHostCell
,
diffs
:
ISplice
<
vscode
.
CellOutput
>
[])
{
...
@@ -641,8 +674,8 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
...
@@ -641,8 +674,8 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
private
readonly
_editors
=
new
Map
<
string
,
{
editor
:
ExtHostNotebookEditor
,
onDidReceiveMessage
:
Emitter
<
any
>
;
}
>
();
private
readonly
_editors
=
new
Map
<
string
,
{
editor
:
ExtHostNotebookEditor
,
onDidReceiveMessage
:
Emitter
<
any
>
;
}
>
();
private
readonly
_notebookOutputRenderers
=
new
Map
<
number
,
ExtHostNotebookOutputRenderer
>
();
private
readonly
_notebookOutputRenderers
=
new
Map
<
number
,
ExtHostNotebookOutputRenderer
>
();
private
readonly
_onDidChangeNotebookDocument
=
new
Emitter
<
{
document
:
ExtHostNotebookDocument
,
changes
:
NotebookCellsChangedEvent
[];
}
>
();
private
readonly
_onDidChangeNotebookDocument
=
new
Emitter
<
vscode
.
NotebookDocumentChangeEvent
>
();
readonly
onDidChangeNotebookDocument
:
Event
<
{
document
:
ExtHostNotebookDocument
,
changes
:
NotebookCellsChangedEvent
[];
}
>
=
this
.
_onDidChangeNotebookDocument
.
event
;
readonly
onDidChangeNotebookDocument
:
Event
<
vscode
.
NotebookDocumentChangeEvent
>
=
this
.
_onDidChangeNotebookDocument
.
event
;
private
_outputDisplayOrder
:
INotebookDisplayOrder
|
undefined
;
private
_outputDisplayOrder
:
INotebookDisplayOrder
|
undefined
;
...
@@ -702,7 +735,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
...
@@ -702,7 +735,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
let
extHostRenderer
=
new
ExtHostNotebookOutputRenderer
(
type
,
filter
,
renderer
);
let
extHostRenderer
=
new
ExtHostNotebookOutputRenderer
(
type
,
filter
,
renderer
);
this
.
_notebookOutputRenderers
.
set
(
extHostRenderer
.
handle
,
extHostRenderer
);
this
.
_notebookOutputRenderers
.
set
(
extHostRenderer
.
handle
,
extHostRenderer
);
this
.
_proxy
.
$registerNotebookRenderer
({
id
:
extension
.
identifier
,
location
:
extension
.
extensionLocation
},
type
,
filter
,
extHostRenderer
.
handle
,
renderer
.
preloads
||
[]);
this
.
_proxy
.
$registerNotebookRenderer
({
id
:
extension
.
identifier
,
location
:
extension
.
extensionLocation
},
type
,
filter
,
extHostRenderer
.
handle
,
renderer
.
preloads
||
[]);
return
new
VSCode
Disposable
(()
=>
{
return
new
extHostTypes
.
Disposable
(()
=>
{
this
.
_notebookOutputRenderers
.
delete
(
extHostRenderer
.
handle
);
this
.
_notebookOutputRenderers
.
delete
(
extHostRenderer
.
handle
);
this
.
_proxy
.
$unregisterNotebookRenderer
(
extHostRenderer
.
handle
);
this
.
_proxy
.
$unregisterNotebookRenderer
(
extHostRenderer
.
handle
);
});
});
...
@@ -731,7 +764,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
...
@@ -731,7 +764,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
this
.
_notebookContentProviders
.
set
(
viewType
,
{
extension
,
provider
});
this
.
_notebookContentProviders
.
set
(
viewType
,
{
extension
,
provider
});
this
.
_proxy
.
$registerNotebookProvider
({
id
:
extension
.
identifier
,
location
:
extension
.
extensionLocation
},
viewType
,
provider
.
kernel
?
{
id
:
viewType
,
label
:
provider
.
kernel
.
label
,
extensionLocation
:
extension
.
extensionLocation
,
preloads
:
provider
.
kernel
.
preloads
}
:
undefined
);
this
.
_proxy
.
$registerNotebookProvider
({
id
:
extension
.
identifier
,
location
:
extension
.
extensionLocation
},
viewType
,
provider
.
kernel
?
{
id
:
viewType
,
label
:
provider
.
kernel
.
label
,
extensionLocation
:
extension
.
extensionLocation
,
preloads
:
provider
.
kernel
.
preloads
}
:
undefined
);
return
new
VSCode
Disposable
(()
=>
{
return
new
extHostTypes
.
Disposable
(()
=>
{
this
.
_notebookContentProviders
.
delete
(
viewType
);
this
.
_notebookContentProviders
.
delete
(
viewType
);
this
.
_proxy
.
$unregisterNotebookProvider
(
viewType
);
this
.
_proxy
.
$unregisterNotebookProvider
(
viewType
);
});
});
...
@@ -746,7 +779,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
...
@@ -746,7 +779,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
const
transformedSelectors
=
selectors
.
map
(
selector
=>
typeConverters
.
GlobPattern
.
from
(
selector
));
const
transformedSelectors
=
selectors
.
map
(
selector
=>
typeConverters
.
GlobPattern
.
from
(
selector
));
this
.
_proxy
.
$registerNotebookKernel
({
id
:
extension
.
identifier
,
location
:
extension
.
extensionLocation
},
id
,
kernel
.
label
,
transformedSelectors
,
kernel
.
preloads
||
[]);
this
.
_proxy
.
$registerNotebookKernel
({
id
:
extension
.
identifier
,
location
:
extension
.
extensionLocation
},
id
,
kernel
.
label
,
transformedSelectors
,
kernel
.
preloads
||
[]);
return
new
VSCode
Disposable
(()
=>
{
return
new
extHostTypes
.
Disposable
(()
=>
{
this
.
_notebookKernels
.
delete
(
id
);
this
.
_notebookKernels
.
delete
(
id
);
this
.
_proxy
.
$unregisterNotebookKernel
(
id
);
this
.
_proxy
.
$unregisterNotebookKernel
(
id
);
});
});
...
@@ -966,10 +999,10 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
...
@@ -966,10 +999,10 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
const
document
=
this
.
_documents
.
get
(
URI
.
revive
(
uriComponents
).
toString
());
const
document
=
this
.
_documents
.
get
(
URI
.
revive
(
uriComponents
).
toString
());
if
(
document
)
{
if
(
document
)
{
document
.
accpetModelChanged
(
event
);
const
appliedEvents
=
document
.
accpetModelChanged
(
event
);
this
.
_onDidChangeNotebookDocument
.
fire
({
this
.
_onDidChangeNotebookDocument
.
fire
({
document
:
document
,
document
:
document
,
c
hanges
:
[
event
]
c
ontentChanges
:
appliedEvents
});
});
}
}
}
}
...
...
src/vs/workbench/api/common/extHostTypes.ts
浏览文件 @
b5831f5b
...
@@ -2732,6 +2732,14 @@ export enum NotebookCellRunState {
...
@@ -2732,6 +2732,14 @@ export enum NotebookCellRunState {
Error
=
4
Error
=
4
}
}
export
enum
NotebookCellsChangeType
{
ModelChange
=
1
,
MoveCell
=
2
,
ClearCellOutputs
=
3
,
ClearAllCellsOutputs
=
4
,
ChangeCellLanguage
=
5
}
//#endregion
//#endregion
//#region Timeline
//#region Timeline
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录