@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.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 @item @uref{http://gambitscheme.org/wiki/index.php/Main_Page, Gambit} @value{GAMBIT_VERSION} or better @item @uref{http://www.racket-lang.org, Racket} @value{RACKET_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 Chicken @cindex Chicken installation @subsubheading 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 @cindex Gambit @cindex Gambit installation @subsubheading 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.) @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 tarballs can be found @releasesref{here}. 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 $ make all @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 MELPA, and also as an @code{el-get} package. @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: