Must needs

If Geiser came with any guarantees, you’d break all of them by not using GNU Emacs 23.2 (or better: i regularly use it with a recent Emacs snapshot) and at least one of the supported Schemes, namely:

Since Geiser supports multiple REPLs, having all of them will just add to the fun.

You’ll also need Geiser itself. The quickest installation is via its ELPA package, as described in the next section. If you prefer to use the source code directly, it’s not that difficult either: just keep on reading.

The easy and quick way

Did i mention that the easiest way of installing Geiser is using its ELPA package? If you’re using Emacs 24, ELPA is already there; for earlier versions, the page i just linked to twice will tell you where to find the goodies.

ELPA packages live in repositories accessible via HTTP. You can find Geiser’s package in either MELPA stable or, if you like living on the bleeding edge, MELPA (directly from the git repo). To tell Emacs that an ELPA repo exists, you add it to package-archives:

(require 'package)
;;; either the stable version:

(add-to-list 'package-archives
  ;; choose either the stable or the latest git version:
  ;; '("melpa-stable" . "")
  '("melpa-unstable" . ""))


And then installing Geiser is as easy as:

M-x package-install RET geiser RET

Alternatively, you can manually download the package file, and install from your local disk with M-x package-install-file.

If you plan to use Chicken, you’ll need also to fire a terminal and configure a couple of Chicken eggs:

$ chicken-install -s apropos chicken-doc
$ cd `csi -p '(chicken-home)'`
$ curl | sudo tar zx

With that, you are pretty much all set up. See The REPL to start using Geiser.

And, by the way, if you prefer to keep reading this manual within Emacs, C-h i m Geiser RET will bring you to the info version of it that you just installed!

Installing from source

Downloading Geiser

The latest release tarball can be found here. Just download geiser-0.10.tar.gz and untar it in a directory of your choice.

If you feel like living on the bleeding edge, just grab Geiser from its Git repository over at Savannah, either with the following incantation:

git clone git://

or, if you happen to live behind a firewall, with the alternative:

git clone

You can also follow Geiser’s development in one or three mirrors that are kept synchronized with the one at Savannah.

Either way, you’ll now be in possession of a copy of Geiser’s libre code. I’ll follow you into its directory and the next section.

Setting it up

Geiser is ready to be used out of the box without much more ado. For the sake of concreteness, let’s assume you put its source in the directory ‘~/lisp/geiser’. All you need to do is to add the following line to your Emacs initialisation file (be it ‘~/.emacs’, ‘~/.emacs.d/init.el’ or any of its moral equivalents):

(load-file "~/lisp/geiser/elisp/geiser.el")

or simply evaluate that form inside Emacs (you wouldn’t kill a friend just to start using Geiser, would you?). That’s it: you’re ready to go.

If you obtained the Geiser source tree from a release tarball, you can even continue to read this fine manual inside Emacs by opening ‘doc/’ using C-u C-h i. The manual is also available in PDF format here.

What? You still here? I promise the above is all that’s needed to start using Geiser. But, in case you are missing your configure/make all install routine, by all means, you can go through those motions to byte compile and install Geiser too. That is, you enter the source directory and (since we grabbed the development tree) run the customary autogen script:

$ cd ~/lisp/geiser
$ ./

I recommend that you compile Geiser in a separate directory:

$ mkdir build && cd build
$ ../configure
<some drivel here>
$ make all
<more of the above>

Now you have two options: loading the byte-compiled Geiser from the ‘elisp’ subdirectory, or installing it system-wide. To load the byte-code from here, add this line to your initialisation file:

(load "~/lisp/geiser/build/elisp/geiser-load")

and eval that form and you’re done (you could also restart Emacs, but killing your friends is widely considered bad form). Yes, that’s load and ‘geiser-load’ instead of load-file and ‘geiser.el’.

If you prefer a system-wide installation, just type:

$ sudo make install

With the above spell, Geiser will be compiled and installed in a safe place inside Emacs’ load path. To load it into Emacs you’ll need, instead of the load-file form above, the following line in your initialisation file:

(require 'geiser-install)

Please note that we’re requiring geiser-install, and not geiser, and that there’s no load-file to be seen this time. There are some ways of fine-tuning this process, mainly by providing additional arguments in the call to configure: you’ll find those gory details in the file called ‘INSTALL’, right at the root of the source tree. The installation will also take care of placing this manual, in Info format, where Emacs can find it, so you can continue to learn about Geiser inside its natural habitat. See you there and into the next chapter!


Although Geiser does not need them, it plays well with (and is enhanced by) the following Emacs packages:

You just need to install and setup them as usual, for every package’s definition of usual. Geiser will notice their presence and react accordingly.