diff --git a/packages/mainmenu-extension/src/index.ts b/packages/mainmenu-extension/src/index.ts index 883911a8055a..e2191404011c 100644 --- a/packages/mainmenu-extension/src/index.ts +++ b/packages/mainmenu-extension/src/index.ts @@ -91,6 +91,8 @@ export namespace CommandIDs { export const restartAndRunAll = 'runmenu:restart-and-run-all'; + export const restartAndRunToSelected = 'runmenu:restart-and-run-to-selected'; + export const runAbove = 'runmenu:run-above'; export const runBelow = 'runmenu:run-below'; @@ -538,7 +540,8 @@ export function createKernelMenu(app: JupyterFrontEnd, menu: KernelMenu): void { const restartGroup = [ CommandIDs.restartKernel, CommandIDs.restartKernelAndClear, - CommandIDs.restartAndRunAll + CommandIDs.restartAndRunAll, + CommandIDs.restartAndRunToSelected ].map(command => { return { command }; }); @@ -687,6 +690,21 @@ export function createRunMenu(app: JupyterFrontEnd, menu: RunMenu): void { ), execute: Private.delegateExecute(app, menu.codeRunners, 'restartAndRunAll') }); + commands.addCommand(CommandIDs.restartAndRunToSelected, { + label: () => { + return `Restart Kernel and Run up to Selected Cell …`; + }, + isEnabled: Private.delegateEnabled( + app, + menu.codeRunners, + 'restartAndRunToSelected' + ), + execute: Private.delegateExecute( + app, + menu.codeRunners, + 'restartAndRunToSelected' + ) + }); const runAllGroup = [CommandIDs.runAll, CommandIDs.restartAndRunAll].map( command => { diff --git a/packages/notebook-extension/src/index.ts b/packages/notebook-extension/src/index.ts index e88150e6230a..cc28f0fd4ab9 100644 --- a/packages/notebook-extension/src/index.ts +++ b/packages/notebook-extension/src/index.ts @@ -2113,6 +2113,21 @@ function populateMenus( } return restarted; }); + }, + restartAndRunToSelected: current => { + const { context, content } = current; + return context.session.restart().then(restarted => { + if (restarted) { + void NotebookActions.runAllAbove(content, context.session).then( + executed => { + if (executed) { + void NotebookActions.run(content, context.session); + } + } + ); + } + return restarted; + }); } } as IRunMenu.ICodeRunner);