Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
433086be
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,发现更多精彩内容 >>
提交
433086be
编写于
3月 31, 2020
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make notebook doc metadata optional, listen to changes on metadata object
Fix #93815
上级
9442048e
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
47 addition
and
27 deletion
+47
-27
src/vs/vscode.proposed.d.ts
src/vs/vscode.proposed.d.ts
+5
-5
src/vs/workbench/api/common/extHostNotebook.ts
src/vs/workbench/api/common/extHostNotebook.ts
+27
-14
src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts
...kbench/contrib/notebook/common/model/notebookTextModel.ts
+2
-2
src/vs/workbench/contrib/notebook/common/notebookCommon.ts
src/vs/workbench/contrib/notebook/common/notebookCommon.ts
+10
-3
src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts
...workbench/contrib/notebook/test/notebookViewModel.test.ts
+3
-3
未找到文件。
src/vs/vscode.proposed.d.ts
浏览文件 @
433086be
...
...
@@ -1320,25 +1320,25 @@ declare module 'vscode' {
* Controls if users can add or delete cells
* Defaults to true
*/
editable
:
boolean
;
editable
?
:
boolean
;
/**
* Default value for [cell editable metadata](#NotebookCellMetadata.editable).
* Defaults to true.
*/
cellEditable
:
boolean
;
cellEditable
?
:
boolean
;
/**
* Default value for [cell runnable metadata](#NotebookCellMetadata.runnable).
* Defaults to true.
*/
cellRunnable
:
boolean
;
cellRunnable
?
:
boolean
;
/**
* Whether the [execution order](#NotebookCellMetadata.executionOrder) indicator will be displayed.
* Defaults to true.
*/
hasExecutionOrder
:
boolean
;
hasExecutionOrder
?
:
boolean
;
}
export
interface
NotebookDocument
{
...
...
@@ -1348,7 +1348,7 @@ declare module 'vscode' {
readonly
cells
:
NotebookCell
[];
languages
:
string
[];
displayOrder
?:
GlobPattern
[];
metadata
?
:
NotebookDocumentMetadata
;
metadata
:
NotebookDocumentMetadata
;
}
export
interface
NotebookEditorCellEdit
{
...
...
src/vs/workbench/api/common/extHostNotebook.ts
浏览文件 @
433086be
...
...
@@ -13,7 +13,7 @@ import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'
import
{
CellKind
,
CellOutputKind
,
ExtHostNotebookShape
,
IMainContext
,
MainContext
,
MainThreadNotebookShape
,
NotebookCellOutputsSplice
}
from
'
vs/workbench/api/common/extHost.protocol
'
;
import
{
ExtHostCommands
}
from
'
vs/workbench/api/common/extHostCommands
'
;
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
}
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
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
Disposable
as
VSCodeDisposable
}
from
'
./extHostTypes
'
;
import
{
CancellationToken
}
from
'
vs/base/common/cancellation
'
;
...
...
@@ -38,13 +38,6 @@ function getObservable<T extends Object>(obj: T): IObservable<T> {
};
}
const
notebookDocumentMetadataDefaults
:
vscode
.
NotebookDocumentMetadata
=
{
editable
:
true
,
cellEditable
:
true
,
cellRunnable
:
true
,
hasExecutionOrder
:
true
};
export
class
ExtHostCell
extends
Disposable
implements
vscode
.
NotebookCell
{
private
originalSource
:
string
[];
...
...
@@ -82,7 +75,7 @@ export class ExtHostCell extends Disposable implements vscode.NotebookCell {
this
.
originalSource
=
this
.
_content
.
split
(
/
\r
|
\n
|
\r\n
/g
);
this
.
_outputs
=
outputs
;
const
observableMetadata
=
getObservable
(
_metadata
||
{}
as
any
);
const
observableMetadata
=
getObservable
(
_metadata
||
{});
this
.
_metadata
=
observableMetadata
.
proxy
;
this
.
_metadataChangeListener
=
this
.
_register
(
observableMetadata
.
onDidChange
(()
=>
{
this
.
updateMetadata
();
...
...
@@ -117,8 +110,9 @@ export class ExtHostCell extends Disposable implements vscode.NotebookCell {
}
set
metadata
(
newMetadata
:
vscode
.
NotebookCellMetadata
)
{
// Don't apply metadata defaults here, 'undefined' means 'inherit from document metadata'
this
.
_metadataChangeListener
.
dispose
();
const
observableMetadata
=
getObservable
(
newMetadata
||
{}
as
any
);
// TODO defaults
const
observableMetadata
=
getObservable
(
newMetadata
);
this
.
_metadata
=
observableMetadata
.
proxy
;
this
.
_metadataChangeListener
=
this
.
_register
(
observableMetadata
.
onDidChange
(()
=>
{
this
.
updateMetadata
();
...
...
@@ -177,15 +171,24 @@ export class ExtHostNotebookDocument extends Disposable implements vscode.Notebo
this
.
_proxy
.
$updateNotebookLanguages
(
this
.
viewType
,
this
.
uri
,
this
.
_languages
);
}
private
_metadata
:
vscode
.
NotebookDocumentMetadata
|
undefined
=
notebookDocumentMetadataDefaults
;
private
_metadata
:
Required
<
vscode
.
NotebookDocumentMetadata
>
=
notebookDocumentMetadataDefaults
;
private
_metadataChangeListener
:
IDisposable
;
get
metadata
()
{
return
this
.
_metadata
;
}
set
metadata
(
newMetadata
:
vscode
.
NotebookDocumentMetadata
|
undefined
)
{
this
.
_metadata
=
newMetadata
||
notebookDocumentMetadataDefaults
;
this
.
_proxy
.
$updateNotebookMetadata
(
this
.
viewType
,
this
.
uri
,
this
.
_metadata
);
set
metadata
(
newMetadata
:
Required
<
vscode
.
NotebookDocumentMetadata
>
)
{
this
.
_metadataChangeListener
.
dispose
();
newMetadata
=
{
...
notebookDocumentMetadataDefaults
,
...
newMetadata
};
const
observableMetadata
=
getObservable
(
newMetadata
);
this
.
_metadata
=
observableMetadata
.
proxy
;
this
.
_metadataChangeListener
=
this
.
_register
(
observableMetadata
.
onDidChange
(()
=>
{
this
.
updateMetadata
();
}));
}
private
_displayOrder
:
string
[]
=
[];
...
...
@@ -212,6 +215,16 @@ export class ExtHostNotebookDocument extends Disposable implements vscode.Notebo
public
renderingHandler
:
ExtHostNotebookOutputRenderingHandler
)
{
super
();
const
observableMetadata
=
getObservable
(
notebookDocumentMetadataDefaults
);
this
.
_metadata
=
observableMetadata
.
proxy
;
this
.
_metadataChangeListener
=
this
.
_register
(
observableMetadata
.
onDidChange
(()
=>
{
this
.
updateMetadata
();
}));
}
private
updateMetadata
()
{
this
.
_proxy
.
$updateNotebookMetadata
(
this
.
viewType
,
this
.
uri
,
this
.
_metadata
);
}
dispose
()
{
...
...
src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts
浏览文件 @
433086be
...
...
@@ -7,7 +7,7 @@ import { Emitter, Event } from 'vs/base/common/event';
import
{
Disposable
,
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
NotebookCellTextModel
}
from
'
vs/workbench/contrib/notebook/common/model/notebookCellTextModel
'
;
import
{
INotebookTextModel
,
NotebookCellOutputsSplice
,
NotebookCellsSplice
,
NotebookDocumentMetadata
,
NotebookCellMetadata
,
ICellEditOperation
,
CellEditType
,
CellUri
,
ICellInsertEdit
,
NotebookCellsChangedEvent
,
CellKind
,
IOutput
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
INotebookTextModel
,
NotebookCellOutputsSplice
,
NotebookCellsSplice
,
NotebookDocumentMetadata
,
NotebookCellMetadata
,
ICellEditOperation
,
CellEditType
,
CellUri
,
ICellInsertEdit
,
NotebookCellsChangedEvent
,
CellKind
,
IOutput
,
notebookDocumentMetadataDefaults
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
export
class
NotebookTextModel
extends
Disposable
implements
INotebookTextModel
{
private
static
_cellhandlePool
:
number
=
0
;
...
...
@@ -26,7 +26,7 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel
private
_cellListeners
:
Map
<
number
,
IDisposable
>
=
new
Map
();
cells
:
NotebookCellTextModel
[];
languages
:
string
[]
=
[];
metadata
:
NotebookDocumentMetadata
|
undefined
=
{
editable
:
true
}
;
metadata
:
NotebookDocumentMetadata
=
notebookDocumentMetadataDefaults
;
renderers
=
new
Set
<
number
>
();
private
_isUntitled
:
boolean
|
undefined
=
undefined
;
private
_versionId
=
0
;
...
...
src/vs/workbench/contrib/notebook/common/notebookCommon.ts
浏览文件 @
433086be
...
...
@@ -36,11 +36,18 @@ export const NOTEBOOK_DISPLAY_ORDER = [
'
text/plain
'
];
export
const
notebookDocumentMetadataDefaults
:
NotebookDocumentMetadata
=
{
editable
:
true
,
cellEditable
:
true
,
cellRunnable
:
true
,
hasExecutionOrder
:
true
};
export
interface
NotebookDocumentMetadata
{
editable
:
boolean
;
cellEditable
?
:
boolean
;
cellRunnable
?
:
boolean
;
hasExecutionOrder
?
:
boolean
;
cellEditable
:
boolean
;
cellRunnable
:
boolean
;
hasExecutionOrder
:
boolean
;
}
export
interface
NotebookCellMetadata
{
...
...
src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts
浏览文件 @
433086be
...
...
@@ -97,7 +97,7 @@ suite('NotebookViewModel', () => {
[[
'
var e = 5;
'
],
'
javascript
'
,
CellKind
.
Code
,
[],
{
editable
:
false
,
runnable
:
false
}],
],
(
editor
,
viewModel
)
=>
{
viewModel
.
notebookDocument
.
metadata
=
{
editable
:
true
,
cellRunnable
:
true
,
cellEditable
:
true
};
viewModel
.
notebookDocument
.
metadata
=
{
editable
:
true
,
cellRunnable
:
true
,
cellEditable
:
true
,
hasExecutionOrder
:
true
};
assert
.
deepEqual
(
viewModel
.
viewCells
[
0
].
getEvaluatedMetadata
(
viewModel
.
metadata
),
{
editable
:
true
,
...
...
@@ -124,7 +124,7 @@ suite('NotebookViewModel', () => {
runnable
:
false
});
viewModel
.
notebookDocument
.
metadata
=
{
editable
:
true
,
cellRunnable
:
false
,
cellEditable
:
true
};
viewModel
.
notebookDocument
.
metadata
=
{
editable
:
true
,
cellRunnable
:
false
,
cellEditable
:
true
,
hasExecutionOrder
:
true
};
assert
.
deepEqual
(
viewModel
.
viewCells
[
0
].
getEvaluatedMetadata
(
viewModel
.
metadata
),
{
editable
:
true
,
...
...
@@ -151,7 +151,7 @@ suite('NotebookViewModel', () => {
runnable
:
false
});
viewModel
.
notebookDocument
.
metadata
=
{
editable
:
true
,
cellRunnable
:
false
,
cellEditable
:
false
};
viewModel
.
notebookDocument
.
metadata
=
{
editable
:
true
,
cellRunnable
:
false
,
cellEditable
:
false
,
hasExecutionOrder
:
true
};
assert
.
deepEqual
(
viewModel
.
viewCells
[
0
].
getEvaluatedMetadata
(
viewModel
.
metadata
),
{
editable
:
false
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录