diff --git a/contrib/!tools/ipython/README.org b/contrib/!tools/ipython/README.org new file mode 100644 index 000000000..368e58b76 --- /dev/null +++ b/contrib/!tools/ipython/README.org @@ -0,0 +1,91 @@ + +* iPython contribution layer for Spacemacs (WIP) + +** 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 +- Micro-State with "evilified" keybindings +- Lazy-loading +** TODO List +- Maybe it'd be better if there was a state for this +- Make more keybinding to =connect= to a python buffer. +- Deleting visual regions don't work, find out why. +- This is a WIP, feel free to collaborate. + +** Install +*** Layer +#+begin_src emacs-lisp + (setq-default dotspacemacs-configuration-layers '(ipython)) +#+end_src +*** Dependencies +Install iPython > 3 +#+begin_src sh + pip install ipython +#+end_src +*** What needs to be run +Have an iPython notebook running +#+begin_src sh + ipython notebook +#+end_src + +** Key Bindings + +*** Open Notebook List +This layer is lazy loaded so the micro-state will only work after you summon the +command =ein:notebooklist-open= which is bound to =SPC a i n= +*** Micro-state: =ipython-notebook= +Once you are in the ipython notebook you can activate the micro-state with +=SPC a i n= + +| 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 | +| =o= | ein:worksheet-insert-cell-below | +| =O= | ein:worksheet-insert-cell-above | +| =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 | +| =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 | + +** Screenshots +*** Light +[[img/light.png]] +*** Dark +[[img/dark.png]] + +** Bonus +If you want to have a matplotlibrc that looks good with a dark background try +using [[file:matplotlibrc][this]] =matplotlibrc=. Plot background is always transparent by default so +it will look okay for most dark themes out there. diff --git a/contrib/!tools/ipython/img/dark.png b/contrib/!tools/ipython/img/dark.png new file mode 100644 index 000000000..6daf5b4a2 Binary files /dev/null and b/contrib/!tools/ipython/img/dark.png differ diff --git a/contrib/!tools/ipython/img/light.png b/contrib/!tools/ipython/img/light.png new file mode 100644 index 000000000..904eb0dac Binary files /dev/null and b/contrib/!tools/ipython/img/light.png differ diff --git a/contrib/!tools/ipython/matplotlibrc b/contrib/!tools/ipython/matplotlibrc new file mode 100644 index 000000000..ad853298c --- /dev/null +++ b/contrib/!tools/ipython/matplotlibrc @@ -0,0 +1,27 @@ +# -*- conf-unix -*- + +text.color : dcdccc + +patch.facecolor : 8cd0d3 # blue +patch.edgecolor : eeeeee + +axes.facecolor : 383838 # axes background color +axes.edgecolor : bcbcbc # axes edge color +axes.grid : True # display grid or not +axes.labelcolor : dcdccc +axes.color_cycle : 8cd0d3, 7f9f7f, cc9393, 93e0e3, dc8cc3, f0dfaf, dcdccc +# (system default) blue, green, red, cyan, magenta, yellow, black + +xtick.color : dcdccc # color of the tick labels +xtick.direction : in # direction: in or out +ytick.color : dcdccc # color of the tick labels +ytick.direction : in # direction: in or out + +legend.fancybox : True # if True, use a rounded box for the + +figure.facecolor : 3f3f3f # figure facecolor; 0.75 is scalar gray +figure.edgecolor : 383838 # figure edgecolor + +# See also: +# * Sane color scheme for Matplotlib +# http://www.huyng.com/posts/sane-color-scheme-for-matplotlib/ \ No newline at end of file diff --git a/contrib/!tools/ipython/packages.el b/contrib/!tools/ipython/packages.el new file mode 100644 index 000000000..b8f44a4fb --- /dev/null +++ b/contrib/!tools/ipython/packages.el @@ -0,0 +1,107 @@ +;;; packages.el --- ipython Layer packages File for Spacemacs +;; +;; Copyright (c) 2012-2014 Sylvain Benner +;; Copyright (c) 2014-2015 Sylvain Benner & Contributors +;; +;; Author: Sylvain Benner +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;;; License: GPLv3 + +;; List of all packages to install and/or initialize. Built-in packages +;; which require an initialization must be listed explicitly in the list. +(setq ipython-packages + '( + ein + )) + +(defun ipython/init-ein () + (use-package ein + :commands ein:notebooklist-open + :init + (evil-leader/set-key + "ain" 'ein:notebooklist-open) + :config + (defun spacemacs/ein:worksheet-merge-cell-next () + (interactive) + (ein:worksheet-merge-cell (ein:worksheet--get-ws-or-error) (ein:worksheet-get-current-cell) t t)) + + (defvar spacemacs--ipython-notebook-ms-doc-toggle 0 + "Display a short doc when nil, full doc otherwise.") + + (defun spacemacs//ipython-notebook-ms-doc () + (if (equal 0 spacemacs--ipython-notebook-ms-doc-toggle) + "[?] for help" + " + [?] display this help + [k,j]: [prev,next] cell [K,J]: move cell [up,down] + [h,l]: prev,next worksheet [H,L]: move worksheet [left,right] + [d,y,p,RET]: [kill,copy,paste, execute] cell [t,C-l,C-S-L]: [toggle,clear,clear all] output + [o,O]: insert cell [bellow,above] + [C-o]: open console [C-k,C-j]: merge cell [above,bellow] + [1,2,...,8,9]: open [1st,2nd,..,8th,last] worksheet + [C-s, C-r]: [save, rename] notebook + [+,-]: [create,delete] worksheet + [x]: close notebook + [q] quit")) + + (defun spacemacs//ipython-notebook-ms-toggle-doc () + (interactive) + (setq spacemacs--ipython-notebook-ms-doc-toggle + (logxor spacemacs--ipython-notebook-ms-doc-toggle 1))) + + (spacemacs|define-micro-state ipython-notebook + :doc (spacemacs//ipython-notebook-ms-doc) + :use-minibuffer t + :evil-leader "ein" + :bindings + ("q" nil :exit t) + ("?" spacemacs//ipython-notebook-ms-toggle-doc) + ("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) + ("o" ein:worksheet-insert-cell-below) + ("O" ein:worksheet-insert-cell-above) + ("RET" ein:worksheet-execute-cell-and-goto-next) + ;; Output + ("C-l" ein:worksheet-clear-output) + ("C-S-l" ein:worksheet-clear-all-output) + ;;Console + ("C-o" ein:console-open) + ;; Merge cells + ("C-k" ein:worksheet-merge-cell) + ("C-j" spacemacs/ein:worksheet-merge-cell-next) + ;; Notebook + ("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) + ) + )) + +;; +;; Often the body of an initialize function uses `use-package' +;; For more info on `use-package', see readme: +;; https://github.com/jwiegley/use-package