Git Product home page Git Product logo

emacs-ipython-notebook's Introduction

EIN -- Emacs IPython Notebook Build Status MELPA development version MELPA stable version

Emacs IPython Notebook (EIN) lets you run Jupyter (formerly IPython) notebooks within Emacs. It channels all the power of Emacs without the idiosyncrasies of in-browser editing.

Org users please find ob-ein, a jupyter Babel backend.

EIN was originally written by [tkf]. A jupyter Babel backend was first introduced by [gregsexton].

Install

As described in Getting started, ensure melpa's whereabouts in init.el or .emacs:

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))

Then

M-x package-refresh-contents RET
M-x package-install RET ein RET

Alternatively, directly clone this repo and make install.

Usage

Start EIN using ONE of the following:

  • Open an .ipynb file normally in emacs and press C-c C-o, or,
  • M-x ein:run launches a jupyter process from emacs, or,
  • M-x ein:login to a running jupyter server

Use C-u M-x ein:login for services such as mybinder.org requiring cookie authentication.

Alternatively, ob-ein.

FAQ

How do I...

... report a bug?

File an issue using M-x ein:dev-bug-report-template.

First try emacs -Q -f package-initialize --eval "(setq debug-on-error t)" and reproduce the bug. The -Q skips any user configuration that might interfere with EIN.

Note EIN is tested only for released GNU Emacs versions 25.1 and later. Pre-release versions are unlikely to work.

... display images inline?

We find inserting images into emacs disruptive, and so default to spawning an external viewer. To override this,

M-x customize-group RET ein
Ein:Output Area Inlined Images
... configure the external image viewer?
M-x customize-group RET mailcap
Mailcap User Mime Data
... get IDE-like behavior?
The official python module for EIN is elpy, installed separately. Other program modes for non-python kernels may be installed with varying degrees of EIN compatibility.

ob-ein

Configuration:

M-x customize-group RET org-babel
Org Babel Load Languages:
  Insert (ein . t)
  For example, '((emacs-lisp . t) (ein . t))

Snippet:

#BEGIN_SRC ein-python :session localhost :results raw drawer
  import numpy, math, matplotlib.pyplot as plt
  %matplotlib inline
  x = numpy.linspace(0, 2*math.pi)
  plt.plot(x, numpy.sin(x))
#+END_SRC

The :session is the notebook url, e.g., http://localhost:8888/my.ipynb, or simply localhost, in which case org evaluates anonymously. A port may also be specified, e.g., localhost:8889.

Language can be ein-python, ein-r, or ein-julia. The relevant jupyter kernel must be installed before use. Additional languages can be configured via:

M-x customize-group RET ein
Ob Ein Languages

Keymap (C-h m)

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

C-c          Prefix Command
C-x          Prefix Command
ESC          Prefix Command
<C-down>     ein:worksheet-goto-next-input-km
<C-up>               ein:worksheet-goto-prev-input-km
<M-S-return> ein:worksheet-execute-cell-and-insert-below-km
<M-down>     ein:worksheet-not-move-cell-down-km
<M-up>               ein:worksheet-not-move-cell-up-km

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

M-RET                ein:worksheet-execute-cell-and-goto-next-km
M-,          ein:pytools-jump-back-command
M-.          ein:pytools-jump-to-source-command

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

C-c C-x C-r  ein:notebook-restart-session-command-km

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.