1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
|
@node Installation, The REPL, Introduction, Top
@chapter Installation
@menu
* Must needs::
* The easy and quick way::
* From the source's mouth::
* Friends::
@end menu
@node Must needs, The easy and quick way, Installation, Installation
@section Must needs
@cindex supported versions
@cindex versions supported
If Geiser came with any guarantees, you'd break all of them by not using
GNU Emacs @value{EMACS_VERSION} (or better: i regularly use it with a
recent Emacs snapshot) and at least one of the supported Schemes,
namely:
@itemize @bullet
@item
@uref{http://www.racket-lang.org, Racket} @value{RACKET_VERSION} or better
@item
@uref{http://www.gnu.org/software/guile, Guile} @value{GUILE_VERSION} or
better
@item
@uref{http://call-cc.org, Chicken} @value{CHICKEN_VERSION} or better
@item
@uref{https://www.gnu.org/software/mit-scheme/, MIT/GNU Scheme}
@value{MIT_VERSION} or better
@item
@uref{http://synthcode.com/scheme/chibi/, Chibi Scheme}
@value{CHIBI_VERSION} or better
@item
@uref{http://www.scheme.com, Chez Scheme} @value{CHEZ_VERSION} or better
@end itemize
Since Geiser supports multiple REPLs, having all of them will just add
to the fun.
You'll also need Geiser itself. The quickest installation is via its
ELPA package, as described in the next section. If you prefer to use
the source code directly, it's not that difficult either: just keep on
reading.
@node The easy and quick way, From the source's mouth, Must needs, Installation
@section The easy and quick way
@cindex quick install
@cindex ELPA
Did i mention that the easiest way of installing Geiser is using its
@uref{http://emacswiki.org/emacs/ELPA, ELPA} package? If you're using
Emacs 24, @uref{http://emacswiki.org/emacs/ELPA, ELPA} is already there;
for earlier versions, the page i just linked to twice will tell you
where to find the goodies.
ELPA packages live in repositories accessible via HTTP. You can find
Geiser's package in either
@uref{http://stable.melpa.org/#/geiser, MELPA stable} or, if you
like living on the bleeding edge,
@uref{http://melpa.org/#/geiser, MELPA} (directly from the git
repo). To tell Emacs that an ELPA repo exists, you add it to
@code{package-archives}:
@example
(require 'package)
;;; either the stable version:
(add-to-list 'package-archives
;; choose either the stable or the latest git version:
;; '("melpa-stable" . "http://stable.melpa.org/packages/")
'("melpa-unstable" . "http://melpa.org/packages/"))
(package-initialize)
@end example
And then installing Geiser is as easy as:
@example
M-x package-install RET geiser RET
@end example
Alternatively, you can manually download the @uref{@value{PACKAGE},
package file}, and install from your local disk with @kbd{M-x
package-install-file}.
@cindex Gambit
@cindex Gambit installation
If you plan to use Gambit, you'll also need to open a terminal and
configure a couple of awesome Gambit's features:
SETUP :
1 - clone the last version of gambit and of this repo
2 - configure gambit using --enable-rtlib-debug-source to activate autodoc
@example
$ cd ~/
$ git clone "the gambit repo current address"
$ cd gambit
$ ./configure --enable-single-host --enable-debug --enable-rtlib-debug-source
$ make bootstrap
$ make bootclean
$ make -j
$ make install
@end example
3 - put a link to geiser/elisp/geiser.el in your init file
in your init file paste :
@example
(load-file "~/geiser/elisp/geiser.el")
@end example
(the path is your path to geiser.el.)
# setup REMOTE CONNECT TO A GAMBIT REPL
1 - you need to enable the gambit/geiser module
( if you can't, substitute the command below
with the PS: at the end of the readme )
@example
$ mkdir ~/gambit/lib/gambit/geiser
$ cp ~/geiser/geiser-module/* ~/gambit/lib/geiser/
@end example
2 - now that you have the module you start gsi with it and using the -:d@
@example
$ gsi -:d gambit/geiser -
@end example
3 - you can now open emacs and write
@example
M-x geiser-connect gambit
@end example
Enjoy !
By the way,
if you are unable to use gambit modules, open gsi with
the @file{gambit.scm} file located in
@file{geiser/scheme/gambit/geiser/gambit.scm}
something like :
@example
gsi -:d@ ~/geiser/scheme/gambit/geiser/gambit.scm -
@end example
(Keep in mind that these paths may be a little different for you.)
@cindex Chicken
@cindex Chicken installation
If you plan to use Chicken, you'll need also to fire a terminal and
configure a couple of Chicken eggs. For Chicken 4 that would be:
@example
$ chicken-install -s apropos chicken-doc
$ cd `csi -p '(chicken-home)'`
$ curl http://3e8.org/pub/chicken-doc/chicken-doc-repo.tgz | sudo tar zx
@end example
while Chicken 5 prefers:
@example
$ chicken-install -s apropos chicken-doc srfi-18 srfi-1
$ cd `csi -R chicken.platform -p '(chicken-home)'`
$ curl https://3e8.org/pub/chicken-doc/chicken-doc-repo-5.tgz | sudo tar zx
@end example
(see also @uref{https://wiki.call-cc.org/emacs#geiser, Chicken's wiki}).
With that, you are pretty much all set up. See @ref{The REPL} to start
using Geiser.
@ifnotinfo
And, by the way, if you prefer to keep reading this manual within Emacs,
@kbd{C-h i m Geiser RET} will bring you to the info version of it that
you just installed!
@end ifnotinfo
@node From the source's mouth, Friends, The easy and quick way, Installation
@section Installing from source
@subsubheading Downloading Geiser
@cindex use the source, Luke
The latest release tarball can be found @downfile{, here}. Just
download @downfile{@value{TARBALL}, @value{TARBALL}} and untar it in a
directory of your choice.
If you feel like living on the bleeding edge, just grab Geiser from its
Git repository @uref{http://git.savannah.nongnu.org/cgit/geiser.git/, over
at Savannah}, either with the following incantation:
@example
git clone git://git.sv.gnu.org/geiser.git
@end example
@noindent or, if you happen to live behind a firewall, with the alternative:
@example
git clone http://git.sv.gnu.org/r/geiser.git
@end example
@noindent
You can also follow Geiser's development in
@uref{https://gitlab.com/jaor/geiser, one}
@uref{http://repo.or.cz/w/geiser.git, or}
@uref{http://gitorious.org/geiser, three} mirrors that are kept
synchronized with the one at Savannah.
Either way, you'll now be in possession of a copy of Geiser's libre
code. I'll follow you into its directory and the next section.
@subsubheading Setting it up
Geiser is ready to be used out of the box without much more ado. For the
sake of concreteness, let's assume you put its source in the directory
@file{~/lisp/geiser}. All you need to do is to add the following
line to your Emacs initialisation file (be it @file{~/.emacs},
@file{~/.emacs.d/init.el} or any of its moral equivalents):
@example
(load-file "~/lisp/geiser/elisp/geiser.el")
@end example
@noindent
or simply evaluate that form inside Emacs (you wouldn't kill a friend
just to start using Geiser, would you?). That's it: you're ready to
@ifhtml
@ref{quick-start,,go}.
@end ifhtml
@ifnothtml
go (@pxref{The REPL}).
@end ifnothtml
@ifnotinfo
If you obtained the Geiser source tree from a release tarball, you can
even continue to read this fine manual inside Emacs by opening
@file{doc/geiser.info} using @kbd{C-u C-h i}. The manual is also
available in PDF format @downfile{geiser-manual-@value{VERSION}.pdf,
here}.
@end ifnotinfo
@cindex byte-compilation
What? You still here? I promise the above is all that's needed to start
using Geiser. But, in case you are missing your @t{configure/make all
install} routine, by all means, you can go through those motions to byte
compile and install Geiser too. That is, you enter the source directory
and (since we grabbed the development tree) run the customary
@i{autogen} script:
@example
$ cd ~/lisp/geiser
$ ./autogen.sh
@end example
@noindent
I recommend that you compile Geiser in a separate directory:
@example
$ mkdir build && cd build
$ ../configure
<some drivel here>
$ make all
<more of the above>
@end example
Now you have two options: loading the byte-compiled Geiser from the
@file{elisp} subdirectory, or installing it system-wide. To load the
byte-code from here, add this line to your initialisation file:
@example
(load "~/lisp/geiser/build/elisp/geiser-load")
@end example
@noindent
and eval that form and you're done (you could also restart Emacs, but
killing your friends is widely considered bad form). Yes, that's
@code{load} and @file{geiser-load} instead of @code{load-file} and
@file{geiser.el}.
If you prefer a system-wide installation, just type:
@example
$ sudo make install
@end example
With the above spell, Geiser will be compiled and installed in a safe
place inside Emacs' load path. To load it into Emacs you'll need,
@i{instead} of the @code{load-file} form above, the following line in
your initialisation file:
@example
(require 'geiser-install)
@end example
@noindent
Please note that we're requiring @code{geiser-install}, and @i{not}
@code{geiser}, and that there's no @code{load-file} to be seen this
time. There are some ways of fine-tuning this process, mainly by
providing additional arguments in the call to @t{configure}: you'll find
those gory details in the file called @file{INSTALL}, right at the root
of the source tree. The installation will also take care of placing this
manual, in Info format, where Emacs can find it, so you can continue to
learn about Geiser inside its natural habitat. See you there and into
the next chapter!
@node Friends, , From the source's mouth, Installation
@section Friends
Although Geiser does not need them, it plays well with (and is enhanced
by) the following Emacs packages:
@cindex ac-geiser
@cindex autocomplete
@cindex paredit
@cindex company
@cindex quack
@itemize @bullet
@item @uref{http://www.emacswiki.org/emacs/ParEdit, Paredit}.
@anchor{paredit}
Regardless of whether you use Geiser or not, you shouldn't be coding
in any Lisp dialect without the aid of Taylor Campbell's structured
editing mode.
@item @uref{http://company-mode.github.io/, Company}.
Nikolaj Schumacher's and Dmitry Gutov's @code{company-mode} provides a
generic front-end for completion engines (such as Geiser's), with pretty
and automatic completion lists.
@item @uref{https://github.com/xiaohanyu/ac-geiser/, ac-geiser}
If you prefer @code{auto-complete-mode} to @code{company-mode}, Xiao
Hanyu's @code{ac-geiser}, which provides a Geiser plugin for the
popular @uref{https://www.emacswiki.org/emacs/AutoComplete, Emacs Auto
Completion Mode}, is the package for you. Like Geiser,
@code{ac-geiser} is available in Marmalade and MELPA, and also as an
@code{el-get} package.
@item @uref{http://www.neilvandyke.org/quack/, Quack}.
You can still use the many goodies provided by Neil van Dyke's
@code{quack-mode}, since most of them are not (yet) available in Geiser.
The only caveat might be a conflict between Quack's and Geiser's default
key bindings, which i'm sure you'll manage to tackle just fine. It's
also probably a good idea to require @code{quack} @i{after} loading
@file{geiser.el} (or requiring a compiled version).
@end itemize
@noindent
You just need to install and setup them as usual, for every package's
definition of usual. Geiser will notice their presence and react
accordingly.
@c Local Variables:
@c mode: texinfo
@c TeX-master: "geiser"
@c End:
|