Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
distel -- Distributed Emacs Lisp for Erlang.

Distel is a library for Emacs<->Erlang communication, plus a suite of
tools built on top of it, such as a debugger front-end. It works by
using the Erlang distribution protocol to connect Emacs with regular
Erlang nodes, turning it into a very convenient user-interface

After the INSTALL procedure, you will have an extended Erlang mode any
time you edit erlang files. You can see that this is enabled from the
mode-line string "Erlang EXT", instead of just "Erlang". To see the
available commands, use `describe-mode' (C-h m), which describes all
the currently activated modes. Near the bottom of its output you will
find this description:

  Extensions to erlang-mode for communicating with a running Erlang node.

These commands generally communicate with an Erlang node. The first
time you use one, you will be prompted for the name of the node to

Here's a subset of the available commands. Use `describe-mode' (C-h m)
on any Distel buffer when you want to know what commands are

C-c C-d n - set the erlang node name
C-c C-d g - upload the distel modules to the erlang node

M-/       - Complete a module or remote function name.
M-.       - Jump from a function call to its definition.
M-,       - Jump back from a function definition (multi-level).
C-c C-d : - Evaluate an erlang expression from the minibuffer.
C-c C-d f - Refactor expressions in the region as a new function.
C-c C-d F - Find a module.
C-c C-d i - Toggle debug interpretping of the module.
C-c C-d b - Toggle a debugger breakpoint at the current line.
C-c C-d p - Profile (with fprof) an expression from the minibuffer.
C-c C-d L - Reload an Erlang module.
C-c C-d r - Reload all Erlang modules that are out of date.
C-c C-d w - Who calls function under point.
C-c C-d H - Show the html documentation for a function.
C-c C-d Z - Show the signature for a function.

To get more information about a particular command, use "C-h k"
followed by the command's key sequence. For general information about
Emacs' online help, use "C-h ?".

If you want to write new commands of your own, the programmer's manual
tells you how. You can make a postscript copy with "make postscript",
or an Info version with "make info" and "make info_install".

For more background about the "Session" commands, have a look in

Hope you enjoy, and please send hacks or feedback to*)!

PS: The "dynamic TAGS" with M-. and M-, is the coolest bit to get
started with!

Compatibility notes:

  The profiler front end requires >= R8B (to get fprof)
  The debugger front end requires >= R8B-1

  Distel itself is not formally tested, but it has enough savvy users
that it'll typically run on the last 2 versions of Erlang and Emacs
(as of 2008 OTP R11/R12 and Emacs 21/22).

(*) Luke Gorrie is unfortunately no longer involved with Distel, and
Blutail no longer exists...
  there is of course the distel-hackers mailing list;

  and the issue tracker at google;

1. Can't handle event closed in state  derl-recv-challenge-ack

this is what you get if the erlang node and the distel node disagree
one what cookie to use.

Use (in erl)
and (in emacs)
 M-x erl-get-cookie
to check the cookies.