Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
5f569de4
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,体验更适合开发者的 AI 搜索 >>
提交
5f569de4
编写于
11月 25, 2020
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more removal of non-null
上级
0921f711
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
66 addition
and
39 deletion
+66
-39
src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts
...workbench/contrib/notebook/browser/contrib/coreActions.ts
+1
-1
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
+1
-1
src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts
...orkbench/contrib/notebook/browser/notebookEditorWidget.ts
+27
-11
src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts
...ntrib/notebook/browser/view/renderers/backLayerWebView.ts
+3
-3
src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts
...h/contrib/notebook/browser/view/renderers/cellRenderer.ts
+16
-4
src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts
...bench/contrib/notebook/browser/view/renderers/codeCell.ts
+2
-2
src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts
...h/contrib/notebook/browser/view/renderers/markdownCell.ts
+16
-17
未找到文件。
src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts
浏览文件 @
5f569de4
...
...
@@ -103,7 +103,7 @@ const enum CellOverflowToolbarGroups {
export
interface
INotebookActionContext
{
readonly
cellTemplate
?:
BaseCellRenderTemplate
;
readonly
cell
?:
ICellViewModel
;
readonly
notebookEditor
:
I
NotebookEditor
&
I
ActiveNotebookEditor
;
readonly
notebookEditor
:
IActiveNotebookEditor
;
readonly
ui
?:
boolean
;
}
...
...
src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts
浏览文件 @
5f569de4
...
...
@@ -207,7 +207,7 @@ export interface INotebookEditorCreationOptions {
readonly
contributions
?:
INotebookEditorContributionDescription
[];
}
export
interface
IActiveNotebookEditor
{
export
interface
IActiveNotebookEditor
extends
INotebookEditor
{
viewModel
:
NotebookViewModel
;
uri
:
URI
;
}
...
...
src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts
浏览文件 @
5f569de4
...
...
@@ -662,7 +662,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
this
.
_currentKernelTokenSource
=
new
CancellationTokenSource
();
this
.
_localStore
.
add
(
this
.
_currentKernelTokenSource
);
// we don't await for it, otherwise it will slow down the file opening
this
.
_setKernels
(
t
extModel
,
t
his
.
_currentKernelTokenSource
);
this
.
_setKernels
(
this
.
_currentKernelTokenSource
);
this
.
_localStore
.
add
(
this
.
notebookService
.
onDidChangeKernels
(
async
(
e
)
=>
{
if
(
e
&&
e
.
toString
()
!==
this
.
textModel
?.
uri
.
toString
())
{
...
...
@@ -671,7 +671,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
}
this
.
_currentKernelTokenSource
?.
cancel
();
this
.
_currentKernelTokenSource
=
new
CancellationTokenSource
();
await
this
.
_setKernels
(
t
extModel
,
t
his
.
_currentKernelTokenSource
);
await
this
.
_setKernels
(
this
.
_currentKernelTokenSource
);
}));
this
.
_localStore
.
add
(
this
.
_list
.
onDidChangeFocus
(()
=>
{
...
...
@@ -746,8 +746,12 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
return
result
;
}
private
async
_setKernels
(
textModel
:
NotebookTextModel
,
tokenSource
:
CancellationTokenSource
)
{
const
provider
=
this
.
notebookService
.
getContributedNotebookProvider
(
textModel
.
viewType
)
||
this
.
notebookService
.
getContributedNotebookProviders
(
this
.
viewModel
!
.
uri
)[
0
];
private
async
_setKernels
(
tokenSource
:
CancellationTokenSource
)
{
if
(
!
this
.
viewModel
)
{
return
;
}
const
provider
=
this
.
notebookService
.
getContributedNotebookProvider
(
this
.
viewModel
.
viewType
)
||
this
.
notebookService
.
getContributedNotebookProviders
(
this
.
viewModel
.
uri
)[
0
];
const
availableKernels
=
await
this
.
beginComputeContributedKernels
();
if
(
tokenSource
.
token
.
isCancellationRequested
)
{
...
...
@@ -874,9 +878,13 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
}
private
_updateForMetadata
():
void
{
const
notebookMetadata
=
this
.
viewModel
!
.
metadata
;
if
(
!
this
.
viewModel
)
{
return
;
}
const
notebookMetadata
=
this
.
viewModel
.
metadata
;
this
.
_editorEditable
?.
set
(
!!
notebookMetadata
?.
editable
);
this
.
_editorRunnable
?.
set
(
this
.
viewModel
!
.
runnable
);
this
.
_editorRunnable
?.
set
(
this
.
viewModel
.
runnable
);
this
.
_overflowContainer
.
classList
.
toggle
(
'
notebook-editor-editable
'
,
!!
notebookMetadata
?.
editable
);
this
.
getDomNode
().
classList
.
toggle
(
'
notebook-editor-editable
'
,
!!
notebookMetadata
?.
editable
);
...
...
@@ -899,8 +907,16 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
}
this
.
_webviewResolvePromise
=
new
Promise
(
async
resolve
=>
{
await
this
.
_webview
!
.
createWebview
();
this
.
_webview
!
.
webview
!
.
onDidBlur
(()
=>
{
if
(
!
this
.
_webview
)
{
throw
new
Error
(
'
Notebook output webview object is not created successfully.
'
);
}
await
this
.
_webview
.
createWebview
();
if
(
!
this
.
_webview
.
webview
)
{
throw
new
Error
(
'
Notebook output webview elemented is not created successfully.
'
);
}
this
.
_webview
.
webview
.
onDidBlur
(()
=>
{
this
.
_outputFocus
?.
set
(
false
);
this
.
updateEditorFocus
();
...
...
@@ -908,7 +924,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
this
.
_webiewFocused
=
false
;
}
});
this
.
_webview
!
.
webview
!
.
onDidFocus
(()
=>
{
this
.
_webview
.
webview
.
onDidFocus
(()
=>
{
this
.
_outputFocus
?.
set
(
true
);
this
.
updateEditorFocus
();
this
.
_onDidFocusEmitter
.
fire
();
...
...
@@ -918,7 +934,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
}
});
this
.
_localStore
.
add
(
this
.
_webview
!
.
onMessage
(({
message
,
forRenderer
})
=>
{
this
.
_localStore
.
add
(
this
.
_webview
.
onMessage
(({
message
,
forRenderer
})
=>
{
if
(
this
.
viewModel
)
{
this
.
notebookService
.
onDidReceiveMessage
(
this
.
viewModel
.
viewType
,
this
.
getId
(),
forRenderer
,
message
);
}
...
...
@@ -926,7 +942,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
this
.
_webviewResolved
=
true
;
resolve
(
this
.
_webview
!
);
resolve
(
this
.
_webview
);
});
return
this
.
_webviewResolvePromise
;
...
...
src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts
浏览文件 @
5f569de4
...
...
@@ -372,7 +372,7 @@ export class BackLayerWebView extends Disposable {
}());
</script>`
;
const
htmlContent
=
this
.
generateContent
(
CELL_OUTPUT_PADDING
,
coreDependencies
,
baseUrl
.
toString
());
this
.
initialize
(
htmlContent
);
this
.
_
initialize
(
htmlContent
);
resolveFunc
!
();
}
else
{
const
loaderUri
=
FileAccess
.
asBrowserUri
(
'
vs/loader.js
'
,
require
);
...
...
@@ -396,7 +396,7 @@ var requirejs = (function() {
`
;
const
htmlContent
=
this
.
generateContent
(
CELL_OUTPUT_PADDING
,
coreDependencies
,
baseUrl
.
toString
());
this
.
initialize
(
htmlContent
);
this
.
_
initialize
(
htmlContent
);
resolveFunc
!
();
});
}
...
...
@@ -404,7 +404,7 @@ var requirejs = (function() {
await
this
.
_initalized
;
}
async
initialize
(
content
:
string
)
{
private
async
_
initialize
(
content
:
string
)
{
if
(
!
document
.
body
.
contains
(
this
.
element
))
{
throw
new
Error
(
'
Element is already detached from the DOM tree
'
);
}
...
...
src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts
浏览文件 @
5f569de4
...
...
@@ -480,6 +480,10 @@ export class MarkdownCellRenderer extends AbstractCellRenderer implements IListR
}
renderElement
(
element
:
MarkdownCellViewModel
,
index
:
number
,
templateData
:
MarkdownCellRenderTemplate
,
height
:
number
|
undefined
):
void
{
if
(
!
this
.
notebookEditor
.
hasModel
())
{
throw
new
Error
(
'
The notebook editor is not attached with view model yet.
'
);
}
const
removedClassNames
:
string
[]
=
[];
templateData
.
rootContainer
.
classList
.
forEach
(
className
=>
{
if
(
/^nb
\-
.*$/
.
test
(
className
))
{
...
...
@@ -522,7 +526,7 @@ export class MarkdownCellRenderer extends AbstractCellRenderer implements IListR
}
}));
elementDisposables
.
add
(
new
CellContextKeyManager
(
templateData
.
contextKeyService
,
this
.
notebookEditor
,
this
.
notebookEditor
.
viewModel
?
.
notebookDocument
!
,
element
));
elementDisposables
.
add
(
new
CellContextKeyManager
(
templateData
.
contextKeyService
,
this
.
notebookEditor
,
this
.
notebookEditor
.
viewModel
.
notebookDocument
!
,
element
));
// render toolbar first
this
.
setupCellToolbarActions
(
templateData
,
elementDisposables
);
...
...
@@ -802,7 +806,11 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
}
private
updateForMetadata
(
element
:
CodeCellViewModel
,
templateData
:
CodeCellRenderTemplate
):
void
{
const
metadata
=
element
.
getEvaluatedMetadata
(
this
.
notebookEditor
.
viewModel
!
.
notebookDocument
.
metadata
);
if
(
!
this
.
notebookEditor
.
hasModel
())
{
return
;
}
const
metadata
=
element
.
getEvaluatedMetadata
(
this
.
notebookEditor
.
viewModel
.
notebookDocument
.
metadata
);
templateData
.
container
.
classList
.
toggle
(
'
runnable
'
,
!!
metadata
.
runnable
);
this
.
updateExecutionOrder
(
metadata
,
templateData
);
templateData
.
statusBar
.
cellStatusMessageContainer
.
textContent
=
metadata
?.
statusMessage
||
''
;
...
...
@@ -857,6 +865,10 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
}
renderElement
(
element
:
CodeCellViewModel
,
index
:
number
,
templateData
:
CodeCellRenderTemplate
,
height
:
number
|
undefined
):
void
{
if
(
!
this
.
notebookEditor
.
hasModel
())
{
throw
new
Error
(
'
The notebook editor is not attached with view model yet.
'
);
}
const
removedClassNames
:
string
[]
=
[];
templateData
.
rootContainer
.
classList
.
forEach
(
className
=>
{
if
(
/^nb
\-
.*$/
.
test
(
className
))
{
...
...
@@ -903,7 +915,7 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
elementDisposables
.
add
(
this
.
instantiationService
.
createInstance
(
CodeCell
,
this
.
notebookEditor
,
element
,
templateData
));
this
.
renderedEditors
.
set
(
element
,
templateData
.
editor
);
elementDisposables
.
add
(
new
CellContextKeyManager
(
templateData
.
contextKeyService
,
this
.
notebookEditor
,
this
.
notebookEditor
.
viewModel
?
.
notebookDocument
!
,
element
));
elementDisposables
.
add
(
new
CellContextKeyManager
(
templateData
.
contextKeyService
,
this
.
notebookEditor
,
this
.
notebookEditor
.
viewModel
.
notebookDocument
!
,
element
));
this
.
updateForLayout
(
element
,
templateData
);
elementDisposables
.
add
(
element
.
onDidChangeLayout
(()
=>
{
...
...
@@ -922,7 +934,7 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende
this
.
updateForHover
(
element
,
templateData
);
}
}));
elementDisposables
.
add
(
this
.
notebookEditor
.
viewModel
!
.
notebookDocument
.
onDidChangeContent
(
e
=>
{
elementDisposables
.
add
(
this
.
notebookEditor
.
viewModel
.
notebookDocument
.
onDidChangeContent
(
e
=>
{
if
(
e
.
rawEvents
.
find
(
event
=>
event
.
kind
===
NotebookCellsChangeType
.
ChangeDocumentMetadata
))
{
this
.
updateForMetadata
(
element
,
templateData
);
}
...
...
src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts
浏览文件 @
5f569de4
...
...
@@ -12,7 +12,7 @@ import { IModeService } from 'vs/editor/common/services/modeService';
import
{
IOpenerService
}
from
'
vs/platform/opener/common/opener
'
;
import
{
IQuickInputService
}
from
'
vs/platform/quickinput/common/quickInput
'
;
import
{
EDITOR_BOTTOM_PADDING
}
from
'
vs/workbench/contrib/notebook/browser/constants
'
;
import
{
CellFocusMode
,
CodeCellRenderTemplate
,
getEditorTopPadding
,
INotebookEditor
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
CellFocusMode
,
CodeCellRenderTemplate
,
getEditorTopPadding
,
I
Active
NotebookEditor
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
CodeCellViewModel
}
from
'
vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel
'
;
import
{
INotebookService
}
from
'
vs/workbench/contrib/notebook/common/notebookService
'
;
import
{
ITextFileService
}
from
'
vs/workbench/services/textfile/common/textfiles
'
;
...
...
@@ -28,7 +28,7 @@ export class CodeCell extends Disposable {
private
_untrustedStatusItem
:
IDisposable
|
null
=
null
;
constructor
(
private
notebookEditor
:
INotebookEditor
,
private
notebookEditor
:
I
Active
NotebookEditor
,
private
viewCell
:
CodeCellViewModel
,
private
templateData
:
CodeCellRenderTemplate
,
@
INotebookService
notebookService
:
INotebookService
,
...
...
src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts
浏览文件 @
5f569de4
...
...
@@ -12,7 +12,7 @@ import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget';
import
{
IEditorOptions
}
from
'
vs/editor/common/config/editorOptions
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
EDITOR_BOTTOM_PADDING
}
from
'
vs/workbench/contrib/notebook/browser/constants
'
;
import
{
CellEditState
,
CellFocusMode
,
INotebookEditor
,
MarkdownCellRenderTemplate
,
ICellViewModel
,
getEditorTopPadding
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
CellEditState
,
CellFocusMode
,
MarkdownCellRenderTemplate
,
ICellViewModel
,
getEditorTopPadding
,
IActiveNotebookEditor
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
CellFoldingState
}
from
'
vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel
'
;
import
{
MarkdownCellViewModel
}
from
'
vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel
'
;
import
{
ICodeEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
...
...
@@ -34,7 +34,7 @@ export class StatefulMarkdownCell extends Disposable {
private
_activeCellRunPlaceholder
:
IDisposable
|
null
=
null
;
constructor
(
private
readonly
notebookEditor
:
INotebookEditor
,
private
readonly
notebookEditor
:
I
Active
NotebookEditor
,
private
readonly
viewCell
:
MarkdownCellViewModel
,
private
readonly
templateData
:
MarkdownCellRenderTemplate
,
private
editorOptions
:
IEditorOptions
,
...
...
@@ -136,8 +136,7 @@ export class StatefulMarkdownCell extends Disposable {
const
updatePlaceholder
=
()
=>
{
if
(
this
.
notebookEditor
.
viewModel
&&
this
.
notebookEditor
.
getActiveCell
()
===
this
.
viewCell
this
.
notebookEditor
.
getActiveCell
()
===
this
.
viewCell
&&
!!
this
.
notebookEditor
.
viewModel
.
metadata
.
trusted
)
{
// active cell and no run status
...
...
@@ -161,7 +160,7 @@ export class StatefulMarkdownCell extends Disposable {
updatePlaceholder
();
}));
this
.
_register
(
this
.
notebookEditor
.
viewModel
!
.
notebookDocument
.
onDidChangeContent
(
e
=>
{
this
.
_register
(
this
.
notebookEditor
.
viewModel
.
notebookDocument
.
onDidChangeContent
(
e
=>
{
if
(
e
.
rawEvents
.
find
(
event
=>
event
.
kind
===
NotebookCellsChangeType
.
ChangeDocumentMetadata
))
{
updatePlaceholder
();
}
...
...
@@ -198,13 +197,13 @@ export class StatefulMarkdownCell extends Disposable {
this
.
templateData
.
container
.
classList
.
toggle
(
'
collapsed
'
,
false
);
if
(
this
.
editor
)
{
editorHeight
=
this
.
editor
!
.
getContentHeight
();
editorHeight
=
this
.
editor
.
getContentHeight
();
// not first time, we don't need to create editor or bind listeners
this
.
viewCell
.
attachTextEditor
(
this
.
editor
);
this
.
focusEditorIfNeeded
();
this
.
bindEditorListeners
();
this
.
bindEditorListeners
(
this
.
editor
);
this
.
editor
.
layout
({
width
:
this
.
viewCell
.
layoutInfo
.
editorWidth
,
...
...
@@ -260,7 +259,7 @@ export class StatefulMarkdownCell extends Disposable {
this
.
focusEditorIfNeeded
();
}
this
.
bindEditorListeners
();
this
.
bindEditorListeners
(
this
.
editor
!
);
this
.
viewCell
.
editorHeight
=
editorHeight
;
});
...
...
@@ -365,13 +364,13 @@ export class StatefulMarkdownCell extends Disposable {
}
}
private
bindEditorListeners
()
{
this
.
localDisposables
.
add
(
this
.
editor
!
.
onDidContentSizeChange
(
e
=>
{
const
viewLayout
=
this
.
editor
!
.
getLayoutInfo
();
private
bindEditorListeners
(
editor
:
CodeEditorWidget
)
{
this
.
localDisposables
.
add
(
editor
.
onDidContentSizeChange
(
e
=>
{
const
viewLayout
=
editor
.
getLayoutInfo
();
if
(
e
.
contentHeightChanged
)
{
this
.
viewCell
.
editorHeight
=
e
.
contentHeight
;
this
.
editor
!
.
layout
(
editor
.
layout
(
{
width
:
viewLayout
.
width
,
height
:
e
.
contentHeight
...
...
@@ -380,25 +379,25 @@ export class StatefulMarkdownCell extends Disposable {
}
}));
this
.
localDisposables
.
add
(
this
.
editor
!
.
onDidChangeCursorSelection
((
e
)
=>
{
this
.
localDisposables
.
add
(
editor
.
onDidChangeCursorSelection
((
e
)
=>
{
if
(
e
.
source
===
'
restoreState
'
)
{
// do not reveal the cell into view if this selection change was caused by restoring editors...
return
;
}
const
primarySelection
=
this
.
editor
!
.
getSelection
();
const
primarySelection
=
editor
.
getSelection
();
if
(
primarySelection
)
{
this
.
notebookEditor
.
revealLineInViewAsync
(
this
.
viewCell
,
primarySelection
!
.
positionLineNumber
);
}
}));
const
updateFocusMode
=
()
=>
this
.
viewCell
.
focusMode
=
this
.
editor
!
.
hasWidgetFocus
()
?
CellFocusMode
.
Editor
:
CellFocusMode
.
Container
;
this
.
localDisposables
.
add
(
this
.
editor
!
.
onDidFocusEditorWidget
(()
=>
{
const
updateFocusMode
=
()
=>
this
.
viewCell
.
focusMode
=
editor
.
hasWidgetFocus
()
?
CellFocusMode
.
Editor
:
CellFocusMode
.
Container
;
this
.
localDisposables
.
add
(
editor
.
onDidFocusEditorWidget
(()
=>
{
updateFocusMode
();
}));
this
.
localDisposables
.
add
(
this
.
editor
!
.
onDidBlurEditorWidget
(()
=>
{
this
.
localDisposables
.
add
(
editor
.
onDidBlurEditorWidget
(()
=>
{
// this is for a special case:
// users click the status bar empty space, which we will then focus the editor
// so we don't want to update the focus state too eagerly
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录