• Stars
    star
    546
  • Rank 81,396 (Top 2 %)
  • Language
    Emacs Lisp
  • License
    GNU General Publi...
  • Created over 12 years ago
  • Updated over 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

IPython notebook client in Emacs

EIN -- Emacs IPython Notebook Build Status

--- or EIN Is not only for Notebooks.

Note

It is stable enough for my day to day work, but I can't guarantee the safety for your notebook data. So please make sure you have backup.

Screenshot

Plotting in Emacs IPython Notebook

See more!

Features

Emacs IPython Notebook (EIN) provides a IPython Notebook client and integrated REPL (like SLIME) in Emacs. While EIN makes notebook editing very powerful by allowing you to use any Emacs features, it also expose IPython features such as code evaluation, object inspection and code completion to the Emacs side. These features can be accessed anywhere in Emacs and improve Python code editing and reading in Emacs.

Highlighted 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. It is even possible to connect console over ssh.
  • IPython kernel can be "connected" to any buffers. This enables you to evaluate buffer/region using same kernel as notebook. Notebook goodies such as tooltip help, help browser and code completion are available in these buffers.
  • Jump to definition (go to the definition by hitting M-. over an object).

Other notebook features:

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

Links:

Quick try

This is a quick and clean way to try EIN separately from your Emacs setting. If you want to try EIN but think preparing all the requirements is too much, try this!:

git clone git://github.com/tkf/emacs-ipython-notebook.git
cd emacs-ipython-notebook/
lisp/zeroein.el

This will launch a new Emacs instance.

You can use environment variable EMACS to control Emacs executable to use.:

EMACS=emacs-snapshot lisp/zeroein.el

The above command requires /bin/sh. If the above command does not work (e.g., you are using MS Windows), try the following command:

emacs -Q -l lisp/zeroein.el

Requirements

  • IPython 0.12 or higher.
  • websocket.el 0.9
  • request.el >= 0.2
  • (optional) mumamo developmental version: 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: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, EIEIO and json.el. EIN is currently tested against Emacs 23.3 and 24.3. It is known to work in Emacs 23.2, 24.1 and 24.2.

Usage

  1. Install module. Put Emacs lisp ein*.el files and Python file ein.py in your load path. See online documentation for more information.

  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 - Notebook

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

C-c             Prefix Command
C-x             Prefix Command
ESC             Prefix Command
.               ein:notebook-complete-dot
C-:             ein:shared-output-eval-string
<C-down>        ein:worksheet-goto-next-input
<C-up>          ein:worksheet-goto-prev-input
<M-S-return>    ein:worksheet-execute-cell-and-insert-below
<M-down>        ein:worksheet-move-cell-down
<M-up>          ein:worksheet-move-cell-up

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

M-RET           ein:worksheet-execute-cell-and-goto-next
M-,             ein:pytools-jump-back-command
M-.             ein:pytools-jump-to-source-command
M-n             ein:worksheet-next-input-history
M-p             ein:worksheet-previous-input-history

C-c C-a         ein:worksheet-insert-cell-above
C-c C-b         ein:worksheet-insert-cell-below
C-c C-c         ein:worksheet-execute-cell
C-c C-e         ein:worksheet-toggle-output
C-c C-f         ein:pytools-request-tooltip-or-help
C-c TAB         ein:completer-complete
C-c C-k         ein:worksheet-kill-cell
C-c C-l         ein:worksheet-clear-output
C-c RET         ein:worksheet-merge-cell
C-c C-n         ein:worksheet-goto-next-input
C-c C-o         ein:console-open
C-c C-p         ein:worksheet-goto-prev-input
C-c C-q         ein:notebook-kill-kernel-then-close-command
C-c C-r         ein:notebook-restart-kernel-command
C-c C-s         ein:worksheet-split-cell-at-point
C-c C-t         ein:worksheet-toggle-cell-type
C-c C-u         ein:worksheet-change-cell-type
C-c C-v         ein:worksheet-set-output-visibility-all
C-c C-w         ein:worksheet-copy-cell
C-c C-x         ein:tb-show
C-c C-y         ein:worksheet-yank-cell
C-c C-z         ein:notebook-kernel-interrupt-command
C-c ESC         Prefix Command
C-c !           ein:worksheet-rename-sheet
C-c +           ein:notebook-worksheet-insert-next
C-c -           ein:notebook-worksheet-delete
C-c 1           ein:notebook-worksheet-open-1th
C-c 2           ein:notebook-worksheet-open-2th
C-c 3           ein:notebook-worksheet-open-3th
C-c 4           ein:notebook-worksheet-open-4th
C-c 5           ein:notebook-worksheet-open-5th
C-c 6           ein:notebook-worksheet-open-6th
C-c 7           ein:notebook-worksheet-open-7th
C-c 8           ein:notebook-worksheet-open-8th
C-c 9           ein:notebook-worksheet-open-last
C-c {           ein:notebook-worksheet-open-prev-or-last
C-c }           ein:notebook-worksheet-open-next-or-first
C-c C-S-l       ein:worksheet-clear-all-output
C-c C-#         ein:notebook-close
C-c C-'         ein:worksheet-turn-on-autoexec
C-c C-,         ein:pytools-jump-back-command
C-c C-.         ein:pytools-jump-to-source-command
C-c C-/         ein:notebook-scratchsheet-open
C-c C-;         ein:shared-output-show-code-cell-at-point
C-c <down>      ein:worksheet-move-cell-down
C-c <up>        ein:worksheet-move-cell-up

C-c M-+         ein:notebook-worksheet-insert-prev
C-c M-w         ein:worksheet-copy-cell
C-c M-{         ein:notebook-worksheet-move-prev
C-c M-}         ein:notebook-worksheet-move-next

Keybinds - Connect

In Python (or any other) buffer, you can connect to any open notebook by M-x ein:connect-to-notebook then choose appropriate notebook. After connecting to the notebook (and hence its kernel), the following commands are available.

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

C-c             Prefix Command
ESC             Prefix Command
.               ein:completer-dot-complete
C-:             ein:shared-output-eval-string

M-,             ein:pytools-jump-back-command
M-.             ein:pytools-jump-to-source-command

C-c C-a         ein:connect-toggle-autoexec
C-c C-c         ein:connect-run-or-eval-buffer
C-c C-f         ein:pytools-request-tooltip-or-help
C-c TAB         ein:completer-complete
C-c C-l         ein:connect-reload-buffer
C-c C-o         ein:console-open
C-c C-r         ein:connect-eval-region
C-c C-x         ein:tb-show
C-c C-z         ein:connect-pop-to-notebook
C-c C-,         ein:pytools-jump-back-command
C-c C-.         ein:pytools-jump-to-source-command
C-c C-/         ein:notebook-scratchsheet-open

License

Emacs IPython Notebook is licensed under GPL v3. See COPYING for details.

More Repositories

1

emacs-jedi

Python auto-completion for Emacs
Emacs Lisp
655
star
2

emacs-request

Request.el -- Easy HTTP request for Emacs Lisp
Emacs Lisp
625
star
3

ThreadsX.jl

Parallelized Base functions
Julia
297
star
4

InteractiveCodeSearch.jl

Interactively search Julia code from terminal
Julia
106
star
5

python-epc

EPC (RPC stack for Emacs Lisp) for Python
Python
89
star
6

rash

Rash Advances Shell History
Python
83
star
7

emacs-jedi-direx

Tree style source code viewer for Python buffer
Emacs Lisp
71
star
8

emacs-python-environment

Python virtualenv API for Emacs Lisp
Emacs Lisp
59
star
9

BenchmarkCI.jl

Julia
52
star
10

org-mode

Emacs Lisp
41
star
11

ipython-hierarchymagic

`%hierarchy` and `%%dot` magics for IPython
Python
40
star
12

Kaleido.jl

Some useful lenses
Julia
33
star
13

ShowCode.jl

A tool for exploring and visualizing Julia code
Julia
24
star
14

Mutabilities.jl

Julia
24
star
15

Try.jl

Zero-overhead and debuggable error handling
Julia
22
star
16

inkscape-export-layers

Export selected layers from Inkscape SVG.
Python
21
star
17

DisplayAs.jl

Julia
19
star
18

Baselet.jl

Base API optimized for tuples
Julia
18
star
19

Run.jl

Julia
17
star
20

ne2wm

E2WM superpack
Emacs Lisp
14
star
21

PublicAPI.jl

PublicAPI.jl provides a simple API for declaring API without exporting the names
Julia
12
star
22

orgviz

Browser based app to view org-mode files from different directions -- calendar / table / histogram / time line
Python
12
star
23

Referenceables.jl

Julia
12
star
24

Terminators.jl

Julia
11
star
25

JuliaCLI.jl

Julia
11
star
26

LyapunovExponents.jl

A hackable Lyapunov exponents calculator
Julia
10
star
27

ipython-sqlitemagic

SQLite magics for IPython
Python
10
star
28

DocumentationOverview.jl

Julia
10
star
29

TaskDAGAnalyzers.jl

Julia
10
star
30

ContextVariablesX.jl

Julia
10
star
31

UnderscoreOh.jl

call graphs as recompilation-free capture-by-value closures
Julia
9
star
32

auto-complete-rst

Auto-complete extension for ReST and Sphinx
Python
9
star
33

conda-julia

Conda recipes for JuliaLang and its packages
Shell
9
star
34

JuliaManager.jl

System image manager for Julia
Python
8
star
35

Restacker.jl

Put immutables back in the stack
Julia
8
star
36

PyBase.jl

Python
8
star
37

matplotlibrc-zenburn

8
star
38

IPython.jl

Run IPython inside Julia to exchange data interactively
Python
8
star
39

ColorfulCodeGen.jl

Syntax-highlighted version of @code_llvm etc.
Julia
7
star
40

git-blackhole

Continuous backup and recoverable trash can for Git
Python
6
star
41

fillplots

Library to plot regions and boundaries given inequalities
Python
6
star
42

Restarts.jl

Julia
6
star
43

ipython-doctestmagic

Run and debug doctest in IPython
Python
6
star
44

auto-complete-chunk

Auto-completion for dot.separated.words.
Emacs Lisp
6
star
45

Awaits.jl

[WIP] Structured concurrency for parallel computing
Julia
6
star
46

InteractiveFormatter.jl

Julia
6
star
47

PyVenvs.jl

Julian interface for Pythonic virtual environments
Julia
6
star
48

Schedulers.jl

Multi-scheduler for/in Julia
Julia
5
star
49

mplchaco

Matplotlib to Chaco converter
Python
5
star
50

balance-tutorial-ja

Python
5
star
51

VegaStreams.jl

"Real-time" plotting with VegaLite.jl and ElectronDisplay.jl
Julia
5
star
52

IndirectImports.jl

Import and extend packages without importing them
Julia
5
star
53

sphinx-eldomain

Emacs Lisp domain -- Sphinx extension for Emacs Lisp
Python
5
star
54

JuliaProjectFormatter.jl

Julia
5
star
55

ThreadedArrays.jl

"Easy" parallelism injection
Julia
5
star
56

railgun

ctypes utilities for faster and easier simulation programming in C and Python
Python
4
star
57

ipython-importfilemagic

Python
4
star
58

julia-code-style-suggesters

4
star
59

ShowGraphviz.jl

Julia
4
star
60

Recalls.jl

Julia
4
star
61

BroadcastableStructs.jl

Julia
4
star
62

SparseXX.jl

Sparse arrays with eXperimental eXtensions
Julia
4
star
63

ipython-tempmagic

Python
4
star
64

julia-python-snippets

Julia
4
star
65

MIMEFileExtensions.jl

Julia
4
star
66

ConsoleProgressMonitor.jl

Julia
4
star
67

uniquify

Python
4
star
68

ExternalDocstrings.jl

Julia
4
star
69

Tofu.jl

β—»β—»β—»
Julia
3
star
70

zeroein

zeoroein is merged to EIN
Python
3
star
71

ParallelIncrements.jl

Julia
3
star
72

emacs-plugin-template

Minimal emacs plug-in template with setup for Travis CI
Emacs Lisp
3
star
73

TmuxDisplays.jl

Julia
3
star
74

NDReducibles.jl

Julia
3
star
75

GroundEffects.jl

Julia
3
star
76

emacs-pythonista

Preconfigured Python modes for Pythonista
Emacs Lisp
3
star
77

Reconstructables.jl

Tools for easy "modification" of nested immutable structs
Julia
3
star
78

ipyjulia_hacks

πŸ’ Horrible hacks 🐍
Python
3
star
79

traitscli

CLI generator for Python based on class traits
Python
3
star
80

rstcheck

reStructuredText checker
Python
3
star
81

emacs-pinot-search

Use pinot desktop meta search engine via Emacs anything/helm interface
Emacs Lisp
3
star
82

AtBackslash.jl

Julia
3
star
83

ContextManagers.jl

Julia
3
star
84

Kwonly.jl

Macro to generate keyword-only version of a function
Julia
3
star
85

julia-venv

Virtual Julia environments for PyJulia
Python
3
star
86

cheat_sheet

my cheat sheet
2
star
87

reflected-buffers

Indirect buffer-like feature, but without sharing text properties such as font lock.
Emacs Lisp
2
star
88

ChainCutters.jl

Julia
2
star
89

InferableTasks.jl

Julia
2
star
90

mybin

my scripts
Shell
2
star
91

emacs-codethumb

Emacs Lisp
2
star
92

dotfiles

linux dotfiles
Emacs Lisp
2
star
93

websocket-el-pre

Emacs Lisp
2
star
94

BenchmarkConfigSweeps.jl

Julia
2
star
95

PyPreferences.jl

Julia
2
star
96

emacs-deferred-flyspell

Emacs Lisp
2
star
97

EventTracker.jl

Julia
2
star
98

UnsafeFields.jl

Julia
2
star
99

bvcs

Batched VCS command runner
Python
2
star
100

BenchSweeps.jl

Julia
2
star