EPC (RPC stack for Emacs Lisp) for Python
- kiwanami/emacs-epc (Client and server implementation in Emacs Lisp and Perl.)
- tkf/emacs-jedi (Python completion for Emacs using EPC server.)
What is this?
EPC is an RPC stack for Emacs Lisp and Python-EPC is its server side and client side implementation in Python. Using Python-EPC, you can easily call Emacs Lisp functions from Python and Python functions from Emacs. For example, you can use Python GUI module to build widgets for Emacs (see examples/gtk/server.py for example).
Python-EPC is tested against Python 2.6, 2.7, 3.2 and 3.3.
To install Python-EPC and its dependency sexpdata, run the following command.:
pip install epc
Save the following code as
(You can find functionally the same code in examples/echo/server.py):
from epc.server import EPCServer server = EPCServer(('localhost', 0)) @server.register_function def echo(*a): return a server.print_port() server.serve_forever()
(require 'epc) (defvar my-epc (epc:start-epc "python" '("my-server.py"))) (deferred:$ (epc:call-deferred my-epc 'echo '(10)) (deferred:nextc it (lambda (x) (message "Return : %S" x)))) (message "Return : %S" (epc:call-sync my-epc 'echo '(10 40)))
If you have carton installed, you can run the above sample by simply typing the following commands:
make elpa # install EPC in a separated environment make run-sample # run examples/echo/client.el
For example of bidirectional communication and integration with GTK, see examples/gtk/server.py. You can run this example by:
make elpa make run-gtk-sample # run examples/gtk/client.el
Python-EPC is licensed under GPL v3. See COPYING for details.