#+TITLE: IPython Notebook layer #+TAGS: layer|programming|util * Table of Contents :TOC_5_gh:noexport: - [[#description][Description]] - [[#features][Features:]] - [[#list-of-todos][List of TODOS]] - [[#maybe-itd-be-better-if-there-was-a-state-for-this][Maybe it'd be better if there was a state for this]] - [[#make-more-key-binding-to-connect-to-a-python-buffer][Make more key binding to =connect= to a python buffer]] - [[#deleting-visual-regions-dont-work-find-out-why][Deleting visual regions don't work, find out why]] - [[#install][Install]] - [[#layer][Layer]] - [[#dependencies][Dependencies]] - [[#what-needs-to-be-run][What needs to be run]] - [[#using-the-ipython-notebook][Using the IPython notebook]] - [[#open-notebook-list][Open Notebook List]] - [[#key-bindings][Key bindings]] - [[#transient-state-ipython-notebook][Transient-state: =ipython-notebook=]] - [[#normal-mode][Normal mode]] - [[#insert-mode][Insert mode]] - [[#traceback-mode][Traceback mode]] - [[#screenshots][Screenshots]] - [[#light][Light]] - [[#dark][Dark]] - [[#bonus][Bonus]] * Description This layer adds support for the package =emacs-ipython-notebook=. Do not hesitate to check the original package README [[https://github.com/millejoh/emacs-ipython-notebook][here]]. Also the wiki has lots of informative stuff. ** Features: - Key bindings available through transient-state or leader key - Lazy-loading * List of TODOS This is a WIP, feel free to collaborate. ** TODO Maybe it'd be better if there was a state for this ** TODO Make more key binding to =connect= to a python buffer ** TODO Deleting visual regions don't work, find out why * Install ** Layer To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =ipython-notebook= to the existing =dotspacemacs-configuration-layers= list in this file. ** Dependencies Install IPython Notebook > 3 Note that IPython Notebook has now been renamed to [[https://jupyter.org/install][Jupyter Notebook]]. #+BEGIN_SRC sh pip install jupyter #+END_SRC ** What needs to be run Have an IPython notebook running #+BEGIN_SRC sh jupyter notebook #+END_SRC * Using the IPython notebook ** Open Notebook List This layer is lazy loaded so the transient-state will only work after you summon the command =ein:notebooklist-open= which is bound to ~SPC a y o~ ** Key bindings The key bindings can be used through a transient state or the usual evil-leader. *** Transient-state: =ipython-notebook= Once you are in the ipython notebook you can activate the transient-state with ~SPC m .~ The following table lists the keys. Use them as listed in the transient-state or prefix with ~SPC m~ to use with your evil-leader. | Key | Function | |---------+-------------------------------------------| | ~h~ | ein:notebook-worksheet-open-prev-or-last | | ~j~ | ein:worksheet-goto-next-input | | ~k~ | ein:worksheet-goto-prev-input | | ~l~ | ein:notebook-worksheet-open-next-or-first | | ~H~ | ein:notebook-worksheet-move-prev | | ~J~ | ein:worksheet-move-cell-down | | ~K~ | ein:worksheet-move-cell-up | | ~L~ | ein:notebook-worksheet-move-next | | ~t~ | ein:worksheet-toggle-output | | ~d~ | ein:worksheet-kill-cell | | ~R~ | ein:worksheet-rename-sheet | | ~y~ | ein:worksheet-copy-cell | | ~p~ | ein:worksheet-yank-cell | | ~i~ | ein:worksheet-insert-cell-below | | ~I~ | ein:worksheet-insert-cell-above | | ~u~ | ein:worksheet-change-cell-type | | ~RET~ | ein:worksheet-execute-cell-and-goto-next | | ~C-l~ | ein:worksheet-clear-output | | ~C-S-l~ | ein:worksheet-clear-all-output | | ~C-o~ | ein:console-open | | ~C-k~ | ein:worksheet-merge-cell | | ~C-j~ | spacemacs/ein:worksheet-merge-cell-next | | ~s~ | ein:worksheet-split-cell-at-point | | ~C-s~ | ein:notebook-save-notebook-command | | ~C-r~ | ein:notebook-rename-command | | ~1~ | ein:notebook-worksheet-open-1th | | ~2~ | ein:notebook-worksheet-open-2th | | ~3~ | ein:notebook-worksheet-open-3th | | ~4~ | ein:notebook-worksheet-open-4th | | ~5~ | ein:notebook-worksheet-open-5th | | ~6~ | ein:notebook-worksheet-open-6th | | ~7~ | ein:notebook-worksheet-open-7th | | ~8~ | ein:notebook-worksheet-open-8th | | ~9~ | ein:notebook-worksheet-open-last | | ~+~ | ein:notebook-worksheet-insert-next | | ~-~ | ein:notebook-worksheet-delete | | ~x~ | ein:notebook-close | *** Normal mode In normal mode the following key bindings are defined: | Key | Function | |---------+------------------------------------------| | ~gj~ | ein:worksheet-goto-next-input | | ~gk~ | ein:worksheet-goto-prev-input | | ~C-RET~ | ein:worksheet-execute-cell | | ~S-RET~ | ein:worksheet-execute-cell-and-goto-next | Also ~SPC f s~ saves the notebook like you would a regular buffer. *** Insert mode In normal mode the following key bindings are defined: | Key | Function | |---------+------------------------------------------| | ~C-RET~ | ein:worksheet-execute-cell | | ~S-RET~ | ein:worksheet-execute-cell-and-goto-next | *** Traceback mode In traceback mode the following key bindings are defined: | key | Function | |-------+----------------------------------------| | ~RET~ | ein:tb-jump-to-source-at-point-command | | ~n~ | ein:tb-next-item | | ~p~ | ein:tb-prev-item | | ~q~ | bury-buffer | * Screenshots ** Light [[file:img/light.png]] ** Dark [[file:img/dark.png]] * Bonus If you want to have a matplotlibrc that looks good with a dark background try using [[https://gist.github.com/anonymous/80219c49cb674d01e6b5fab94e759f54][this]] =matplotlibrc=. Plot background is always transparent by default so it will look okay for most dark themes out there.