Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
26b00a39
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,发现更多精彩内容 >>
提交
26b00a39
编写于
9月 18, 2020
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
support cell range in notebook.cell.execute command
上级
6932306e
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
102 addition
and
12 deletion
+102
-12
src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts
...workbench/contrib/notebook/browser/contrib/coreActions.ts
+102
-12
未找到文件。
src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts
浏览文件 @
26b00a39
...
@@ -20,7 +20,7 @@ import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegis
...
@@ -20,7 +20,7 @@ import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegis
import
{
IQuickInputService
,
IQuickPickItem
,
QuickPickInput
}
from
'
vs/platform/quickinput/common/quickInput
'
;
import
{
IQuickInputService
,
IQuickPickItem
,
QuickPickInput
}
from
'
vs/platform/quickinput/common/quickInput
'
;
import
{
BaseCellRenderTemplate
,
CellEditState
,
CellFocusMode
,
ICellViewModel
,
INotebookEditor
,
NOTEBOOK_CELL_INPUT_COLLAPSED
,
NOTEBOOK_CELL_EDITABLE
,
NOTEBOOK_CELL_HAS_OUTPUTS
,
NOTEBOOK_CELL_LIST_FOCUSED
,
NOTEBOOK_CELL_MARKDOWN_EDIT_MODE
,
NOTEBOOK_CELL_OUTPUT_COLLAPSED
,
NOTEBOOK_CELL_TYPE
,
NOTEBOOK_EDITOR_EDITABLE
,
NOTEBOOK_EDITOR_EXECUTING_NOTEBOOK
,
NOTEBOOK_EDITOR_FOCUSED
,
NOTEBOOK_EDITOR_RUNNABLE
,
NOTEBOOK_IS_ACTIVE_EDITOR
,
NOTEBOOK_OUTPUT_FOCUSED
,
EXPAND_CELL_CONTENT_COMMAND_ID
,
NOTEBOOK_CELL_EDITOR_FOCUSED
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
BaseCellRenderTemplate
,
CellEditState
,
CellFocusMode
,
ICellViewModel
,
INotebookEditor
,
NOTEBOOK_CELL_INPUT_COLLAPSED
,
NOTEBOOK_CELL_EDITABLE
,
NOTEBOOK_CELL_HAS_OUTPUTS
,
NOTEBOOK_CELL_LIST_FOCUSED
,
NOTEBOOK_CELL_MARKDOWN_EDIT_MODE
,
NOTEBOOK_CELL_OUTPUT_COLLAPSED
,
NOTEBOOK_CELL_TYPE
,
NOTEBOOK_EDITOR_EDITABLE
,
NOTEBOOK_EDITOR_EXECUTING_NOTEBOOK
,
NOTEBOOK_EDITOR_FOCUSED
,
NOTEBOOK_EDITOR_RUNNABLE
,
NOTEBOOK_IS_ACTIVE_EDITOR
,
NOTEBOOK_OUTPUT_FOCUSED
,
EXPAND_CELL_CONTENT_COMMAND_ID
,
NOTEBOOK_CELL_EDITOR_FOCUSED
}
from
'
vs/workbench/contrib/notebook/browser/notebookBrowser
'
;
import
{
CellViewModel
}
from
'
vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel
'
;
import
{
CellViewModel
}
from
'
vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel
'
;
import
{
CellEditType
,
CellKind
,
NotebookCellMetadata
,
NotebookCellRunState
,
NOTEBOOK_EDITOR_CURSOR_BOUNDARY
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
CellEditType
,
CellKind
,
ICellRange
,
NotebookCellMetadata
,
NotebookCellRunState
,
NOTEBOOK_EDITOR_CURSOR_BOUNDARY
}
from
'
vs/workbench/contrib/notebook/common/notebookCommon
'
;
import
{
INotebookService
}
from
'
vs/workbench/contrib/notebook/common/notebookService
'
;
import
{
INotebookService
}
from
'
vs/workbench/contrib/notebook/common/notebookService
'
;
import
{
IEditorGroupsService
}
from
'
vs/workbench/services/editor/common/editorGroupsService
'
;
import
{
IEditorGroupsService
}
from
'
vs/workbench/services/editor/common/editorGroupsService
'
;
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
...
@@ -167,28 +167,36 @@ abstract class NotebookAction extends Action2 {
...
@@ -167,28 +167,36 @@ abstract class NotebookAction extends Action2 {
}
}
}
}
abstract
class
NotebookCellAction
extends
NotebookAction
{
abstract
class
NotebookCellAction
<
T
=
INotebookCellActionContext
>
extends
NotebookAction
{
protected
isCellActionContext
(
context
?:
unknown
):
context
is
INotebookCellActionContext
{
protected
isCellActionContext
(
context
?:
unknown
):
context
is
INotebookCellActionContext
{
return
!!
context
&&
!!
(
context
as
INotebookCellActionContext
).
notebookEditor
&&
!!
(
context
as
INotebookCellActionContext
).
cell
;
return
!!
context
&&
!!
(
context
as
INotebookCellActionContext
).
notebookEditor
&&
!!
(
context
as
INotebookCellActionContext
).
cell
;
}
}
protected
getCellContextFromArgs
(
accessor
:
ServicesAccessor
,
context
?:
T
):
INotebookCellActionContext
|
undefined
{
return
undefined
;
}
async
run
(
accessor
:
ServicesAccessor
,
context
?:
INotebookCellActionContext
):
Promise
<
void
>
{
async
run
(
accessor
:
ServicesAccessor
,
context
?:
INotebookCellActionContext
):
Promise
<
void
>
{
if
(
!
this
.
isCellActionContext
(
context
))
{
if
(
this
.
isCellActionContext
(
context
))
{
const
activeEditorContext
=
this
.
getActiveEditorContext
(
accessor
);
return
this
.
runWithContext
(
accessor
,
context
);
if
(
this
.
isCellActionContext
(
activeEditorContext
))
{
context
=
activeEditorContext
;
}
else
{
return
;
}
}
const
contextFromArgs
=
this
.
getCellContextFromArgs
(
accessor
,
context
);
if
(
contextFromArgs
)
{
return
this
.
runWithContext
(
accessor
,
contextFromArgs
);
}
}
this
.
runWithContext
(
accessor
,
context
);
const
activeEditorContext
=
this
.
getActiveEditorContext
(
accessor
);
if
(
this
.
isCellActionContext
(
activeEditorContext
))
{
return
this
.
runWithContext
(
accessor
,
activeEditorContext
);
}
}
}
abstract
runWithContext
(
accessor
:
ServicesAccessor
,
context
:
INotebookCellActionContext
):
Promise
<
void
>
;
abstract
runWithContext
(
accessor
:
ServicesAccessor
,
context
:
INotebookCellActionContext
):
Promise
<
void
>
;
}
}
registerAction2
(
class
extends
NotebookCellAction
{
registerAction2
(
class
extends
NotebookCellAction
<
ICellRange
>
{
constructor
()
{
constructor
()
{
super
({
super
({
id
:
EXECUTE_CELL_COMMAND_ID
,
id
:
EXECUTE_CELL_COMMAND_ID
,
...
@@ -201,24 +209,106 @@ registerAction2(class extends NotebookCellAction {
...
@@ -201,24 +209,106 @@ registerAction2(class extends NotebookCellAction {
},
},
weight
:
EDITOR_WIDGET_ACTION_WEIGHT
weight
:
EDITOR_WIDGET_ACTION_WEIGHT
},
},
description
:
{
description
:
localize
(
'
notebookActions.execute
'
,
"
Execute Cell
"
),
args
:
[
{
name
:
'
range
'
,
description
:
'
The cell range
'
,
schema
:
{
'
type
'
:
'
object
'
,
'
required
'
:
[
'
start
'
,
'
end
'
],
'
properties
'
:
{
'
start
'
:
{
'
type
'
:
'
number
'
},
'
end
'
:
{
'
type
'
:
'
number
'
}
}
}
}
]
},
icon
:
{
id
:
'
codicon/play
'
},
icon
:
{
id
:
'
codicon/play
'
},
});
});
}
}
getCellContextFromArgs
(
accessor
:
ServicesAccessor
,
context
?:
ICellRange
):
INotebookCellActionContext
|
undefined
{
if
(
!
context
||
typeof
context
.
start
!==
'
number
'
||
typeof
context
.
end
!==
'
number
'
||
context
.
start
>=
context
.
end
)
{
return
;
}
const
activeEditorContext
=
this
.
getActiveEditorContext
(
accessor
);
if
(
!
activeEditorContext
||
!
activeEditorContext
.
notebookEditor
.
viewModel
||
context
.
start
>=
activeEditorContext
.
notebookEditor
.
viewModel
.
viewCells
.
length
)
{
return
;
}
const
cells
=
activeEditorContext
.
notebookEditor
.
viewModel
.
viewCells
;
// TODO@rebornix, support multiple cells
return
{
notebookEditor
:
activeEditorContext
.
notebookEditor
,
cell
:
cells
[
context
.
start
]
};
}
async
runWithContext
(
accessor
:
ServicesAccessor
,
context
:
INotebookCellActionContext
):
Promise
<
void
>
{
async
runWithContext
(
accessor
:
ServicesAccessor
,
context
:
INotebookCellActionContext
):
Promise
<
void
>
{
return
runCell
(
accessor
,
context
);
return
runCell
(
accessor
,
context
);
}
}
});
});
registerAction2
(
class
extends
NotebookCellAction
{
registerAction2
(
class
extends
NotebookCellAction
<
ICellRange
>
{
constructor
()
{
constructor
()
{
super
({
super
({
id
:
CANCEL_CELL_COMMAND_ID
,
id
:
CANCEL_CELL_COMMAND_ID
,
title
:
localize
(
'
notebookActions.cancel
'
,
"
Stop Cell Execution
"
),
title
:
localize
(
'
notebookActions.cancel
'
,
"
Stop Cell Execution
"
),
icon
:
{
id
:
'
codicon/primitive-square
'
},
icon
:
{
id
:
'
codicon/primitive-square
'
},
description
:
{
description
:
localize
(
'
notebookActions.execute
'
,
"
Execute Cell
"
),
args
:
[
{
name
:
'
range
'
,
description
:
'
The cell range
'
,
schema
:
{
'
type
'
:
'
object
'
,
'
required
'
:
[
'
start
'
,
'
end
'
],
'
properties
'
:
{
'
start
'
:
{
'
type
'
:
'
number
'
},
'
end
'
:
{
'
type
'
:
'
number
'
}
}
}
}
]
},
});
});
}
}
getCellContextFromArgs
(
accessor
:
ServicesAccessor
,
context
?:
ICellRange
):
INotebookCellActionContext
|
undefined
{
if
(
!
context
||
typeof
context
.
start
!==
'
number
'
||
typeof
context
.
end
!==
'
number
'
||
context
.
start
>=
context
.
end
)
{
return
;
}
const
activeEditorContext
=
this
.
getActiveEditorContext
(
accessor
);
if
(
!
activeEditorContext
||
!
activeEditorContext
.
notebookEditor
.
viewModel
||
context
.
start
>=
activeEditorContext
.
notebookEditor
.
viewModel
.
viewCells
.
length
)
{
return
;
}
const
cells
=
activeEditorContext
.
notebookEditor
.
viewModel
.
viewCells
;
// TODO@rebornix, support multiple cells
return
{
notebookEditor
:
activeEditorContext
.
notebookEditor
,
cell
:
cells
[
context
.
start
]
};
}
async
runWithContext
(
accessor
:
ServicesAccessor
,
context
:
INotebookCellActionContext
):
Promise
<
void
>
{
async
runWithContext
(
accessor
:
ServicesAccessor
,
context
:
INotebookCellActionContext
):
Promise
<
void
>
{
return
context
.
notebookEditor
.
cancelNotebookCellExecution
(
context
.
cell
);
return
context
.
notebookEditor
.
cancelNotebookCellExecution
(
context
.
cell
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录