NEWS update
[geiser.git] / doc / install.texi
blob05fe9c41ab75a1e81d9dabe0cff9b293d20c9c57
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 @value{EMACS_VERSION} (or better: i regularly use it with a
17 recent Emacs snapshot) and at least one of the supported Schemes,
18 namely:
20 @itemize @bullet
21 @item
22 @uref{http://www.racket-lang.org, Racket} @value{RACKET_VERSION} or better
23 @item
24 @uref{http://www.gnu.org/software/guile, Guile} @value{GUILE_VERSION},
25 directly compiled from a recent checkout of
26 @uref{http://www.gnu.org/software/guile/repository.html, its Git
27 @i{master} branch}.
28 @end itemize
30 Since Geiser supports multiple REPLs, having both of them will just add
31 to the fun.
33 @subsubheading Downloading Geiser
35 @cindex use the source, Luke
36 You'll also need Geiser itself.  The latest release tarball can be found
37 @downfile{, here}, while older versions are @uref{@value{DOWN_BASE}/,
38 here}.  Just download @downfile{@value{TARBALL}, @value{TARBALL}}
39 and untar it in a directory of your choice.
41 If you feel like living on the bleeding edge, just grab Geiser from its
42 Git repository @uref{http://git.savannah.nongnu.org/cgit/geiser.git/, over
43 at Savannah}, either with the following incantation:
45 @example
46 git clone git://git.sv.gnu.org/geiser.git
47 @end example
49 @noindent or, if you happen to live behind a firewall, with the alternative:
51 @example
52 git clone http://git.sv.gnu.org/r/geiser.git
53 @end example
55 @noindent
56 You can also follow Geiser's development in
57 @uref{https://github.com/jaor/geiser, one}
58 @uref{http://repo.or.cz/w/geiser.git, or}
59 @uref{http://gitorious.org/geiser, three} mirrors that are kept
60 synchronized with the one at Savannah.
62 Either way, you'll now be in possession of a copy of Geiser's libre
63 code.  I'll follow you into its directory and the next section.
65 @node Setting it up, Friends, Must needs, Installation
66 @section Setting it up
68 Geiser is ready to be used out of the box without much more ado.  For the
69 sake of concreteness, let's assume you put its source in the directory
70 @file{~/lisp/geiser}.  All you need to do is to add the following
71 line to your Emacs initialisation file (be it @file{~/.emacs} or any of
72 its moral equivalents):
74 @example
75 (load-file "~/lisp/geiser/elisp/geiser.el")
76 @end example
78 @noindent
79 or simply evaluate that form inside Emacs (you wouldn't kill a friend
80 just to start using Geiser, would you?).  That's it: you're ready to
81 @ifhtml
82 @ref{quick-start,,go}.
83 @end ifhtml
84 @ifnothtml
85 go (@pxref{The REPL}).
86 @end ifnothtml
88 @ifnotinfo
89 If you obtained the Geiser source tree from a release tarball, you can
90 even continue to read this fine manual inside Emacs by opening
91 @file{doc/geiser.info} using @kbd{C-u C-h i}.  The manual is also
92 available in PDF format @downfile{geiser-manual-@value{VERSION}.pdf,
93 here}.
94 @end ifnotinfo
96 @cindex byte-compilation
97 What?  You still here?  I promise the above is all that's needed to start
98 using Geiser.  But, in case you are missing your @t{configure/make all
99 install} routine, by all means, you can go through those motions to byte
100 compile and install Geiser too.  That is, you enter the source directory
101 and (since we grabbed the development tree) run the customary
102 @i{autogen} script:
104 @example
105 $ cd ~/lisp/geiser
106 $ ./autogen.sh
107 @end example
109 @noindent
110 I recommend that you compile Geiser in a separate directory:
112 @example
113 $ mkdir build && cd build
114 $ ../configure
115 <some drivel here>
116 $ make all
117 <more of the above>
118 @end example
120 Now you have two options: loading the byte-compiled Geiser from the
121 @file{elisp} subdirectory, or installing it system-wide.  To load the
122 byte-code from here, add this line to your initialisation file:
124 @example
125 (load "~/lisp/geiser/build/elisp/geiser-load")
126 @end example
128 @noindent
129 and eval that form and you're done (you could also restart Emacs, but
130 killing your friends is widely considered bad form).  Yes, that's
131 @code{load} and @file{geiser-load} instead of @code{load-file} and
132 @file{geiser.el}.
134 If you prefer a system-wide installation, just type:
136 @example
137 $ sudo make install
138 @end example
140 With the above spell, Geiser will be compiled and installed in a safe
141 place inside Emacs load path.  To load it into Emacs you'll need,
142 @i{instead} of the @code{load-file} form above, the following line in
143 your initialisation file:
145 @example
146 (require 'geiser-install)
147 @end example
149 @noindent
150 Please note that we're requiring @code{geiser-install}, and @i{not}
151 @code{geiser}, and that there's no @code{load-file} to be seen this
152 time.  There are some ways of fine-tuning this process, mainly by
153 providing additional arguments in the call to @t{configure}: you'll find
154 those gory details in the file called @file{INSTALL}, right at the root
155 of the source tree.  The installation will also take care of placing this
156 manual, in Info format, where Emacs can find it, so you can continue to
157 learn about Geiser inside its natural habitat.  See you there and into
158 the next chapter!
160 @node Friends,  , Setting it up, Installation
161 @section Friends
163 Although Geiser does not need them, it plays well with (and is enhanced
164 by) the following Emacs packages:
166 @cindex paredit
167 @cindex company
168 @cindex quack
169 @itemize @bullet
170 @item @uref{http://www.emacswiki.org/emacs/ParEdit, Paredit}.
171 @anchor{paredit}
172 Regardless of whether you use Geiser or not, you shouldn't be coding
173 in any Lisp dialect without the aid of Taylor Campbell's structured
174 editing mode.
175 @item @uref{http://nschum.de/src/emacs/company-mode/, Company}.
176 Nikolaj Schumacher's @code{company-mode} provides a generic front-end
177 for completion engines (such as Geiser's).  Very nice if you like that
178 kind of thing: judge by yourself with the help of
179 @uref{http://www.screentoaster.com/watch/stU0lSRERIR1pYRFVdXVlRVFFV/company_mode_for_gnu_emacs,
180 this screencast}.
181 @item @uref{http://www.neilvandyke.org/quack/, Quack}.
182 You can still use the many goodies provided by Neil van Dyke's
183 @code{quack-mode}, since most of them are not (yet) available in Geiser.
184 The only caveat might be a conflict between Quack's and Geiser's default
185 key bindings, which i'm sure you'll manage to tackle just fine.  It's
186 also probably a good idea to require @code{quack} @i{after} loading
187 @file{geiser.el} (or requiring a compiled version).
188 @end itemize
190 @noindent
191 You just need to install and setup them as usual, for every package's
192 definition of usual.  Geiser will notice their presence and react
193 accordingly.
195 @c Local Variables:
196 @c mode: texinfo
197 @c TeX-master: "geiser"
198 @c End: