Skip to content

Commit

Permalink
Merge pull request #6029 from rahulpshah/feature/JP-6017-render-mkd-c…
Browse files Browse the repository at this point in the history
…ells

Add "Render all markdown cells" command, or automatically render markdown
  • Loading branch information
ian-r-rose committed Apr 5, 2019
2 parents 79a332d + 6a4a91b commit cfa683f
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 1 deletion.
1 change: 0 additions & 1 deletion packages/mainmenu-extension/src/index.ts
Expand Up @@ -678,7 +678,6 @@ export function createRunMenu(app: JupyterFrontEnd, menu: RunMenu): void {
isEnabled: Private.delegateEnabled(app, menu.codeRunners, 'runAll'),
execute: Private.delegateExecute(app, menu.codeRunners, 'runAll')
});

commands.addCommand(CommandIDs.restartAndRunAll, {
label: () => {
const noun = Private.delegateLabel(app, menu.codeRunners, 'noun');
Expand Down
19 changes: 19 additions & 0 deletions packages/notebook-extension/src/index.ts
Expand Up @@ -119,6 +119,8 @@ namespace CommandIDs {

export const runAllBelow = 'notebook:run-all-below';

export const renderAllMarkdown = 'notebook:render-all-markdown';

export const toCode = 'notebook:change-cell-to-code';

export const toMarkdown = 'notebook:change-cell-to-markdown';
Expand Down Expand Up @@ -1037,6 +1039,17 @@ function addCommands(
);
}
});
commands.addCommand(CommandIDs.renderAllMarkdown, {
label: 'Render All Markdown Cells',
execute: args => {
const current = getCurrent(args);
if (current) {
const { context, content } = current;
return NotebookActions.renderAllMarkdown(content, context.session);
}
},
isEnabled
});
commands.addCommand(CommandIDs.restart, {
label: 'Restart Kernel…',
execute: args => {
Expand Down Expand Up @@ -1788,6 +1801,7 @@ function populatePalette(
CommandIDs.restartClear,
CommandIDs.restartRunAll,
CommandIDs.runAll,
CommandIDs.renderAllMarkdown,
CommandIDs.runAllAbove,
CommandIDs.runAllBelow,
CommandIDs.selectAll,
Expand Down Expand Up @@ -2073,6 +2087,10 @@ function populateMenus(
}
} as IRunMenu.ICodeRunner<NotebookPanel>);

// Add a renderAllMarkdown group to the run menu.
const renderAllMarkdown = [CommandIDs.renderAllMarkdown].map(command => {
return { command };
});
// Add a run+insert and run+don't advance group to the run menu.
const runExtras = [
CommandIDs.runAndInsert,
Expand Down Expand Up @@ -2132,6 +2150,7 @@ function populateMenus(
mainMenu.editMenu.addGroup(splitMergeGroup, 9);
mainMenu.runMenu.addGroup(runExtras, 10);
mainMenu.runMenu.addGroup(runAboveBelowGroup, 11);
mainMenu.runMenu.addGroup(renderAllMarkdown, 12);

// Add kernel information to the application help menu.
mainMenu.helpMenu.kernelUsers.add({
Expand Down
26 changes: 26 additions & 0 deletions packages/notebook/src/actions.tsx
Expand Up @@ -526,6 +526,32 @@ export namespace NotebookActions {
return promise;
}

export function renderAllMarkdown(
notebook: Notebook,
session?: IClientSession
): Promise<boolean> {
if (!notebook.model || !notebook.activeCell) {
return Promise.resolve(false);
}
const previousIndex = notebook.activeCellIndex;
const state = Private.getState(notebook);
notebook.widgets.forEach((child, index) => {
if (child.model.type === 'markdown') {
notebook.select(child);
// This is to make sure that the activeCell
// does not get executed
notebook.activeCellIndex = index;
}
});
if (notebook.activeCell.model.type !== 'markdown') {
return Promise.resolve(true);
}
const promise = Private.runSelected(notebook, session);
notebook.activeCellIndex = previousIndex;
Private.handleRunState(notebook, state, true);
return promise;
}

/**
* Run all of the cells before the currently active cell (exclusive).
*
Expand Down

0 comments on commit cfa683f

Please sign in to comment.