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: