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