MacPython Logo from __future__ import *

buy music albums Silver Apples buy mp3 albums Tarrus Riley buy tracks mp3 Kravits buy Reaper albums mp3 buy Kravits albums music buy music Evita CD online albums mp3 Silver Apples download Madonna CD music buy tracks music Kravits download music albums Silver Apples

2007-03-16

Distel and Erlang mode for Emacs, on Mac OS X

Filed under: erlang — bob @ 6:19 pm

In the comments of my post on Erlang Mode for Emacs Tobbe pointed me at the new Distel repository for Distel. I had originally tried to install Distel last year when I began with Erlang but it didn't work. It works now! Here's the deal.

  1. Check out Distel. In my case I'm going to check it out to /Users/bob/src/distel:

    $ cd /Users/bob/src
    $ svn co http://distel.googlecode.com/svn/trunk distel
    
  2. Configure and compile Distel:

    $ ./configure
    $ make
    
  3. Configure Distel and configure Erlang mode, ensure that the inferior Erlang shell has an explicit node name of emacs so that Distel can connect to the. Here's my full .emacs:

    (add-to-list 'load-path  "/usr/local/lib/erlang/lib/tools-2.5.3/emacs")
          (setq erlang-root-dir "/usr/local/lib/erlang")
          (setq exec-path (cons "/usr/local/lib/erlang/bin" exec-path))
          (require 'erlang-start)
    (add-to-list 'load-path "/Users/bob/src/distel/elisp")
          (require 'distel)
          (distel-setup)
    
    ;; prevent annoying hang-on-compile
    (defvar inferior-erlang-prompt-timeout t)
    ;; default node name to emacs@localhost
    (setq inferior-erlang-machine-options '("-sname" "emacs"))
    ;; tell distel to default to that node
    (setq erl-nodename-cache
          (make-symbol
           (concat
            "emacs@"
            ;; Mac OS X uses "name.local" instead of "name", this should work
            ;; pretty much anywhere without having to muck with NetInfo
            ;; ... but I only tested it on Mac OS X.
            (car (split-string (shell-command-to-string "hostname"))))))
    
  4. Add Distel to your ~/.erlang so that it's on your Erlang code path:

    $ echo 'code:add_pathsz(["/Users/bob/src/distel/ebin"]).' >> ~/.erlang
    

If the Distel installation was done properly your Emacs mode line will be displayed as (Erlang EXT) next time you're editing an Erlang module. If you get a "nodedown: ..." message when executing a Distel command that means you haven't started a shell yet (C-c C-z). A good test is to stick your insertion point at a function name and hit M-. to get to its definition. M-TAB is auto-completion. I haven't used too much else from it yet.

(Now here's to hoping I don't have to learn any more elisp, ever).

No Comments »

No comments yet.

RSS feed for comments on this post.

Leave a comment

Powered by WP-Hashcash.

Powered by WordPress