@codingame/monaco-vscode-notebook-service-override 9.0.2 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/workbench/contrib/codeEditor/browser/emptyTextEditorHint/emptyTextEditorHint.js +16 -19
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellCommands/cellCommands.js +62 -63
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellDiagnostics/cellDiagnosticsActions.js +4 -6
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellDiagnostics/diagnosticCellStatusBarContrib.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/statusBarProviders.js +8 -9
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/clipboard/notebookClipboard.js +35 -37
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookBreakpoints.js +1 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookCellPausing.js +1 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/editorHint/emptyCellEditorHint.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/editorStatusBar/editorStatusBar.js +16 -17
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFind.js +17 -20
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js +15 -18
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/gettingStarted/notebookGettingStarted.js +4 -6
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/kernelDetection/notebookKernelDetection.js +1 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/layout/layoutActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/marker/markerProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/multicursor/notebookMulticursor.js +319 -67
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/navigation/arrow.js +64 -61
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariables.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesDataSource.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesTree.js +10 -9
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesView.js +48 -24
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.js +35 -37
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/profile/notebookProfile.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/saveParticipants/saveParticipants.js +45 -31
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/troubleshoot/layout.js +4 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/undoRedo/notebookUndoRedo.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/viewportWarmup/viewportWarmup.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +124 -71
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +179 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/editActions.js +52 -55
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/executeActions.js +30 -32
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +28 -30
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/layoutActions.js +17 -18
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/notebookIndentationActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/sectionActions.js +20 -22
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffActions.js +126 -46
- package/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution.js +171 -83
- package/vscode/src/vs/workbench/contrib/notebook/browser/notebookAccessibilityHelp.js +19 -19
- package/vscode/src/vs/workbench/contrib/notebook/browser/notebookAccessibleView.js +5 -6
- package/vscode/src/vs/workbench/contrib/notebook/browser/notebookExtensionPoint.js +33 -33
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookEditorServiceImpl.js +4 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookExecutionServiceImpl.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookExecutionStateServiceImpl.js +6 -6
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKernelHistoryServiceImpl.js +7 -8
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKernelServiceImpl.js +3 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKeymapServiceImpl.js +6 -9
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookLoggingServiceImpl.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookServiceImpl.js +13 -21
- package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookWorkerServiceImpl.js +90 -39
- package/vscode/src/vs/workbench/contrib/notebook/common/model/cellEdit.js +3 -5
- package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.js +40 -31
- package/vscode/src/vs/workbench/contrib/notebook/common/notebookEditorModelResolverServiceImpl.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js +10 -11
- package/vscode/src/vs/workbench/contrib/notebook/common/services/notebookSimpleWorker.js +29 -55
- package/vscode/src/vs/workbench/services/workingCopy/common/fileWorkingCopyManager.js +15 -17
- package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopyManager.js +12 -14
- package/vscode/src/vs/workbench/services/workingCopy/common/untitledFileWorkingCopy.js +2 -4
- package/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookOutlineEntryFactory.js +0 -33
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { KeyCode, KeyMod } from 'vscode/vscode/vs/base/common/keyCodes';
|
|
2
1
|
import { Mimes } from 'vscode/vscode/vs/base/common/mime';
|
|
3
2
|
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
4
3
|
import { Selection } from 'vscode/vscode/vs/editor/common/core/selection';
|
|
@@ -6,10 +5,9 @@ import { CommandExecutor } from 'vscode/vscode/vs/editor/common/cursor/cursor';
|
|
|
6
5
|
import { EditorContextKeys } from 'vscode/vscode/vs/editor/common/editorContextKeys';
|
|
7
6
|
import { ILanguageService } from 'vscode/vscode/vs/editor/common/languages/language';
|
|
8
7
|
import { ILanguageConfigurationService } from 'vscode/vscode/vs/editor/common/languages/languageConfigurationRegistry';
|
|
9
|
-
import { TrackedRangeStickiness } from 'vscode/vscode/vs/editor/common/model';
|
|
10
8
|
import { getIconClasses } from 'vscode/vscode/vs/editor/common/services/getIconClasses';
|
|
11
9
|
import { IModelService } from 'vscode/vscode/vs/editor/common/services/model';
|
|
12
|
-
import { LineCommentCommand
|
|
10
|
+
import { LineCommentCommand } from 'vscode/vscode/vs/editor/contrib/comment/browser/lineCommentCommand';
|
|
13
11
|
import { localize, localize2 } from 'vscode/vscode/vs/nls';
|
|
14
12
|
import { registerAction2, MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
|
|
15
13
|
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
|
|
@@ -17,17 +15,16 @@ import { ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/cont
|
|
|
17
15
|
import { InputFocusedContextKey, InputFocusedContext } from 'vscode/vscode/vs/platform/contextkey/common/contextkeys';
|
|
18
16
|
import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs.service';
|
|
19
17
|
import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
20
|
-
import { KeybindingWeight } from 'vscode/vscode/vs/platform/keybinding/common/keybindingsRegistry';
|
|
21
18
|
import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification.service';
|
|
22
19
|
import { IQuickInputService } from 'vscode/vscode/vs/platform/quickinput/common/quickInput.service';
|
|
23
20
|
import { InlineChatController } from 'vscode/vscode/vs/workbench/contrib/inlineChat/browser/inlineChatController';
|
|
24
21
|
import { CTX_INLINE_CHAT_FOCUSED } from 'vscode/vscode/vs/workbench/contrib/inlineChat/common/inlineChat';
|
|
25
22
|
import { runDeleteAction, changeCellToKind } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/controller/cellOperations';
|
|
26
|
-
import { NotebookCellAction,
|
|
23
|
+
import { NotebookCellAction, CELL_TITLE_CELL_GROUP_ID, findTargetCellEditor, NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT, executeNotebookCondition, CELL_TITLE_OUTPUT_GROUP_ID, NotebookAction, NotebookMultiCellAction } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/controller/coreActions';
|
|
27
24
|
import { NotebookIndentUsingTabs, NotebookIndentUsingSpaces, NotebookChangeTabDisplaySize, NotebookIndentationToTabsAction, NotebookIndentationToSpacesAction } from './notebookIndentationActions.js';
|
|
28
25
|
import { QUIT_EDIT_CELL_COMMAND_ID, CellEditState, CHANGE_CELL_LANGUAGE, DETECT_CELL_LANGUAGE, getNotebookEditorFromEditorPane } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/notebookBrowser';
|
|
29
26
|
import { editIcon, stopEditIcon, deleteCellIcon, clearIcon } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/notebookIcons';
|
|
30
|
-
import { CellKind, NotebookCellExecutionState, NotebookSetting
|
|
27
|
+
import { CellKind, NotebookCellExecutionState, NotebookSetting } from 'vscode/vscode/vs/workbench/contrib/notebook/common/notebookCommon';
|
|
31
28
|
import { NOTEBOOK_CELL_LIST_FOCUSED, NOTEBOOK_EDITOR_EDITABLE, NOTEBOOK_OUTPUT_INPUT_FOCUSED, NOTEBOOK_CELL_TYPE, NOTEBOOK_CELL_MARKDOWN_EDIT_MODE, NOTEBOOK_CELL_EDITABLE, NOTEBOOK_EDITOR_FOCUSED, NOTEBOOK_OUTPUT_FOCUSED, NOTEBOOK_CELL_HAS_OUTPUTS, NOTEBOOK_USE_CONSOLIDATED_OUTPUT_BUTTON, NOTEBOOK_CELL_IS_FIRST_OUTPUT, NOTEBOOK_HAS_OUTPUTS, NOTEBOOK_IS_ACTIVE_EDITOR } from 'vscode/vscode/vs/workbench/contrib/notebook/common/notebookContextKeys';
|
|
32
29
|
import { INotebookExecutionStateService } from 'vscode/vscode/vs/workbench/contrib/notebook/common/notebookExecutionStateService.service';
|
|
33
30
|
import { INotebookKernelService } from 'vscode/vscode/vs/workbench/contrib/notebook/common/notebookKernelService.service';
|
|
@@ -44,7 +41,7 @@ registerAction2(class EditCellAction extends NotebookCellAction {
|
|
|
44
41
|
constructor() {
|
|
45
42
|
super({
|
|
46
43
|
id: EDIT_CELL_COMMAND_ID,
|
|
47
|
-
title: ( localize(
|
|
44
|
+
title: ( localize(7992, "Edit Cell")),
|
|
48
45
|
keybinding: {
|
|
49
46
|
when: ( (ContextKeyExpr.and(
|
|
50
47
|
NOTEBOOK_CELL_LIST_FOCUSED,
|
|
@@ -53,8 +50,8 @@ registerAction2(class EditCellAction extends NotebookCellAction {
|
|
|
53
50
|
(EditorContextKeys.hoverFocused.toNegated()),
|
|
54
51
|
(NOTEBOOK_OUTPUT_INPUT_FOCUSED.toNegated())
|
|
55
52
|
))),
|
|
56
|
-
primary:
|
|
57
|
-
weight:
|
|
53
|
+
primary: 3 ,
|
|
54
|
+
weight: 200
|
|
58
55
|
},
|
|
59
56
|
menu: {
|
|
60
57
|
id: MenuId.NotebookCellTitle,
|
|
@@ -64,7 +61,7 @@ registerAction2(class EditCellAction extends NotebookCellAction {
|
|
|
64
61
|
(NOTEBOOK_CELL_MARKDOWN_EDIT_MODE.toNegated()),
|
|
65
62
|
NOTEBOOK_CELL_EDITABLE
|
|
66
63
|
))),
|
|
67
|
-
order:
|
|
64
|
+
order: 0 ,
|
|
68
65
|
group: CELL_TITLE_CELL_GROUP_ID
|
|
69
66
|
},
|
|
70
67
|
icon: editIcon,
|
|
@@ -90,7 +87,7 @@ registerAction2(class QuitEditCellAction extends NotebookCellAction {
|
|
|
90
87
|
constructor() {
|
|
91
88
|
super({
|
|
92
89
|
id: QUIT_EDIT_CELL_COMMAND_ID,
|
|
93
|
-
title: ( localize(
|
|
90
|
+
title: ( localize(7993, "Stop Editing Cell")),
|
|
94
91
|
menu: {
|
|
95
92
|
id: MenuId.NotebookCellTitle,
|
|
96
93
|
when: ( (ContextKeyExpr.and(
|
|
@@ -98,7 +95,7 @@ registerAction2(class QuitEditCellAction extends NotebookCellAction {
|
|
|
98
95
|
NOTEBOOK_CELL_MARKDOWN_EDIT_MODE,
|
|
99
96
|
NOTEBOOK_CELL_EDITABLE
|
|
100
97
|
))),
|
|
101
|
-
order:
|
|
98
|
+
order: 3 ,
|
|
102
99
|
group: CELL_TITLE_CELL_GROUP_ID
|
|
103
100
|
},
|
|
104
101
|
icon: stopEditIcon,
|
|
@@ -110,19 +107,19 @@ registerAction2(class QuitEditCellAction extends NotebookCellAction {
|
|
|
110
107
|
(EditorContextKeys.hasNonEmptySelection.toNegated()),
|
|
111
108
|
(EditorContextKeys.hasMultipleSelections.toNegated())
|
|
112
109
|
))),
|
|
113
|
-
primary:
|
|
110
|
+
primary: 9 ,
|
|
114
111
|
weight: NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT - 5
|
|
115
112
|
},
|
|
116
113
|
{
|
|
117
114
|
when: ( (ContextKeyExpr.and(NOTEBOOK_EDITOR_FOCUSED, NOTEBOOK_OUTPUT_FOCUSED))),
|
|
118
|
-
primary:
|
|
119
|
-
weight:
|
|
115
|
+
primary: 9 ,
|
|
116
|
+
weight: 200 + 5
|
|
120
117
|
},
|
|
121
118
|
{
|
|
122
119
|
when: ( (ContextKeyExpr.and(quitEditCondition, (NOTEBOOK_CELL_TYPE.isEqualTo('markup'))))),
|
|
123
|
-
primary:
|
|
120
|
+
primary: 256 | 3 ,
|
|
124
121
|
win: {
|
|
125
|
-
primary:
|
|
122
|
+
primary: 2048 | 512 | 3
|
|
126
123
|
},
|
|
127
124
|
weight: NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT - 5
|
|
128
125
|
},
|
|
@@ -140,18 +137,18 @@ registerAction2(class DeleteCellAction extends NotebookCellAction {
|
|
|
140
137
|
constructor() {
|
|
141
138
|
super({
|
|
142
139
|
id: DELETE_CELL_COMMAND_ID,
|
|
143
|
-
title: ( localize(
|
|
140
|
+
title: ( localize(7994, "Delete Cell")),
|
|
144
141
|
keybinding: {
|
|
145
|
-
primary:
|
|
142
|
+
primary: 20 ,
|
|
146
143
|
mac: {
|
|
147
|
-
primary:
|
|
144
|
+
primary: 2048 | 1
|
|
148
145
|
},
|
|
149
146
|
when: ( (ContextKeyExpr.and(
|
|
150
147
|
NOTEBOOK_EDITOR_FOCUSED,
|
|
151
148
|
ContextKeyExpr.not(InputFocusedContextKey),
|
|
152
149
|
(NOTEBOOK_OUTPUT_INPUT_FOCUSED.toNegated())
|
|
153
150
|
))),
|
|
154
|
-
weight:
|
|
151
|
+
weight: 200
|
|
155
152
|
},
|
|
156
153
|
menu: [
|
|
157
154
|
{
|
|
@@ -177,13 +174,13 @@ registerAction2(class DeleteCellAction extends NotebookCellAction {
|
|
|
177
174
|
const configService = accessor.get(IConfigurationService);
|
|
178
175
|
if (runState === NotebookCellExecutionState.Executing && configService.getValue(NotebookSetting.confirmDeleteRunningCell)) {
|
|
179
176
|
const dialogService = accessor.get(IDialogService);
|
|
180
|
-
const primaryButton = ( localize(
|
|
177
|
+
const primaryButton = ( localize(7995, "Delete"));
|
|
181
178
|
confirmation = await dialogService.confirm({
|
|
182
179
|
type: 'question',
|
|
183
|
-
message: ( localize(
|
|
180
|
+
message: ( localize(7996, "This cell is running, are you sure you want to delete it?")),
|
|
184
181
|
primaryButton: primaryButton,
|
|
185
182
|
checkbox: {
|
|
186
|
-
label: ( localize(
|
|
183
|
+
label: ( localize(7997, "Do not ask me again"))
|
|
187
184
|
}
|
|
188
185
|
});
|
|
189
186
|
}
|
|
@@ -203,7 +200,7 @@ registerAction2(class ClearCellOutputsAction extends NotebookCellAction {
|
|
|
203
200
|
constructor() {
|
|
204
201
|
super({
|
|
205
202
|
id: CLEAR_CELL_OUTPUTS_COMMAND_ID,
|
|
206
|
-
title: ( localize(
|
|
203
|
+
title: ( localize(7998, 'Clear Cell Outputs')),
|
|
207
204
|
menu: [
|
|
208
205
|
{
|
|
209
206
|
id: MenuId.NotebookCellTitle,
|
|
@@ -215,7 +212,7 @@ registerAction2(class ClearCellOutputsAction extends NotebookCellAction {
|
|
|
215
212
|
NOTEBOOK_CELL_EDITABLE,
|
|
216
213
|
(NOTEBOOK_USE_CONSOLIDATED_OUTPUT_BUTTON.toNegated())
|
|
217
214
|
))),
|
|
218
|
-
order:
|
|
215
|
+
order: 5 ,
|
|
219
216
|
group: CELL_TITLE_OUTPUT_GROUP_ID
|
|
220
217
|
},
|
|
221
218
|
{
|
|
@@ -237,8 +234,8 @@ registerAction2(class ClearCellOutputsAction extends NotebookCellAction {
|
|
|
237
234
|
NOTEBOOK_EDITOR_EDITABLE,
|
|
238
235
|
NOTEBOOK_CELL_EDITABLE
|
|
239
236
|
))),
|
|
240
|
-
primary:
|
|
241
|
-
weight:
|
|
237
|
+
primary: 512 | 20 ,
|
|
238
|
+
weight: 200
|
|
242
239
|
},
|
|
243
240
|
icon: clearIcon
|
|
244
241
|
});
|
|
@@ -255,11 +252,11 @@ registerAction2(class ClearCellOutputsAction extends NotebookCellAction {
|
|
|
255
252
|
return;
|
|
256
253
|
}
|
|
257
254
|
const computeUndoRedo = !editor.isReadOnly;
|
|
258
|
-
editor.textModel.applyEdits([{ editType:
|
|
255
|
+
editor.textModel.applyEdits([{ editType: 2 , index, outputs: [] }], true, undefined, () => undefined, undefined, computeUndoRedo);
|
|
259
256
|
const runState = notebookExecutionStateService.getCellExecution(context.cell.uri)?.state;
|
|
260
257
|
if (runState !== NotebookCellExecutionState.Executing) {
|
|
261
258
|
context.notebookEditor.textModel.applyEdits([{
|
|
262
|
-
editType:
|
|
259
|
+
editType: 9 , index, internalMetadata: {
|
|
263
260
|
runStartTime: null,
|
|
264
261
|
runStartTimeAdjustment: null,
|
|
265
262
|
runEndTime: null,
|
|
@@ -274,7 +271,7 @@ registerAction2(class ClearAllCellOutputsAction extends NotebookAction {
|
|
|
274
271
|
constructor() {
|
|
275
272
|
super({
|
|
276
273
|
id: CLEAR_ALL_CELLS_OUTPUTS_COMMAND_ID,
|
|
277
|
-
title: ( localize(
|
|
274
|
+
title: ( localize(7999, 'Clear All Outputs')),
|
|
278
275
|
precondition: NOTEBOOK_HAS_OUTPUTS,
|
|
279
276
|
menu: [
|
|
280
277
|
{
|
|
@@ -307,13 +304,13 @@ registerAction2(class ClearAllCellOutputsAction extends NotebookAction {
|
|
|
307
304
|
}
|
|
308
305
|
const computeUndoRedo = !editor.isReadOnly;
|
|
309
306
|
editor.textModel.applyEdits(( (editor.textModel.cells.map((cell, index) => ({
|
|
310
|
-
editType:
|
|
307
|
+
editType: 2 , index, outputs: []
|
|
311
308
|
})))), true, undefined, () => undefined, undefined, computeUndoRedo);
|
|
312
309
|
const clearExecutionMetadataEdits = ( (editor.textModel.cells.map((cell, index) => {
|
|
313
310
|
const runState = notebookExecutionStateService.getCellExecution(cell.uri)?.state;
|
|
314
311
|
if (runState !== NotebookCellExecutionState.Executing) {
|
|
315
312
|
return {
|
|
316
|
-
editType:
|
|
313
|
+
editType: 9 , index, internalMetadata: {
|
|
317
314
|
runStartTime: null,
|
|
318
315
|
runStartTimeAdjustment: null,
|
|
319
316
|
runEndTime: null,
|
|
@@ -335,9 +332,9 @@ registerAction2(class ChangeCellLanguageAction extends NotebookCellAction {
|
|
|
335
332
|
constructor() {
|
|
336
333
|
super({
|
|
337
334
|
id: CHANGE_CELL_LANGUAGE,
|
|
338
|
-
title: ( localize(
|
|
335
|
+
title: ( localize(8000, 'Change Cell Language')),
|
|
339
336
|
metadata: {
|
|
340
|
-
description: ( localize(
|
|
337
|
+
description: ( localize(8000, 'Change Cell Language')),
|
|
341
338
|
args: [
|
|
342
339
|
{
|
|
343
340
|
name: 'range',
|
|
@@ -410,10 +407,10 @@ registerAction2(class ChangeCellLanguageAction extends NotebookCellAction {
|
|
|
410
407
|
providerLanguages.forEach(languageId => {
|
|
411
408
|
let description;
|
|
412
409
|
if (context.cell.cellKind === CellKind.Markup ? (languageId === 'markdown') : (languageId === context.cell.language)) {
|
|
413
|
-
description = ( localize(
|
|
410
|
+
description = ( localize(8001, "({0}) - Current Language", languageId));
|
|
414
411
|
}
|
|
415
412
|
else {
|
|
416
|
-
description = ( localize(
|
|
413
|
+
description = ( localize(8002, "({0})", languageId));
|
|
417
414
|
}
|
|
418
415
|
const languageName = languageService.getLanguageName(languageId);
|
|
419
416
|
if (!languageName) {
|
|
@@ -436,16 +433,16 @@ registerAction2(class ChangeCellLanguageAction extends NotebookCellAction {
|
|
|
436
433
|
return a.description.localeCompare(b.description);
|
|
437
434
|
});
|
|
438
435
|
const autoDetectMode = {
|
|
439
|
-
label: ( localize(
|
|
436
|
+
label: ( localize(8003, "Auto Detect"))
|
|
440
437
|
};
|
|
441
438
|
const picks = [
|
|
442
439
|
autoDetectMode,
|
|
443
|
-
{ type: 'separator', label: ( localize(
|
|
440
|
+
{ type: 'separator', label: ( localize(8004, "languages (identifier)")) },
|
|
444
441
|
...topItems,
|
|
445
442
|
{ type: 'separator' },
|
|
446
443
|
...mainItems
|
|
447
444
|
];
|
|
448
|
-
const selection = await quickInputService.pick(picks, { placeHolder: ( localize(
|
|
445
|
+
const selection = await quickInputService.pick(picks, { placeHolder: ( localize(8005, "Select Language Mode")) });
|
|
449
446
|
const languageId = selection === autoDetectMode
|
|
450
447
|
? await languageDetectionService.detectLanguage(context.cell.uri)
|
|
451
448
|
: selection?.languageId;
|
|
@@ -478,10 +475,10 @@ registerAction2(class DetectCellLanguageAction extends NotebookCellAction {
|
|
|
478
475
|
constructor() {
|
|
479
476
|
super({
|
|
480
477
|
id: DETECT_CELL_LANGUAGE,
|
|
481
|
-
title: ( localize2(
|
|
478
|
+
title: ( localize2(8006, "Accept Detected Language for Cell")),
|
|
482
479
|
f1: true,
|
|
483
480
|
precondition: ( (ContextKeyExpr.and(NOTEBOOK_EDITOR_EDITABLE, NOTEBOOK_CELL_EDITABLE))),
|
|
484
|
-
keybinding: { primary:
|
|
481
|
+
keybinding: { primary: 34 | 512 | 1024 , weight: 200 }
|
|
485
482
|
});
|
|
486
483
|
}
|
|
487
484
|
async runWithContext(accessor, context) {
|
|
@@ -496,7 +493,7 @@ registerAction2(class DetectCellLanguageAction extends NotebookCellAction {
|
|
|
496
493
|
setCellToLanguage(detection, context);
|
|
497
494
|
}
|
|
498
495
|
else {
|
|
499
|
-
notificationService.warn(( localize(
|
|
496
|
+
notificationService.warn(( localize(8007, "Unable to detect cell language")));
|
|
500
497
|
}
|
|
501
498
|
}
|
|
502
499
|
});
|
|
@@ -514,14 +511,14 @@ async function setCellToLanguage(languageId, context) {
|
|
|
514
511
|
}
|
|
515
512
|
else {
|
|
516
513
|
const index = context.notebookEditor.textModel.cells.indexOf(context.cell.model);
|
|
517
|
-
context.notebookEditor.textModel.applyEdits([{ editType:
|
|
514
|
+
context.notebookEditor.textModel.applyEdits([{ editType: 4 , index, language: languageId }], true, undefined, () => undefined, undefined, !context.notebookEditor.isReadOnly);
|
|
518
515
|
}
|
|
519
516
|
}
|
|
520
517
|
registerAction2(class SelectNotebookIndentation extends NotebookAction {
|
|
521
518
|
constructor() {
|
|
522
519
|
super({
|
|
523
520
|
id: SELECT_NOTEBOOK_INDENTATION_ID,
|
|
524
|
-
title: ( localize2(
|
|
521
|
+
title: ( localize2(8008, 'Select Indentation')),
|
|
525
522
|
f1: true,
|
|
526
523
|
precondition: ( (ContextKeyExpr.and(
|
|
527
524
|
NOTEBOOK_IS_ACTIVE_EDITOR,
|
|
@@ -539,10 +536,10 @@ registerAction2(class SelectNotebookIndentation extends NotebookAction {
|
|
|
539
536
|
const instantiationService = accessor.get(IInstantiationService);
|
|
540
537
|
const activeNotebook = getNotebookEditorFromEditorPane(editorService.activeEditorPane);
|
|
541
538
|
if (!activeNotebook || activeNotebook.isDisposed) {
|
|
542
|
-
return quickInputService.pick([{ label: ( localize(
|
|
539
|
+
return quickInputService.pick([{ label: ( localize(8009, "No notebook editor active at this time")) }]);
|
|
543
540
|
}
|
|
544
541
|
if (activeNotebook.isReadOnly) {
|
|
545
|
-
return quickInputService.pick([{ label: ( localize(
|
|
542
|
+
return quickInputService.pick([{ label: ( localize(8010, "The active notebook editor is read-only.")) }]);
|
|
546
543
|
}
|
|
547
544
|
const picks = ( ([
|
|
548
545
|
(
|
|
@@ -564,9 +561,9 @@ registerAction2(class SelectNotebookIndentation extends NotebookAction {
|
|
|
564
561
|
}
|
|
565
562
|
};
|
|
566
563
|
})));
|
|
567
|
-
picks.splice(3, 0, { type: 'separator', label: ( localize(
|
|
568
|
-
picks.unshift({ type: 'separator', label: ( localize(
|
|
569
|
-
const action = await quickInputService.pick(picks, { placeHolder: ( localize(
|
|
564
|
+
picks.splice(3, 0, { type: 'separator', label: ( localize(8011, "convert file")) });
|
|
565
|
+
picks.unshift({ type: 'separator', label: ( localize(8012, "change view")) });
|
|
566
|
+
const action = await quickInputService.pick(picks, { placeHolder: ( localize(8013, "Select Action")), matchOnDetail: true });
|
|
570
567
|
if (!action) {
|
|
571
568
|
return;
|
|
572
569
|
}
|
|
@@ -579,15 +576,15 @@ registerAction2(class CommentSelectedCellsAction extends NotebookMultiCellAction
|
|
|
579
576
|
constructor() {
|
|
580
577
|
super({
|
|
581
578
|
id: COMMENT_SELECTED_CELLS_ID,
|
|
582
|
-
title: ( localize(
|
|
579
|
+
title: ( localize(8014, "Comment Selected Cells")),
|
|
583
580
|
keybinding: {
|
|
584
581
|
when: ( (ContextKeyExpr.and(
|
|
585
582
|
NOTEBOOK_EDITOR_FOCUSED,
|
|
586
583
|
NOTEBOOK_EDITOR_EDITABLE,
|
|
587
584
|
ContextKeyExpr.not(InputFocusedContextKey)
|
|
588
585
|
))),
|
|
589
|
-
primary:
|
|
590
|
-
weight:
|
|
586
|
+
primary: 2048 | 90 ,
|
|
587
|
+
weight: 200
|
|
591
588
|
}
|
|
592
589
|
});
|
|
593
590
|
}
|
|
@@ -602,10 +599,10 @@ registerAction2(class CommentSelectedCellsAction extends NotebookMultiCellAction
|
|
|
602
599
|
1,
|
|
603
600
|
textModel.getLineCount(),
|
|
604
601
|
textModel.getLineMaxColumn(textModel.getLineCount())
|
|
605
|
-
)), textModel.getOptions().tabSize,
|
|
602
|
+
)), textModel.getOptions().tabSize, 0 , commentsOptions.insertSpace ?? true, commentsOptions.ignoreEmptyLines ?? true, false)));
|
|
606
603
|
const cellEditorSelections = cellViewModel.getSelections();
|
|
607
604
|
const initialTrackedRangesIDs = ( (cellEditorSelections.map(selection => {
|
|
608
|
-
return textModel._setTrackedRange(null, selection,
|
|
605
|
+
return textModel._setTrackedRange(null, selection, 1 );
|
|
609
606
|
})));
|
|
610
607
|
CommandExecutor.executeCommands(textModel, cellEditorSelections, [cellCommentCommand]);
|
|
611
608
|
const newTrackedSelections = ( (( (initialTrackedRangesIDs.map(i => {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Iterable } from 'vscode/vscode/vs/base/common/iterator';
|
|
2
|
-
import { KeyMod, KeyCode } from 'vscode/vscode/vs/base/common/keyCodes';
|
|
3
2
|
import { isEqual } from 'vscode/vscode/vs/base/common/resources';
|
|
4
3
|
import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
|
|
5
4
|
import { ILanguageService } from 'vscode/vscode/vs/editor/common/languages/language';
|
|
@@ -7,13 +6,12 @@ import { localize, localize2 } from 'vscode/vscode/vs/nls';
|
|
|
7
6
|
import { registerAction2, MenuId, MenuRegistry } from 'vscode/vscode/vs/platform/actions/common/actions';
|
|
8
7
|
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
|
|
9
8
|
import { ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
|
|
10
|
-
import { EditorsOrder } from 'vscode/vscode/vs/workbench/common/editor';
|
|
11
9
|
import { IDebugService } from 'vscode/vscode/vs/workbench/contrib/debug/common/debug.service';
|
|
12
10
|
import { CTX_INLINE_CHAT_FOCUSED } from 'vscode/vscode/vs/workbench/contrib/inlineChat/common/inlineChat';
|
|
13
11
|
import { insertCell } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/controller/cellOperations';
|
|
14
12
|
import { CTX_NOTEBOOK_CELL_CHAT_FOCUSED } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext';
|
|
15
13
|
import { NotebookChatController } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatController';
|
|
16
|
-
import { NotebookAction, executeNotebookCondition, getContextFromUri, getContextFromActiveEditor, NotebookMultiCellAction, NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT, cellExecutionArgs, parseMultiCellExecutionArgs,
|
|
14
|
+
import { NotebookAction, executeNotebookCondition, getContextFromUri, getContextFromActiveEditor, NotebookMultiCellAction, NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT, cellExecutionArgs, parseMultiCellExecutionArgs, CELL_TITLE_CELL_GROUP_ID, NotebookCellAction } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/controller/coreActions';
|
|
17
15
|
import { CellEditState, EXECUTE_CELL_COMMAND_ID, ScrollToRevealBehavior, CellFocusMode } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/notebookBrowser';
|
|
18
16
|
import { executeAllIcon, executeIcon, executeAboveIcon, executeBelowIcon, stopIcon, executingStateIcon, errorStateIcon } from 'vscode/vscode/vs/workbench/contrib/notebook/browser/notebookIcons';
|
|
19
17
|
import { CellKind, NotebookSetting, CellUri } from 'vscode/vscode/vs/workbench/contrib/notebook/common/notebookCommon';
|
|
@@ -90,7 +88,7 @@ registerAction2(class RenderAllMarkdownCellsAction extends NotebookAction {
|
|
|
90
88
|
constructor() {
|
|
91
89
|
super({
|
|
92
90
|
id: RENDER_ALL_MARKDOWN_CELLS,
|
|
93
|
-
title: ( localize(
|
|
91
|
+
title: ( localize(7954, "Render All Markdown Cells")),
|
|
94
92
|
});
|
|
95
93
|
}
|
|
96
94
|
async runWithContext(accessor, context) {
|
|
@@ -101,10 +99,10 @@ registerAction2(class ExecuteNotebookAction extends NotebookAction {
|
|
|
101
99
|
constructor() {
|
|
102
100
|
super({
|
|
103
101
|
id: EXECUTE_NOTEBOOK_COMMAND_ID,
|
|
104
|
-
title: ( localize(
|
|
102
|
+
title: ( localize(7955, "Run All")),
|
|
105
103
|
icon: executeAllIcon,
|
|
106
104
|
metadata: {
|
|
107
|
-
description: ( localize(
|
|
105
|
+
description: ( localize(7955, "Run All")),
|
|
108
106
|
args: [
|
|
109
107
|
{
|
|
110
108
|
name: 'uri',
|
|
@@ -148,7 +146,7 @@ registerAction2(class ExecuteNotebookAction extends NotebookAction {
|
|
|
148
146
|
async runWithContext(accessor, context) {
|
|
149
147
|
renderAllMarkdownCells(context);
|
|
150
148
|
const editorService = accessor.get(IEditorService);
|
|
151
|
-
const editor = editorService.getEditors(
|
|
149
|
+
const editor = editorService.getEditors(0 ).find(editor => editor.editor instanceof NotebookEditorInput && editor.editor.viewType === context.notebookEditor.textModel.viewType && ( (editor.editor.resource.toString())) === ( (context.notebookEditor.textModel.uri.toString())));
|
|
152
150
|
const editorGroupService = accessor.get(IEditorGroupsService);
|
|
153
151
|
if (editor) {
|
|
154
152
|
const group = editorGroupService.getGroup(editor.groupId);
|
|
@@ -162,15 +160,15 @@ registerAction2(class ExecuteCell extends NotebookMultiCellAction {
|
|
|
162
160
|
super({
|
|
163
161
|
id: EXECUTE_CELL_COMMAND_ID,
|
|
164
162
|
precondition: executeThisCellCondition,
|
|
165
|
-
title: ( localize(
|
|
163
|
+
title: ( localize(7956, "Execute Cell")),
|
|
166
164
|
keybinding: {
|
|
167
165
|
when: ( (ContextKeyExpr.or(
|
|
168
166
|
NOTEBOOK_CELL_LIST_FOCUSED,
|
|
169
167
|
(ContextKeyExpr.and(CTX_NOTEBOOK_CELL_CHAT_FOCUSED, CTX_INLINE_CHAT_FOCUSED))
|
|
170
168
|
))),
|
|
171
|
-
primary:
|
|
169
|
+
primary: 256 | 3 ,
|
|
172
170
|
win: {
|
|
173
|
-
primary:
|
|
171
|
+
primary: 2048 | 512 | 3
|
|
174
172
|
},
|
|
175
173
|
weight: NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT
|
|
176
174
|
},
|
|
@@ -180,7 +178,7 @@ registerAction2(class ExecuteCell extends NotebookMultiCellAction {
|
|
|
180
178
|
group: 'inline'
|
|
181
179
|
},
|
|
182
180
|
metadata: {
|
|
183
|
-
description: ( localize(
|
|
181
|
+
description: ( localize(7956, "Execute Cell")),
|
|
184
182
|
args: cellExecutionArgs
|
|
185
183
|
},
|
|
186
184
|
icon: executeIcon
|
|
@@ -214,7 +212,7 @@ registerAction2(class ExecuteAboveCells extends NotebookMultiCellAction {
|
|
|
214
212
|
super({
|
|
215
213
|
id: EXECUTE_CELLS_ABOVE,
|
|
216
214
|
precondition: executeCondition,
|
|
217
|
-
title: ( localize(
|
|
215
|
+
title: ( localize(7957, "Execute Above Cells")),
|
|
218
216
|
menu: [
|
|
219
217
|
{
|
|
220
218
|
id: MenuId.NotebookCellExecute,
|
|
@@ -225,7 +223,7 @@ registerAction2(class ExecuteAboveCells extends NotebookMultiCellAction {
|
|
|
225
223
|
},
|
|
226
224
|
{
|
|
227
225
|
id: MenuId.NotebookCellTitle,
|
|
228
|
-
order:
|
|
226
|
+
order: 1 ,
|
|
229
227
|
group: CELL_TITLE_CELL_GROUP_ID,
|
|
230
228
|
when: ( (ContextKeyExpr.and(
|
|
231
229
|
executeCondition,
|
|
@@ -260,7 +258,7 @@ registerAction2(class ExecuteCellAndBelow extends NotebookMultiCellAction {
|
|
|
260
258
|
super({
|
|
261
259
|
id: EXECUTE_CELL_AND_BELOW,
|
|
262
260
|
precondition: executeCondition,
|
|
263
|
-
title: ( localize(
|
|
261
|
+
title: ( localize(7958, "Execute Cell and Below")),
|
|
264
262
|
menu: [
|
|
265
263
|
{
|
|
266
264
|
id: MenuId.NotebookCellExecute,
|
|
@@ -271,7 +269,7 @@ registerAction2(class ExecuteCellAndBelow extends NotebookMultiCellAction {
|
|
|
271
269
|
},
|
|
272
270
|
{
|
|
273
271
|
id: MenuId.NotebookCellTitle,
|
|
274
|
-
order:
|
|
272
|
+
order: 2 ,
|
|
275
273
|
group: CELL_TITLE_CELL_GROUP_ID,
|
|
276
274
|
when: ( (ContextKeyExpr.and(
|
|
277
275
|
executeCondition,
|
|
@@ -306,9 +304,9 @@ registerAction2(class ExecuteCellFocusContainer extends NotebookMultiCellAction
|
|
|
306
304
|
super({
|
|
307
305
|
id: EXECUTE_CELL_FOCUS_CONTAINER_COMMAND_ID,
|
|
308
306
|
precondition: executeThisCellCondition,
|
|
309
|
-
title: ( localize(
|
|
307
|
+
title: ( localize(7959, "Execute Cell and Focus Container")),
|
|
310
308
|
metadata: {
|
|
311
|
-
description: ( localize(
|
|
309
|
+
description: ( localize(7959, "Execute Cell and Focus Container")),
|
|
312
310
|
args: cellExecutionArgs
|
|
313
311
|
},
|
|
314
312
|
icon: executeIcon
|
|
@@ -340,7 +338,7 @@ registerAction2(class CancelExecuteCell extends NotebookMultiCellAction {
|
|
|
340
338
|
super({
|
|
341
339
|
id: CANCEL_CELL_COMMAND_ID,
|
|
342
340
|
precondition: cellCancelCondition,
|
|
343
|
-
title: ( localize(
|
|
341
|
+
title: ( localize(7960, "Stop Cell Execution")),
|
|
344
342
|
icon: stopIcon,
|
|
345
343
|
menu: {
|
|
346
344
|
id: MenuId.NotebookCellExecutePrimary,
|
|
@@ -348,7 +346,7 @@ registerAction2(class CancelExecuteCell extends NotebookMultiCellAction {
|
|
|
348
346
|
group: 'inline'
|
|
349
347
|
},
|
|
350
348
|
metadata: {
|
|
351
|
-
description: ( localize(
|
|
349
|
+
description: ( localize(7960, "Stop Cell Execution")),
|
|
352
350
|
args: [
|
|
353
351
|
{
|
|
354
352
|
name: 'options',
|
|
@@ -406,13 +404,13 @@ registerAction2(class ExecuteCellSelectBelow extends NotebookCellAction {
|
|
|
406
404
|
executeThisCellCondition,
|
|
407
405
|
(NOTEBOOK_CELL_TYPE.isEqualTo('markup'))
|
|
408
406
|
))),
|
|
409
|
-
title: ( localize(
|
|
407
|
+
title: ( localize(7961, "Execute Notebook Cell and Select Below")),
|
|
410
408
|
keybinding: {
|
|
411
409
|
when: ( (ContextKeyExpr.and(
|
|
412
410
|
NOTEBOOK_CELL_LIST_FOCUSED,
|
|
413
411
|
(CTX_INLINE_CHAT_FOCUSED.negate())
|
|
414
412
|
))),
|
|
415
|
-
primary:
|
|
413
|
+
primary: 1024 | 3 ,
|
|
416
414
|
weight: NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT
|
|
417
415
|
},
|
|
418
416
|
});
|
|
@@ -472,10 +470,10 @@ registerAction2(class ExecuteCellInsertBelow extends NotebookCellAction {
|
|
|
472
470
|
executeThisCellCondition,
|
|
473
471
|
(NOTEBOOK_CELL_TYPE.isEqualTo('markup'))
|
|
474
472
|
))),
|
|
475
|
-
title: ( localize(
|
|
473
|
+
title: ( localize(7962, "Execute Notebook Cell and Insert Below")),
|
|
476
474
|
keybinding: {
|
|
477
475
|
when: NOTEBOOK_CELL_LIST_FOCUSED,
|
|
478
|
-
primary:
|
|
476
|
+
primary: 512 | 3 ,
|
|
479
477
|
weight: NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT
|
|
480
478
|
},
|
|
481
479
|
});
|
|
@@ -509,7 +507,7 @@ registerAction2(class CancelAllNotebook extends CancelNotebook {
|
|
|
509
507
|
constructor() {
|
|
510
508
|
super({
|
|
511
509
|
id: CANCEL_NOTEBOOK_COMMAND_ID,
|
|
512
|
-
title: ( localize2(
|
|
510
|
+
title: ( localize2(7963, "Stop Execution")),
|
|
513
511
|
icon: stopIcon,
|
|
514
512
|
menu: [
|
|
515
513
|
{
|
|
@@ -541,7 +539,7 @@ registerAction2(class InterruptNotebook extends CancelNotebook {
|
|
|
541
539
|
constructor() {
|
|
542
540
|
super({
|
|
543
541
|
id: INTERRUPT_NOTEBOOK_COMMAND_ID,
|
|
544
|
-
title: ( localize2(
|
|
542
|
+
title: ( localize2(7964, "Interrupt")),
|
|
545
543
|
precondition: ( (ContextKeyExpr.and(NOTEBOOK_HAS_SOMETHING_RUNNING, NOTEBOOK_INTERRUPTIBLE_KERNEL))),
|
|
546
544
|
icon: stopIcon,
|
|
547
545
|
menu: [
|
|
@@ -575,7 +573,7 @@ registerAction2(class InterruptNotebook extends CancelNotebook {
|
|
|
575
573
|
}
|
|
576
574
|
});
|
|
577
575
|
MenuRegistry.appendMenuItem(MenuId.NotebookToolbar, {
|
|
578
|
-
title: ( localize(
|
|
576
|
+
title: ( localize(7965, "Go To")),
|
|
579
577
|
submenu: MenuId.NotebookCellExecuteGoTo,
|
|
580
578
|
group: 'navigation/execute',
|
|
581
579
|
order: 20,
|
|
@@ -585,9 +583,9 @@ registerAction2(class RevealRunningCellAction extends NotebookAction {
|
|
|
585
583
|
constructor() {
|
|
586
584
|
super({
|
|
587
585
|
id: REVEAL_RUNNING_CELL,
|
|
588
|
-
title: ( localize(
|
|
589
|
-
tooltip: ( localize(
|
|
590
|
-
shortTitle: ( localize(
|
|
586
|
+
title: ( localize(7966, "Go to Running Cell")),
|
|
587
|
+
tooltip: ( localize(7966, "Go to Running Cell")),
|
|
588
|
+
shortTitle: ( localize(7966, "Go to Running Cell")),
|
|
591
589
|
precondition: NOTEBOOK_HAS_RUNNING_CELL,
|
|
592
590
|
menu: [
|
|
593
591
|
{
|
|
@@ -656,9 +654,9 @@ registerAction2(class RevealLastFailedCellAction extends NotebookAction {
|
|
|
656
654
|
constructor() {
|
|
657
655
|
super({
|
|
658
656
|
id: REVEAL_LAST_FAILED_CELL,
|
|
659
|
-
title: ( localize(
|
|
660
|
-
tooltip: ( localize(
|
|
661
|
-
shortTitle: ( localize(
|
|
657
|
+
title: ( localize(7967, "Go to Most Recently Failed Cell")),
|
|
658
|
+
tooltip: ( localize(7967, "Go to Most Recently Failed Cell")),
|
|
659
|
+
shortTitle: ( localize(7968, "Go to Most Recently Failed Cell")),
|
|
662
660
|
precondition: NOTEBOOK_LAST_CELL_FAILED,
|
|
663
661
|
menu: [
|
|
664
662
|
{
|