Documentation updates
[geiser.git] / doc / install.texi
blob70b73bd31e31334bf0cd9109916f2059b7678aa3
1 @node Installation, The REPL, Introduction, Top
2 @chapter Installation
4 @menu
5 * Must needs::
6 * The easy and quick way::
7 * From the source's mouth::
8 * Friends::
9 @end menu
11 @node Must needs, The easy and quick way, Installation, Installation
12 @section Must needs
14 @cindex supported versions
15 @cindex versions supported
16 If Geiser came with any guarantees, you'd break all of them by not using
17 GNU Emacs @value{EMACS_VERSION} (or better: i regularly use it with a
18 recent Emacs snapshot) and at least one of the supported Schemes,
19 namely:
21 @itemize @bullet
22 @item
23 @uref{http://www.racket-lang.org, Racket} @value{RACKET_VERSION} or better
24 @item
25 @uref{http://www.gnu.org/software/guile, Guile} @value{GUILE_VERSION} or
26 better
27 @end itemize
29 Since Geiser supports multiple REPLs, having both of them will just add
30 to the fun.
32 You'll also need Geiser itself.  The quickest installation is via its
33 ELPA package, as described in the next section.  If you prefer to use
34 the source code directly, it's not that difficult either: just keep on
35 reading.
37 @node The easy and quick way, From the source's mouth, Must needs, Installation
38 @section The easy and quick way
40 @cindex quick install
41 @cindex ELPA
42 Did i mention that the easiest way of installing Geiser is using its
43 @uref{http://emacswiki.org/emacs/ELPA, ELPA} package?  If you're using
44 Emacs 24, @uref{http://emacswiki.org/emacs/ELPA, ELPA} is already there;
45 for earlier versions, the page i just linked to twice will tell you
46 where to find the goodies.
48 ELPA packages live in repositories accessible via HTTP.  You can find
49 Geiser's package either in @uref{http://marmalade-repo.org, Marmalade}
50 or in Geiser's repository, located at
51 @code{http://download.savannah.gnu.org/releases/geiser/packages}.  To
52 tell Emacs that a repo exists, you add it to @code{package-archives}:
54 @example
55 (require 'package)
56 (add-to-list 'package-archives
57   '("marmalade" . "http://marmalade-repo.org/packages/"))
58 ;; You don't need this one if you have marmalade:
59 ;; (add-to-list 'package-archives
60 ;;  '("geiser" . "http://download.savannah.gnu.org/releases/geiser/packages"))
61 (package-initialize)
62 @end example
64 And then installing Geiser is as easy as:
66 @example
67 M-x install-package RET geiser RET
68 @end example
70 Alternatively, you can manually download the @uref{@value{PACKAGE},
71 package file}, and install from your local disk with @kbd{M-x
72 package-install-file}
74 With that, you are pretty much all set up.  See @ref{The REPL} to start
75 using Geiser.
77 @ifnotinfo
78 And, by the way, if you prefer to keep reading this manual within Emacs,
79 @kbd{C-h i m Geiser RET} will bring you to the info version of it that
80 you just installed!
81 @end ifnotinfo
83 @node From the source's mouth, Friends, The easy and quick way, Installation
84 @section Installing from source
86 @subsubheading Downloading Geiser
88 @cindex use the source, Luke
89 The latest release tarball can be found @downfile{, here}, while older
90 versions are @uref{@value{OLD_DOWN_BASE}/, here}.  Just download
91 @downfile{@value{TARBALL}, @value{TARBALL}} and untar it in a directory
92 of your choice.
94 If you feel like living on the bleeding edge, just grab Geiser from its
95 Git repository @uref{http://git.savannah.nongnu.org/cgit/geiser.git/, over
96 at Savannah}, either with the following incantation:
98 @example
99 git clone git://git.sv.gnu.org/geiser.git
100 @end example
102 @noindent or, if you happen to live behind a firewall, with the alternative:
104 @example
105 git clone http://git.sv.gnu.org/r/geiser.git
106 @end example
108 @noindent
109 You can also follow Geiser's development in
110 @uref{https://github.com/jaor/geiser, one}
111 @uref{http://repo.or.cz/w/geiser.git, or}
112 @uref{http://gitorious.org/geiser, three} mirrors that are kept
113 synchronized with the one at Savannah.
115 Either way, you'll now be in possession of a copy of Geiser's libre
116 code.  I'll follow you into its directory and the next section.
118 @subsubheading Setting it up
120 Geiser is ready to be used out of the box without much more ado.  For the
121 sake of concreteness, let's assume you put its source in the directory
122 @file{~/lisp/geiser}.  All you need to do is to add the following
123 line to your Emacs initialisation file (be it @file{~/.emacs} or any of
124 its moral equivalents):
126 @example
127 (load-file "~/lisp/geiser/elisp/geiser.el")
128 @end example
130 @noindent
131 or simply evaluate that form inside Emacs (you wouldn't kill a friend
132 just to start using Geiser, would you?).  That's it: you're ready to
133 @ifhtml
134 @ref{quick-start,,go}.
135 @end ifhtml
136 @ifnothtml
137 go (@pxref{The REPL}).
138 @end ifnothtml
140 @ifnotinfo
141 If you obtained the Geiser source tree from a release tarball, you can
142 even continue to read this fine manual inside Emacs by opening
143 @file{doc/geiser.info} using @kbd{C-u C-h i}.  The manual is also
144 available in PDF format @downfile{geiser-manual-@value{VERSION}.pdf,
145 here}.
146 @end ifnotinfo
148 @cindex byte-compilation
149 What?  You still here?  I promise the above is all that's needed to start
150 using Geiser.  But, in case you are missing your @t{configure/make all
151 install} routine, by all means, you can go through those motions to byte
152 compile and install Geiser too.  That is, you enter the source directory
153 and (since we grabbed the development tree) run the customary
154 @i{autogen} script:
156 @example
157 $ cd ~/lisp/geiser
158 $ ./autogen.sh
159 @end example
161 @noindent
162 I recommend that you compile Geiser in a separate directory:
164 @example
165 $ mkdir build && cd build
166 $ ../configure
167 <some drivel here>
168 $ make all
169 <more of the above>
170 @end example
172 Now you have two options: loading the byte-compiled Geiser from the
173 @file{elisp} subdirectory, or installing it system-wide.  To load the
174 byte-code from here, add this line to your initialisation file:
176 @example
177 (load "~/lisp/geiser/build/elisp/geiser-load")
178 @end example
180 @noindent
181 and eval that form and you're done (you could also restart Emacs, but
182 killing your friends is widely considered bad form).  Yes, that's
183 @code{load} and @file{geiser-load} instead of @code{load-file} and
184 @file{geiser.el}.
186 If you prefer a system-wide installation, just type:
188 @example
189 $ sudo make install
190 @end example
192 With the above spell, Geiser will be compiled and installed in a safe
193 place inside Emacs load path.  To load it into Emacs you'll need,
194 @i{instead} of the @code{load-file} form above, the following line in
195 your initialisation file:
197 @example
198 (require 'geiser-install)
199 @end example
201 @noindent
202 Please note that we're requiring @code{geiser-install}, and @i{not}
203 @code{geiser}, and that there's no @code{load-file} to be seen this
204 time.  There are some ways of fine-tuning this process, mainly by
205 providing additional arguments in the call to @t{configure}: you'll find
206 those gory details in the file called @file{INSTALL}, right at the root
207 of the source tree.  The installation will also take care of placing this
208 manual, in Info format, where Emacs can find it, so you can continue to
209 learn about Geiser inside its natural habitat.  See you there and into
210 the next chapter!
212 @node Friends,  , From the source's mouth, Installation
213 @section Friends
215 Although Geiser does not need them, it plays well with (and is enhanced
216 by) the following Emacs packages:
218 @cindex paredit
219 @cindex company
220 @cindex quack
221 @itemize @bullet
222 @item @uref{http://www.emacswiki.org/emacs/ParEdit, Paredit}.
223 @anchor{paredit}
224 Regardless of whether you use Geiser or not, you shouldn't be coding
225 in any Lisp dialect without the aid of Taylor Campbell's structured
226 editing mode.
227 @item @uref{http://nschum.de/src/emacs/company-mode/, Company}.
228 Nikolaj Schumacher's @code{company-mode} provides a generic front-end
229 for completion engines (such as Geiser's).  Very nice if you like that
230 kind of thing: judge by yourself with the help of
231 @uref{http://www.screentoaster.com/watch/stU0lSRERIR1pYRFVdXVlRVFFV/company_mode_for_gnu_emacs,
232 this screencast}.
233 @item @uref{http://www.neilvandyke.org/quack/, Quack}.
234 You can still use the many goodies provided by Neil van Dyke's
235 @code{quack-mode}, since most of them are not (yet) available in Geiser.
236 The only caveat might be a conflict between Quack's and Geiser's default
237 key bindings, which i'm sure you'll manage to tackle just fine.  It's
238 also probably a good idea to require @code{quack} @i{after} loading
239 @file{geiser.el} (or requiring a compiled version).
240 @end itemize
242 @noindent
243 You just need to install and setup them as usual, for every package's
244 definition of usual.  Geiser will notice their presence and react
245 accordingly.
247 @c Local Variables:
248 @c mode: texinfo
249 @c TeX-master: "geiser"
250 @c End: