dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

geiser.info (88109B)


      1 This is doczjiZME.info, produced by makeinfo version 6.7 from
      2 geiser.texi.
      3 
      4 This manual documents Geiser, an Emacs environment to hack in Scheme.
      5 
      6    Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018, 2020,
      7 2021 Jose Antonio Ortega Ruiz
      8 
      9      Permission is granted to copy, distribute and/or modify this
     10      document under the terms of the GNU Free Documentation License,
     11      Version 1.3 or any later version published by the Free Software
     12      Foundation; with no Invariant Sections, no Front-Cover Texts, and
     13      no Back-Cover Texts.  A copy of the license is available from the
     14      Free Software Foundation Web site at
     15      <http://www.gnu.org/licenses/fdl.html>.
     16 
     17    The document was typeset with GNU Texinfo
     18 (http://www.gnu.org/software/texinfo/index.html).
     19 INFO-DIR-SECTION Emacs
     20 START-INFO-DIR-ENTRY
     21 * Geiser: (geiser).           Emacs environment for Scheme hacking.
     22 END-INFO-DIR-ENTRY
     23 
     24 
     25 File: doczjiZME.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
     26 
     27 Geiser
     28 ******
     29 
     30 * Menu:
     31 
     32 * Introduction::
     33 * Installation::
     34 * The REPL::
     35 * Between the parens::
     36 * Cheat sheet::
     37 * No hacker is an island::
     38 * Index::
     39 
     40  -- The Detailed Node Listing --
     41 
     42 Introduction
     43 
     44 * Modus operandi::
     45 * Showing off::
     46 
     47 Installation
     48 
     49 * Must needs::
     50 * The quick and easy way::
     51 * From the source's mouth::
     52 * Friends::
     53 
     54 The REPL
     55 
     56 * Starting the REPL::
     57 * First aids::
     58 * Switching context::
     59 * Completion and error handling::
     60 * Autodoc and friends::
     61 * Seeing is believing::
     62 * Customization and tips::
     63 
     64 Between the parens
     65 
     66 * Activating Geiser::
     67 * The source and the REPL::
     68 * Documentation helpers::
     69 * To eval or not to eval::
     70 * To err perchance to debug::
     71 * Jumping around::
     72 * Geiser writes for you::
     73 
     74 Cheat sheet
     75 
     76 * Scheme buffers::
     77 * REPL::
     78 * Documentation browser::
     79 
     80 
     81 Geiser is a collection of Emacs major and minor modes that conspire with
     82 one or more Scheme interpreters to keep the Lisp Machine Spirit alive.
     83 It draws inspiration (and a bit more) from environments such as Common
     84 Lisp's Slime, Factor's FUEL, Squeak or Emacs itself, and does its best
     85 to make Scheme hacking inside Emacs (even more) fun.
     86 
     87    Or, to be precise, what i (https://jao.io) consider fun.  Geiser is
     88 thus my humble contribution to the dynamic school of expression, and a
     89 reaction against what i perceive as a derailment, in modern times, of
     90 standard Scheme towards the static camp.  Because i prefer growing and
     91 healing to poking at corpses, the continuously running Scheme
     92 interpreter takes the center of the stage in Geiser.  A bundle of Elisp
     93 shims orchestrates the dialog between the Scheme interpreter, Emacs and,
     94 ultimately, the schemer, giving her access to live metadata.  Here's
     95 how.
     96 
     97 
     98 File: doczjiZME.info,  Node: Introduction,  Next: Installation,  Prev: Top,  Up: Top
     99 
    100 1 Introduction
    101 **************
    102 
    103 Geiser is an Emacs environment to hack and have fun in Scheme.  If
    104 that's enough for you, see *note Installation:: to get it running and
    105 *note The REPL:: for the fun part.
    106 
    107 * Menu:
    108 
    109 * Modus operandi::
    110 * Showing off::
    111 
    112 
    113 File: doczjiZME.info,  Node: Modus operandi,  Next: Showing off,  Prev: Introduction,  Up: Introduction
    114 
    115 1.1 Modus operandi
    116 ==================
    117 
    118 As already mentioned, Geiser relies on a running Scheme process to
    119 obtain the information it makes accessible to the programmer.  There's
    120 little effort, on the Elisp side, to understand, say, the module system
    121 used by the Scheme implementation at hand; instead, a generic interface
    122 between the two worlds is defined, and each supported Scheme includes a
    123 library implementing that API, together with some wee shims in Elisp
    124 allowing the reuse of the Emacs-side framework, which constitutes the
    125 bulk of the code.
    126 
    127    While being as generic as possible, the Scheme-Elisp interface makes
    128 some assumptions about the capabilities and interaction mode of the
    129 corresponding REPL. In particular, Geiser expects the latter to support
    130 namespaces in the form of a module system, and to provide a well-defined
    131 way to establish the REPL's current namespace (or module), as well as
    132 the current file's module (or namespace).  Thus, all evaluations
    133 performed by Geiser either in the REPL or in a source code buffer happen
    134 in the context of the current namespace.  Every time you switch to a
    135 different file, you're switching namespaces automatically; at the REPL,
    136 you must request the switch explicitly (usually just using means
    137 provided by the Scheme implementation itself).
    138 
    139    If your favourite Scheme supports the above modus operandi, it has
    140 all that's needed for a bare-bones Geiser mode.  But Geiser can, and
    141 will, use any metadata available: procedure arities and argument lists
    142 to display interactive help, documentation strings, location information
    143 to jump to definitions, export lists to provide completion, and so on
    144 and so forth.  Although this is not an all-or-none proposition (Geiser
    145 can operate with just part of that functionality available), i initially
    146 concentrated in supporting those Schemes with the richest (to my
    147 knowledge) introspection capabilities, namely, Guile and Racket.  Later
    148 on, Dan Leslie added support for Chicken, and several other schemes
    149 followed suit.
    150 
    151 
    152 File: doczjiZME.info,  Node: Showing off,  Prev: Modus operandi,  Up: Introduction
    153 
    154 1.2 Showing off
    155 ===============
    156 
    157 When working with a fully conniving Scheme, Geiser can offer the
    158 following functionality:
    159 
    160    * Form evaluation in the context of the current file's module.
    161    * Macro expansion.
    162    * File/module loading and/or compilation.
    163    * Namespace-aware identifier completion (including local bindings,
    164      names visible in the current module, and module names).
    165    * Autodoc: the echo area shows information about the signature of the
    166      procedure/macro around point automatically.
    167    * Jump to definition of identifier at point.
    168    * Access to documentation (including docstrings when the
    169      implementation provides it).
    170    * Listings of identifiers exported by a given module.
    171    * Listings of callers/callees of procedures.
    172    * Rudimentary support for debugging (when the REPL provides a
    173      debugger) and error navigation.
    174    * Support for multiple, simultaneous REPLs.
    175    * Support for image display in those Schemes that treat them as first
    176      class values.
    177 
    178    In the following pages, i'll try to explain what these features
    179 actually are (i'm just swanking here), and how to use them for your
    180 profit.  But, before that, let's see how to install Geiser.
    181 
    182 
    183 File: doczjiZME.info,  Node: Installation,  Next: The REPL,  Prev: Introduction,  Up: Top
    184 
    185 2 Installation
    186 **************
    187 
    188 * Menu:
    189 
    190 * Must needs::
    191 * The quick and easy way::
    192 * From the source's mouth::
    193 * Friends::
    194 
    195 
    196 File: doczjiZME.info,  Node: Must needs,  Next: The quick and easy way,  Prev: Installation,  Up: Installation
    197 
    198 2.1 Must needs
    199 ==============
    200 
    201 If Geiser came with any guarantees, you'd break all of them by not using
    202 GNU Emacs 24.4 (or better: i regularly use it with a recent Emacs
    203 snapshot) and at least one of the supported Schemes, namely:
    204 
    205    * Chez (9.4) 9.4 or better, via geiser-chez
    206      (https://gitlab.com/emacs-geiser/chez)
    207    * Chibi (0.7.3) 0.7.3 or better, via geiser-chibi
    208      (https://gitlab.com/emacs-geiser/chibi)
    209    * Chicken (4.8.0) 4.8.0 or better, via geiser-chicken
    210      (https://gitlab.com/emacs-geiser/chicken)
    211    * Gambit (4.9.3) 4.9.3 or better, via geiser-gambit
    212      (https://gitlab.com/emacs-geiser/gambit)
    213    * Gauche (0.9.6) 0.9.6 or better, via geiser-gauche
    214      (https://gitlab.com/emacs-geiser/gauche)
    215    * Guile (2.2) 2.2 or better, via geiser-guile
    216      (https://gitlab.com/emacs-geiser/guile)
    217    * GNU Kawa (3.1) 3.1 or better, via geiser-kawa
    218      (https://gitlab.com/emacs-geiser/kawa)
    219    * MIT/GNU Scheme (9.0) 9.0 or better, via geiser-mit
    220      (https://gitlab.com/emacs-geiser/mit)
    221    * Racket (7.0) 7.0 or better, via geiser-racket
    222      (https://gitlab.com/emacs-geiser/racket)
    223    * Stklos (1.50) 1.50 or better, via geiser-stklos
    224      (https://gitlab.com/emacs-geiser/stklos)
    225 
    226    Since Geiser supports multiple REPLs, having all of them will just
    227 add to the fun.
    228 
    229    You'll also need Geiser itself.  The quickest installation is via
    230 your favourite implementation's ELPA packages (as of this writing,
    231 they're all available in MELPA and (most of them) also in NonGNU ELPA,
    232 which comes included with the batteries of Emacs 28 or better).
    233 
    234 
    235 File: doczjiZME.info,  Node: The quick and easy way,  Next: From the source's mouth,  Prev: Must needs,  Up: Installation
    236 
    237 2.2 The quick and easy way
    238 ==========================
    239 
    240 Did i mention that the easiest way of installing Geiser is using its
    241 ELPA (http://emacswiki.org/emacs/ELPA) package?  If you're using Emacs
    242 24, ELPA (http://emacswiki.org/emacs/ELPA) is already there; for earlier
    243 versions, the page i just linked to twice will tell you where to find
    244 the goodies.
    245 
    246    ELPA packages live in repositories accessible via HTTP. You can find
    247 Geiser's package in either NonGNU ELPA
    248 (https://elpa.nongnu.org/nongnu/geiser.html) or, if you like living on
    249 the bleeding edge, MELPA (http://melpa.org/#/geiser) (directly from the
    250 git repo).  To tell Emacs that an ELPA repo exists, you add it to
    251 'package-archives'(1):
    252 
    253      (require 'package)
    254 
    255      (add-to-list 'package-archives
    256        '("nongnu" . "https://elpa.nongnu.org/nongnu/"))
    257 
    258      (package-initialize)
    259 
    260    And then installing your favourite Geiser is as easy as (if, say,
    261 you're a MIT aficionado):
    262 
    263      M-x package-install RET geiser-mit RET
    264 
    265    Rinse and repeat for each of the scheme implementations that you
    266 would like to use.  Some of them (e.g.  Gambit or Chicken) have a bit of
    267 additional setup, specific to them, so make sure you also check their
    268 respective package documentation.
    269 
    270    With that, you are pretty much all set up.  See *note The REPL:: to
    271 start using Geiser.
    272 
    273    ---------- Footnotes ----------
    274 
    275    (1) If you're using Emacs 28 or better, 'package-archives' already
    276 comes with the non-gnu archive preconfigured, so you're lucky in more
    277 than one way.
    278 
    279 
    280 File: doczjiZME.info,  Node: From the source's mouth,  Next: Friends,  Prev: The quick and easy way,  Up: Installation
    281 
    282 2.3 Installing from source
    283 ==========================
    284 
    285 All Geiser packages are ready to be used out of the box without much
    286 more ado.  For the sake of concreteness, let's assume you put its source
    287 in the directory '~/lisp/geiser'.  All you need to do is to add the
    288 following line to your Emacs initialisation file (be it '~/.emacs',
    289 '~/.emacs.d/init.el' or any of its moral equivalents):
    290 
    291      (add-to-list 'load-path "~/lisp/geiser/elisp")
    292 
    293    and, if your, say, 'geiser-gambit' checkout lives in
    294 '~/lisp/geiser-mit' add to that:
    295 
    296      (add-to-list 'load-path "~/lisp/geiser-gambit")
    297 
    298    The autoloads defined in those packages should be enough to start
    299 scheming.
    300 
    301 
    302 File: doczjiZME.info,  Node: Friends,  Prev: From the source's mouth,  Up: Installation
    303 
    304 2.4 Friends
    305 ===========
    306 
    307 Although Geiser does not need them, it plays well with (and is enhanced
    308 by) the following Emacs packages:
    309 
    310    * Paredit (http://www.emacswiki.org/emacs/ParEdit).  Regardless of
    311      whether you use Geiser or not, you shouldn't be coding in any Lisp
    312      dialect without the aid of Taylor Campbell's structured editing
    313      mode.
    314    * Company (http://company-mode.github.io/).  Nikolaj Schumacher's and
    315      Dmitry Gutov's 'company-mode' provides a generic front-end for
    316      completion engines (such as Geiser's), with pretty and automatic
    317      completion lists.
    318    * macrostep-geiser (https://github.com/nbfalcon/macrostep-geiser)
    319      provides support for in-buffer macro expansion, using the macrostep
    320      (https://github.com/joddie/macrostep) package.
    321    * ac-geiser (https://github.com/xiaohanyu/ac-geiser/) If you prefer
    322      'auto-complete-mode' to 'company-mode', Xiao Hanyu's 'ac-geiser',
    323      which provides a Geiser plugin for the popular Emacs Auto
    324      Completion Mode (https://www.emacswiki.org/emacs/AutoComplete), is
    325      the package for you.  Like Geiser, 'ac-geiser' is available in
    326      MELPA, and also as an 'el-get' package.
    327 
    328 You just need to install and setup them as usual, for every package's
    329 definition of usual.  Geiser will notice their presence and react
    330 accordingly.
    331 
    332 
    333 File: doczjiZME.info,  Node: The REPL,  Next: Between the parens,  Prev: Installation,  Up: Top
    334 
    335 3 The REPL
    336 **********
    337 
    338 If you've followed the instructions in *note Installation::, your Emacs
    339 is now ready to start playing.  Otherwise, i'll wait for you: when
    340 you're ready, just come back here and proceed to the following sections.
    341 
    342 * Menu:
    343 
    344 * Starting the REPL::
    345 * First aids::
    346 * Switching context::
    347 * Completion and error handling::
    348 * Autodoc and friends::
    349 * Seeing is believing::
    350 * Customization and tips::
    351 
    352 
    353 File: doczjiZME.info,  Node: Starting the REPL,  Next: First aids,  Prev: The REPL,  Up: The REPL
    354 
    355 3.1 Starting the REPL
    356 =====================
    357 
    358 To start a Scheme REPL (meaning, a Scheme process offering you a
    359 Read-Eval-Print Loop), Geiser provides the generic interactive command
    360 'geiser'.  If you invoke it (via, as is customary in Emacs, 'M-x
    361 geiser'), you'll be saluted by a prompt asking which one of the
    362 supported implementations you want to launch--yes, you can stop the
    363 asking, see *note below: active-implementations.  Tabbing for completion
    364 will offer you, as of this writing, 'guile', 'racket', 'chicken', 'mit',
    365 'chibi' and 'chez'.  Just choose your poison, and a new REPL buffer will
    366 pop up (by default, the REPL will appear in a new window: if that annoys
    367 you, just set 'geiser-repl-use-other-window' to 'nil' and the current
    368 window will be used).
    369 
    370    If all went according to plan, you'll be facing an
    371 implementation-dependent banner, followed by an interactive prompt.
    372 Going according to plan includes having the executable of the Scheme you
    373 chose in your path.  If that's not the case, you can tell Emacs where it
    374 is, as described in *note a moment: impl-binary.  Returning to our REPL,
    375 the first thing to notice is that the funny prompt is telling you your
    376 current module: its name is the part just after the @ sign (in Guile,
    377 that means 'guile-user', while Racket's and Chicken's top namespaces
    378 don't have a name; cf.  discussion in *note Switching context::).  Other
    379 than that, this is pretty much equivalent to having a command-line
    380 interpreter in a terminal, with a bunch of add-ons that we'll be
    381 reviewing below.  You can start typing sexps right there: Geiser will
    382 only dispatch them for evaluation when they're complete, and will indent
    383 new lines properly until then.  It will also keep track of your input,
    384 maintaining a history file that will be reloaded whenever you restart
    385 the REPL.
    386 
    387    If you're not happy with the faces Geiser is using for the REPL's
    388 prompt and evaluated input, you can customise
    389 'geiser-font-lock-repl-prompt' and 'geiser-font-lock-repl-input' to
    390 better-looking faces.
    391 
    392 Connecting to an external Scheme
    393 ................................
    394 
    395 There's an alternative way of starting a Geiser REPL: you can connect to
    396 an external Scheme process, provided it's running a REPL server at some
    397 known port.  How to make that happen depends on the Scheme
    398 implementation.
    399 
    400    If you use Guile, you just need to start your Guile process (possibly
    401 outside Emacs) passing to it the flag '--listen'.  This flag accepts an
    402 optional port as argument (as in '--listen=1969'), if you don't want to
    403 use the default.
    404 
    405    In Racket, you have to use the REPL server that comes with Geiser.
    406 To that end, put Geiser's Racket 'scheme' directory in Racket's
    407 collection search path and invoke 'start-geiser' (a procedure in the
    408 module 'geiser/server') somewhere in your program, passing it the
    409 desired port and, if desired, network interface name.  This procedure
    410 will start the REPL server in a separate thread.  For an example of how
    411 to do that, see the script 'bin/geiser-racket.sh' in the source
    412 distribution, or, if you've compiled Geiser, 'bin/geiser-racket-noinst'
    413 in the build directory, or, if you've installed Geiser, 'geiser-racket'
    414 in '<installation-prefix>/bin'.  These scripts start a new interactive
    415 Racket that is also running a REPL server (they also load the errortrace
    416 library to provide better diagnostics, but that's not strictly needed).
    417 
    418    With your external Scheme process running and serving, come back to
    419 Emacs and execute 'M-x geiser-connect', 'M-x connect-to-guile' or 'M-x
    420 connect-to-racket'.  You'll be asked for a host and a port, and, voila,
    421 you'll have a Geiser REPL that is served by the remote Scheme process in
    422 a dedicated thread, meaning that your external program can go on doing
    423 whatever it was doing while you tinker with it from Emacs.  Note,
    424 however, that all Scheme threads share the heap, so that you'll be able
    425 to interact with those other threads in the running Scheme from Emacs in
    426 a variety of ways.  For starters, all your (re)definitions will be
    427 visible everywhere.  That's dangerous, but will come in handy when you
    428 need to debug your running web server.
    429 
    430    The connection between Emacs and the Scheme process goes over TCP, so
    431 it can be as remote as you need, perhaps with the intervention of an SSH
    432 tunnel.
    433 
    434 
    435 File: doczjiZME.info,  Node: First aids,  Next: Switching context,  Prev: Starting the REPL,  Up: The REPL
    436 
    437 3.2 First aids
    438 ==============
    439 
    440 A quick way of seeing what else Geiser's REPL can do for you, is to
    441 display the corresponding entry up there in your menu bar.  No, i don't
    442 normally use menus either; but they can come in handy until you've
    443 memorized Geiser's commands, as a learning device.  And yes, i usually
    444 run Emacs inside a terminal, but one can always use La Carte
    445 (http://www.emacswiki.org/emacs/LaCarte) to access the menus in a
    446 convenient enough fashion.
    447 
    448    Or just press 'C-h m' and be done with that.
    449 
    450    Among the commands at your disposal, we find the familiar input
    451 navigation keys, with a couple twists.  By default, 'M-p' and 'M-n' are
    452 bound to matching items in your input history.  That is, they'll find
    453 the previous or next sexp that starts with the current input prefix
    454 (defined as the text between the end of the prompt and your current
    455 position, a.k.a.  "point", in the buffer).  For going up and down the
    456 list unconditionally, just use 'C-c M-p' and 'C-c M-n'.  In addition,
    457 navigation is sexp-based rather than line-based.
    458 
    459    There are also a few commands to twiddle with the Scheme process.
    460 'C-c C-q' will gently ask it to quit, while 'C-u C-c C-q' will
    461 mercilessly kill the process (but not before stowing your history in the
    462 file system).  Unless you're using a remote REPL, that is, in which case
    463 both commands will just sever the connection and leave the remote
    464 process alone.  If worse comes to worst and the process is dead, 'C-c
    465 C-z' will restart it.  However, the same shortcut, issued when the REPL
    466 is alive, will bring you back to the buffer you came from, as explained
    467 in *note this section: switching-repl-buff.
    468 
    469    The remaining commands are meatier, and deserve sections of their
    470 own.
    471 
    472 
    473 File: doczjiZME.info,  Node: Switching context,  Next: Completion and error handling,  Prev: First aids,  Up: The REPL
    474 
    475 3.3 Switching context
    476 =====================
    477 
    478 In tune with Geiser's modus operandi, evaluations in the REPL take place
    479 in the namespace of the current module.  As noted above, the REPL's
    480 prompt tells you the name of the current module.  To switch to a
    481 different one, you can use the command 'geiser-repl-switch-to-module',
    482 bound to 'C-c C-m'.  You'll notice that Geiser simply uses a couple of
    483 meta-commands provided by the Scheme REPL (the stock ',m' in Guile and
    484 Chicken and the (geiser-defined) ',enter' in Racket), and that it
    485 doesn't even try to hide that fact.  That means that you can freely use
    486 said native ways directly at the REPL, and Geiser will be happy to
    487 oblige.  In Racket, ',enter' works like Racket's standard 'enter!' form,
    488 but you can also provide a path string as its argument (e.g., ',enter
    489 "/tmp/foo.rkt"' is equivalent to ',enter (file "/tmp/foo.rkt")').  Like
    490 'enter!', ',enter' accepts also module names (as in, say, ',enter
    491 geiser/main').  As mentioned, in Guile and Chicken, ',m' is used as is.
    492 
    493    Once you enter a new module, only those bindings visible in its
    494 namespace will be available to your evaluations.  All Schemes supported
    495 by Geiser provide a way to import new modules in the current namespace.
    496 Again, there's a Geiser command, 'geiser-repl-import-module', to invoke
    497 such functionality, bound this time to 'C-c C-i'.  And, again, you'll
    498 see Geiser just introducing the native incantation for you, and you're
    499 free to use such incantations by hand whenever you want.
    500 
    501    One convenience provided by these two Geiser commands is that
    502 completion is available when introducing the new module name, using the
    503 '<TAB>' key.  Pressing it at the command's prompt will offer you a
    504 prefix-aware list of available module names.
    505 
    506    Which brings me to the next group of REPL commands.
    507 
    508 
    509 File: doczjiZME.info,  Node: Completion and error handling,  Next: Autodoc and friends,  Prev: Switching context,  Up: The REPL
    510 
    511 3.4 Completion and error handling
    512 =================================
    513 
    514 We've already seen Geiser completion of module names in action at the
    515 minibuffer.  You won't be surprised to know that it's also available at
    516 the REPL buffer itself.  There, you can use either 'C-.' or 'M-`' to
    517 complete module names, and '<TAB>' or 'M-<TAB>' to complete identifiers.
    518 Geiser will know what identifiers are bound in the current module and
    519 show you a list of those starting with the prefix at point.  Needless to
    520 say, this is not a static list, and it will grow as you define or import
    521 new bindings in the namespace at hand.  If no completion is found,
    522 '<TAB>' will try to complete the prefix after point as a module name.
    523 
    524    REPL buffers use Emacs' compilation mode to highlight errors reported
    525 by the Scheme interpreter, and you can use the 'next-error' command
    526 ('M-g n') to jump to their location.  By default, every time you enter a
    527 new expression for evaluation old error messages are forgotten, so that
    528 'M-g n' will always jump to errors related to the last evaluation
    529 request, if any.  If you prefer a not-so-forgetful REPL, set the
    530 customization variable 'geiser-repl-forget-old-errors-p' to 'nil'.
    531 Note, however, that even when that variable is left as 't', you can
    532 always jump to an old error by moving to its line at the REPL and
    533 pressing '<RET>'.  When your cursor is away from the last prompt,
    534 '<TAB>' will move to the next error in the buffer, and you can use
    535 '<BACKTAB>' everywhere to go to the previous one.
    536 
    537 Caveat about completion & the REPL
    538 ----------------------------------
    539 
    540 It is possible for Geiser to hang your Emacs process when trying to
    541 complete symbols.  This can happen in the REPL itself or even in a
    542 Scheme buffer that is attached to the REPL process.  If this happens,
    543 you've probably entered a module that changes the REPL prompt from what
    544 Geiser was expecting to see.
    545 
    546    Unfortunately, there's no general solution for this issue right now
    547 (as it is a daunting task to try to make a regexp that can encompass all
    548 possible REPL prompts).  The best solution for now is to fix this issue
    549 on a case-by-case basis by adjusting your prompt regexp variable so that
    550 it matches the default prompt as well as your Scheme module's special
    551 prompt.
    552 
    553    For example, XREPL is a Racket module that implements a better Racket
    554 REPL. You might be interested in toying around with some of its
    555 functions, but when you try to enter XREPL via, say, 'C-c C-m xrepl',
    556 you'll notice that the REPL prompt has changed to something like this:
    557 
    558      <pkgs>/xrepl-lib/xrepl/main>
    559 
    560    If you start typing symbols, and then you try to auto-complete those
    561 symbols, your Emacs process may hang.  This is because Geiser expects
    562 the REPL prompt to match this regexp (for Racket):
    563 
    564      "\\(mzscheme\\|racket\\)@[^ ]*> "
    565 
    566    Therefore, we can fix this issue by changing our default prompt
    567 regexp like so:
    568 
    569      (setq geiser-racket--prompt-regexp "<pkgs>.*> \\|\\(mzscheme\\|racket\\)@[^ ]*> ")
    570 
    571    Note that you may have to run 'M-x geiser-reload' after setting this
    572 variable so that your changes will take effect.
    573 
    574    Again, you'll have to change the regexp to fit every prompt that
    575 causes this issue, but the only alternative (that we can think of right
    576 now) is to create a regexp that will match every possible prompt.
    577 Obviously, that is going to be more than a little tricky.  However, if
    578 you have a better solution than that, please share it with the Geiser
    579 developers; we'll be more than happy to hear it.
    580 
    581 
    582 File: doczjiZME.info,  Node: Autodoc and friends,  Next: Seeing is believing,  Prev: Completion and error handling,  Up: The REPL
    583 
    584 3.5 Autodoc and friends
    585 =======================
    586 
    587 Oftentimes, there's more you'll want to know about an identifier besides
    588 its name: What module does it belong to?  Is it a procedure and, if so,
    589 what arguments does it take?  Geiser tries to help you answering those
    590 questions too.
    591 
    592    Actually, if you've been playing with the REPL as you read, you might
    593 have notice some frantic activity taking place in the echo area every
    594 now and then.  That was Geiser trying to be helpful (while, hopefully,
    595 not being clippy), or, more concretely, what i call, for want of a
    596 better name, its "autodoc" mode.  Whenever it's active (did you notice
    597 that A in the mode-line?), Geiser's gerbils will be scanning what you
    598 type and showing (unless you silence them with 'C-c C-d C-a')
    599 information about the identifier nearest to point.
    600 
    601    If that identifier corresponds to a variable visible in the current
    602 namespace, you'll see the module it belongs to and its value.  For
    603 procedures and macros, autodoc will display, instead of their value, the
    604 argument names (or an underscore if Geiser cannot determine the name
    605 used in the definition).  Optional arguments are surrounded by
    606 parentheses.  When the optional argument has a default value, it's
    607 represented by a list made up of its name and that value.  When the
    608 argument is a keyword argument, its name has "#:" as a prefix.
    609 
    610    If that's not enough documentation for you, 'C-c C-d d' will open a
    611 separate documentation buffer with help on the symbol at point.  This
    612 buffer will contain implementation-specific information about the
    613 identifier (e.g., its docstring for Guile, or its contract, if any, for
    614 Racket), and a handy button to open the corresponding manual entry for
    615 the symbol, which will open an HTML page (for Racket and Chicken) or the
    616 texinfo manual (for Guile).  If you'd rather go directly to the manual,
    617 try 'C-c C-d i', which invokes 'geiser-doc-look-up-manual' as the handy
    618 button does.
    619 
    620    Geiser can also produce for you a list, classified by kind, of the
    621 identifiers exported by a given module: all you need to do is press 'C-c
    622 C-d m', and type or complete the desired module's name.
    623 
    624    The list of exported bindings is shown, again, in a buffer belonging
    625 to Geiser's documentation browser, where you have at your disposal a
    626 bunch of navigation commands listed in *note our cheat-sheet:
    627 Documentation browser.
    628 
    629    We'll have a bit more to say about the documentation browser in *note
    630 a later section: doc-browser.
    631 
    632    If that's still not enough, Geiser can jump, via 'M-.', to the
    633 symbol's definition.  A buffer with the corresponding file will pop up,
    634 with its point resting upon the identifier's defining form.  When you're
    635 done inspecting, 'M-,' will bring you back to where you were.  As we
    636 will see, these commands are also available in Scheme buffers.  'M-.'
    637 also works for modules: if your point is on an unambiguous module name,
    638 the file where it's defined will be opened for you.
    639 
    640 
    641 File: doczjiZME.info,  Node: Seeing is believing,  Next: Customization and tips,  Prev: Autodoc and friends,  Up: The REPL
    642 
    643 3.6 Seeing is believing
    644 =======================
    645 
    646 In schemes that support images as values (currently, that means Racket),
    647 the REPL will display them inline if you're using them in a
    648 graphics-aware Emacs.
    649 
    650    For the terminal, images will appear as buttons: press return on them
    651 to invoke an external viewer (configurable via 'geiser-image-viewer')
    652 that will show you the image at hand.  You can also ask for the same
    653 behaviour on all emacsen by customising 'geiser-repl-inline-images-p' to
    654 'nil'.
    655 
    656    Geiser keeps a cache of the last displayed images in the directory
    657 'geiser-image-cache-dir', which defaults to the system's temp directory,
    658 with up to 'geiser-image-cache-keep-last' files.  You can invoke the
    659 external image viewer on any of them with 'M-x geiser-view-last-image',
    660 which takes a prefix argument to indicate which image number you want, 0
    661 corresponding to the newest one.
    662 
    663 
    664 File: doczjiZME.info,  Node: Customization and tips,  Prev: Seeing is believing,  Up: The REPL
    665 
    666 3.7 Customization and tips
    667 ==========================
    668 
    669 The looks and ways of the REPL can be fine-tuned via a bunch of
    670 customization variables.  You can see and modify them all in the
    671 corresponding customization group (by using the menu entry or the good
    672 old 'M-x customize-group geiser-repl'), or by setting them in your Emacs
    673 initialisation files (as a rule, all knobs in Geiser are tunable this
    674 way: you don't need to use customization buffers if you don't like
    675 them).
    676 
    677    I'm documenting below a proper subset of those settings, together
    678 with some related tips.
    679 
    680 Choosing a Scheme implementation
    681 ................................
    682 
    683 Instead of using the generic 'geiser' command, you can directly start
    684 your Scheme of choice using any of the following commands:
    685    * 'run-racket'
    686    * 'run-guile'
    687    * 'run-chicken'
    688    * 'run-mit'
    689    * 'run-chibi'
    690    * 'run-chez'
    691    In addition, the variable 'geiser-active-implementations' contains a
    692 list of those Schemes Geiser should be aware of.  Thus, if you happen to
    693 be, say, a racketeer not to be beguiled by other schemes, you can tell
    694 Geiser to forget about the richness of the Scheme ecosystem with
    695 something like:
    696 
    697      (setq geiser-active-implementations '(racket))
    698 
    699 in your initialisation files.
    700 
    701    When starting a new REPL, Geiser assumes, by default, that the
    702 corresponding Scheme binary is in your path.  If that's not the case,
    703 the variables to tweak are (depending on which Scheme you choose):
    704    * 'geiser-guile-binary'
    705    * 'geiser-racket-binary'
    706    * 'geiser-chicken-binary'
    707    * 'geiser-mit-binary'
    708    * 'geiser-chibi-binary'
    709    * 'geiser-chez-binary'
    710    They should be set to a string with the full path to the requisite
    711 binary.
    712 
    713    Before starting the REPL, Geiser will check whether the version of
    714 your Scheme interpreter is good enough.  This means that it will spend a
    715 couple tenths of a second launching and quickly discarding a Scheme
    716 process, but also that the error message you'll get if you're on the
    717 wrong Scheme version will be much more informative.  If you one to avoid
    718 version checks, just check 'geiser-repl-skip-version-check-p' to 't' in
    719 your configuration.
    720 
    721 Init files and load paths
    722 .........................
    723 
    724 The startup behaviour of the REPL can be also fine tuned with a couple
    725 more initialisation parameters.
    726 
    727    Many Scheme implementations provide a configuration variable to
    728 specify a Geiser-specific init file (e.g., 'geiser-guile-init-file' for
    729 Guile), and, sometimes a global list of paths to add to the
    730 interpreter's load path (that'd be 'geiser-guile-load-path' for Guile).
    731 
    732    There is also a generic mechanism to specify how to add directories
    733 to the initial load path when 'geiser-repl-current-project-function' is
    734 set: you can then customize 'geiser-repl-add-project-paths' to a list of
    735 subdirectories of the project's root to add to the load path.  When this
    736 option is set, the working directory of the REPL's buffer (i.e., the
    737 value of the elisp variable 'default-directory') will be set to the
    738 directory returned by 'geiser-repl-current-project-function').
    739 
    740    These variables controlling your scheme's initialisation process are
    741 good candidates for an entry in a project's '.dir-locals.el' file, so
    742 that they are automatically set to a sensible value whenever you start a
    743 REPL in the project's directory.
    744 
    745 Startup waiting time
    746 ....................
    747 
    748 When starting a scheme implementation in old or very busy computers,
    749 Geiser might have to wait a bit more than it expects (which is ten
    750 seconds, or ten thousand milliseconds, by default).  If you find that
    751 Geiser is giving up too quickly and complaining that no prompt was
    752 found, try to increase the value of 'geiser-repl-startup-time' to, say,
    753 twenty seconds:
    754 
    755      (setq geiser-repl-startup-time 20000)
    756 
    757 If you prefer, you can use the customize interface to, well, customise
    758 the above variable's value.
    759 
    760 History
    761 .......
    762 
    763 By default, Geiser won't record duplicates in your input history.  If
    764 you prefer it did, just set 'geiser-repl-history-no-dups-p' to 'nil'.
    765 History entries are persistent across REPL sessions: they're saved in
    766 implementation-specific files whose location is controlled by the
    767 variable 'geiser-repl-history-filename'.  For example, my Geiser
    768 configuration includes the following line:
    769 
    770      (setq geiser-repl-history-filename "~/.emacs.d/geiser-history")
    771 
    772 which makes the files 'geiser-history.guile' and 'geiser-history.racket'
    773 to live inside my home's '.emacs.d' directory.
    774 
    775 Autodoc
    776 .......
    777 
    778 If you happen to love peace and quiet and prefer to keep your REPL's
    779 echo area free from autodoc's noise, 'geiser-repl-autodoc-p' is the
    780 customization variable for you: set it to 'nil' and autodoc will be
    781 disabled by default in new REPLs.  You can always bring the fairies
    782 back, on a per-REPL basis, using 'C-c C-d C-a'.
    783 
    784 Remote connections
    785 ..................
    786 
    787 When using any of the connection commands (e.g.  'geiser-connect',
    788 'connect-to-guile', 'connect-to-racket', etc.)  you'll be prompted for a
    789 host and a port, defaulting to "localhost" and 37146.  You can change
    790 those defaults customizing 'geiser-repl-default-host' and
    791 'geiser-repl-default-port', respectively.
    792 
    793 Killing REPLs
    794 .............
    795 
    796 If you don't want Emacs to ask for confirmation when you're about to
    797 kill a live REPL buffer (as will happen, for instance, if you're exiting
    798 Emacs before closing all your REPLs), you can set the flag
    799 'geiser-repl-query-on-kill-p' to 'nil'.  On a related note, the
    800 customizable variable 'geiser-repl-query-on-exit-p' controls whether
    801 Geiser should ask for confirmation when you exit the REPL explicitly
    802 (via, say, 'C-c C-q', as opposed to killing the buffer), and is set to
    803 'nil' by default.
    804 
    805 
    806 File: doczjiZME.info,  Node: Between the parens,  Next: Cheat sheet,  Prev: The REPL,  Up: Top
    807 
    808 4 Between the parens
    809 ********************
    810 
    811 A good REPL is a must, but just about half the story of a good Scheme
    812 hacking environment.  Well, perhaps a bit more than a half; but, at any
    813 rate, one surely needs also a pleasant way of editing source code.
    814 Don't pay attention to naysayers: Emacs comes with an excellent editor
    815 included for about any language on Earth, and just the best one when
    816 that language is sexpy (especially if you use Paredit).  Geiser's
    817 support for writing Scheme code adds to Emacs' 'scheme-mode', rather
    818 than supplanting it; and it does so by means of a minor mode
    819 (unimaginatively dubbed 'geiser-mode') that defines a bunch of new
    820 commands to try and, with the help of the same Scheme process giving you
    821 the REPL, make those Scheme buffers come to life.
    822 
    823 * Menu:
    824 
    825 * Activating Geiser::
    826 * The source and the REPL::
    827 * Documentation helpers::
    828 * To eval or not to eval::
    829 * To err perchance to debug::
    830 * Jumping around::
    831 * Geiser writes for you::
    832 
    833 
    834 File: doczjiZME.info,  Node: Activating Geiser,  Next: The source and the REPL,  Prev: Between the parens,  Up: Between the parens
    835 
    836 4.1 Activating Geiser
    837 =====================
    838 
    839 With Geiser installed following any of the procedures described in *note
    840 The quick and easy way:: or *note From the source's mouth::, Emacs will
    841 automatically activate geiser-mode when opening a Scheme buffer.  Geiser
    842 also instructs Emacs to consider files with the extension 'rkt' part of
    843 the family, so that, in principle, there's nothing you need to do to
    844 ensure that Geiser's extensions will be available, out of the box, when
    845 you start editing Scheme code.
    846 
    847    Indications that everything is working according to plan include the
    848 'Geiser' minor mode indicator in your mode-line and the appearance of a
    849 new entry for Geiser in the menu bar.  If, moreover, the mode-line
    850 indicator is the name of a Scheme implementation, you're indeed in a
    851 perfect world; otherwise, don't despair and keep on reading: i'll tell
    852 you how to fix that in a moment.
    853 
    854    The menu provides a good synopsis of everything Geiser brings to the
    855 party, including those keyboard shortcuts we Emacsers love.  If you're
    856 seeing the name of your favourite Scheme implementation in the
    857 mode-line, have a running REPL and are comfortable with Emacs, you can
    858 stop reading now and, instead, discover Geiser's joys by yourself.  I've
    859 tried to make Geiser as self-documenting as any self-respecting Emacs
    860 package should be.  If you follow this route, make sure to take a look
    861 at Geiser's customization buffers ('M-x customize-group <RET> geiser'):
    862 there's lot of fine-tuning available there.  You might also want to take
    863 a glance at the tables in *note our cheat sheet: Cheat sheet.
    864 
    865    Since geiser-mode is a minor mode, you can toggle it with 'M-x
    866 geiser-mode', and control its activation in hooks with the functions
    867 'turn-on-geiser-mode' and 'turn-off-geiser-mode'.  If, for some reason i
    868 cannot fathom, you prefer geiser-mode not to be active by default,
    869 customizing 'geiser-mode-auto-p' to 'nil' will do the trick.
    870 
    871    And if you happen to use a funky extension for your Scheme files that
    872 is not recognised as such by Emacs, just tell her about it with:
    873 
    874      (add-to-list 'auto-mode-alist '("\\.funky-extension\\'" . scheme-mode))
    875 
    876    Now, geiser-mode is just a useless wretch unless there's a running
    877 Scheme process backing it up.  Meaning that virtually all the commands
    878 it provides require a REPL up and running, preferably corresponding to
    879 the correct Scheme implementation.  In the following section, we'll see
    880 how to make sure that that's actually the case.
    881 
    882 
    883 File: doczjiZME.info,  Node: The source and the REPL,  Next: Documentation helpers,  Prev: Activating Geiser,  Up: Between the parens
    884 
    885 4.2 The source and the REPL
    886 ===========================
    887 
    888 As i've already mentioned a couple of times, geiser-mode needs a running
    889 REPL to be operative.  Thus, a common usage pattern will be for you to
    890 first call 'geiser' (or one of its variants, e.g.  'run-guile'), and
    891 then open some Scheme files; but there's nothing wrong in first opening
    892 a couple Scheme buffers and then starting the REPL (you can even find it
    893 more convenient, since pressing 'C-c C-z' in a Scheme buffer will start
    894 the REPL for you).  Since Geiser supports more than one Scheme
    895 implementation, though, there's the problem of knowing which of them is
    896 to be associated with each Scheme source file.  Serviceable as it is,
    897 geiser-mode will try to guess the correct implementation for you,
    898 according to the algorithm described below.
    899 
    900 How Geiser associates a REPL to your Scheme buffer
    901 ..................................................
    902 
    903 To determine what Scheme implementation corresponds to a given source
    904 file, Geiser uses the following algorithm:
    905 
    906   1. If the file-local variable 'geiser-scheme-implementation' is
    907      defined, its value is used.  A common way of setting buffer-local
    908      variables is to put them in a comment near the beginning of the
    909      file, surrounded by '-*-' marks, as in:
    910 
    911           ;; -*- geiser-scheme-implementation: guile -*-
    912 
    913   2. If you've customized 'geiser-active-implementations' so that it's a
    914      single-element list, that element is used as the chosen
    915      implementation.
    916   3. The contents of the file is scanned for hints on its associated
    917      implementation.  For instance, files that contain a '#lang'
    918      directive will be considered Racket source code, while those with a
    919      'define-module' form in them will be assigned to a Guile REPL.
    920   4. The current buffer's file name is checked against the rules given
    921      in 'geiser-implementations-alist', and the first match is applied.
    922      You can provide your own rules by customizing this variable, as
    923      explained below.
    924   5. If we haven't been lucky this far and you have customized
    925      'geiser-default-implementation' to the name of a supported
    926      implementation, we'll follow your lead.
    927   6. See?  That's the problem of being a smart aleck: one's always
    928      outsmarted by people around.  At this point, geiser-mode will
    929      humbly give up and ask you to explicitly choose the Scheme
    930      implementation.
    931 
    932    As you can see in the list above, there are several ways to influence
    933 Geiser's guessing by means of customizable variables.  The most direct
    934 (and most impoverishing) is probably limiting the active implementations
    935 to a single one, while customizing 'geiser-implementations-alist' is the
    936 most flexible (and, unsurprisingly, also the most complex).  Here's the
    937 default value for the latter variable:
    938 
    939      (((regexp "\\.scm$") guile)
    940       ((regexp "\\.ss$") racket)
    941       ((regexp "\\.rkt$") racket))
    942 
    943 which describes the simple heuristic that files with '.scm' as extension
    944 are by default associated to a Guile REPL while those ending in '.ss' or
    945 '.rkt' correspond to Racket's implementation (with the caveat that these
    946 rules are applied only if the previous heuristics have failed to detect
    947 the correct implementation, and that they'll match only if the
    948 corresponding implementation is active).  You can add rules to
    949 'geiser-implementations-alist' (or replace all of them) by customizing
    950 it.  Besides regular expressions, you can also use a directory name; for
    951 instance, the following snippet:
    952 
    953      (eval-after-load "geiser-impl"
    954        '(add-to-list 'geiser-implementations-alist
    955                      '((dir "/home/jao/prj/frob") guile)))
    956 
    957 will add a new rule that says that any file inside my
    958 '/home/jao/prj/frob' directory (or, recursively, any of its children) is
    959 to be assigned to Guile.  Since rules are first matched, first served,
    960 this new rule will take precedence over the default ones.
    961 
    962    A final tip: if you want Geiser to start automatically a REPL for you
    963 if it notices that there's no one active when it enters geiser-mode, you
    964 can customize 'geiser-mode-start-repl-p' to 't'.
    965 
    966 Managing multiple scheme projects
    967 .................................
    968 
    969 By default, Geiser will re-use a single REPL for all buffers sharing the
    970 same scheme implementation.  This works well enough in many cases, but
    971 may become problematic (or at least annoying) when working on multiple
    972 projects with separate dependencies and include paths.
    973 
    974    Geiser provides optional support for using separate REPLs for each
    975 project, which can be enabled by customizing
    976 'geiser-repl-current-project-function' and selecting your Emacs
    977 project-management library of choice (eg.  'project.el' or
    978 'projectile').  With this configured, if you want new REPLs to
    979 automatically associate themselves with the current project, so that all
    980 Geiser commands will ignore REPLs that are not associated with the
    981 project, customize the toggle 'geiser-repl-per-project-p' to 't' and
    982 you're all set up.
    983 
    984    This can be very convenient when used with a '.dir-locals.el' in the
    985 project root to set include paths, ensuring that Geiser REPLs will
    986 always know where to find your project's modules or dependencies.
    987 Geiser automatically handles the common case of the project root
    988 belonging to the load path: unless you tell it otherwise (using the
    989 customisable flag 'geiser-repl-add-project-path-p', which defaults to
    990 't'), it will add the result of calling
    991 'geiser-repl-current-project-function' to the REPLs load path on
    992 startup.
    993 
    994 Switching between source files and the REPL
    995 ...........................................
    996 
    997 Once you have a working geiser-mode, you can switch from Scheme source
    998 buffers to the REPL or 'C-c C-z'.  Those shortcuts map to the
    999 interactive command 'geiser-repl-switch'.
   1000 
   1001    If you use a numeric prefix, as in 'C-u C-c C-z', besides being
   1002 teleported to the REPL, the latter will switch to the namespace of the
   1003 Scheme source file, as if you had used 'C-c C-m' in the REPL, with the
   1004 source file's module as argument; cf.  discussion in *note Switching
   1005 context::.  This command is also bound to 'C-c C-a'.
   1006 
   1007    Once you're in the REPL, the same 'C-c C-z' shortcut will bring you
   1008 back to the buffer you jumped from, provided you don't kill the Scheme
   1009 process in between.  This is why the command is called
   1010 geiser-repl-switch instead of switch-to-repl, and what makes it really
   1011 handy, if you ask me.
   1012 
   1013    If for some reason you're not happy with the Scheme implementation
   1014 that Geiser has assigned to your file, you can change it with 'C-c C-s',
   1015 and you probably should take a look at the previous subsection to make
   1016 sure that Geiser doesn't get confused again.
   1017 
   1018 A note about context
   1019 ....................
   1020 
   1021 As explained before (*note Modus operandi::), all Geiser activities take
   1022 place in the context of the current namespace, which, for Scheme
   1023 buffers, corresponds to the module that the Scheme implementation
   1024 associates to the source file at hand (for instance, in Racket, there's
   1025 a one-to-one correspondence between paths and modules, while Guile
   1026 relies on explicit 'define-module' forms in the source file).
   1027 
   1028    Now that we have 'geiser-mode' happily alive in our Scheme buffers
   1029 and communicating with the right REPL instance, let us see what it can
   1030 do for us, besides jumping to and fro.
   1031 
   1032 
   1033 File: doczjiZME.info,  Node: Documentation helpers,  Next: To eval or not to eval,  Prev: The source and the REPL,  Up: Between the parens
   1034 
   1035 4.3 Documentation helpers
   1036 =========================
   1037 
   1038 Autodoc redux
   1039 .............
   1040 
   1041 The first thing you will notice by moving around Scheme source is that,
   1042 every now and then, the echo area lights up with the same autodoc
   1043 messages we know and love from our REPL forays.  This happens every time
   1044 the Scheme process is able to recognise an identifier in the buffer, and
   1045 provide information either on its value (for variables) or on its arity
   1046 and the name of its formal arguments (for procedures and macros).  That
   1047 information will only be available if the module the identifier belongs
   1048 to has been loaded in the running Scheme image.  So it can be the case
   1049 that, at first, no autodoc is shown for identifiers defined in the file
   1050 you're editing.  But as soon as you evaluate them (either individually
   1051 or collectively using any of the devices described in *note To eval or
   1052 not to eval::) their signatures will start appearing in the echo area.
   1053 
   1054    Autodoc activation is controlled by a minor mode, 'geiser-autodoc',
   1055 which you can toggle with 'M-x geiser-autodoc-mode', or its associated
   1056 keyboard shortcut, 'C-c C-d a'.  That /A indicator in the mode-line is
   1057 telling you that autodoc is active.  If you prefer that it be inactive
   1058 by default (e.g., because you're connecting to a really remote scheme
   1059 and want to minimize network exchanges), just set
   1060 'geiser-mode-autodoc-p' to 'nil' in your customization files.  Even when
   1061 autodoc mode is off, you can use 'geiser-autodoc-show', bound by default
   1062 to 'C-c C-d s', to show the autodoc string for the symbol at point.
   1063 
   1064    The way autodoc displays information deserves some explanation.  It
   1065 will first show the name of the module where the identifier at hand is
   1066 defined, followed by a colon and the identifier itself.  If the latter
   1067 corresponds to a procedure or macro, it will be followed by a list of
   1068 argument names, starting with the ones that are required.  Then there
   1069 comes a list of optional arguments, if any, enclosed in parentheses.
   1070 When an optional argument has a default value (or a form defining its
   1071 default value), autodoc will display it after the argument name.  When
   1072 the optional arguments are keywords, their names are prefixed with "#:"
   1073 (i.e., their names are keywords).  An ellipsis (...) serves as a marker
   1074 of an indeterminate number of parameters, as is the case with rest
   1075 arguments or when autodoc cannot fathom the exact number of arguments
   1076 (this is often the case with macros defined using 'syntax-case').
   1077 Another way in which autodoc displays its ignorance is by using an
   1078 underscore to display parameters whose name is beyond its powers.
   1079 
   1080    It can also be the case that a function or macro has more than one
   1081 signature (e.g., functions defined using 'case-lambda', or some
   1082 'syntax-rules' macros, for which Geiser has often the black magic
   1083 necessary to retrieve their actual arities).  In those cases, autodoc
   1084 shows all known signatures (using the above rules for each one)
   1085 separated by a vertical bar (|).
   1086 
   1087    As you have already noticed, the whole autodoc message is enclosed in
   1088 parentheses.  After all, we're talking about Scheme here.
   1089 
   1090    Finally, life is much easier when your cursor is on a symbol
   1091 corresponding to a plain variable: you'll see in the echo area its name,
   1092 preceded by the module where it's defined, and followed by its value,
   1093 with an intervening arrow for greater effect.  This time, there are no
   1094 enclosing parentheses (i hope you see the logic in my madness).
   1095 
   1096    You can change the way Geiser displays the module/identifier combo by
   1097 customizing 'geiser-autodoc-identifier-format'.  For example, if you
   1098 wanted a tilde surrounded by spaces instead of a colon as a separator,
   1099 you would write something like:
   1100 
   1101      (setq geiser-autodoc-identifier-format "%s ~ %s")
   1102 
   1103 in your Emacs initialisation files.  There's also a face
   1104 ('geiser-font-lock-autodoc-identifier') that you can customize (for
   1105 instance, with 'M-x customize-face') to change the appearance of the
   1106 text.  And another one ('geiser-font-lock-autodoc-current-arg') that
   1107 controls how the current argument position is highlighted.
   1108 
   1109 Other documentation commands
   1110 ............................
   1111 
   1112 Sometimes, autodoc won't provide enough information for you to
   1113 understand what a function does.  In those cases, you can ask Geiser to
   1114 ask the running Scheme for further information on a given identifier or
   1115 module.
   1116 
   1117    For symbols, the incantation is 'M-x geiser-doc-symbol-at-point', or
   1118 'C-c C-d C-d' for short.  If the associated Scheme supports docstrings
   1119 (as, for instance, Guile does), you'll be teleported to a new Emacs
   1120 buffer displaying Geiser's documentation browser, filled with
   1121 information about the identifier, including its docstring (if any;
   1122 unfortunately, that an implementation supports docstrings doesn't mean
   1123 that they're used everywhere).
   1124 
   1125    Pressing 'q' in the documentation buffer will bring you back,
   1126 enlightened, to where you were.  There's also a handful of other
   1127 navigation commands available in that buffer, which you can discover by
   1128 means of its menu or via the good old 'C-h m' command.  And feel free to
   1129 use the navigation buttons and hyperlinks that justify my calling this
   1130 buffer a documentation browser.
   1131 
   1132    For Racket, which does not support docstrings out of the box, this
   1133 command will provide less information, but the documentation browser
   1134 will display the corresponding contract when it's available, as well as
   1135 some other tidbits for re-exported identifiers.
   1136 
   1137    You can also ask Geiser to display information about a module, in the
   1138 form of a list of its exported identifiers, using 'C-c C-d C-m', exactly
   1139 as you would do in *note the REPL: repl-mod.
   1140 
   1141    In both cases, the documentation browser will show a couple of
   1142 buttons giving you access to further documentation.  First, you'll see a
   1143 button named source: pressing it you'll jump to the symbol's definition.
   1144 The second button, dubbed manual, will open the Scheme implementation's
   1145 manual page for the symbol at hand.  For Racket, that will open your web
   1146 browser displaying the corresponding reference's page (using the HTML
   1147 browser in Racket's configuration, which you can edit in DrRacket's
   1148 preferences dialog, or by setting 'plt:framework-pref:external-browser'
   1149 directly in '~/.racket/racket-prefs.rktd'), while in Guile a lookup will
   1150 be performed in the texinfo manual.
   1151 
   1152    For Guile, the manual lookup uses the info indexes in the standard
   1153 Guile info nodes, which are usually named "guile" or "guile-2.0".  If
   1154 yours are named differently, just add your name to the customizable
   1155 variable 'geiser-guile-manual-lookup-nodes'.
   1156 
   1157    A list of all navigation commands in the documentation browser is
   1158 available in *note our cheat-sheet: Documentation browser.
   1159 
   1160    You can also skip the documentation browser and jump directly to the
   1161 manual page for the symbol at point with the command
   1162 'geiser-doc-look-up-manual', bound to 'C-c C-d i'.
   1163 
   1164 
   1165 File: doczjiZME.info,  Node: To eval or not to eval,  Next: To err perchance to debug,  Prev: Documentation helpers,  Up: Between the parens
   1166 
   1167 4.4 To eval or not to eval
   1168 ==========================
   1169 
   1170 One of Geiser's main goals is to facilitate incremental development.
   1171 You might have noticed that i've made a big fuss of Geiser's ability to
   1172 recognize context, by dint of being aware of the namespace where its
   1173 operations happen.
   1174 
   1175    That awareness is especially important when evaluating code in your
   1176 scheme buffers, using the commands described below.  They allow you to
   1177 send code to the running Scheme with a granularity ranging from whole
   1178 files to single s-expressions.  That code will be evaluated in the
   1179 module associated with the file you're editing, allowing you to redefine
   1180 values and procedures to your heart's (and other modules') content.
   1181 
   1182    Macros are, of course, another kettle of fish: one needs to
   1183 re-evaluate uses of a macro after redefining it.  That's not a
   1184 limitation imposed by Geiser, but a consequence of how macros work in
   1185 Scheme (and other Lisps).  There's also the risk that you lose track of
   1186 what's actually defined and what's not during a given session.  But, in
   1187 my opinion
   1188 (https://jaortega.wordpress.com/2009/03/29/from-my-cold-prying-hands),
   1189 those are limitations we lispers are aware of, and they don't force us
   1190 to throw the baby with the bathwater and ditch incremental evaluation.
   1191 Some people disagree; if you happen to find their arguments
   1192 (https://blog.racket-lang.org/2009/03/the-drscheme-repl-isnt-the-one-in-emacs.html)
   1193 convincing, you don't have to throw away Geiser together with the baby:
   1194 'M-x geiser-restart-repl' will let you restart the REPL as many times as
   1195 you see fit.  Moreover, you can invoke 'geiser-compile-current-buffer'
   1196 and 'geiser-load-current-buffer' with a prefix argument (that'd be
   1197 something like 'C-u C-c C-k' for compilation, for instance), to tell
   1198 Geiser to restart the REPL associated with a buffer before compiling or
   1199 loading its current contents.
   1200 
   1201    For all of you auld bearded lispers still with me, here are some of
   1202 the commands performing incremental evaluation in Geiser.
   1203 
   1204    'geiser-eval-last-sexp', bound to 'C-x C-e', will eval the
   1205 s-expression just before point.  If you use a prefix, as in 'C-u C-x
   1206 C-e', besides evaluating it the expression is inserted in the the
   1207 buffer.
   1208 
   1209    'geiser-eval-definition', bound to 'C-M-x', finds the topmost
   1210 definition containing point and sends it for evaluation.  The variant
   1211 'geiser-eval-definition-and-go' ('C-c M-e') works in the same way, but
   1212 it also teleports you to REPL after the evaluation.
   1213 
   1214    'geiser-eval-region', bound to 'C-c C-r', evals the current region.
   1215 Again, there's an and-go version available, 'geiser-eval-region-and-go',
   1216 bound to 'C-c M-r'.  And, if you want to extend the evaluated region to
   1217 the whole buffer, there is 'geiser-eval-buffer', bound to 'C-c C-b' and
   1218 its companion 'geiser-eval-buffer-and-go', bound to 'C-c M-b'.
   1219 
   1220    For all the commands above, the result of the evaluation is displayed
   1221 in the minibuffer, unless it causes a (Scheme-side) error (*note To err
   1222 perchance to debug::), or, for schemes supporting them (such as Racket),
   1223 the evaluation yields an image, in which case you'll see it in popping
   1224 up in the Geiser debug buffer (if your Emacs runs under the auspices of
   1225 a graphical toolkit), or via an external viewer if you set
   1226 'geiser-image-viewer' to the path of an appropriate visualization
   1227 program (see also *note Seeing is believing:: for more on image
   1228 support).
   1229 
   1230    At the risk of repeating myself, i'll remind you that all these
   1231 evaluations will take place in the namespace of the module corresponding
   1232 to the Scheme file from which you're sending your code, which, in
   1233 general, will be different from the REPL's current module.  And, if all
   1234 goes according to plan, (re)defined variables and procedures should be
   1235 immediately visible inside and, if exported, outside their module.
   1236 
   1237    Besides evaluating expressions, definitions and regions, you can also
   1238 macro-expand them.  The corresponding key bindings start with the prefix
   1239 'C-c C-m' and end, respectively, with 'C-e', 'C-x' and 'C-r'.  The
   1240 result of the macro expansion always appears in a pop up buffer.
   1241 
   1242    All the evaluations and expansions performed by the commands above
   1243 are asynchronous(1), so that you can move around while the answer is
   1244 being computed.  The command 'geiser-eval-interrupt', bound to 'C-c C-i'
   1245 will interrupt any on-going evaluation and, when the scheme
   1246 implementation supports a debugger, bring you to a buffer where you can
   1247 perform buffer actions in the interrupted evaluation's context.
   1248 
   1249    Oh, didn't i mention we have support for debuggers?  Let's talk about
   1250 that next.
   1251 
   1252    ---------- Footnotes ----------
   1253 
   1254    (1) For local REPLs, where we can easily send an interrupt signal to
   1255 the scheme process; remote REPLs are another kettle of fish in this
   1256 regard, and generally interruptions are supported: you'll just have to
   1257 kill the connection if caught in a loop.
   1258 
   1259 
   1260 File: doczjiZME.info,  Node: To err perchance to debug,  Next: Jumping around,  Prev: To eval or not to eval,  Up: Between the parens
   1261 
   1262 4.5 To err: perchance to debug
   1263 ==============================
   1264 
   1265 When an error occurs during evaluation, it will be reported according to
   1266 the capabilities of the underlying Scheme REPL.
   1267 
   1268    In most schemes, you'll be presented with a backtrace, in a new
   1269 buffer where file paths locating the origin of the error are click-able
   1270 (you can navigate them using the <TAB> key, and use <RET> or the mouse
   1271 to jump to the offending spot; or invoke Emacs' stock commands
   1272 'next-error' and 'previous-error', bound to 'M-g n' and 'M-g p' by
   1273 default).
   1274 
   1275    By default, Geiser will tele-transport your pointer to the debug
   1276 buffer: if you prefer to stay in the source buffer, set
   1277 'geiser-debug-jump-to-debug' to nil.
   1278 
   1279    For schemes with good debug support (Guile is one), the debug buffers
   1280 offer a debugging menu, accesible via the ',' (that's a comma) key.  If
   1281 you press it, a transient menu will appear, offering you a variety of
   1282 actions, including showing local variable values or a more detailed
   1283 backtrace or frame display.  This is the same interface you'll encounter
   1284 the in case of interrupted evaluations, either by your explicit 'C-c
   1285 C-i' command or because a breakpoint has been previosuly set.
   1286 
   1287    In addition, Geiser will sometimes report warnings for otherwise
   1288 successful evaluations.  In those cases, it won't enter the debugger,
   1289 just report the warnings in a debug buffer.
   1290 
   1291 
   1292 File: doczjiZME.info,  Node: Jumping around,  Next: Geiser writes for you,  Prev: To err perchance to debug,  Up: Between the parens
   1293 
   1294 4.6 Jumping around
   1295 ==================
   1296 
   1297 This one feature is as sweet as it is easy to explain: 'M-.'
   1298 ('geiser-edit-symbol-at-point') will open the file where the identifier
   1299 around point is defined and land your point on its definition.  To
   1300 return to where you were, press 'M-,' ('geiser-pop-symbol-stack').  This
   1301 command works also for module names: Geiser first tries to locate a
   1302 definition for the identifier at point and, if that fails, a module with
   1303 that name; if the latter succeeds, the file where the module is defined
   1304 will pop up.
   1305 
   1306    Sometimes, the underlying Scheme will tell Geiser only the file where
   1307 the symbol is defined, but Geiser will use some heuristics (read,
   1308 regular expressions) to locate the exact line and bring you there.
   1309 Thus, if you find Geiser systematically missing your definitions, send a
   1310 message to the mailing list <geiser-users@nongnu.org>, and we'll try to
   1311 make the algorithm smarter.
   1312 
   1313    You can control how the destination buffer pops up by setting
   1314 'geiser-edit-symbol-method' to either 'nil' (to open the file in the
   1315 current window), ''window' (other window in the same frame) or ''frame'
   1316 (in a new frame).
   1317 
   1318 
   1319 File: doczjiZME.info,  Node: Geiser writes for you,  Prev: Jumping around,  Up: Between the parens
   1320 
   1321 4.7 Geiser writes for you
   1322 =========================
   1323 
   1324 No self-respecting programming mode would be complete without
   1325 completion.  In geiser-mode, identifier completion is bound to
   1326 'M-<TAB>', and will offer all visible identifiers starting with the
   1327 prefix before point.  Visible here means all symbols imported or defined
   1328 in the current namespace plus locally bound ones.  E.g., if you're at
   1329 the end of the following partial expression:
   1330 
   1331      (let ((default 42))
   1332        (frob def
   1333 
   1334 and press 'M-<TAB>', one of the possible completions will be 'default'.
   1335 
   1336    After obtaining the list of completions from the running Scheme,
   1337 Geiser uses the standard Emacs completion machinery to display them.
   1338 That means, among other things, that partial completion is available:
   1339 just try to complete 'd-s' or 'w-o-t-s' to see why this is a good thing.
   1340 Partial completion won't work if you have disabled it globally in your
   1341 Emacs configuration: if you don't know what i'm talking about, never
   1342 mind: Geiser's partial completion will work for you out of the box.
   1343 
   1344    If you find the 'M' modifier annoying, you always have the option to
   1345 activate 'geiser-smart-tab-mode', which will make the <TAB> key double
   1346 duty as the regular Emacs indentation command (when the cursor is not
   1347 near a symbol) and Geiser's completion function.  If you want this
   1348 smarty pants mode always on in Scheme buffers, customize
   1349 'geiser-mode-smart-tab-p' to 't'.
   1350 
   1351    Geiser also knows how to complete module names: if no completion for
   1352 the prefix at point is found among the currently visible bindings, it
   1353 will try to find a module name that matches it.  You can also request
   1354 explicitly completion only over module names using 'M-`' (that's a
   1355 backtick).
   1356 
   1357    Besides completion, there's also this little command,
   1358 'geiser-squarify', which will toggle the delimiters of the innermost
   1359 list around point between round and square brackets.  It is bound to
   1360 'C-c C-e ['.  With a numeric prefix (as in, say, 'M-2 C-c C-e ['), it
   1361 will perform that many toggles, forward for positive values and backward
   1362 for negative ones.
   1363 
   1364 Caveat about completion
   1365 -----------------------
   1366 
   1367 It is possible for Geiser to hang your Emacs process when trying to
   1368 complete symbols.  This can happen in the REPL itself or even in a
   1369 Scheme buffer that is attached to the REPL process.  For more details on
   1370 how to fix this problem, *note Caveat about completion & the REPL:
   1371 completion-caveat.
   1372 
   1373 
   1374 File: doczjiZME.info,  Node: Cheat sheet,  Next: No hacker is an island,  Prev: Between the parens,  Up: Top
   1375 
   1376 5 Cheat sheet
   1377 *************
   1378 
   1379 In the tables below, triple chords always accept a variant with the
   1380 third key not modified by <Control>; e.g., 'geiser-autodoc-show' is
   1381 bound both to 'C-c C-d C-s' and 'C-c C-d s'.
   1382 
   1383 * Menu:
   1384 
   1385 * Scheme buffers::
   1386 * REPL::
   1387 * Documentation browser::
   1388 
   1389 
   1390 File: doczjiZME.info,  Node: Scheme buffers,  Next: REPL,  Prev: Cheat sheet,  Up: Cheat sheet
   1391 
   1392 5.1 Scheme buffers
   1393 ==================
   1394 
   1395 Key            Command                       Description
   1396 ---------------------------------------------------------------------------
   1397 C-c C-z        'geiser-mode-switch-to-repl'  Switch to REPL
   1398 C-c C-a        'geiser-mode-switch-to-repl-and-enter'Switch to REPL and current
   1399                                              module (also 'C-u C-c C-z')
   1400 C-c C-s        'geiser-set-scheme'           Specify Scheme
   1401                                              implementation for buffer
   1402 M-.            'geiser-edit-symbol-at-point' Go to definition of
   1403                                              identifier at point
   1404 M-,            'geiser-pop-symbol-stack'     Go back to where M-.  was
   1405                                              last invoked
   1406 C-c C-e C-m    'geiser-edit-module'          Ask for a module and open
   1407                                              its file
   1408 C-c C-e C-l    'geiser-add-to-load-path'     Ask for a directory and add
   1409                                              to Scheme load path
   1410 C-c C-e C-[    'geiser-squarify'             Toggle between () and []
   1411                                              for current form
   1412 C-c C-\        'geiser-insert-lambda'        Insert greek lambda or,
   1413                                              with prefix, a lambda form
   1414 C-c C-i        'geiser-eval-interrupt'       Interrupt ongoing
   1415                                              evaluation
   1416 C-M-x          'geiser-eval-definition'      Eval definition around
   1417                                              point
   1418 C-c C-c        'geiser-eval-definition'      Eval definition around
   1419                                              point
   1420 C-c M-e        'geiser-eval-definition-and-go'Eval definition around
   1421                                              point and switch to REPL
   1422 C-c M-c        'geiser-eval-definition-and-go'Eval definition around
   1423                                              point and switch to REPL
   1424 C-x C-e        'geiser-eval-last-sexp'       Eval sexp before point
   1425 C-c C-r        'geiser-eval-region'          Eval region
   1426 C-c M-r        'geiser-eval-region-and-go'   Eval region and switch to
   1427                                              REPL
   1428 C-c C-b        'geiser-eval-buffer'          Eval buffer
   1429 C-c M-b        'geiser-eval-buffer-and-go'   Eval buffer and switch to
   1430                                              REPL
   1431 C-c C-m C-x    'geiser-expand-definition'    Macro-expand definition
   1432                                              around point
   1433 C-c C-m C-e    'geiser-expand-last-sexp'     Macro-expand sexp before
   1434                                              point
   1435 C-c C-m C-r    'geiser-expand-region'        Macro-expand region
   1436 C-c C-k        'geiser-compile-current-buffer'Compile and load current
   1437                                              file; with prefix, restart
   1438                                              REPL before
   1439 C-c C-l        'geiser-load-file'            Load scheme file
   1440 M-g n, C-x '   'next-error'                  Jump to the location of
   1441                                              next error
   1442 M-g p          'previous-error'              Jump to the location of
   1443                                              previous error
   1444 C-c C-d C-d    'geiser-doc-symbol-at-point'  See documentation for
   1445                                              identifier at point
   1446 C-c C-d C-s    'geiser-autodoc-show'         Show signature or value for
   1447                                              identifier at point in echo
   1448                                              area
   1449 C-c C-d C-m    'geiser-doc-module'           See a list of a module's
   1450                                              exported identifiers
   1451 C-c C-d C-i    'geiser-doc-look-up-manual'   Look up manual for symbol
   1452                                              at point
   1453 C-c C-d C-a    'geiser-autodoc-mode'         Toggle autodoc mode
   1454 C-c <          'geiser-xref-callers'         Show callers of procedure
   1455                                              at point
   1456 C-c >          'geiser-xref-callees'         Show callees of procedure
   1457                                              at point
   1458 M-TAB          'completion-at-point'         Complete identifier at
   1459                                              point
   1460 M-', C-.       'geiser-capf-complete-module' Complete module name at
   1461                                              point
   1462 
   1463 
   1464 File: doczjiZME.info,  Node: REPL,  Next: Documentation browser,  Prev: Scheme buffers,  Up: Cheat sheet
   1465 
   1466 5.2 REPL
   1467 ========
   1468 
   1469 Key            Command                       Description
   1470 ---------------------------------------------------------------------------
   1471 C-c C-z        'geiser-repl-switch'          Start Scheme REPL, or jump
   1472                                              to previous buffer
   1473 C-c M-o        'geiser-repl-clear-buffer'    Clear REPL buffer
   1474 C-c C-k        'geiser-repl-interrupt'       Interrupt REPL evaluation
   1475                                              (signalling inferior
   1476                                              scheme)
   1477 C-c C-q        'geiser-repl-exit'            Kill Scheme process
   1478 M-.            'geiser-edit-symbol-at-point' Edit identifier at point
   1479 C-c C-l        'geiser-load-file'            Load scheme file
   1480 TAB            'geiser-repl-tab-dwim'        Complete, indent, or go to
   1481                                              next error
   1482 S-TAB          'geiser-repl--previous-error' Go to previous error in the
   1483 (backtab)                                    REPL buffer
   1484 M-TAB          'completion-at-point'         Complete identifier at
   1485                                              point
   1486 M-', C-.       'geiser-capf-complete-module' Complete module name at
   1487                                              point
   1488 C-c [, C-c     'geiser-squarify'             Toggle between () and []
   1489 C-[                                          for current form
   1490 C-c \, C-c     'geiser-insert-lambda'        Insert greek lambda or,
   1491 C-\                                          with prefix, a lambda form
   1492 C-c C-r        'geiser-add-to-load-path'     Ask for a directory and add
   1493                                              to Scheme load path
   1494 M-p, M-n       (comint commands)             Prompt history, matching
   1495                                              current prefix
   1496 C-c M-p, C-c   (comint commands)             Previous/next prompt inputs
   1497 M-n
   1498 C-c C-m        'geiser-repl-switch-to-module'Set current module
   1499 C-c C-i        'geiser-repl-import-module'   Import module into current
   1500                                              namespace
   1501 C-c C-d C-d    'geiser-doc-symbol-at-point'  See documentation for
   1502                                              symbol at point
   1503 C-c C-d C-i    'geiser-doc-look-up-manual'   Look up manual for symbol
   1504                                              at point
   1505 C-c C-d C-m    'geiser-repl--doc-module'     See documentation for
   1506                                              module
   1507 C-c C-d C-a    'geiser-autodoc-mode'         Toggle autodoc mode
   1508 
   1509 
   1510 File: doczjiZME.info,  Node: Documentation browser,  Prev: REPL,  Up: Cheat sheet
   1511 
   1512 5.3 Documentation browser
   1513 =========================
   1514 
   1515 Key            Command                       Description
   1516 ---------------------------------------------------------------------------
   1517 TAB, n         'forward-button'              Next link
   1518 S-TAB, p       'backward-button'             Previous link
   1519 N              'geiser-doc-next-section'     Next section
   1520 P              'geiser-doc-previous-section' Previous section
   1521 f              'geiser-doc-next'             Next page
   1522 b              'geiser-doc-previous'         Previous page
   1523 k              'geiser-doc-kill-page'        Kill current page and go to
   1524                                              previous or next
   1525 g, r           'geiser-doc-refresh'          Refresh page
   1526 c              'geiser-doc-clean-history'    Clear browsing history
   1527 ., M-.         'geiser-doc-edit-symbol-at-point'Edit identifier at point
   1528 z              'geiser-doc-switch-to-repl'   Switch to REPL
   1529 q              'View-quit'                   Bury buffer
   1530 
   1531 
   1532 File: doczjiZME.info,  Node: No hacker is an island,  Next: Index,  Prev: Cheat sheet,  Up: Top
   1533 
   1534 6 No hacker is an island
   1535 ************************
   1536 
   1537 Dan Leslie, with the help of his three-months old daughter Freija,
   1538 proved there's a smidgen of sense in this madness by adding support for
   1539 Chicken to version 0.7 of Geiser, several years after it was born.  And
   1540 Peter Feigl reinforced that feeling soon afterwards with his work on
   1541 supporting GNU/MIT Scheme, Chib and Chez in one fell swoop.
   1542 
   1543    Andy Wingo, Geiser's first user, has been a continuous source of
   1544 encouragement and suggestions, and keeps improving Guile and heeding my
   1545 feature requests.
   1546 
   1547    The nice thing about collaborating with Andreas Rottmann over all
   1548 these years is that he will not only make your project better with
   1549 insightful comments and prodding: he'll send you patches galore too.
   1550 
   1551    Ludovic Courtès, #geiser's citizen no.  1, joined the fun after a
   1552 while, and has since then been a continuous source of encouragement,
   1553 ideas and bug reports.
   1554 
   1555    Michael Wilber convinced me that image support for Racket was not
   1556 only fun, but easy, with the best argument: actual code!
   1557 
   1558    Daniel Hackney and Grant Rettke created the first ELPA packages for
   1559 Geiser and taught me to fish.
   1560 
   1561    Diogo F. S. Ramos is Geiser's most indefatigable user and bug
   1562 reporter, and the mailing list has been a far less lonely place since he
   1563 came.
   1564 
   1565    Aleix Conchillo has been my favourite spammer, beta tester and patch
   1566 sender during more years and for more projects than i can remember.
   1567 
   1568    Philip K. prepared the NonGNU ELPA packages for Geiser, making them
   1569 available by default starting in Emacs 28, very generously volunteering
   1570 all the work (i just had to update the docs!).
   1571 
   1572    Jonas Bernoulli, as it's his indefatigable wont, has improved
   1573 Geiser's compliance to current Emacs packaging standards, making it a
   1574 respectful member of the ELPA community.
   1575 
   1576    Eduardo Cavazos' contagious enthusiasm has helped in many ways to
   1577 keep Geiser alive, and he's become its best evangelist in R6RS circles.
   1578 
   1579    Alex Kost has contributed with many bug reports and improved Geiser
   1580 with several patches.
   1581 
   1582    Eli Barzilay took the time to play with an early alpha and made many
   1583 valuable suggestions, besides answering all my 'how do you in PLT'
   1584 questions.
   1585 
   1586    Matthew Flatt, Robby Findler and the rest of the PLT team did not
   1587 only answer my inquiries, but provided almost instant fixes to the few
   1588 issues i found.
   1589 
   1590    Thanks also to the PLT and Guile communities, for showing me that
   1591 Geiser was not only possible, but a pleasure to hack on.  And to the
   1592 Slime hackers, who led the way.
   1593 
   1594 Joining the fun
   1595 ...............
   1596 
   1597    * For questions, praise, critique and anything else Geiser, do not
   1598      hesitate to drop an email to our list, (@ geiser-users (.  nongnu
   1599      org)) (mailto:geiser-users@nongnu.org): no subscription required.
   1600      Check the list page
   1601      (http://lists.nongnu.org/mailman/listinfo/geiser-users) for more
   1602      information or browse the archives
   1603      (http://lists.nongnu.org/archive/html/geiser-users/).  The list is
   1604      also accessible via Gmane (http://gmane.org) as
   1605      gmane.lisp.scheme.geiser
   1606      (http://dir.gmane.org/gmane.lisp.scheme.geiser).
   1607    * You can submit bug reports either to the mailing list or to our bug
   1608      tracker (https://gitlab.com/groups/emacs-geiser/-/issues) over at
   1609      Gitlab.
   1610    * The Freenode IRC channel #geiser is the Geiserati's meeting point
   1611      in cyberspace.
   1612 
   1613 
   1614 File: doczjiZME.info,  Node: Index,  Prev: No hacker is an island,  Up: Top
   1615 
   1616 Index
   1617 *****
   1618 
   1619 
   1620 * Menu:
   1621 
   1622 * ,enter vs. enter!:                     Switching context.   (line   6)
   1623 * ac-geiser:                             Friends.             (line   9)
   1624 * ask on kill, don't:                    Customization and tips.
   1625                                                               (line 133)
   1626 * autocomplete:                          Friends.             (line   9)
   1627 * autodoc customized:                    Documentation helpers.
   1628                                                               (line  64)
   1629 * autodoc explained:                     Documentation helpers.
   1630                                                               (line  32)
   1631 * autodoc for variables:                 Documentation helpers.
   1632                                                               (line  58)
   1633 * autodoc, disabling:                    Customization and tips.
   1634                                                               (line 115)
   1635 * autodoc, in scheme buffers:            Documentation helpers.
   1636                                                               (line   9)
   1637 * autodoc, in the REPL:                  Autodoc and friends. (line  11)
   1638 * autostart REPL:                        The source and the REPL.
   1639                                                               (line  80)
   1640 * backtraces:                            To err perchance to debug.
   1641                                                               (line   6)
   1642 * bug tracker:                           No hacker is an island.
   1643                                                               (line  76)
   1644 * company:                               Friends.             (line   9)
   1645 * completion for module names:           Geiser writes for you.
   1646                                                               (line  33)
   1647 * completion in scheme buffers:          Geiser writes for you.
   1648                                                               (line   6)
   1649 * completion, at the REPL:               Completion and error handling.
   1650                                                               (line   6)
   1651 * connect to server:                     Starting the REPL.   (line  43)
   1652 * corpses:                               Top.                 (line  63)
   1653 * current module:                        Modus operandi.      (line  15)
   1654 * current module, change:                Switching context.   (line  21)
   1655 * current module, in REPL:               Switching context.   (line   6)
   1656 * default directory:                     Customization and tips.
   1657                                                               (line  69)
   1658 * derailment:                            Top.                 (line  63)
   1659 * dir-locals:                            The source and the REPL.
   1660                                                               (line  87)
   1661 * disabling autodoc:                     Documentation helpers.
   1662                                                               (line  22)
   1663 * docstrings, maybe:                     Documentation helpers.
   1664                                                               (line  85)
   1665 * documentation for symbol:              Documentation helpers.
   1666                                                               (line  85)
   1667 * ELPA:                                  The quick and easy way.
   1668                                                               (line   6)
   1669 * error buffer:                          To err perchance to debug.
   1670                                                               (line   9)
   1671 * evaluating images:                     To eval or not to eval.
   1672                                                               (line  56)
   1673 * evaluation:                            To eval or not to eval.
   1674                                                               (line  37)
   1675 * external image viewer:                 Seeing is believing. (line  10)
   1676 * faces, in the REPL:                    Starting the REPL.   (line  35)
   1677 * geiser-add-to-load-path:               Customization and tips.
   1678                                                               (line  58)
   1679 * geiser-mode:                           Activating Geiser.   (line   6)
   1680 * geiser-mode commands:                  Activating Geiser.   (line  21)
   1681 * geiser-repl-add-project-path-p:        The source and the REPL.
   1682                                                               (line 102)
   1683 * geiser-repl-add-project-paths:         Customization and tips.
   1684                                                               (line  58)
   1685 * geiser-repl-per-project-p:             The source and the REPL.
   1686                                                               (line  92)
   1687 * gmane:                                 No hacker is an island.
   1688                                                               (line  66)
   1689 * Guile info nodes:                      Documentation helpers.
   1690                                                               (line 120)
   1691 * Guile's REPL server:                   Starting the REPL.   (line  48)
   1692 * GUILE_LOAD_COMPILED_PATH:              Customization and tips.
   1693                                                               (line  58)
   1694 * GUILE_LOAD_PATH:                       Customization and tips.
   1695                                                               (line  58)
   1696 * help on identifier:                    Autodoc and friends. (line  29)
   1697 * host, default:                         Customization and tips.
   1698                                                               (line 124)
   1699 * image cache:                           Seeing is believing. (line  16)
   1700 * image display:                         To eval or not to eval.
   1701                                                               (line  56)
   1702 * image support:                         Seeing is believing. (line   6)
   1703 * image viewer:                          Seeing is believing. (line  10)
   1704 * incremental development:               To eval or not to eval.
   1705                                                               (line   6)
   1706 * incremental development, evil:         To eval or not to eval.
   1707                                                               (line  18)
   1708 * incremental development, not evil:     To eval or not to eval.
   1709                                                               (line  37)
   1710 * interrupt evaluation:                  To eval or not to eval.
   1711                                                               (line  78)
   1712 * IRC channel:                           No hacker is an island.
   1713                                                               (line  79)
   1714 * jump, at the REPL:                     Autodoc and friends. (line  51)
   1715 * jumping customized:                    Jumping around.      (line  22)
   1716 * jumping in scheme buffers:             Jumping around.      (line   6)
   1717 * macrostep:                             Friends.             (line   9)
   1718 * mailing list:                          No hacker is an island.
   1719                                                               (line  66)
   1720 * manual autodoc:                        Documentation helpers.
   1721                                                               (line  22)
   1722 * module exports:                        Autodoc and friends. (line  39)
   1723 * modus operandi:                        Modus operandi.      (line   6)
   1724 * NonGNU ELPA:                           The quick and easy way.
   1725                                                               (line   6)
   1726 * opening manual pages:                  Documentation helpers.
   1727                                                               (line 128)
   1728 * paredit:                               Friends.             (line   9)
   1729 * partial completion:                    Geiser writes for you.
   1730                                                               (line  18)
   1731 * peace and quiet:                       Customization and tips.
   1732                                                               (line 115)
   1733 * philosophy:                            Top.                 (line  63)
   1734 * philosophy <1>:                        To eval or not to eval.
   1735                                                               (line   6)
   1736 * port, default:                         Customization and tips.
   1737                                                               (line 124)
   1738 * project.el:                            The source and the REPL.
   1739                                                               (line  87)
   1740 * projectile:                            The source and the REPL.
   1741                                                               (line  87)
   1742 * projects:                              The source and the REPL.
   1743                                                               (line  87)
   1744 * quick install:                         The quick and easy way.
   1745                                                               (line   6)
   1746 * Racket's REPL server:                  Starting the REPL.   (line  53)
   1747 * recursion:                             Index.               (line   6)
   1748 * remote connections:                    Starting the REPL.   (line  78)
   1749 * remote REPL:                           Starting the REPL.   (line  43)
   1750 * REPL:                                  Starting the REPL.   (line   6)
   1751 * REPL commands:                         First aids.          (line   6)
   1752 * REPL customization:                    Customization and tips.
   1753                                                               (line   6)
   1754 * REPL, faces:                           Starting the REPL.   (line  35)
   1755 * scheme binary:                         Customization and tips.
   1756                                                               (line  38)
   1757 * scheme executable path:                Customization and tips.
   1758                                                               (line  38)
   1759 * scheme file extensions:                Activating Geiser.   (line  38)
   1760 * scheme implementation, choosing:       Customization and tips.
   1761                                                               (line  20)
   1762 * scheme implementation, choosing <1>:   The source and the REPL.
   1763                                                               (line  21)
   1764 * scheme init file:                      Customization and tips.
   1765                                                               (line  58)
   1766 * scheme load path:                      Customization and tips.
   1767                                                               (line  58)
   1768 * smart tabs:                            Geiser writes for you.
   1769                                                               (line  26)
   1770 * start REPL, automatically:             The source and the REPL.
   1771                                                               (line  80)
   1772 * startup timeout:                       Customization and tips.
   1773                                                               (line  85)
   1774 * supported versions:                    Must needs.          (line   6)
   1775 * swanking:                              Showing off.         (line   6)
   1776 * switching schemes:                     The source and the REPL.
   1777                                                               (line 131)
   1778 * switching to module:                   The source and the REPL.
   1779                                                               (line 119)
   1780 * switching to REPL:                     The source and the REPL.
   1781                                                               (line 115)
   1782 * switching to source:                   The source and the REPL.
   1783                                                               (line 115)
   1784 * thanks:                                No hacker is an island.
   1785                                                               (line   6)
   1786 * timeout:                               Customization and tips.
   1787                                                               (line  85)
   1788 * to err is schemey:                     To err perchance to debug.
   1789                                                               (line   6)
   1790 * useless wretch:                        Activating Geiser.   (line  43)
   1791 * Version checking:                      Customization and tips.
   1792                                                               (line  50)
   1793 * versions supported:                    Must needs.          (line   6)
   1794 
   1795 
   1796 
   1797 Tag Table:
   1798 Node: Top910
   1799 Node: Introduction2674
   1800 Node: Modus operandi3011
   1801 Ref: current-module3669
   1802 Node: Showing off5134
   1803 Node: Installation6415
   1804 Node: Must needs6631
   1805 Node: The quick and easy way8316
   1806 Ref: The quick and easy way-Footnote-19797
   1807 Node: From the source's mouth9952
   1808 Node: Friends10740
   1809 Ref: paredit11017
   1810 Node: The REPL12154
   1811 Ref: quick-start12276
   1812 Node: Starting the REPL12667
   1813 Node: First aids17049
   1814 Node: Switching context18885
   1815 Node: Completion and error handling20818
   1816 Ref: completion-caveat22529
   1817 Node: Autodoc and friends24443
   1818 Ref: repl-mod26516
   1819 Node: Seeing is believing27522
   1820 Node: Customization and tips28537
   1821 Ref: choosing-impl29269
   1822 Ref: active-implementations29500
   1823 Ref: impl-binary29882
   1824 Node: Between the parens34293
   1825 Node: Activating Geiser35358
   1826 Node: The source and the REPL37971
   1827 Ref: repl-association39014
   1828 Ref: repl-per-project42262
   1829 Ref: switching-repl-buff43675
   1830 Node: Documentation helpers45364
   1831 Ref: doc-browser49635
   1832 Node: To eval or not to eval52362
   1833 Ref: To eval or not to eval-Footnote-157109
   1834 Node: To err perchance to debug57362
   1835 Node: Jumping around58868
   1836 Node: Geiser writes for you60148
   1837 Node: Cheat sheet62655
   1838 Node: Scheme buffers63042
   1839 Node: REPL67483
   1840 Node: Documentation browser70073
   1841 Node: No hacker is an island71144
   1842 Node: Index74599
   1843 
   1844 End Tag Table
   1845 
   1846 
   1847 Local Variables:
   1848 coding: utf-8
   1849 End: