summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README4
-rw-r--r--doc/fun.texi35
-rw-r--r--doc/install.texi4
-rw-r--r--doc/intro.texi1
-rw-r--r--doc/repl.texi14
-rw-r--r--doc/top.texi1
6 files changed, 50 insertions, 9 deletions
diff --git a/README b/README
index 90b45d5..d2acd6f 100644
--- a/README
+++ b/README
@@ -22,8 +22,8 @@
* Supported scheme implementations
- - Guile 1.10 (not released yet: use the latest git master branch).
- - PLT Racket 5.0 or better.
+ - Guile 2.0 (not released yet: use the latest git master branch).
+ - PLT Racket 5.0.1 or better.
* Installation
Geiser can be used either directly from its uninstalled source tree
diff --git a/doc/fun.texi b/doc/fun.texi
index b0b9e50..1089dca 100644
--- a/doc/fun.texi
+++ b/doc/fun.texi
@@ -24,13 +24,15 @@ process giving you the @repl{}, make those Scheme buffers come to life.
@node Activating Geiser, The source and the REPL, Fun between the parens, Fun between the parens
@section Activating Geiser
+
+@cindex geiser-mode
@img{geiser-mode, right} With Geiser installed following any of the
procedures described in @ref{Setting it up}, Emacs will automatically
activate @i{geiser-mode} when opening a Scheme buffer. Geiser also
-instructs Emacs to consider files with the extension @file{rkt} Scheme
-files, so that, in principle, there's nothing you need to do to ensure
-that Geiser's extensions will be available, out of the box, when you
-start editing Scheme code.
+instructs Emacs to consider files with the extension @file{rkt} part of
+the family, so that, in principle, there's nothing you need to do to
+ensure that Geiser's extensions will be available, out of the box, when
+you start editing Scheme code.
Indications that everything is working according to plan include the
'Geiser' minor mode indicator in your mode-line and the appearance of a
@@ -39,6 +41,7 @@ indicator is the name of a Scheme implementation, you're indeed in a
perfect world; otherwise, don't despair and keep on reading: i'll tell
you how to fix that in a moment.
+@cindex geiser-mode commands
The menu provides a good synopsis of everthing Geiser brings to the
party, including those keyboard shortcuts we Emacsers love. If you're
seeing the name of your favourite Scheme implementation in the
@@ -59,12 +62,14 @@ trick:
(eval-after-load "geiser-mode"
(remove-hook 'scheme-mode-hook 'turn-on-geiser-mode))
@end example
+@cindex scheme file extensions
And if you happen to use a funky extension for your Scheme files that is
not recognised as such by Emacs, just tell her about it with:
@example
(add-to-list 'auto-mode-alist '("\\.funky-extension\\'" . scheme-mode))
@end example
+@cindex useless wretch
Now, @i{geiser-mode} is just a useless wretch unless there's a running
Scheme process backing it up. Meaning that virtually all the commands it
provides require a @repl{} up and running, preferably corresponding to
@@ -90,6 +95,7 @@ Scheme implementation, feel free to skip to the
@ref{switching-repl-buff,,next subsection}.
@subsubheading How Geiser associates a REPL to your Scheme buffer
+@cindex scheme implementation, choosing
To determine what Scheme implementation corresponds to a given source
file, Geiser uses the following algorithm:
@enumerate
@@ -155,11 +161,14 @@ children) is to be assigned to Guile. Since rules are first matched,
first served, this new rule will take precedence over the default ones.
@subsubheading Switching between source files and the REPL
+@cindex switching to REPL
+@cindex switching to source
@anchor{switching-repl-buff} Once you have a working @i{geiser-mode},
you can switch from Scheme source buffers to the @repl{} or @kbd{C-c
C-z}. Those shortcuts map to the interactive command
@code{switch-to-geiser}.
+@cindex switching to module
If you use a numeric prefix, as in @kbd{C-u C-c C-z}, besides being
teleported to the @repl{}, the latter will switch to the namespace of
the Scheme source file (as if you had used @kbd{C-c C-m} in the @repl{},
@@ -172,6 +181,7 @@ Scheme process in between. This is why the command is called
@i{switch-to-geiser} instead of @i{switch-to-repl}, and what makes it
really handy, if you ask me.
+@cindex switching schemes
If for some reason you're not happy with the Scheme implementation that
Geiser has assigned to your file, you can change it with @kbd{C-c C-s},
and probably take a look at @ref{switching-repl-buff,,the previous
@@ -194,6 +204,7 @@ can do for us, besides jumping to and fro.
@subsubheading Autodoc redux
+@cindex autodoc, in scheme buffers
The first thing you will notice by moving around Scheme source is that,
every now and then, the echo area lightens up with the same autodoc
messages we know and love from our @repl{} forays. This happens every
@@ -208,6 +219,7 @@ defined in the file you're editing. But as soon as you evaluate them
in @ref{Evaluating Scheme code}) their signatures will start appearing
in the echo area.
+@cindex disabling autodoc
Autodoc activation is controlled by a minor mode, @code{geiser-autodoc},
which you can toggle with @kbd{M-x geiser-autodoc}, or its associated
keyboard shortcut, @kbd{C-c C-d a}. That @t{/A} indicator in the
@@ -215,6 +227,7 @@ mode-line is telling you that autodoc is active. If you prefer, for some
obscure reason, that it be inactive by default, just set
@code{geiser-mode-autodoc-p} to @code{nil} in your customization files.
+@cindex autodoc explained
@img{autodoc-req, right} The way autodoc displays information deserves
some explanation. It will first show the name of the module where the
identifier at hand is defined, followed by a colon and the identifier
@@ -241,6 +254,7 @@ rules for each one) separated by a vertical bar (|). As you have already
noticed, the whole thing is enclosed in parenthesis. After all, we're
talking about Scheme here.
+@cindex autodoc for variables
@img{autodoc-var, right} Finally, life is much easier when your cursor
is on a symbol corresponding to a plain variable: you'll see in the echo
area its name, preceded by the module where it's defined, and followed
@@ -248,6 +262,7 @@ by its value, with an intervening arrow for greater effect. This time,
there are no enclosing parenthesis (i hope you see the logic in my
madness).
+@cindex autodoc customized
You can change the way Geiser displays the module/identifier combo by
customizing @code{geiser-autodoc-identifier-format}. For example, if you
wanted a tilde surrounded by spaces instead of a colon as a separator,
@@ -268,6 +283,8 @@ understand what a function does. In those cases, you can ask Geiser to
ask the running Scheme for further information on a given identifier or
module.
+@cindex documentation for symbol
+@cindex docstrings, maybe
For symbols, the incantation is @kbd{M-x geiser-doc-symbol-at-point}, or
@kbd{C-c C-d C-d} for short. If the associated scheme supports
docstrings (as, for instance, Guile does), you'll be teleported to a new
@@ -296,6 +313,8 @@ with all supported Schemes, no strings attached.
@node Evaluating Scheme code, Jumping around, Documentation helpers, Fun between the parens
@section Evaluating Scheme code
+@cindex philosophy
+@cindex incremental development
One of Geiser's main goals is to facilitate incremental development. You
might have noticed that i've made a big fuss of Geiser's ability to
recognize context, by being aware of the namespace where its operations
@@ -308,6 +327,7 @@ files to single s-expressions. That code will be evaluated in the module
associated with the file you're editing, allowing you to redefine values
and procedures to your heart's (and other modules') content.
+@cindex incremental development, evil
Macros are, of course, another kettle of fish: one needs to re-evaluate
uses of a macro after redefining it. That's not a limitation imposed by
Geiser, but a consequence of how macros work in Scheme (and other
@@ -322,6 +342,8 @@ their arguments} convincing, you don't have to throw away Geiser
together with the baby: @kbd{M-x geiser-restart-repl} will let you
restart the @repl{} as many times as you see fit.
+@cindex evaluation
+@cindex incremental development, not evil
For all of you bearded old lispers still with me, here are some of the
commands performing incremental evaluation in Geiser.
@@ -358,6 +380,7 @@ macro-expand them. The corresponding keybindings start with the prefix
@kbd{C-r}. The result of the macro expansion always appears in a pop up
buffer.
+@cindex backtraces
When an error occurs during evaluation, you'll be presented with a
backtrace, in a new buffer where file paths locating the origin of the
error are clickable (you can navigate them using the @key{TAB} key, and
@@ -366,6 +389,7 @@ use @key{RET} or the mouse to jump to the offending spot).
@node Jumping around, Geiser writes for you, Evaluating Scheme code, Fun between the parens
@section Jumping around
+@cindex jumping in scheme buffers
This one feature is as sweet as easy to explain: @kbd{M-.}
(@code{geiser-edit-symbol-at-point}) will open the file where the
identifier around point is defined and land your point on its
@@ -378,6 +402,7 @@ regular expressions) to locate the exact line and bring you there. Thus,
if you find Geiser systematically missing your definitions, send a
message to the mailing list and we'll try to make the algorithm smarter.
+@cindex jumping customized
You can control how the destination buffer pops up by setting
@code{geiser-edit-symbol-method} to either @code{nil} (to open the file
in the current window), @code{'window} (other window in the same frame)
@@ -386,6 +411,7 @@ or @code{'frame} (in a new frame).
@node Geiser writes for you, , Jumping around, Fun between the parens
@section Geiser writes for you
+@cindex completion in scheme buffers
No self-respecting programming mode would be complete without
completion. In geiser-mode, identifier completion is bound to
@kbd{M-@key{TAB}}, and will offer all visible identifiers starting with
@@ -401,6 +427,7 @@ you're at the end of the following partial expression:
and press @kbd{M-@key{TAB}}, one of the possible completions will be
@code{definite}.
+@cindex completion for module names
Geiser also knows how to complete module names, but it's not yet smart
enough to infer by context that that's what you want. Instead, you must
use a separate command, bound to @kbd{M-`} (that's a backtick).
diff --git a/doc/install.texi b/doc/install.texi
index 2301e6d..bc92505 100644
--- a/doc/install.texi
+++ b/doc/install.texi
@@ -14,8 +14,8 @@
If Geiser came with any guarantees, you'd break all of them by not using
GNU Emacs 23 (or better, if there actually @i{is} anything better) and
at least one of the supported schemes, which right now are
-@uref{http://www.racket-lang.org, Racket} 5.0 (or better) and the latest
-and greatest @uref{http://www.gnu.org/software/guile, Guile} 1.9
+@uref{http://www.racket-lang.org, Racket} 5.0.1 (or better) and the
+latest and greatest @uref{http://www.gnu.org/software/guile, Guile} 1.9
directly compiled from a recent checkout of
@uref{http://www.gnu.org/software/guile/repository.html, its Git
@i{master} branch}. Since Geiser supports multiple @repl{}s, having both
diff --git a/doc/intro.texi b/doc/intro.texi
index aafa4fc..0805eca 100644
--- a/doc/intro.texi
+++ b/doc/intro.texi
@@ -13,6 +13,7 @@ enough for you, see @ref{Installation} to get it running and
@node Modus operandi, Showing off, Introduction, Introduction
@section Modus operandi
+@cindex modus operandi
As already mentioned, Geiser relies on a running Scheme process to
obtain the information it makes accessible to the programmer. There's
little effort, on the Elisp side, to understand, say, the module system
diff --git a/doc/repl.texi b/doc/repl.texi
index 9e902d4..cfb76ea 100644
--- a/doc/repl.texi
+++ b/doc/repl.texi
@@ -88,7 +88,7 @@ The remaining commands are meatier, and deserve sections of their own.
@node Switching context, Let Geiser spy, First aids, The REPL
@section Switching context
-@cindex current module
+@cindex current module, in REPL
In tune with Geiser's @ref{current-module,,modus operandi}, evaluations
in the @repl{} take place if the namespace of the current module. As
noted above, the @repl{}'s prompt tells you the name of the current
@@ -100,6 +100,7 @@ Racket), and that it doesn't even try to hide that fact. That means that
you can freely use said native ways directly at the @repl{}, and Geiser
will be happy to oblige.
+@cindex current module, change
Once you enter a new module, only those bindings visible in its
namespace will be available to your evaluations. All schemes supported
by Geiser provide a way to import new modules in the current namespace.
@@ -120,6 +121,7 @@ Which brings me to the next group of @repl{} commands.
@node Let Geiser spy, Customization and tips, Switching context, The REPL
@section Let Geiser spy, write and jump for you
+@cindex completion, module name
We've already seen Geiser completion of module names in action at the
mini-buffer. You won't be surprised to know that it's also available at
the @repl{} buffer itself. There, you can use either @kbd{C-.} or
@@ -135,6 +137,7 @@ besides its name: what module does it belong to? is it a procedure and,
if so, what arguments does it take? Geiser tries to help you answering
those questions too.
+@cindex autodoc, in the REPL
Actually, if you've been playing with the @repl{} as you read, you might
have notice some frantic activity taking place in the minibuffer every
now and then. That was Geiser trying to be helpful (while, hopefully,
@@ -155,6 +158,7 @@ brackets, and, when the optional argument has a default value, it's
represented by a list made up of its name and that value. When the
argument is a keyword argument, its name is preceded by a colon.
+@cindex help on identifier
If that's not enough documentation for you, @kbd{C-c C-d d} will open a
separate documentation buffer with help on the symbol at point. For some
implementations (e.g. Racket), this separate buffer will actually be a
@@ -162,12 +166,14 @@ web page displaying the corresponding page in the manual, while for
implementations supporting docstrings (e.g. (you guessed it) Guile)
it'll be a real Emacs buffer displaying that information.
+@cindex jump, at the REPL
If that's still not enough, Geiser can jump, via @kbd{M-.}, to the
symbol's definition. A buffer with the corresponding file will pop up,
with its point resting upon the identifier's defining form. When you're
done inspecting, @kbd{M-,} will bring you back to where you were. As we
will see, these commands are also available in scheme buffers.
+@cindex module exports
@anchor{repl-mod}
Finally, Geiser can produce for you a list, classified by kind, of the
identifiers exported by a given module: all you need to do is press
@@ -184,6 +190,7 @@ information to use it effectively enough).
@node Customization and tips, , Let Geiser spy, The REPL
@section Customization and tips
+@cindex REPL customization
The looks and ways of the @repl{} can be fine-tuned via a bunch of
customization variables. You can see and modify them all in the
corresponding customization group (by using the menu entry or the good
@@ -196,6 +203,7 @@ I'm documenting below a proper subset of those settings, together with
some related tips.
@subsubheading Choosing a Scheme implementation
+@cindex scheme implementation, choosing
@anchor{choosing-impl}
Instead of using the generic @command{run-geiser} command, you can start
directly your Scheme of choice via @command{run-racket} or
@@ -209,6 +217,8 @@ forget about the richness of the Scheme ecosystem with something like
@end example
@noindent in your initialisation files.
+@cindex scheme binary
+@cindex scheme executable path
@anchor{impl-binary} When starting a new @repl{}, Geiser assumes, by
default, that the corresponding Scheme binary is in your path. If that's
not the case, the variables to tweak are @code{geiser-guile-binary} and
@@ -232,6 +242,8 @@ directory.
@subsubheading Autodoc
+@cindex autodoc, disabling
+@cindex peace and quiet
If you happen to love peace and quiet and prefer to keep your @repl{}'s
echo area free from autodoc's noise, @code{geiser-repl-autodoc-p} is the
customization variable for you: set it to @code{nil} and autodoc will be
diff --git a/doc/top.texi b/doc/top.texi
index c0a0a8e..2f218c4 100644
--- a/doc/top.texi
+++ b/doc/top.texi
@@ -6,6 +6,7 @@ to make Scheme hacking inside Emacs (even more) fun.
@cindex derailment
@cindex corpses
+@cindex philosophy
Or, to be precise, what @uref{http://hacks-galore.org/jao, i} consider
fun. Geiser is thus my humble contribution to the dynamic school of
expression, and a reaction against what i perceive as a derailment, in