Thanks to visit codestin.com
Credit goes to github.com

Skip to content

tkf/emacs-ipython-notebook

 
 

Repository files navigation

Emacs IPython Notebook

Warning

This is very early version. Make sure you have backup!

Screenshot

Plotting in Emacs IPython Notebook

Features

  • Copy/paste cells, even to/from different notebooks.
  • Console integration: You can easily connect to kernel via console application. This enables you to start debugging in the same kernel.

These features are currently not in the native IPython notebook, so use Emacs IPython Notebook client (EIN) if you want them! Of course, EIN does not (and won't) implement rich object representation as native IPython Notebook web client, and you should use browser also to get full power of IPython Notebook. EIN aims at making notebook editing more effective.

Other features:

  • Inline images
  • Auto/manual-completion
  • Popup (tooltip) help
  • Syntax highlighting in each cell types (Python/Markdown)
  • Help browser (opens when executing function?)

More to come/ideas:

  • Better pager (history, syntax highlighting, ...)
  • Better messages/event handling/UI
  • Highlight latex maths in markdown text
  • Auto-save
  • Local auto-backup
  • VCS integration

Requirements

  • IPython 0.12.1 (or developmental version): EIN won't work with older versions.
  • websocket.el
  • (optional) mumamo: It will be automatically loaded when it is on the path. The official way to setup path is to load nXhtml.
  • (optional) markdown-mode
  • (optional) python-mode: It should work with either python.el or python-mode.el. Fabian Gallina's python.el is required to use ein:notebook-console-open command.
  • (optional) auto-complete.el You need to configure subpackage ein-ac to enable this feature.
  • (optional) smartrep.el: This package enables you to omit typing prefix keys (e.g., C-c C-n C-n C-n ... instead of C-c C-n C-c C-n C-c C-n ...). You need to configure subpackage ein-smartrep to enable this feature.

Also, EIN heavily relies on standard Emacs libraries including EWOC and EIEIO. EIN is currently tested in Emacs 24.1.

Usage

  1. Install module. Put Emacs lisp ein*.el files in your load path.

  2. Require module:

    (require 'ein)
    
  3. Start IPython notebook server.

  4. Hit M-x ein:notebooklist-open to open notebook list.

Subpackages

Enable auto-complete.el:

(setq ein:use-auto-complete t)
;; Or, to enable "superpack" (a little bit hacky improvements):
;; (setq ein:use-auto-complete-superpack t)

Enable smartrep.el:

(setq ein:use-smartrep t)

Keybinds

key             binding
---             -------

C-c             Prefix Command
C-x             Prefix Command
ESC             Prefix Command

C-x C-s         ein:notebook-save-notebook-command
C-x C-w         ein:notebook-rename-command

M-RET           ein:notebook-execute-current-cell-and-goto-next

C-c C-a         ein:notebook-insert-cell-above-command
C-c C-b         ein:notebook-insert-cell-below-command
C-c C-c         ein:notebook-execute-current-cell
C-c C-d         ein:notebook-delete-cell-command
C-c C-e         ein:notebook-toggle-output-command
C-c C-f         ein:notebook-request-tool-tip-or-help-command
C-c TAB         ein:notebook-complete-cell-command
C-c C-k         ein:notebook-kill-cell-command
C-c C-l         ein:notebook-clear-output-command
C-c RET         ein:notebook-merge-cell-command
C-c C-n         ein:notebook-goto-next-input-command
C-c C-o         ein:notebook-console-open
C-c C-p         ein:notebook-goto-prev-input-command
C-c C-q         ein:notebook-kernel-kill-command
C-c C-r         ein:notebook-restart-kernel-command
C-c C-s         ein:notebook-split-cell-at-point
C-c C-t         ein:notebook-toggle-cell-type
C-c C-v         ein:notebook-set-collapsed-all-command
C-c C-y         ein:notebook-yank-cell-command
C-c C-z         ein:notebook-kernel-interrupt-command
C-c ESC         Prefix Command
C-c C-S-l       ein:notebook-clear-all-output-command
C-c <down>      ein:notebook-move-cell-down-command
C-c <up>        ein:notebook-move-cell-up-command

C-c M-w         ein:notebook-copy-cell-command

Advanced

By telling IPython a little bit about Emacs Lisp, you can execute Emacs Lisp from IPython, just like you can execute Javascript in the web client. See emacslisp.py for more details.:

In [1]:
%run PATH/TO/emacslisp.py

In [2]:
EmacsLisp('(+ 1 2 3)')
Out [2]:
6