diff options
| -rw-r--r-- | README | 4 | ||||
| -rw-r--r-- | doc/fun.texi | 35 | ||||
| -rw-r--r-- | doc/install.texi | 4 | ||||
| -rw-r--r-- | doc/intro.texi | 1 | ||||
| -rw-r--r-- | doc/repl.texi | 14 | ||||
| -rw-r--r-- | doc/top.texi | 1 | 
6 files changed, 50 insertions, 9 deletions
| @@ -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 | 
