replace broken autocomplete-mode link
[geiser.git] / doc / install.texi
blob55176cf0ce2b6664a1ee287c52d8704b6373cc5c
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 @item
28 @uref{http://call-cc.org, Chicken} @value{CHICKEN_VERSION} or better
29 @item
30 @uref{https://www.gnu.org/software/mit-scheme/, MIT/GNU Scheme}
31 @value{MIT_VERSION} or better
32 @item
33 @uref{http://synthcode.com/scheme/chibi/, Chibi Scheme}
34 @value{CHIBI_VERSION} or better
35 @item
36 @uref{http://www.scheme.com, Chez Scheme} @value{CHEZ_VERSION} or better
37 @end itemize
39 Since Geiser supports multiple REPLs, having all of them will just add
40 to the fun.
42 You'll also need Geiser itself.  The quickest installation is via its
43 ELPA package, as described in the next section.  If you prefer to use
44 the source code directly, it's not that difficult either: just keep on
45 reading.
47 @node The easy and quick way, From the source's mouth, Must needs, Installation
48 @section The easy and quick way
50 @cindex quick install
51 @cindex ELPA
52 Did i mention that the easiest way of installing Geiser is using its
53 @uref{http://emacswiki.org/emacs/ELPA, ELPA} package?  If you're using
54 Emacs 24, @uref{http://emacswiki.org/emacs/ELPA, ELPA} is already there;
55 for earlier versions, the page i just linked to twice will tell you
56 where to find the goodies.
58 ELPA packages live in repositories accessible via HTTP.  You can find
59 Geiser's package in either
60 @uref{http://stable.melpa.org/#/geiser, MELPA stable} or, if you
61 like living on the bleeding edge,
62 @uref{http://melpa.org/#/geiser, MELPA} (directly from the git
63 repo).  To tell Emacs that an ELPA repo exists, you add it to
64 @code{package-archives}:
66 @example
67 (require 'package)
68 ;;; either the stable version:
70 (add-to-list 'package-archives
71   ;; choose either the stable or the latest git version:
72   ;; '("melpa-stable" . "http://stable.melpa.org/packages/")
73   '("melpa-unstable" . "http://melpa.org/packages/"))
75 (package-initialize)
76 @end example
78 And then installing Geiser is as easy as:
80 @example
81 M-x package-install RET geiser RET
82 @end example
84 Alternatively, you can manually download the @uref{@value{PACKAGE},
85 package file}, and install from your local disk with @kbd{M-x
86 package-install-file}.
88 @cindex Chicken
89 @cindex Chicken installation
90 If you plan to use Chicken, you'll need also to fire a terminal and
91 configure a couple of Chicken eggs:
92 @example
93 $ chicken-install -s apropos chicken-doc
94 $ cd `csi -p '(chicken-home)'`
95 $ curl http://3e8.org/pub/chicken-doc/chicken-doc-repo.tgz | sudo tar zx
96 @end example
98 With that, you are pretty much all set up.  See @ref{The REPL} to start
99 using Geiser.
101 @ifnotinfo
102 And, by the way, if you prefer to keep reading this manual within Emacs,
103 @kbd{C-h i m Geiser RET} will bring you to the info version of it that
104 you just installed!
105 @end ifnotinfo
107 @node From the source's mouth, Friends, The easy and quick way, Installation
108 @section Installing from source
110 @subsubheading Downloading Geiser
112 @cindex use the source, Luke
113 The latest release tarball can be found @downfile{, here}.  Just
114 download @downfile{@value{TARBALL}, @value{TARBALL}} and untar it in a
115 directory of your choice.
117 If you feel like living on the bleeding edge, just grab Geiser from its
118 Git repository @uref{http://git.savannah.nongnu.org/cgit/geiser.git/, over
119 at Savannah}, either with the following incantation:
121 @example
122 git clone git://git.sv.gnu.org/geiser.git
123 @end example
125 @noindent or, if you happen to live behind a firewall, with the alternative:
127 @example
128 git clone http://git.sv.gnu.org/r/geiser.git
129 @end example
131 @noindent
132 You can also follow Geiser's development in
133 @uref{https://github.com/jaor/geiser, one}
134 @uref{http://repo.or.cz/w/geiser.git, or}
135 @uref{http://gitorious.org/geiser, three} mirrors that are kept
136 synchronized with the one at Savannah.
138 Either way, you'll now be in possession of a copy of Geiser's libre
139 code.  I'll follow you into its directory and the next section.
141 @subsubheading Setting it up
143 Geiser is ready to be used out of the box without much more ado.  For the
144 sake of concreteness, let's assume you put its source in the directory
145 @file{~/lisp/geiser}.  All you need to do is to add the following
146 line to your Emacs initialisation file (be it @file{~/.emacs},
147 @file{~/.emacs.d/init.el} or any of its moral equivalents):
149 @example
150 (load-file "~/lisp/geiser/elisp/geiser.el")
151 @end example
153 @noindent
154 or simply evaluate that form inside Emacs (you wouldn't kill a friend
155 just to start using Geiser, would you?).  That's it: you're ready to
156 @ifhtml
157 @ref{quick-start,,go}.
158 @end ifhtml
159 @ifnothtml
160 go (@pxref{The REPL}).
161 @end ifnothtml
163 @ifnotinfo
164 If you obtained the Geiser source tree from a release tarball, you can
165 even continue to read this fine manual inside Emacs by opening
166 @file{doc/geiser.info} using @kbd{C-u C-h i}.  The manual is also
167 available in PDF format @downfile{geiser-manual-@value{VERSION}.pdf,
168 here}.
169 @end ifnotinfo
171 @cindex byte-compilation
172 What?  You still here?  I promise the above is all that's needed to start
173 using Geiser.  But, in case you are missing your @t{configure/make all
174 install} routine, by all means, you can go through those motions to byte
175 compile and install Geiser too.  That is, you enter the source directory
176 and (since we grabbed the development tree) run the customary
177 @i{autogen} script:
179 @example
180 $ cd ~/lisp/geiser
181 $ ./autogen.sh
182 @end example
184 @noindent
185 I recommend that you compile Geiser in a separate directory:
187 @example
188 $ mkdir build && cd build
189 $ ../configure
190 <some drivel here>
191 $ make all
192 <more of the above>
193 @end example
195 Now you have two options: loading the byte-compiled Geiser from the
196 @file{elisp} subdirectory, or installing it system-wide.  To load the
197 byte-code from here, add this line to your initialisation file:
199 @example
200 (load "~/lisp/geiser/build/elisp/geiser-load")
201 @end example
203 @noindent
204 and eval that form and you're done (you could also restart Emacs, but
205 killing your friends is widely considered bad form).  Yes, that's
206 @code{load} and @file{geiser-load} instead of @code{load-file} and
207 @file{geiser.el}.
209 If you prefer a system-wide installation, just type:
211 @example
212 $ sudo make install
213 @end example
215 With the above spell, Geiser will be compiled and installed in a safe
216 place inside Emacs' load path.  To load it into Emacs you'll need,
217 @i{instead} of the @code{load-file} form above, the following line in
218 your initialisation file:
220 @example
221 (require 'geiser-install)
222 @end example
224 @noindent
225 Please note that we're requiring @code{geiser-install}, and @i{not}
226 @code{geiser}, and that there's no @code{load-file} to be seen this
227 time.  There are some ways of fine-tuning this process, mainly by
228 providing additional arguments in the call to @t{configure}: you'll find
229 those gory details in the file called @file{INSTALL}, right at the root
230 of the source tree.  The installation will also take care of placing this
231 manual, in Info format, where Emacs can find it, so you can continue to
232 learn about Geiser inside its natural habitat.  See you there and into
233 the next chapter!
235 @node Friends,  , From the source's mouth, Installation
236 @section Friends
238 Although Geiser does not need them, it plays well with (and is enhanced
239 by) the following Emacs packages:
241 @cindex ac-geiser
242 @cindex autocomplete
243 @cindex paredit
244 @cindex company
245 @cindex quack
246 @itemize @bullet
247 @item @uref{http://www.emacswiki.org/emacs/ParEdit, Paredit}.
248 @anchor{paredit}
249 Regardless of whether you use Geiser or not, you shouldn't be coding
250 in any Lisp dialect without the aid of Taylor Campbell's structured
251 editing mode.
252 @item @uref{http://company-mode.github.io/, Company}.
253 Nikolaj Schumacher's and Dmitry Gutov's @code{company-mode} provides a
254 generic front-end for completion engines (such as Geiser's), with pretty
255 and automatic completion lists.
256 @item @uref{https://github.com/xiaohanyu/ac-geiser/, ac-geiser}
257 If you prefer @code{auto-complete-mode} to @code{company-mode}, Xiao
258 Hanyu's @code{ac-geiser}, which provides a Geiser plugin for the
259 popular @uref{https://www.emacswiki.org/emacs/AutoComplete, Emacs Auto
260 Completion Mode}, is the package for you.  Like Geiser,
261 @code{ac-geiser} is available in Marmalade and MELPA, and also as an
262 @code{el-get} package.
263 @item @uref{http://www.neilvandyke.org/quack/, Quack}.
264 You can still use the many goodies provided by Neil van Dyke's
265 @code{quack-mode}, since most of them are not (yet) available in Geiser.
266 The only caveat might be a conflict between Quack's and Geiser's default
267 key bindings, which i'm sure you'll manage to tackle just fine.  It's
268 also probably a good idea to require @code{quack} @i{after} loading
269 @file{geiser.el} (or requiring a compiled version).
270 @end itemize
272 @noindent
273 You just need to install and setup them as usual, for every package's
274 definition of usual.  Geiser will notice their presence and react
275 accordingly.
277 @c Local Variables:
278 @c mode: texinfo
279 @c TeX-master: "geiser"
280 @c End: