From 56b60fe591469c20abe195aa020ec9a439f43c4a Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Mon, 30 Aug 2010 03:18:24 +0200 Subject: Docs: index entries. --- README | 4 ++-- doc/fun.texi | 35 +++++++++++++++++++++++++++++++---- doc/install.texi | 4 ++-- doc/intro.texi | 1 + doc/repl.texi | 14 +++++++++++++- doc/top.texi | 1 + 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 -- cgit v1.2.3