No description
Find a file
Takafumi Arakaki 5a65aba368 Add DATA-TYPE argument to ein:query-ajax
This solves the problem due to the url-retrieve gotcha.

Main changes:
* Separation of the function to parse buffer and callback.
  This is good because parsed data can be used from multiple
  callbacks (SUCCESS and STATUS-CODE).
* As a result, current buffer for callbacks is not process
  buffer anymore. Callbacks should not assume any particular
  current buffer.
* RESPONSE-STATUS is added to the arguments for callbacks
  to pass around the value of url-http-response-status.

Previous attempts:
* cb5f53c183:
  Simpler and better fix than the previous one
* fff269fc39:
  ein:notebooklist-delete-notebook works again
2012-05-26 20:12:31 +02:00
tests Allow no undo after deleting a cell 2012-05-25 17:57:52 +02:00
.gitmodules Add test: ein:notebook-execute-current-cell 2012-05-17 18:41:28 +02:00
debug-ein.el Set mumamo-background-chunk-major in debug-ein.el 2012-05-21 15:20:01 +02:00
ein-ac.el Use ac-source-ein-cached in connected buffer 2012-05-23 13:42:54 +02:00
ein-cell.el Fix a bug in ein:cell-to-json 2012-05-25 05:22:14 +02:00
ein-completer.el Remove ein:notebook-handle-shell-reply 2012-05-22 22:03:06 +02:00
ein-connect.el Show message when eval-ing code using ein-connect 2012-05-24 17:56:01 +02:00
ein-dev.el Suppress compile warning in ein-dev.el 2012-05-25 15:51:32 +02:00
ein-events.el Start using notification widget 2012-05-25 02:04:07 +02:00
ein-kernel.el Fix payload handler: %loadpy works now 2012-05-23 23:32:51 +02:00
ein-kill-ring.el Add ein-kill-ring module and its tests 2012-05-14 23:44:00 +02:00
ein-log.el Add ein:debug global switch 2012-05-25 22:19:05 +02:00
ein-mumamo.el Make ein:mumamo-*cell-mode customizeable 2012-05-22 04:20:39 +02:00
ein-node.el First commit of bare bone version 2012-05-07 14:41:15 +02:00
ein-notebook.el Add DATA-TYPE argument to ein:query-ajax 2012-05-26 20:12:31 +02:00
ein-notebooklist.el Add DATA-TYPE argument to ein:query-ajax 2012-05-26 20:12:31 +02:00
ein-notification.el Show "Restarting kernel..." message which fadeouts 2012-05-25 03:03:57 +02:00
ein-pager.el Fix ein:pager--open-with-text 2012-05-23 02:31:01 +02:00
ein-query.el Add DATA-TYPE argument to ein:query-ajax 2012-05-26 20:12:31 +02:00
ein-shared-output.el Add sections in ein-shared-output.el 2012-05-24 14:43:28 +02:00
ein-smartrep.el Make subpackage customization easier 2012-05-19 15:47:09 +02:00
ein-subpackages.el ein:dev-reload reconfigures sub-packages now 2012-05-24 17:36:15 +02:00
ein-utils.el Add ein:trim-indent and its tests 2012-05-23 13:24:21 +02:00
ein-websocket.el Workaround the problem in websocket.el 2012-05-13 21:29:38 +02:00
ein.el Autoload ein:connect-to-notebook 2012-05-23 11:09:54 +02:00
emacslisp.py Explain how to use elisp type output in README 2012-05-22 01:00:34 +02:00
README.rst Add keybind: C-c C-r restarts kernel 2012-05-22 01:09:33 +02:00

========================
 Emacs IPython Notebook
========================

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

Screenshot
==========

.. figure:: http://farm8.staticflickr.com/7125/7006219050_2d424b4ece_z.jpg
   :alt: 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.

.. _IPython: http://ipython.org/
.. _websocket.el: https://github.com/ahyatt/emacs-websocket
.. _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.
   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.

.. _`IPython notebook server`:
   http://ipython.org/ipython-doc/stable/interactive/htmlnotebook.html


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

.. (ein:dev-insert-notebook-mode-map)

::

   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

.. // KEYS END //


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

.. _`emacslisp.py`:
  https://github.com/tkf/emacs-ipython-notebook/blob/master/emacslisp.py