Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
c7b869a3
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,发现更多精彩内容 >>
提交
c7b869a3
编写于
6月 12, 2020
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'joh/nbRefCount2'
上级
2564b652
bdb59853
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
89 addition
and
5 deletion
+89
-5
src/vs/base/common/lifecycle.ts
src/vs/base/common/lifecycle.ts
+3
-3
src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts
...rkbench/contrib/notebook/browser/notebook.contribution.ts
+3
-1
src/vs/workbench/contrib/notebook/common/notebookCommon.ts
src/vs/workbench/contrib/notebook/common/notebookCommon.ts
+1
-0
src/vs/workbench/contrib/notebook/common/notebookEditorModelResolverService.ts
...rib/notebook/common/notebookEditorModelResolverService.ts
+71
-0
src/vs/workbench/contrib/notebook/common/notebookService.ts
src/vs/workbench/contrib/notebook/common/notebookService.ts
+11
-1
未找到文件。
src/vs/base/common/lifecycle.ts
浏览文件 @
c7b869a3
...
@@ -219,11 +219,11 @@ export abstract class ReferenceCollection<T> {
...
@@ -219,11 +219,11 @@ export abstract class ReferenceCollection<T> {
private
readonly
references
:
Map
<
string
,
{
readonly
object
:
T
;
counter
:
number
;
}
>
=
new
Map
();
private
readonly
references
:
Map
<
string
,
{
readonly
object
:
T
;
counter
:
number
;
}
>
=
new
Map
();
acquire
(
key
:
string
):
IReference
<
T
>
{
acquire
(
key
:
string
,
...
args
:
any
[]
):
IReference
<
T
>
{
let
reference
=
this
.
references
.
get
(
key
);
let
reference
=
this
.
references
.
get
(
key
);
if
(
!
reference
)
{
if
(
!
reference
)
{
reference
=
{
counter
:
0
,
object
:
this
.
createReferencedObject
(
key
)
};
reference
=
{
counter
:
0
,
object
:
this
.
createReferencedObject
(
key
,
...
args
)
};
this
.
references
.
set
(
key
,
reference
);
this
.
references
.
set
(
key
,
reference
);
}
}
...
@@ -240,7 +240,7 @@ export abstract class ReferenceCollection<T> {
...
@@ -240,7 +240,7 @@ export abstract class ReferenceCollection<T> {
return
{
object
,
dispose
};
return
{
object
,
dispose
};
}
}
protected
abstract
createReferencedObject
(
key
:
string
):
T
;
protected
abstract
createReferencedObject
(
key
:
string
,
...
args
:
any
[]
):
T
;
protected
abstract
destroyReferencedObject
(
key
:
string
,
object
:
T
):
void
;
protected
abstract
destroyReferencedObject
(
key
:
string
,
object
:
T
):
void
;
}
}
...
...
src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts
浏览文件 @
c7b869a3
...
@@ -29,7 +29,7 @@ import { EditorInput, Extensions as EditorInputExtensions, IEditorInput, IEditor
...
@@ -29,7 +29,7 @@ import { EditorInput, Extensions as EditorInputExtensions, IEditorInput, IEditor
import
{
IBackupFileService
}
from
'
vs/workbench/services/backup/common/backup
'
;
import
{
IBackupFileService
}
from
'
vs/workbench/services/backup/common/backup
'
;
import
{
NotebookEditor
}
from
'
vs/workbench/contrib/notebook/browser/notebookEditor
'
;
import
{
NotebookEditor
}
from
'
vs/workbench/contrib/notebook/browser/notebookEditor
'
;
import
{
NotebookEditorInput
}
from
'
vs/workbench/contrib/notebook/browser/notebookEditorInput
'
;
import
{
NotebookEditorInput
}
from
'
vs/workbench/contrib/notebook/browser/notebookEditorInput
'
;
import
{
INotebookService
}
from
'
vs/workbench/contrib/notebook/common/notebookService
'
;
import
{
INotebookService
,
INotebookEditorModelResolverService
}
from
'
vs/workbench/contrib/notebook/common/notebookService
'
;
import
{
NotebookService
}
from
'
vs/workbench/contrib/notebook/browser/notebookServiceImpl
'
;
import
{
NotebookService
}
from
'
vs/workbench/contrib/notebook/browser/notebookServiceImpl
'
;
import
{
CellKind
,
CellUri
,
NotebookDocumentBackupData
,
NotebookEditorPriority
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
CellKind
,
CellUri
,
NotebookDocumentBackupData
,
NotebookEditorPriority
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
NotebookProviderInfo
}
from
'
vs/workbench/contrib/notebook/common/notebookProvider
'
;
import
{
NotebookProviderInfo
}
from
'
vs/workbench/contrib/notebook/common/notebookProvider
'
;
...
@@ -42,6 +42,7 @@ import { NotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/not
...
@@ -42,6 +42,7 @@ import { NotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/not
import
{
INotebookEditor
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
INotebookEditor
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
IUndoRedoService
}
from
'
vs/platform/undoRedo/common/undoRedo
'
;
import
{
IUndoRedoService
}
from
'
vs/platform/undoRedo/common/undoRedo
'
;
import
{
NotebookRegistry
}
from
'
vs/workbench/contrib/notebook/browser/notebookRegistry
'
;
import
{
NotebookRegistry
}
from
'
vs/workbench/contrib/notebook/browser/notebookRegistry
'
;
import
{
NotebookModelResolverService
}
from
'
vs/workbench/contrib/notebook/common/notebookEditorModelResolverService
'
;
// Editor Contribution
// Editor Contribution
...
@@ -431,6 +432,7 @@ workbenchContributionsRegistry.registerWorkbenchContribution(NotebookContributio
...
@@ -431,6 +432,7 @@ workbenchContributionsRegistry.registerWorkbenchContribution(NotebookContributio
workbenchContributionsRegistry
.
registerWorkbenchContribution
(
CellContentProvider
,
LifecyclePhase
.
Starting
);
workbenchContributionsRegistry
.
registerWorkbenchContribution
(
CellContentProvider
,
LifecyclePhase
.
Starting
);
registerSingleton
(
INotebookService
,
NotebookService
);
registerSingleton
(
INotebookService
,
NotebookService
);
registerSingleton
(
INotebookEditorModelResolverService
,
NotebookModelResolverService
,
true
);
const
configurationRegistry
=
Registry
.
as
<
IConfigurationRegistry
>
(
Extensions
.
Configuration
);
const
configurationRegistry
=
Registry
.
as
<
IConfigurationRegistry
>
(
Extensions
.
Configuration
);
configurationRegistry
.
registerConfiguration
({
configurationRegistry
.
registerConfiguration
({
...
...
src/vs/workbench/contrib/notebook/common/notebookCommon.ts
浏览文件 @
c7b869a3
...
@@ -559,6 +559,7 @@ export const NOTEBOOK_EDITOR_CURSOR_BOUNDARY = new RawContextKey<'none' | 'top'
...
@@ -559,6 +559,7 @@ export const NOTEBOOK_EDITOR_CURSOR_BOUNDARY = new RawContextKey<'none' | 'top'
export
interface
INotebookEditorModel
extends
IEditorModel
{
export
interface
INotebookEditorModel
extends
IEditorModel
{
viewType
:
string
;
notebook
:
NotebookTextModel
;
notebook
:
NotebookTextModel
;
isDirty
():
boolean
;
isDirty
():
boolean
;
save
():
Promise
<
boolean
>
;
save
():
Promise
<
boolean
>
;
...
...
src/vs/workbench/contrib/notebook/common/notebookEditorModelResolverService.ts
0 → 100644
浏览文件 @
c7b869a3
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
createDecorator
,
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
INotebookEditorModel
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
NotebookEditorModel
}
from
'
vs/workbench/contrib/notebook/common/notebookEditorModel
'
;
import
{
IReference
,
ReferenceCollection
}
from
'
vs/base/common/lifecycle
'
;
import
{
INotebookService
}
from
'
vs/workbench/contrib/notebook/common/notebookService
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
export
const
INotebookEditorModelResolverService
=
createDecorator
<
INotebookEditorModelResolverService
>
(
'
INotebookModelResolverService
'
);
export
interface
INotebookEditorModelResolverService
{
readonly
_serviceBrand
:
undefined
;
resolve
(
resource
:
URI
,
viewType
:
string
,
editorId
?:
string
):
Promise
<
IReference
<
INotebookEditorModel
>>
;
}
export
class
NotebookModelReferenceCollection
extends
ReferenceCollection
<
Promise
<
INotebookEditorModel
>>
{
constructor
(
@
IInstantiationService
readonly
_instantiationService
:
IInstantiationService
,
@
INotebookService
private
readonly
_notebookService
:
INotebookService
,
@
ILogService
private
readonly
_logService
:
ILogService
,
)
{
super
();
}
protected
createReferencedObject
(
key
:
string
,
...
args
:
any
[]):
Promise
<
INotebookEditorModel
>
{
const
[
viewType
,
editorId
]
=
args
as
[
string
,
string
|
undefined
];
const
resource
=
URI
.
parse
(
key
);
const
model
=
this
.
_instantiationService
.
createInstance
(
NotebookEditorModel
,
resource
,
viewType
);
const
promise
=
model
.
load
({
editorId
});
return
promise
;
}
protected
destroyReferencedObject
(
_key
:
string
,
object
:
Promise
<
INotebookEditorModel
>
):
void
{
object
.
then
(
model
=>
{
this
.
_notebookService
.
destoryNotebookDocument
(
model
.
viewType
,
model
.
notebook
);
model
.
dispose
();
}).
catch
(
err
=>
{
this
.
_logService
.
critical
(
'
FAILED to destory notebook
'
,
err
);
});
}
}
export
class
NotebookModelResolverService
implements
INotebookEditorModelResolverService
{
readonly
_serviceBrand
:
undefined
;
private
readonly
_data
:
NotebookModelReferenceCollection
;
constructor
(
@
IInstantiationService
instantiationService
:
IInstantiationService
)
{
this
.
_data
=
instantiationService
.
createInstance
(
NotebookModelReferenceCollection
);
}
async
resolve
(
resource
:
URI
,
viewType
:
string
,
editorId
?:
string
|
undefined
):
Promise
<
IReference
<
INotebookEditorModel
>>
{
const
reference
=
this
.
_data
.
acquire
(
resource
.
toString
(),
viewType
,
editorId
);
const
model
=
await
reference
.
object
;
return
{
object
:
model
,
dispose
()
{
reference
.
dispose
();
}
};
}
}
src/vs/workbench/contrib/notebook/common/notebookService.ts
浏览文件 @
c7b869a3
...
@@ -8,11 +8,21 @@ import { URI } from 'vs/base/common/uri';
...
@@ -8,11 +8,21 @@ import { URI } from 'vs/base/common/uri';
import
{
NotebookProviderInfo
}
from
'
vs/workbench/contrib/notebook/common/notebookProvider
'
;
import
{
NotebookProviderInfo
}
from
'
vs/workbench/contrib/notebook/common/notebookProvider
'
;
import
{
NotebookExtensionDescription
}
from
'
vs/workbench/api/common/extHost.protocol
'
;
import
{
NotebookExtensionDescription
}
from
'
vs/workbench/api/common/extHost.protocol
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
INotebookTextModel
,
INotebookRendererInfo
,
NotebookDocumentMetadata
,
ICellDto2
,
INotebookKernelInfo
,
INotebookKernelInfoDto
,
INotebookTextModelBackup
,
IEditor
,
ICellEditOperation
,
NotebookCellOutputsSplice
,
IOrderedMimeType
,
IProcessedOutput
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
INotebookTextModel
,
INotebookRendererInfo
,
NotebookDocumentMetadata
,
ICellDto2
,
INotebookKernelInfo
,
INotebookKernelInfoDto
,
INotebookTextModelBackup
,
IEditor
,
ICellEditOperation
,
NotebookCellOutputsSplice
,
IOrderedMimeType
,
IProcessedOutput
,
INotebookEditorModel
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
NotebookTextModel
}
from
'
vs/workbench/contrib/notebook/common/model/notebookTextModel
'
;
import
{
NotebookTextModel
}
from
'
vs/workbench/contrib/notebook/common/model/notebookTextModel
'
;
import
{
CancellationToken
}
from
'
vs/base/common/cancellation
'
;
import
{
CancellationToken
}
from
'
vs/base/common/cancellation
'
;
import
{
NotebookCellTextModel
}
from
'
vs/workbench/contrib/notebook/common/model/notebookCellTextModel
'
;
import
{
NotebookCellTextModel
}
from
'
vs/workbench/contrib/notebook/common/model/notebookCellTextModel
'
;
import
{
INotebookEditorModelManager
}
from
'
vs/workbench/contrib/notebook/common/notebookEditorModel
'
;
import
{
INotebookEditorModelManager
}
from
'
vs/workbench/contrib/notebook/common/notebookEditorModel
'
;
import
{
IReference
}
from
'
vs/base/common/lifecycle
'
;
export
const
INotebookEditorModelResolverService
=
createDecorator
<
INotebookEditorModelResolverService
>
(
'
INotebookEditorModelResolverService
'
);
export
interface
INotebookEditorModelResolverService
{
readonly
_serviceBrand
:
undefined
;
resolve
(
resource
:
URI
,
viewType
:
string
,
editorId
?:
string
):
Promise
<
IReference
<
INotebookEditorModel
>>
;
}
export
const
INotebookService
=
createDecorator
<
INotebookService
>
(
'
notebookService
'
);
export
const
INotebookService
=
createDecorator
<
INotebookService
>
(
'
notebookService
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录