Skip to content


Subversion checkout URL

You can clone with
Download ZIP


here are my changes, if you want them #2

merged 5 commits into from

2 participants


It clears up the doc a little and my fork of this repo has your emacs binary attached.

I'll recompile it at some point in the way we discussed (using --prefix=/app/emacs or some such)


Sorry, missed this somehow earlier. Looks good; thanks.

@technomancy technomancy merged commit 3fbf047 into technomancy:master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Aug 14, 2012
  1. @nicferrier
  2. @nicferrier

    fix the detect script

    nicferrier committed
  3. @nicferrier

    fix the github download

    nicferrier committed
Commits on Aug 15, 2012
  1. @nicferrier

    fix README

    nicferrier committed
  2. @nicferrier

    markup change

    nicferrier committed
This page is out of date. Refresh to see the latest.
Showing with 28 additions and 17 deletions.
  1. +25 −14
  2. +2 −2 bin/compile
  3. +1 −1  bin/detect
@@ -1,13 +1,20 @@
# Heroku buildpack: Emacs Lisp
-This is an Emacs Lisp Heroku buildpack. It is probably only useful
-with [Elnode](
+This is an Emacs Lisp Heroku buildpack for Elnode.
+First make sure you have at LEAST heroku gem version 2.11.0+
## Usage
+Make a git repository with a file start-elnode.el:
-;;; init.el
-(require 'elnode (concat load-file-name "elnode.el"))
+;;; start-elnode.el
+(setq package-archives '(("marmalade" . "")))
+(package-install 'elnode)
(defun handler (httpcon)
"Demonstration function"
@@ -16,13 +23,19 @@ with [Elnode](
`("Server" . ,(concat "GNU Emacs " emacs-version)))
(elnode-http-return httpcon "<html><body><h1>Hello from Emacs!</h1></body></html>"))
-(elnode-start 'handler (string-to-number (or (getenv "PORT") "8080")) "")
+ 'handler
+ :port (string-to-number (or (getenv "PORT") "8080"))
+ :host "")
(while t (accept-process-output nil 1))
- # requires heroku gem version 2.11.0+
- $ heroku create --stack cedar --buildpack
+add heroku as a remote to the repo:
+ $ heroku create --stack cedar --buildpack
+and then deploy the app by pushing to heroku:
$ git push heroku master
@@ -30,20 +43,18 @@ with [Elnode](
-----> Fetching custom buildpack
-----> Emacs Lisp app detected
-----> Downloading Emacs
- Downloading Emacs 24 pretest from
+ Downloading Emacs 24 pretest from github
-The buildpack will detect that your app has an `init.el` in the root
+The buildpack will detect that your app has a `start-elnode.el` in the root
and download a copy of the Emacs 24 pretest to bundle in your slug.
The Procfile for Emacs Lisp apps currently needs to untar that copy of
Emacs before running and symlink it to /tmp/emacs, like this:
- web: tar xzf emacs.tar.gz && ln -s $PWD/emacs /tmp/emacs; emacs/bin/emacs --daemon --load init.el
+ web: tar xzf emacs.tar.gz && ln -s $PWD/emacs /tmp/emacs; emacs/bin/emacs --daemon --load start-elnode.el
-This is obviously undesired since it means other users could interfere
-with this symlink, so a way to compile Emacs without referring to the
-/tmp directory needs to be discovered. Until then, don't use this
-buildpack for anything you would need to keep secure.
+## Re-compiling the buildpack Emacs
The current Emacs tarball is compiled from the pretest of version 24
with this invocation:
4 bin/compile
@@ -7,6 +7,6 @@ indent() {
echo "-----> Found an init.el file."
# TODO: cache this
-echo "Downloading Emacs 24 pretest from" | indent
-curl -s -o $1/emacs.tar.gz
+echo "Downloading Emacs 24 pretest from github..." | indent
+curl -L -s -o $1/emacs.tar.gz
echo "...done" | indent
2  bin/detect
@@ -1,6 +1,6 @@
-if [ -f $1/init.el ]; then
+if [ -f $1/start-elnode.el ]; then
echo "Emacs Lisp"
exit 0
Something went wrong with that request. Please try again.