[IPython-dev] Shortcut to convert cell between code and markdown while remaining in edit mode?
Juergen Hasch
python at elbonia.de
Mon Apr 21 04:08:33 EDT 2014
The reason you see this behavior is because
a) custom.js gets executed before there is an IPython.keyboard_manager
b) switching between code and markdown cells actually creates a new cell
This should do:
$([IPython.events]).on('app_initialized.NotebookApp', function(){
IPython.keyboard_manager.edit_shortcuts.add_shortcut('ctrl-y', {
help : 'toggle markdown/code',
handler : function (event) {
var cell = IPython.notebook.get_selected_cell();
if (cell.cell_type == 'code') {
var cur = cell.code_mirror.getCursor();
IPython.notebook.command_mode();
IPython.notebook.to_markdown();
IPython.notebook.edit_mode();
cell = IPython.notebook.get_selected_cell();
cell.code_mirror.setCursor(cur);
} else if (cell.cell_type == 'markdown') {
var cur = cell.code_mirror.getCursor();
IPython.notebook.command_mode();
IPython.notebook.to_code();
IPython.notebook.edit_mode();
cell = IPython.notebook.get_selected_cell();
cell.code_mirror.setCursor(cur);
}
return false;
}
});
});
Am 21.04.2014 01:01, schrieb Maximilian Albert:
> Hi Min,
>
> many thanks for the quick reply. I was aware that keyboard shortcut customization was on the agenda, but hadn't realised
> that it had hit master (or even a released version) yet. That's great news! :)
>
> Unfortunately, adding the code you posted to the file .ipython/profile_nbserver/static/custom/custom.js didn't make any
> difference - it seems like the code is simply ignored (I am starting the notebook using --profile=nbserver, so it should
> be the correct file, right?).
>
> However, I can paste the snippet into a running notebook using the %%javascript magic. If I do this then the keyboard
> shortcut is indeed defined and I can use it. But the behaviour is slightly strange in that once I press Ctrl-y I seem to
> be "stuck" in the cell I'm editing and can't leave it using Shift+Enter alone (I have to click with the mouse in a
> different cell to get out). However, the following works as expected (not the additional lines
> "IPython.notebook.command_mode();"):
>
> ==>
> IPython.keyboard_manager.edit_shortcuts.add_shortcut('ctrl-y', {
> help : 'toggle markdown/code',
> handler : function (event) {
> var cell = IPython.notebook.get_selected_cell();
> if (cell.cell_type == 'code') {
> IPython.notebook.command_mode();
> IPython.notebook.to_markdown();
> IPython.notebook.edit_mode();
> } else if (cell.cell_type == 'markdown') {
> IPython.notebook.command_mode();
> IPython.notebook.to_code();
> IPython.notebook.edit_mode();
> }
> return false;
> }
> });
> <==
>
> The only minor drawback is that this also resets the cursor back to the beginning of the cell (as James noticed in his
> other email). I guess whatever the fix is would work in both cases?
>
> Many thanks again!
> Max
>
>
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev
>
More information about the IPython-dev
mailing list