@node Cheat sheet, No hacker is an island, Between the parens, Top
@chapter Cheat sheet

In the tables below, triple chords always accept a variant with the
third key not modified by @key{Control}; e.g.,
@code{geiser-autodoc-show} is bound both to @kbd{C-c C-d C-s} and
@kbd{C-c C-d s}.

@menu
* Scheme buffers::
* REPL::
* Documentation browser::
@end menu

@node Scheme buffers, REPL, Cheat sheet, Cheat sheet
@section Scheme buffers

@multitable @columnfractions .20 .4 .4
@headitem Key @tab Command @tab Description
@item C-c C-z
@tab @code{geiser-mode-switch-to-repl}
@tab Switch to REPL
@item C-c C-a
@tab @code{geiser-mode-switch-to-repl-and-enter}
@tab Switch to REPL and current module (also @kbd{C-u C-c C-z})
@item C-c C-s
@tab @code{geiser-set-scheme}
@tab Specify Scheme implementation for buffer
@item @tab @tab
@item M-.
@tab @code{geiser-edit-symbol-at-point}
@tab Go to definition of identifier at point
@item M-,
@tab @code{geiser-pop-symbol-stack}
@tab Go back to where M-. was last invoked
@item C-c C-e C-m
@tab @code{geiser-edit-module}
@tab Ask for a module and open its file
@item C-c C-e C-l
@tab @code{geiser-add-to-load-path}
@tab Ask for a directory and add to Scheme load path
@item C-c C-e C-[
@tab @code{geiser-squarify}
@tab Toggle between () and [] for current form
@item C-c C-\
@tab @code{geiser-insert-lambda}
@tab Insert greek lambda or, with prefix, a lambda form
@item @tab @tab
@item C-M-x
@tab @code{geiser-eval-definition}
@tab Eval definition around point
@item C-c M-e
@tab @code{geiser-eval-definition-and-go}
@tab Eval definition around point and switch to REPL
@item C-x C-e
@tab @code{geiser-eval-last-sexp}
@tab Eval sexp before point
@item C-c C-r
@tab @code{geiser-eval-region}
@tab Eval region
@item C-c M-r
@tab @code{geiser-eval-region-and-go}
@tab Eval region and switch to REPL
@item C-c C-b
@tab @code{geiser-eval-buffer}
@tab Eval buffer
@item C-c M-b
@tab @code{geiser-eval-buffer-and-go}
@tab Eval buffer and switch to REPL
@item @tab @tab
@item C-c C-m C-x
@tab @code{geiser-expand-definition}
@tab Macro-expand definition around point
@item C-c C-m C-e
@tab @code{geiser-expand-last-sexp}
@tab Macro-expand sexp before point
@item C-c C-m C-r
@tab @code{geiser-expand-region}
@tab Macro-expand region
@item @tab @tab
@item C-c C-k
@tab @code{geiser-compile-current-buffer}
@tab Compile and load current file
@item M-g n, C-x `
@tab @code{next-error}
@tab Jump to the location of next error
@item M-g p
@tab @code{previous-error}
@tab Jump to the location of previous error
@item @tab @tab
@item C-c C-d C-d
@tab @code{geiser-doc-symbol-at-point}
@tab See documentation for identifier at point
@item C-c C-d C-s
@tab @code{geiser-autodoc-show}
@tab Show signature or value for identifier at point in echo area
@item C-c C-d C-m
@tab @code{geiser-doc-module}
@tab See a list of a module's exported identifiers
@item C-c C-d C-i
@tab @code{geiser-doc-look-up-manual}
@tab Look up manual for symbol at point
@item C-c C-d C-a
@tab @code{geiser-autodoc-mode}
@tab Toggle autodoc mode
@item @tab @tab
@item C-c <
@tab @code{geiser-xref-callers}
@tab Show callers of procedure at point
@item C-c >
@tab @code{geiser-xref-callees}
@tab Show callees of procedure at point
@item @tab @tab
@item M-TAB
@tab @code{completion-at-point}
@tab Complete identifier at point
@item M-`, C-.
@tab @code{geiser-completion--complete-module}
@tab Complete module name at point
@end multitable

@node REPL, Documentation browser, Scheme buffers, Cheat sheet
@section REPL

@multitable @columnfractions .20 .4 .4
@headitem Key @tab Command @tab Description
@item C-c C-z
@tab @code{switch-to-geiser}
@tab Start Scheme REPL, or jump to previous buffer
@item C-c M-o
@tab @code{geiser-repl-clear-buffer}
@tab Clear REPL buffer
@item C-c C-k
@tab @code{geiser-repl-interrupt}
@tab Interrupt REPL evaluation (signalling inferior scheme)
@item C-c C-q
@tab @code{geiser-repl-exit}
@tab Kill Scheme process
@item M-.
@tab @code{geiser-edit-symbol-at-point}
@tab Edit identifier at point
@item TAB
@tab @code{geiser-repl-tab-dwim}
@tab Complete, indent, or go to next error
@item S-TAB (backtab)
@tab @code{geiser-repl--previous-error}
@tab Go to previous error in the REPL buffer
@item M-TAB
@tab @code{completion-at-point}
@tab Complete indentifier at point
@item M-`, C-.
@tab @code{geiser-completion--complete-module}
@tab Complete module name at point
@item C-c C-r
@tab @code{geiser-add-to-load-path}
@tab Ask for a directory and add to Scheme load path
@item M-p, M-n
@tab (comint commands)
@tab Prompt history, matching current prefix
@item C-c M-p, C-c M-n
@tab (comint commands)
@tab Previous/next prompt inputs
@item C-c C-m
@tab @code{switch-to-geiser-module}
@tab Set current module
@item C-c C-i
@tab @code{geiser-repl-import-module}
@tab Import module into current namespace
@item C-c C-d C-d
@tab @code{geiser-doc-symbol-at-point}
@tab See documentation for symbol at point
@item C-c C-d C-i
@tab @code{geiser-doc-look-up-manual}
@tab Look up manual for symbol at point
@item C-c C-d C-m
@tab @code{geiser-repl--doc-module}
@tab See documentation for module
@item C-c C-d C-a
@tab @code{geiser-autodoc-mode}
@tab Toggle autodoc mode
@end multitable

@node Documentation browser,  , REPL, Cheat sheet
@section Documentation browser

@multitable @columnfractions .20 .4 .4
@headitem Key @tab Command @tab Description
@item TAB, n
@tab @code{forward-button}
@tab Next link
@item S-TAB, p
@tab @code{backward-button}
@tab Previous link
@item N
@tab @code{geiser-doc-next-section}
@tab Next section
@item P
@tab @code{geiser-doc-previous-section}
@tab Previous section
@item f
@tab @code{geiser-doc-next}
@tab Next page
@item b
@tab @code{geiser-doc-previous}
@tab Previous page
@item k
@tab @code{geiser-doc-kill-page}
@tab Kill current page and go to previous or next
@item g, r
@tab @code{geiser-doc-refresh}
@tab Refresh page
@item c
@tab @code{geiser-doc-clean-history}
@tab Clear browsing history
@item ., M-.
@tab @code{geiser-doc-edit-symbol-at-point}
@tab Edit identifier at point
@item z
@tab @code{geiser-doc-switch-to-repl}
@tab Switch to REPL
@item q
@tab @code{View-quit}
@tab Bury buffer
@end multitable

@ifhtml
@html
<hr>
@end html
@end ifhtml