Better display of evaluation results.
[geiser.git] / README
blob626bed9a24d9926db5fd2022ea43d049f90fa26f
1 * Overview
3   Geiser is a generic Emacs/Scheme interaction mode, featuring an
4   enhanced REPL and a set of minor modes improving Emacs' basic scheme
5   major mode. The main functionalities provided are:
7     - Evaluation of forms in the namespace of the current module.
8     - Macro expansion.
9     - File/module loading.
10     - Namespace-aware identifier completion (including local bindings,
11       names visible in the current module, and module names).
12     - Autodoc: the echo area shows information about the signature of
13       the procedure/macro around point automatically.
14     - Jump to definition of identifier at point.
15     - Access to documentation (including docstrings when the
16       implementation provides it).
17     - Listings of identifiers exported by a given module.
18     - Listings of callers/callees of procedures.
19     - Rudimentary support for debugging (list of
20       evaluation/compilation error in an Emacs' compilation-mode
21       buffer).
23    Currently supported implementations are Guile and PLT.
25     - Guile works only with the development, vm-based binary. Be sure
26       to customize `geiser-repl-guile-binary' to point to a correct vm
27       binary.
28     - PLT Scheme 4.1.5.5 or better required.
30 * Installation
32   - In your .emacs:
34      (load-file "<path-to-geiser>/elisp/geiser.el")
36     This installs all supported Scheme implementations. You can list
37     explicitly the ones that you want by setting the variable
38     `geiser-impl-installed-implementations' *before* loading geiser.el.
39     For instance:
41      (setq geiser-impl-installed-implementations '(plt guile))
43     On opening a scheme file, Geiser will try to guess its Scheme,
44     defaulting to the first in the list.
46   - Check the geiser customization group for some options with:
48       M-x customize-group RET geiser RET
50     In particular, customize `geiser-repl-<impl>-binary' (in
51     geiser-repl), which should point to an executable in your path.
53   - To start a REPL, M-x geiser.
55 * Quick key reference
57 *** In Scheme buffers:
59     |---------------------+-------------------------------------------------|
60     | C-c C-z             | Switch to REPL                                  |
61     | C-c C-s             | Specify Scheme implementation for buffer        |
62     |---------------------+-------------------------------------------------|
63     | M-.                 | Go to definition of identifier at point         |
64     | M-,                 | Go back to where M-. was last invoked           |
65     | C-c C-e m           | Ask for a module and open its file              |
66     |---------------------+-------------------------------------------------|
67     | C-M-x               | Eval definition around point                    |
68     | C-c M-e             | Eval definition around point and switch to REPL |
69     | C-x C-e             | Eval sexp before point                          |
70     | C-c C-r             | Eval region                                     |
71     | C-c M-r             | Eval region and switch to REPL                  |
72     |---------------------+-------------------------------------------------|
73     | C-c C-m x           | Macro-expand definition around point            |
74     | C-c C-m e           | Macro-expand sexp before point                  |
75     | C-c C-m r           | Marcro-expand region                            |
76     | C-u C-c C-m [x,e,r] | (With prefix, macro expansions are recursive)   |
77     |---------------------+-------------------------------------------------|
78     | C-c C-k             | Compile and load current file                   |
79     | C-c C-l             | Load current file                               |
80     |---------------------+-------------------------------------------------|
81     | C-c C-d d           | See documentation for identifier at point       |
82     | C-c C-d m           | See a list of a module's exported identifiers   |
83     | C-c C-d a           | Toggle autodoc mode                             |
84     |---------------------+-------------------------------------------------|
85     | C-c<                | Show callers of procedure at point              |
86     | C-c>                | Show callees of procedure at point              |
87     | C-c C-x f           | See a generic's methods signatures              |
88     |---------------------+-------------------------------------------------|
89     | M-TAB               | Complete identifier at point                    |
90     | M-`, C-.            | Complete module name at point                   |
91     | TAB                 | Complete identifier at point or indent          |
92     |                     | (If `geiser-mode-smart-tab-p' is t)             |
93     |---------------------+-------------------------------------------------|
95 *** In the REPL
97     |----------------+-------------------------------------------|
98     | C-c C-z, C-c z | Start Scheme REPL (if it's not running)   |
99     |----------------+-------------------------------------------|
100     | M-.            | Edit identifier at point                  |
101     | TAB, M-TAB     | Complete identifier at point              |
102     | M-`, C-.       | Complete module name at point             |
103     |----------------+-------------------------------------------|
104     | M-p, M-n       | Prompt history, matching current prefix   |
105     |----------------+-------------------------------------------|
106     | C-c k          | Compile and load scheme file              |
107     | C-c l          | Load scheme file                          |
108     |----------------+-------------------------------------------|
109     | C-c d          | See documentation for identifier at point |
110     | C-c m          | See module documentation                  |
111     | C-c a          | Toggle autodoc mode                       |
112     |----------------+-------------------------------------------|
114 *** In the documentation browser:
116     |-----------+----------------------------------------------|
117     | n/p       | next/previous page                           |
118     | l         | previous page                                |
119     | SPC/S-SPC | scroll up/down                               |
120     | TAB/S-TAB | next/previous link                           |
121     | k         | kill current page and go to previous or next |
122     | r         | refresh page                                 |
123     | c         | clean browsing history                       |
124     | M-.       | edit identifier at point                     |
125     | C-cz      | switch to REPL                               |
126     | q         | bury buffer                                  |
127     |-----------+----------------------------------------------|
129 *** In backtrace (evaluation/compile result) buffers:
131     - Default error navigation keys used by Emacs' compilation mode
132       (e.g. M-g n, M-g p for next/previous error).
133     - q to bury buffer.