Better geiser-implementation-help (for Geiser hackers)
[geiser.git] / doc / install.texi
bloba4ea362a04d700f5de2ab11ee508a3670bb87502
1 @node Installation, The REPL, Introduction, Top
2 @chapter Installation
4 @menu
5 * Must needs::
6 * Setting it up::
7 * Friends::
8 @end menu
10 @node Must needs, Setting it up, Installation, Installation
11 @section Must needs
13 @cindex supported versions
14 @cindex versions supported
15 If Geiser came with any guarantees, you'd break all of them by not using
16 GNU Emacs 23 (or better, if there actually @i{is} anything better) and
17 at least one of the supported schemes, which right now are
18 @uref{http://www.racket-lang.org, Racket} 5.0.1 (or better) and the
19 latest and greatest @uref{http://www.gnu.org/software/guile, Guile} 1.9
20 directly compiled from a recent checkout of
21 @uref{http://www.gnu.org/software/guile/repository.html, its Git
22 @i{master} branch}. Since Geiser supports multiple REPLs, having both
23 of them will just add to the fun.
25 @cindex use the source, Luke
26 You'll also need Geiser itself. Until version 0.1 is out (which will
27 happen shortly after i finish writing a decent manual), your best bet is
28 grabbing Geiser from its Git repository over at
29 @uref{http://git.savannah.gnu.org/cgit/geiser.git/, Savannah}, either
30 with the following incantation:
31 @example
32 git clone git://git.sv.gnu.org/geiser.git
33 @end example
34 @noindent or, if you happen to live under a firewall, with the alternative:
35 @example
36 git clone http://git.sv.gnu.org/r/geiser.git
37 @end example
38 @noindent
39 If you don't want to install Git, you can instead grab a tarball from
40 Geiser's @uref{http://gitorious.org/geiser/mainline/commits/master,
41 Gitorious mirror}, where you'll find a
42 @uref{http://gitorious.org/geiser/mainline/archive-tarball/master, link}
43 generating said tarball for you. Either way, you'll now be in possession
44 of a copy of Geiser's libre code. I'll follow you into its directory and
45 the next section.
47 @node Setting it up, Friends, Must needs, Installation
48 @section Setting it up
50 Geiser is ready to be used out of the box without much more ado. For the
51 sake of concreteness, let's assume you put its source in the directory
52 @file{~/lisp/geiser}. All you need to do is to add the following
53 line to your Emacs initialisation file (be it @file{~/.emacs} or any of
54 its moral equivalents):
55 @example
56 (load-file "~/lisp/geiser/elisp/geiser.el")
57 @end example
58 @noindent
59 or simply evaluate that form inside Emacs (you wouldn't kill a friend
60 just to start using Geiser, would you?). That's it: you're ready to
61 @ref{quick-start,,go}. You can even continue to read this fine manual
62 inside Emacs by opening @file{doc/geiser.info} using @kbd{C-u C-h
63 i}.
65 @cindex byte-compilation
66 What? You still here? I promise the above is all that's needed to start
67 using Geiser. But, in case you are missing your @t{configure/make all
68 install} routine, by all means, you can go through those motions to byte
69 compile and install Geiser too. That is, you enter the source directory
70 and (since we grabbed the development tree) run the customary
71 @i{autogen} script:
72 @example
73 $ cd ~/lisp/geiser
74 $ ./autogen.sh
75 @end example
76 @noindent
77 I recommend that you compile Geiser in a separate directory:
78 @example
79 $ mkdir build && cd build
80 $ ../configure
81 <some drivel here>
82 $ make all
83 <more of the above>
84 @end example
85 Now you have two options: loading the byte-compiled Geiser from the
86 @file{elisp} subdirectory, or installing it system-wide. To load the
87 bytecode from here, add this line to your initialisation file:
88 @example
89 (load "~/lisp/geiser/build/elisp/geiser-load")
90 @end example
91 and eval that form or (gasp!) restart Emacs and you're done. Yes, that's
92 @code{load} and @file{geiser-load} instead of @code{load-file} and
93 @file{geiser.el}.
95 If you prefer a system-wide installation, just type:
96 @example
97 $ sudo make install
98 @end example
99 With the above spell, Geiser will be compiled and installed in a safe
100 place inside Emacs load path. To load it into Emacs you'll need,
101 @i{instead} of the @code{load-file} form above, the following line in
102 your initialisation file:
103 @example
104 (require 'geiser-install)
105 @end example
106 @noindent
107 Please note that we're requiring @code{geiser-install}, and @i{not}
108 @code{geiser}, and that there's no @code{load-file} to be seen this
109 time. There are some ways of fine-tuning this process, mainly by
110 providing additional arguments in the call to @t{configure}: you'll find
111 those gory details in the file called @file{INSTALL}, right at the root
112 of the source tree. The installation will also take care of placing this
113 manual, in Info format, where Emacs can find it, so you can continue to
114 learn about Geiser inside its natural habitat. See you there and into
115 the next chapter!
117 @node Friends,  , Setting it up, Installation
118 @section Friends
120 Although Geiser does not need them, it plays well with (and is enhanced
121 by) the following Emacs packages:
123 @cindex paredit
124 @cindex company
125 @cindex quack
126 @itemize @bullet
127 @item @uref{http://www.emacswiki.org/emacs/ParEdit, Paredit}.
128 @anchor{paredit}
129 Regardless of whether you use Geiser or not, you shouldn't be coding
130 in any Lisp dialect without the aid of Taylor Campbell's structured
131 editing mode.
132 @item @uref{http://nschum.de/src/emacs/company-mode/, Company}.
133 Nikolaj Schumacher's @code{company-mode} provides a nice front-end for
134 completion engines (such as Geiser's). Very nice if you like that kind
135 of thing: judge by yourself with the help of
136 @uref{http://www.screentoaster.com/watch/stU0lSRERIR1pYRFVdXVlRVFFV/company_mode_for_gnu_emacs,
137 this screencast}.
138 @item @uref{http://www.neilvandyke.org/quack/, Quack}.
139 You can still use the many goodies provided by Neil van Dyke's
140 @code{quack-mode}, since most of them are not (yet) available in Geiser.
141 The only caveat might be a conflict between Quack's and Geiser's default
142 key bindings, which i'm sure you'll manage to tackle just fine.
143 @end itemize
144 You just need to install and setup them as usual, for every package's
145 definition of usual. Geiser will notice their presence and react
146 accordingly.
148 @c Local Variables:
149 @c mode: texinfo
150 @c TeX-master: "geiser"
151 @c End: