• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

doc/H07-May-2022-719584

elisp/H23-Feb-2016-5,2124,081

src/H23-Feb-2016-2,2061,567

.gitignoreH A D23-Feb-201629 65

AUTHORSH A D23-Feb-2016630 1817

ChangeLogH A D23-Feb-201643 KiB1,6401,162

INSTALLH A D23-Feb-20162.1 KiB5743

INSTALL.WIN32H A D23-Feb-20161.8 KiB4534

MakefileH A D23-Feb-20162.7 KiB11981

NEWSH A D23-Feb-20167.5 KiB187137

READMEH A D23-Feb-20163.3 KiB8968

README.ie-sessionH A D23-Feb-20161.9 KiB6236

release.shH A D23-Feb-20161.1 KiB4436

README

1distel -- Distributed Emacs Lisp for Erlang.
2------------------------------------------------------------
3
4Distel is a library for Emacs<->Erlang communication, plus a suite of
5tools built on top of it, such as a debugger front-end. It works by
6using the Erlang distribution protocol to connect Emacs with regular
7Erlang nodes, turning it into a very convenient user-interface
8toolkit.
9
10After the INSTALL procedure, you will have an extended Erlang mode any
11time you edit erlang files. You can see that this is enabled from the
12mode-line string "Erlang EXT", instead of just "Erlang". To see the
13available commands, use `describe-mode' (C-h m), which describes all
14the currently activated modes. Near the bottom of its output you will
15find this description:
16
17  Extensions to erlang-mode for communicating with a running Erlang node.
18
19These commands generally communicate with an Erlang node. The first
20time you use one, you will be prompted for the name of the node to
21use.
22
23Here's a subset of the available commands. Use `describe-mode' (C-h m)
24on any Distel buffer when you want to know what commands are
25available.
26
27C-c C-d n - set the erlang node name
28C-c C-d g - upload the distel modules to the erlang node
29
30M-/       - Complete a module or remote function name.
31M-.       - Jump from a function call to its definition.
32M-,       - Jump back from a function definition (multi-level).
33C-c C-d : - Evaluate an erlang expression from the minibuffer.
34C-c C-d f - Refactor expressions in the region as a new function.
35C-c C-d F - Find a module.
36C-c C-d i - Toggle debug interpretping of the module.
37C-c C-d b - Toggle a debugger breakpoint at the current line.
38C-c C-d p - Profile (with fprof) an expression from the minibuffer.
39C-c C-d L - Reload an Erlang module.
40C-c C-d r - Reload all Erlang modules that are out of date.
41C-c C-d w - Who calls function under point.
42C-c C-d H - Show the html documentation for a function.
43C-c C-d Z - Show the signature for a function.
44
45To get more information about a particular command, use "C-h k"
46followed by the command's key sequence. For general information about
47Emacs' online help, use "C-h ?".
48
49If you want to write new commands of your own, the programmer's manual
50tells you how. You can make a postscript copy with "make postscript",
51or an Info version with "make info" and "make info_install".
52
53For more background about the "Session" commands, have a look in
54README.ie-session.
55
56Hope you enjoy, and please send hacks or feedback to luke@bluetail.com(*)!
57
58PS: The "dynamic TAGS" with M-. and M-, is the coolest bit to get
59started with!
60
61Compatibility notes:
62
63  The profiler front end requires >= R8B (to get fprof)
64  The debugger front end requires >= R8B-1
65
66  Distel itself is not formally tested, but it has enough savvy users
67that it'll typically run on the last 2 versions of Erlang and Emacs
68(as of 2008 OTP R11/R12 and Emacs 21/22).
69
70(*) Luke Gorrie is unfortunately no longer involved with Distel, and
71Blutail no longer exists...
72  there is of course the distel-hackers mailing list;
73https://lists.sourceforge.net/lists/listinfo/distel-hackers
74
75  and the issue tracker at google;
76http://code.google.com/p/distel
77
78FAQ
791. Can't handle event closed in state  derl-recv-challenge-ack
80
81this is what you get if the erlang node and the distel node disagree
82one what cookie to use.
83
84Use (in erl)
85 erlang:get_cookie()
86and (in emacs)
87 M-x erl-get-cookie
88to check the cookies.
89

README.ie-session

1This file aims to describe what the distel-ie package is.
2
3The 'ie' suffix is an acronym for "Interactive Erlang".
4
5The original idea was to create something like the *scratch* buffer in emacs,
6where you can play around with the language: define functions see how things
7work etc. So in short, distel-ie is a shell with the unique feature of allowing
8 for functions to be defined.
9
10Example:
11
12Start a distel-ie session by doing : M-x erl-ie-session, or, if you run the
13distel extension minor mode: C-c C-d s
14
15now type (without quotes) :
16
17"sista(W) -> lists:last(W)."
18
19mark this region and press C-M-x, the function sista/1 is now defined and ready
20to be used from the session. You can try and call this function:
21
22"sista([1, 2, 3, distel_rocks])."
23
24Again, mark this region and press C-M-x, the result should come as no surprise
25:-)
26
27
28KEYBINDINGS:
29
30These keybindings are available when you run the distel extension minor mode
31
32C-c C-d s : Makes a session buffer the current buffer, if no session exists,
33            it creates a new one.
34
35C-M-x     : Evaluates the marked region. If the marked region contains a
36            function definition, the function is defined. The result of the
37            evaluation is returned on the minibuffer or in a new buffer.
38
39C-u C-M-x : Same as above, but the results ends up in the session buffer.
40
41C-c C-d r : Copies the marked region (in a file buffer) to the session buffer.
42            If no session exists, a session is created.
43
44C-c C-d c : Same as above but copies an entire buffer.
45
46
47
48THINGS NOT WORKING/TODO:
49
50- Evaluating a region containing more than one function definition is not
51  working.
52
53- It would be nice to not having to mark the region yourself,
54  erlang-mark-function or similar would be convenient, but is currently not
55  a viable option. ("fun(X) ->\nlists:last(X)\nend." is not marking the
56  correct region).
57
58
59Comments and suggestions are welcome,
60
61email_the_author() -> lists:reverse("ei.lu@nillaw.divad").
62