emacs-ipython-notebook/README.rst

305 lines
10 KiB
ReStructuredText
Raw Normal View History

==============================================
EIN2 -- Emacs IPython 2.x Notebook |build-status|
==============================================
--- or **E**\ IN **I**\ s not only for **N**\ otebooks.
.. note:: The code, so far, has been stable enough for day to day work, but
there are no guarantees for the safety for your notebook data. Please
make sure you backup, and backup often!
2012-09-13 00:22:50 +02:00
.. |build-status|
image:: https://secure.travis-ci.org/millejoh/emacs-ipython-notebook.png
?branch=master
:target: http://travis-ci.org/millejoh/emacs-ipython-notebook
2012-09-13 00:22:50 +02:00
:alt: Build Status
Screenshot
==========
2012-07-01 19:20:00 +02:00
.. figure:: https://github.com/tkf/emacs-ipython-notebook/raw/data/screenshots/notebook_simple_plot.png
:alt: Plotting in Emacs IPython Notebook
2012-07-01 19:20:00 +02:00
See `more <https://github.com/tkf/emacs-ipython-notebook/wiki/Screenshots>`_!
Features
========
Emacs IPython Notebook (EIN) provides a client for the IPython v2.x notebook and
an 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.
2012-06-03 18:48:07 +02:00
.. _SLIME: http://common-lisp.net/project/slime/
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.
2012-06-03 18:48:07 +02:00
* 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).
2012-06-03 18:48:07 +02:00
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
2012-06-14 10:30:47 +02:00
Links:
2012-07-01 19:20:00 +02:00
* `Online Documentation
<http://tkf.github.com/emacs-ipython-notebook/>`_
2012-08-24 00:03:42 +02:00
* `Wiki
<https://github.com/tkf/emacs-ipython-notebook/wiki>`_
+ `Screenshots
<https://github.com/tkf/emacs-ipython-notebook/wiki/Screenshots>`_
+ `Tips
<https://github.com/tkf/emacs-ipython-notebook/wiki/Tips>`_
2012-07-01 20:39:45 +02:00
* `Downloads
<https://github.com/tkf/emacs-ipython-notebook/tags>`_
2012-06-14 10:30:47 +02:00
* `Repository at GitHub
<https://github.com/millejoh/emacs-ipython-notebook>`_
2012-06-14 10:30:47 +02:00
* `Issue Tracker at GitHub
<https://github.com/millejoh/emacs-ipython-notebook/issues>`_
2012-06-14 10:30:47 +02:00
2012-06-03 18:48:07 +02:00
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/millejoh/emacs-ipython-notebook.git
cd emacs-ipython-notebook/
2012-09-28 01:23:30 +02:00
lisp/zeroein.el
2012-09-28 01:23:30 +02:00
This will launch a new Emacs instance.
2012-06-14 10:30:47 +02:00
2012-09-28 01:23:30 +02:00
You can use environment variable ``EMACS`` to control Emacs executable
to use.::
EMACS=emacs-snapshot lisp/zeroein.el
2012-06-14 10:30:47 +02:00
2013-01-21 19:56:02 +01:00
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_ 2.0 or higher.
* `websocket.el`_ 0.9
2013-01-10 23:14:13 +01:00
* `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
2012-08-16 15:53:09 +02:00
``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.
2012-06-14 17:52:22 +02:00
Also, EIN heavily relies on standard Emacs libraries including EWOC,
2012-12-17 19:39:07 +01:00
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.
.. _IPython: http://ipython.org/
.. _websocket.el: https://github.com/ahyatt/emacs-websocket
2013-01-10 23:14:13 +01:00
.. _request.el: https://github.com/tkf/emacs-request
.. _mumamo: http://www.emacswiki.org/emacs/MuMaMo
.. _nXhtml: http://ourcomments.org/Emacs/nXhtml/doc/nxhtml.html
.. _python.el: https://github.com/fgallina/python.el
.. _auto-complete.el: http://cx4a.org/software/auto-complete/
.. _smartrep.el: https://github.com/myuhe/smartrep.el
Usage
=====
1. Install module.
2012-06-14 10:30:47 +02:00
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)
2012-05-11 00:12:16 +02:00
3. Start `IPython notebook server`_.
2012-05-11 00:12:16 +02:00
4. Hit ``M-x ein:notebooklist-open`` to open notebook list.
.. _`IPython notebook server`:
http://ipython.org/ipython-doc/stable/interactive/htmlnotebook.html
Subpackages
-----------
Enable `auto-complete.el`_::
(setq ein:use-auto-complete t)
2012-05-16 06:11:31 +02:00
;; Or, to enable "superpack" (a little bit hacky improvements):
;; (setq ein:use-auto-complete-superpack t)
Enable `smartrep.el`_::
(setq ein:use-smartrep t)
Keybindings - Notebook
2012-06-03 18:48:07 +02:00
-------------------
2012-06-03 18:48:07 +02:00
.. (ein:dev-insert-mode-map "\\{ein:notebook-mode-map}")
::
key binding
--- -------
C-c Prefix Command
C-x Prefix Command
2012-05-17 16:22:09 +02:00
ESC Prefix Command
2012-08-16 10:59:47 +02:00
. ein:notebook-complete-dot
C-: ein:shared-output-eval-string
2012-08-23 23:29:03 +02:00
<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
2012-08-23 23:29:03 +02:00
M-RET ein:worksheet-execute-cell-and-goto-next
2012-06-10 02:25:32 +02:00
M-, ein:pytools-jump-back-command
2012-06-03 18:48:07 +02:00
M-. ein:pytools-jump-to-source-command
2012-09-02 07:09:32 +02:00
M-n ein:worksheet-next-input-history
M-p ein:worksheet-previous-input-history
2012-05-17 16:22:09 +02:00
2012-08-23 23:29:03 +02:00
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
2012-08-16 15:53:09 +02:00
C-c C-o ein:console-open
2012-08-23 23:29:03 +02:00
C-c C-p ein:worksheet-goto-prev-input
2012-06-14 12:29:15 +02:00
C-c C-q ein:notebook-kill-kernel-then-close-command
2012-05-22 01:09:33 +02:00
C-c C-r ein:notebook-restart-kernel-command
2012-08-23 23:29:03 +02:00
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
2012-08-23 23:29:03 +02:00
C-c C-w ein:worksheet-copy-cell
2012-08-16 10:59:47 +02:00
C-c C-x ein:tb-show
2012-08-23 23:29:03 +02:00
C-c C-y ein:worksheet-yank-cell
C-c C-z ein:notebook-kernel-interrupt-command
2012-05-15 02:30:27 +02:00
C-c ESC Prefix Command
2012-09-02 07:09:32 +02:00
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
2012-08-23 23:29:03 +02:00
C-c C-S-l ein:worksheet-clear-all-output
2012-09-02 07:09:32 +02:00
C-c C-# ein:notebook-close
2012-08-23 23:29:03 +02:00
C-c C-' ein:worksheet-turn-on-autoexec
2012-07-01 19:20:00 +02:00
C-c C-, ein:pytools-jump-back-command
C-c C-. ein:pytools-jump-to-source-command
2012-09-02 07:09:32 +02:00
C-c C-/ ein:notebook-scratchsheet-open
2012-08-16 10:59:47 +02:00
C-c C-; ein:shared-output-show-code-cell-at-point
2012-08-23 23:29:03 +02:00
C-c <down> ein:worksheet-move-cell-down
C-c <up> ein:worksheet-move-cell-up
2012-05-15 02:30:27 +02:00
2012-09-02 07:09:32 +02:00
C-c M-+ ein:notebook-worksheet-insert-prev
2012-08-23 23:29:03 +02:00
C-c M-w ein:worksheet-copy-cell
2012-09-02 07:09:32 +02:00
C-c M-{ ein:notebook-worksheet-move-prev
C-c M-} ein:notebook-worksheet-move-next
.. // KEYS END //
Keybindings - Connect
2012-06-03 18:48:07 +02:00
------------------
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.
.. (ein:dev-insert-mode-map "\\{ein:connect-mode-map}")
::
key binding
--- -------
C-c Prefix Command
ESC Prefix Command
2012-08-23 23:29:03 +02:00
. ein:completer-dot-complete
2012-08-16 10:59:47 +02:00
C-: ein:shared-output-eval-string
2012-06-03 18:48:07 +02:00
2012-06-10 02:25:32 +02:00
M-, ein:pytools-jump-back-command
2012-06-03 18:48:07 +02:00
M-. ein:pytools-jump-to-source-command
2012-08-16 10:59:47 +02:00
C-c C-a ein:connect-toggle-autoexec
2012-06-10 02:25:32 +02:00
C-c C-c ein:connect-run-or-eval-buffer
2012-08-23 23:29:03 +02:00
C-c C-f ein:pytools-request-tooltip-or-help
C-c TAB ein:completer-complete
2012-08-16 10:59:47 +02:00
C-c C-l ein:connect-reload-buffer
2012-08-23 23:29:03 +02:00
C-c C-o ein:console-open
2012-06-03 18:48:07 +02:00
C-c C-r ein:connect-eval-region
2012-08-16 10:59:47 +02:00
C-c C-x ein:tb-show
2012-06-03 18:48:07 +02:00
C-c C-z ein:connect-pop-to-notebook
2012-07-01 19:20:00 +02:00
C-c C-, ein:pytools-jump-back-command
C-c C-. ein:pytools-jump-to-source-command
2012-09-02 07:09:32 +02:00
C-c C-/ ein:notebook-scratchsheet-open
2012-06-03 18:48:07 +02:00
.. // KEYS END //
License
=======
Emacs IPython Notebook is licensed under GPL v3.
See COPYING for details.