From d8e54ebda76c034f48342e8ee7f2b7901c9bc674 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Fri, 15 Oct 2010 22:57:44 +0200 Subject: [PATCH] Documentation for M-. and modules --- README | 48 +++++++++++++++++++++++------------------------- doc/fun.texi | 5 ++++- doc/repl.texi | 4 +++- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/README b/README index 00df9b8..6793d1e 100644 --- a/README +++ b/README @@ -1,4 +1,3 @@ - -*- org -*- * Overview Geiser is a generic Emacs/Scheme interaction mode, featuring an @@ -21,9 +20,9 @@ evaluation/compilation error in an Emacs' compilation-mode buffer). - NOTE: if you're not in a hurry, [[http://www.nongnu.org/geiser/][Geiser's website]] contains a nicer - manual, also included in Geiser tarballs as a texinfo file - (doc/geiser.info). + NOTE: if you're not in a hurry, Geiser's website + (http://www.nongnu.org/geiser/) contains a nicer manual, also + included in Geiser tarballs as a texinfo file (doc/geiser.info). * Supported scheme implementations @@ -40,42 +39,30 @@ file system. Let's call that place . - In your .emacs: - #+BEGIN_SRC emacs-lisp (load-file "/elisp/geiser.el") - #+END_SRC *** Byte-compiled - Create a build directory, `build', say: - #+BEGIN_SRC shell $ cd $ mkdir build; cd build - #+END_SRC - Configure and make: - #+BEGIN_SRC shell $ ../configure && make - #+END_SRC Now, you can use the byte-compiled Geiser in place by adding to your .emacs: - #+BEGIN_SRC emacs-lisp (load "/build/elisp/geiser-load") - #+END_SRC or, alternatively, install it with: - #+BEGIN_SRC shell $ make install - #+END_SRC (you might need to get root access, depending on your installation directory) and, instead of the above load forms, require 'geiser-install (not 'geiser, mind you) in your emacs initialization file: - #+BEGIN_SRC emacs-lisp (require 'geiser-install) - #+END_SRC You're ready to go! @@ -85,9 +72,7 @@ setting the variable `geiser-impl-installed-implementations' *before* loading geiser.el. For instance: - #+BEGIN_SRC emacs-lisp - (setq geiser-impl-installed-implementations '(racket guile)) - #+END_SRC + (setq geiser-impl-installed-implementations '(racket guile)) On opening a scheme file, Geiser will try to guess its Scheme, defaulting to the first in the list. Use `C-c C-s' to select the @@ -108,10 +93,11 @@ module are offered. While that is cool and all, things are even better: if you have - [[http://nschum.de/src/emacs/company-mode/][company-mode]] installed, Geiser's completion will use it. Just - require company-mode and, from then on, any new scheme buffer or - REPL will use it. If you didn't know about Nikolaj Schumacher's - awesome mode, check [[http://www.screentoaster.com/watch/stU0lSRERIR1pYRFVdXVlRVFFV/company_mode_for_gnu_emacs][this screencast]]. + company-mode (http://nschum.de/src/emacs/company-mode/) installed, + Geiser's completion will use it. Just require company-mode and, + from then on, any new scheme buffer or REPL will use it. If you + didn't know about Nikolaj Schumacher's awesome mode, check this + screencast: . * Quick key reference @@ -121,26 +107,32 @@ | C-c C-z | Switch to REPL | | C-u C-c C-z | Switch to REPL and current module | | C-c C-s | Specify Scheme implementation for buffer | + |---------------------+-------------------------------------------------| | M-. | Go to definition of identifier at point | | M-, | Go back to where M-. was last invoked | | C-c C-e m | Ask for a module and open its file | + |---------------------+-------------------------------------------------| | C-M-x | Eval definition around point | | C-c M-e | Eval definition around point and switch to REPL | | C-x C-e | Eval sexp before point | | C-c C-r | Eval region | | C-c M-r | Eval region and switch to REPL | + |---------------------+-------------------------------------------------| | C-c C-m x | Macro-expand definition around point | | C-c C-m e | Macro-expand sexp before point | | C-c C-m r | Marcro-expand region | | C-u C-c C-m [x,e,r] | (With prefix, macro expansions are recursive) | + |---------------------+-------------------------------------------------| | C-c C-k | Compile and load current file | | C-c C-l | Load current file | + |---------------------+-------------------------------------------------| | C-c C-d d | See documentation for identifier at point | | C-c C-d m | See a list of a module's exported identifiers | | C-c C-d a | Toggle autodoc mode | + |---------------------+-------------------------------------------------| | C-c< | Show callers of procedure at point | | C-c> | Show callees of procedure at point | - | C-c C-x f | See a generic's methods signatures | + |---------------------+-------------------------------------------------| | M-TAB | Complete identifier at point | | M-`, C-. | Complete module name at point | | TAB | Complete identifier at point or indent | @@ -152,14 +144,17 @@ |-------------+----------------------------------------------------| | C-c C-z | Start Scheme REPL, or jump to previous buffer | | C-c C-q | Kill Scheme process | + | C-c C-k | Nuke REPL: use it if the REPL becomes unresponsive | + |-------------+----------------------------------------------------| | M-. | Edit identifier at point | | TAB, M-TAB | Complete identifier at point | | M-`, C-. | Complete module name at point | | M-p, M-n | Prompt history, matching current prefix | - | C-c C-k | Nuke REPL: use it if the REPL becomes unresponsive | + |-------------+----------------------------------------------------| | C-c C-m | Set current module | | C-c C-i | Import module into current namespace | | C-c C-l | Load scheme file | + |-------------+----------------------------------------------------| | C-c C-d C-d | See documentation for symbol at point | | C-c C-d C-m | See documentation for module | | C-c C-d C-a | Toggle autodoc mode | @@ -171,11 +166,14 @@ | n, f | Next page | | p, b | Previous page | | TAB, S-TAB | Next/previous link | + |------------+----------------------------------------------| | k | Kill current page and go to previous or next | | g, r | Refresh page | | c | Clear browsing history | + |------------+----------------------------------------------| | ., M-. | Edit identifier at point | | z | Switch to REPL | + |------------+----------------------------------------------| | q | Bury buffer | |------------+----------------------------------------------| diff --git a/doc/fun.texi b/doc/fun.texi index 9895443..eba54e1 100644 --- a/doc/fun.texi +++ b/doc/fun.texi @@ -430,7 +430,10 @@ This one feature is as sweet as easy to explain: @kbd{M-.} (@code{geiser-edit-symbol-at-point}) will open the file where the identifier around point is defined and land your point on its definition. To return to where you were, press @kbd{M-,} -(@code{geiser-pop-symbol-stack}). +(@code{geiser-pop-symbol-stack}). This command works also for module +names: Geiser first tries to locate a definition for the identifier at +point and, if that fails, a module with that name; if the latter +succeeds, the file where the module is defined will pop up. Sometimes, the underlying Scheme will tell Geiser only the file where the symbol is defined, but Geiser will use some heuristics (read, diff --git a/doc/repl.texi b/doc/repl.texi index 6a4c47d..43a07b4 100644 --- a/doc/repl.texi +++ b/doc/repl.texi @@ -208,7 +208,9 @@ If that's still not enough, Geiser can jump, via @kbd{M-.}, to the symbol's definition. A buffer with the corresponding file will pop up, with its point resting upon the identifier's defining form. When you're done inspecting, @kbd{M-,} will bring you back to where you were. As we -will see, these commands are also available in scheme buffers. +will see, these commands are also available in scheme buffers. @kbd{M-.} +also works for modules: if your point is on an unambiguous module name, +the file where it's defined will be opened for you. @cindex module exports @anchor{repl-mod} -- 2.11.4.GIT