emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/hyperbole 6e80e7a 30/53: V6.0.2e: Rewrote HyControl for


From: Robert Weiner
Subject: [elpa] externals/hyperbole 6e80e7a 30/53: V6.0.2e: Rewrote HyControl for improved generality, event handling and to support key bindings.
Date: Wed, 15 Nov 2017 22:47:04 -0500 (EST)

branch: externals/hyperbole
commit 6e80e7a322fdc3026afba29f574283a55b66b07f
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>

    V6.0.2e: Rewrote HyControl for improved generality, event handling and to 
support key bindings.
    
    2017-10-19  Bob Weiner  <address@hidden>
    
    * man/hyperbole.texi (Version): Updated to 6.0.2e and rebuilt output 
formats.
    
    * hycontrol.el (hycontrol-frame-adjust-widths, 
hycontrol-frame-adjust-heights,
        hycontrol-frame-adjust-widths-full-height, 
hycontrol-frame-adjust-heights-full-width,
        hycontrol-set-width-percentage-full-height, 
hycontrol-set-height-percentage-full-width,
        hycontrol-frame-widths-pointer, hycontrol-frame-widths, 
hycontrol-frame-heights-pointer,
        hycontrol-frame-heights: Added to cycle through resizing height or 
width of frames to
          common sizes.  Also cycle through one dimension while fixing the 
other dimension
          at full-screen size.
        (hycontrol--frames-prompt-format): Added {a} and {A} bindings to both 
frames and windows
            keymaps to adjust frame width and height respectively by cycle 
through a list of common
            fixed percentages such as 25% and 50%.  Added to Hyperbole manual.
    
        (hycontrol-frames-post-command-hook-body, 
hycontrol-windows-post-command-hook-body):
          Added to prevent {C-g} quit from signalling an error within 
post-command-hook.
    
    2017-10-18  Bob Weiner  <address@hidden>
    
    * hycontrol.el (hycontrol-restore-frame-configuration, 
hycontrol-restore-window-configuration,
                    hycontrol-save-configurations, 
hycontrol-delete-other-frames,
                    hycontrol-delete-other-windows, 
hycontrol-clone-window-to-new-frame
                    hycontrol-make-frame): Made interactive.
                   (hycontrol-frames, hycontrol-windows): Forced arg to numeric 
value on entry.
                       (hycontrol-stay-in-mode, hycontrol-universal-arg-digit,
                hycontrol--debug, hycontrol--exit-status, hycontrol-arg,
                hycontrol--frames-prompt-format, 
hycontrol--windows-prompt-format,
                hycontrol-frames-pre-command-hook, 
hycontrol-windows-pre-command-hook,
                hycontrol-frames-mode-map, hycontrol-windows-mode-map, 
hycontrol-exit-mode): Added.
               (hycontrol-prettify-event, hycontrol-handle-event): Removed.
    
               (hycontrol-frames, hycontrol-windows): Rewrote HyControl to use 
a frame-mode
       and window-mode transient keymap which allows for regular key bindings 
and eliminates
       the need for a HyControl event loop and processing of non-HyControl 
events.  There should
       be no change in HyControl user-visible behavior from this other than 
that key bindings
       may now be customized (remember to update the HyControl minibuffer 
prompts if you do change
       any).
    
    2017-10-17  Bob Weiner  <address@hidden>
    
    * hycontrol.el (hycontrol-screen-offset-alist, hycontrol-set-screen-offsets,
                    hycontrol-display-screen-offsets):
        Changed ordering of items to match Emacs window-edges and frame-edges.
                   (hycontrol-fit-to-screen): Added and used to ensure resized 
and repositioned
        windows fit on the screen.
        (hycontrol-set-frame-height, hycontrol-set-frame-position, 
hycontrol-set-frame-size,
         hycontrol-set-frame-width): Added with calls to 
hycontrol-fit-to-screen.
    
    * man/hyperbole.texi: Removed InfoDock and XEmacs references since they are 
so old and no
        longer maintained that no one uses them today.
    
    * hmouse-sh.el (hmouse-unshifted-setup): Changed to enable right mouse key 
as Assist Key unless
        optional argument MIDDLE-KEY-ONLY-FLAG is non-nil (which is how it is 
called from
        hmouse-shifted-setup).
    
    * hycontrol.el (hycontrol-frame-percentage-of-screen): Automatically 
adjusted out of bounds
        percentages to the closest number of 0 and 0.998 (so does not overflow 
screen.
        Automatically moved frame if right or bottom edges are offscreen as a 
result of size change.
    
    * DEMO (Dragging Buffers and Windows): Renamed this from 'Moving Buffers' 
and added subsections.
    
    2017-10-16  Bob Weiner  <address@hidden>
    
    * man/hyperbole.texi (Smart Key Modeline Clicks): Renamed from Smart Key 
Modeline.  Added
        up-to-date info on click locations and actions.
                         (Implicit Buttons): Added git-reference, 
git-commit-reference and
        github-reference.
                         (Future Work): Added Direct Manipulation section.
                     (Smart Keys): Moved before Buttons chapter since Buttons 
references
        Smart Keys and the benefits of Smart Keys are quicker to understand.
    
    * hui-mouse.el (smart-dired, smart-dired-assist): Made end of first line 
behave just like
        last line for quitting and executing actions.
    
    * hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Further 
optimized for when
        depress and release windows are the same and frame has an auto-raise 
property, then we
        know release window was uppermost at the point of release and can skip 
finding what app
        owned the topmost window.
    
    * hui-window.el (hmouse-dired-readin-hook):
                    (hmouse-dired-display-here-mode): Added and used in 
hmouse-drag-item-mode-forms.
        Once a dired buffer item has been dragged, make next Action Key press 
on an item display it
        in the same dired window.
      man/hyperbole.texi (Smart Key - Dired Mode): Documented here and in 
smart-dired function.
    
    * man/hkey-help.txt:
      hui-window.el: Updated drag acton summaries with the latest information.
    
    * hui-window.el (hmouse-drag-vertically-within-emacs): Added to allow for 
modeline vertical drags
        between windows.
    
    * hui-mouse.el (smart-dired-pathname-up-to-point): Added this to change the 
behavior of smart-dired.
        When on the first line of a Dired buffer where its directory path is 
shown, treat any ancestor
        subdirectory of the current directory as a selectable path.  Thus, you 
can run Dired on any
        ancestor subdirectory simply by pressing the Action Key at the end of 
the subdirectory you want.
        A press on the first / character, runs dired on the root directory.
      man/hyperbole.texi (Smart Key - Dired Mode): Updated doc to reflect this 
change.
---
 .hypb              |  Bin 3832 -> 4066 bytes
 Changes            |  111 +-
 DEMO               |   97 +-
 HY-ABOUT           |    2 +-
 HY-ANNOUNCE        |    2 +-
 HY-ANNOUNCE-SHORT  |    2 +-
 HY-NEWS            |    2 +-
 Makefile           |    2 +-
 README.md          |    2 +-
 README.md.html     |    2 +-
 hib-debbugs.el     |    2 +-
 hmouse-drv.el      |   42 +-
 hmouse-key.el      |    2 +-
 hmouse-sh.el       |   37 +-
 hui-menu.el        |    3 +-
 hui-mini.el        |    1 +
 hui-mouse.el       |   75 +-
 hui-window.el      |   86 +-
 hversion.el        |    2 +-
 hycontrol.el       | 1189 ++++++++------
 hyperbole-pkg.el   |    2 +-
 hyperbole.el       |    4 +-
 man/hkey-help.txt  |   31 +-
 man/hyperbole.html | 4410 +++++++++++++++++++++++++++-------------------------
 man/hyperbole.info |  Bin 438357 -> 448311 bytes
 man/hyperbole.pdf  |  Bin 798811 -> 816075 bytes
 man/hyperbole.texi | 3487 +++++++++++++++++++++--------------------
 man/version.texi   |    6 +-
 28 files changed, 5244 insertions(+), 4357 deletions(-)

diff --git a/.hypb b/.hypb
index 129b2b6..d095f41 100644
Binary files a/.hypb and b/.hypb differ
diff --git a/Changes b/Changes
index 964b5d5..c70a453 100644
--- a/Changes
+++ b/Changes
@@ -1,10 +1,107 @@
+2017-10-19  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (Version): Updated to 6.0.2e and rebuilt output formats.
+
+* hycontrol.el (hycontrol-frame-adjust-widths, hycontrol-frame-adjust-heights,
+    hycontrol-frame-adjust-widths-full-height, 
hycontrol-frame-adjust-heights-full-width,
+    hycontrol-set-width-percentage-full-height, 
hycontrol-set-height-percentage-full-width,
+    hycontrol-frame-widths-pointer, hycontrol-frame-widths, 
hycontrol-frame-heights-pointer,
+    hycontrol-frame-heights: Added to cycle through resizing height or width 
of frames to
+      common sizes.  Also cycle through one dimension while fixing the other 
dimension
+      at full-screen size.
+    (hycontrol--frames-prompt-format): Added {a} and {A} bindings to both 
frames and windows
+        keymaps to adjust frame width and height respectively by cycle through 
a list of common
+        fixed percentages such as 25% and 50%.  Added to Hyperbole manual.
+
+    (hycontrol-frames-post-command-hook-body, 
hycontrol-windows-post-command-hook-body): 
+      Added to prevent {C-g} quit from signalling an error within 
post-command-hook.
+
+2017-10-18  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-restore-frame-configuration, 
hycontrol-restore-window-configuration,
+                hycontrol-save-configurations, hycontrol-delete-other-frames,
+                hycontrol-delete-other-windows, 
hycontrol-clone-window-to-new-frame
+                hycontrol-make-frame): Made interactive.
+               (hycontrol-frames, hycontrol-windows): Forced arg to numeric 
value on entry.
+              (hycontrol-stay-in-mode, hycontrol-universal-arg-digit,
+               hycontrol--debug, hycontrol--exit-status, hycontrol-arg,
+               hycontrol--frames-prompt-format, 
hycontrol--windows-prompt-format,
+               hycontrol-frames-pre-command-hook, 
hycontrol-windows-pre-command-hook,
+               hycontrol-frames-mode-map, hycontrol-windows-mode-map, 
hycontrol-exit-mode): Added.
+              (hycontrol-prettify-event, hycontrol-handle-event): Removed. 
+
+              (hycontrol-frames, hycontrol-windows): Rewrote HyControl to use 
a frame-mode
+   and window-mode transient keymap which allows for regular key bindings and 
eliminates
+   the need for a HyControl event loop and processing of non-HyControl events. 
 There should
+   be no change in HyControl user-visible behavior from this other than that 
key bindings
+   may now be customized (remember to update the HyControl minibuffer prompts 
if you do change
+   any).
+
+2017-10-17  Bob Weiner  <address@hidden>
+
+* hycontrol.el (hycontrol-screen-offset-alist, hycontrol-set-screen-offsets,
+                hycontrol-display-screen-offsets): 
+    Changed ordering of items to match Emacs window-edges and frame-edges.
+               (hycontrol-fit-to-screen): Added and used to ensure resized and 
repositioned
+    windows fit on the screen.
+    (hycontrol-set-frame-height, hycontrol-set-frame-position, 
hycontrol-set-frame-size,
+     hycontrol-set-frame-width): Added with calls to hycontrol-fit-to-screen.
+
+* man/hyperbole.texi: Removed InfoDock and XEmacs references since they are so 
old and no
+    longer maintained that no one uses them today.
+
+* hmouse-sh.el (hmouse-unshifted-setup): Changed to enable right mouse key as 
Assist Key unless
+    optional argument MIDDLE-KEY-ONLY-FLAG is non-nil (which is how it is 
called from
+    hmouse-shifted-setup).
+
+* hycontrol.el (hycontrol-frame-percentage-of-screen): Automatically adjusted 
out of bounds
+    percentages to the closest number of 0 and 0.998 (so does not overflow 
screen.
+    Automatically moved frame if right or bottom edges are offscreen as a 
result of size change.
+
+* DEMO (Dragging Buffers and Windows): Renamed this from 'Moving Buffers' and 
added subsections.
+
 2017-10-16  Bob Weiner  <address@hidden>
 
+* man/hyperbole.texi (Smart Key Modeline Clicks): Renamed from Smart Key 
Modeline.  Added
+    up-to-date info on click locations and actions.
+                     (Implicit Buttons): Added git-reference, 
git-commit-reference and
+    github-reference.
+                     (Future Work): Added Direct Manipulation section.
+                    (Smart Keys): Moved before Buttons chapter since Buttons 
references
+    Smart Keys and the benefits of Smart Keys are quicker to understand.
+
+* hui-mouse.el (smart-dired, smart-dired-assist): Made end of first line 
behave just like
+    last line for quitting and executing actions.
+
+* hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Further optimized 
for when
+    depress and release windows are the same and frame has an auto-raise 
property, then we
+    know release window was uppermost at the point of release and can skip 
finding what app
+    owned the topmost window.
+
+* hui-window.el (hmouse-dired-readin-hook):
+                (hmouse-dired-display-here-mode): Added and used in 
hmouse-drag-item-mode-forms.
+    Once a dired buffer item has been dragged, make next Action Key press on 
an item display it
+    in the same dired window.
+  man/hyperbole.texi (Smart Key - Dired Mode): Documented here and in 
smart-dired function.
+
+* man/hkey-help.txt:
+  hui-window.el: Updated drag acton summaries with the latest information.
+
+* hui-window.el (hmouse-drag-vertically-within-emacs): Added to allow for 
modeline vertical drags
+    between windows.
+
+* hui-mouse.el (smart-dired-pathname-up-to-point): Added this to change the 
behavior of smart-dired.
+    When on the first line of a Dired buffer where its directory path is 
shown, treat any ancestor
+    subdirectory of the current directory as a selectable path.  Thus, you can 
run Dired on any
+    ancestor subdirectory simply by pressing the Action Key at the end of the 
subdirectory you want.
+    A press on the first / character, runs dired on the root directory.
+  man/hyperbole.texi (Smart Key - Dired Mode): Updated doc to reflect this 
change.
+
 * hui-window.el (hmouse-drag-between-frames): Removed from hmouse-alist; treat 
this context
     the same as a drag between windows within one frame, for consistency.
 
-* hui-menu.el (hui-menu-key-bindings): Added for use as menu filter for 
Hyperbole/Options/Change-Key-Bindings
-    so displayed key bindings are always up-to-date.
+* hui-menu.el (hui-menu-key-bindings): Added for use as menu filter for
+    Hyperbole/Options/Change-Key-Bindings so displayed key bindings are always 
up-to-date.
 
 * hui-mouse.el (smart-outline-level): Added and used instead of 
(outline-level) which assumes
     its caller has already generated match data, which is not always the case 
in Hyperbole.
@@ -16,10 +113,6 @@
     window context to replace the buffer in a dest. window with the buffer 
from the source
     window.
 
-----
-
-2017-10-16  Bob Weiner  <address@hidden>
-
 * hib-debbugs.el (debbugs-query:at-p): eliminated match of #id-number and 
always required
    'bug' or similar prefix so there is no ambiguity with social references 
including
    git #commit-number.
@@ -826,7 +919,7 @@ V6.0.3 changes ^^^^:
 
 * man/hyperbole.texi (Customization): Renamed from Configuration.
                      (Web Search Engines): Added this section under 
Customization.
-                     (HyControl): Added FramesControl key sequence.
+                     (HyControl): Added WindowsControl key sequence.
                      (Smart Key - Smart Scrolling): Documented 
{action,assist}-key-eol-function variables.
 
 * hsmail.el (mail-indent-citation, mail-yank-original): Updated for Emacs 25 
compatibility.
@@ -842,7 +935,7 @@ V6.0.3 changes ^^^^:
 * Demo (HTML and Markdown Hash Links): Added this section.
   hibtypes.el (pathname):
   hpath.el (hpath:to-markup-anchor): Renamed from hpath:to-html-anchor and 
generalized for use with Markdown as well.
-    Added recognition of section links like: 
+    Added recognition of section links like:
         - [Why was Hyperbole developed?](#why-was-hyperbole-developed)
       so the pathname implicit button type matches when the Action Key is 
pressed anywhere on or after the
       hash character and jumps to the section:
@@ -879,7 +972,7 @@ V6.0.3 changes ^^^^:
   hui-menu.el (infodock-hyperbole-menu): Added optional rebuild-flag to force 
rebuilding of the
     Hyperbole menubar menu.
 
-* man/hyperbole.texi (HyControl): Documented ESC as a way to quit from 
HyControl.
+* man/hyperbole.texi (HyControl): Documented ESC as a way to quit from 
HyControl. (REMOVED IN A FUTURE REVISION).
 
 2016-08-02  Bob Weiner  <address@hidden>
 
diff --git a/DEMO b/DEMO
index 8907a32..3f835fc 100644
--- a/DEMO
+++ b/DEMO
@@ -3,8 +3,8 @@
 Welcome to GNU Hyperbole.  Hyperbole will super-charge your GNU Emacs
 experience, allowing you to work faster, utilize fewer key bindings, recall
 more information and link it all together by learning just a few concepts and
-keys.  Invest an hour learning Hyperbole now and save many hours for years to
-come.
+keys.  Invest an hour learning Hyperbole now and speed your daily information
+management for years to come.
 
 If you simply want to know what Hyperbole is, see the file "HY-ABOUT".
 Hyperbole displays that file when you press {C-h h d a}.  Hyperbole assumes
@@ -31,11 +31,14 @@ Assist Key, jointly referred to as Smart Keys that each do 
dozens of
 things, essentially whatever is most helpful in any given textual
 context where they are pressed.  The Action Key is {M-RET} (ESC RETURN
 if you are unsure) on the keyboard and the shift-middle mouse button
-on a 3-button mouse or the shift-left button on a two button mouse.  The
-Assist Key is {C-u M-RET} and the shift-right mouse button. Memorize
-these keys; you will use them a lot.  To distinguish the mouse buttons
-from the keyboard keys, we will often refer to the Action Mouse Key or
-Assist Mouse Key.
+on a 3-button mouse or the shift-left button on a two button mouse.
+The Assist Key is {C-u M-RET} and the shift-right mouse button.
+Memorize these keys; you will use them a lot.  To distinguish the
+mouse buttons from the keyboard keys, we will often refer to the
+Action Mouse Key or Assist Mouse Key.  (It is possible to rebind these
+keys to the unshifted middle and right mouse buttons, if desired.
+See the Smart Key Bindings section of the Hyperbole Manual,
+"(hyperbole)Smart Key Bindings").
 
 The Action Key selects entities, creates links and activates buttons.
 The Assist Key provides help, such as reporting on a button's
@@ -769,7 +772,7 @@ this, {C-h h c m} will toggle this feature on and off.
 
 * Smart Mouse Keys
 
-If you use Emacs with mouse support under the OS X window system, the X
+If you use Emacs with mouse support under the macOS window system, the X
 Window System or MS Windows, Hyperbole automatically configures your mouse
 keys for use as Smart Keys and provides additional display-oriented
 operations as demonstrated here.
@@ -792,16 +795,17 @@ For example:
 
 ** Thing Selection
 
-Hyperbole has some radically cool ways to select regions of structured text
-or source code and to copy or move them between buffers with a single mouse
-drag or two key presses.  A great deal of smarts are built-in so that it
-does the right thing most of the time.
+Hyperbole has some radically cool ways to select, copy and move
+regions of structured text or source code that we call `things'.  You
+can copy or move things between buffers with a single mouse drag or
+two key presses.  A great deal of smarts are built-in so that it does
+the right thing most of the time.
 
-We use the term things to refer to structured entities that Hyperbole can
-select.  These include: delimited pairs of (), {}, <>, [] and quote marks,
-source code functions, source code comments and matching tag pairs in HTML
-and SGML modes.  Delimited things are those things that contain a
-selectable delimiter such as an opening parenthesis.
+Things are structured entities that Hyperbole can select and
+manipulate.  These include: delimited pairs of (), {}, <>, [] and
+quote marks, source code functions, source code comments and matching
+tag pairs in HTML and SGML modes.  Delimited things are those things
+that contain a selectable delimiter such as an opening parenthesis.
 
 The best way to mark a delimited thing is to move your cursor to the
 starting delimiter of the thing and then press the Action Key.  Typically,
@@ -850,7 +854,8 @@ is important to have context-sensitive help available.  The 
earlier section
 on Help Buffers explained how to display such help from the keyboard.  The
 same help can be displayed using the mouse by depressing the Smart Key for
 which you want help, performing any action necessary to register a context,
-such as a drag motion, and then pressing the other Smart Key.
+such as a drag motion, and then pressing the other Smart Key and releasing
+both.
 
 Here is an example.  Depress the Action Key somewhere within this paragraph
 and while holding it down, depress the Assist Key.  Then release the keys in
@@ -865,7 +870,7 @@ without having to trigger any of them.
 ** Creating and Deleting Windows
 
 Horizontal and vertical drags of the Smart Mouse Keys are used to split and
-to delete Emacs windows.
+delete Emacs windows.
 
 An Action Mouse Key horizontal drag of five or more characters in either
 direction within a single window creates a new window by splitting the
@@ -896,9 +901,9 @@ You can easily resize Emacs windows by dragging their 
window separators
 Smart Key on a modeline or near a window side, hold it down while you drag
 to a new location and then release.  The window separator will then jump to
 the location of release.  Basically, just drag the window separator to where
-you want it.  Nowadays a better version of stacked window resizing exists on
-the left mouse key.  A drag from a blank area of a modeline with this key
-shows visible feedback as the window is resized.
+you want it.  Nowadays a better version of Emacs window resizing exists on
+the left mouse key.  A drag with this key from a blank area of a modeline or
+a window side divider shows visible feedback as the window is resized.
 
 Did you follow all that?  Let's try it to be sure.  First, you need at least
 two windows, so create a new one with the drag techniques you just learned.
@@ -910,17 +915,37 @@ window.
 Try to drag the bottom modeline.  You see that you can't; you would have to
 resize the frame to move the bottom up.
 
-** Swapping Buffers
+** Dragging Buffers and Windows
+
+*** Swapping Buffers
 
 Swapping buffer locations is quick and easy with Hyperbole.  Simply drag from
 one window to another with the Assist Key (remember the Action Key creates
 buttons when you use the same drag).
 
 Split the current window into two, one above the other.  Drag the upper
-modeline so that one window is clearly bigger than the other.
+modeline so that one window is clearly bigger than the other.  Now switch to
+another buffer in one of the windows.  Then depress your Assist (not Action)
+Mouse Key within one window, drag to the other window and release the key.
+Boom, the buffers are swapped.  This works across frames as well.
+
+If you have just two windows in an Emacs frame, you can swap their buffers
+from the keyboard.  Use this Hyperbole minibuffer menu key sequence to swap
+the buffers and quit from the Hyperbole minibuffer menu: {C-h h s w ~ q}.
+
+*** Moving Buffers
+
+What if you want to display the same buffer in another frame and not swap
+buffers.  You want to move the buffer.  Depress on the open area of the
+modeline of the source window and drag to the text area of the destination
+window.  Voila, the buffer appears in the new location as well as the old one.
+
+To clone a window with its buffer to a new frame, simply drag the Action Key
+from the window to outside of Emacs and release the key.  A new frame pops
+up about the size of the original window with the same buffer.  Try it.
 
-Then use this Hyperbole minibuffer menu key sequence to swap the buffers and
-quit from the menu: {C-h h s w ~ q}.
+The same action with the Assist Key will actually move the window to the new
+frame, deleting the old one even if it is the only window in the frame.
 
 ** Saving and Restoring Window Configurations
 
@@ -979,14 +1004,18 @@ you must click on the modeline of the window displaying 
the summary.
 
 *** Buffer Menu and Screen Control
 
-An Action Key click in the center portion of a modeline displays a buffer
-menu, a summary of available buffers.  An Action Key click on any buffer menu
-line then displays that buffer.
+An Action Key click in the blank center portion of a modeline displays
+a buffer menu, a summary of available buffers.  An Action Key click on
+any buffer menu line then displays that buffer and closes the buffer
+menu.  If you want to display several buffers, first create some new
+windows, then display the buffer menu and drag from each buffer name
+to the window in which you want it displayed.  This works across
+frames too.  Try it now.
 
-An Assist Key click in the center portion of a modeline pops up a menu of
-convenient screen commands that lets you select buffers grouped by major
-mode, use HyControl, or jump to specific windows, window configurations or
-frames.
+An Assist Key click in the blank center portion of a modeline pops up
+a menu of convenient screen commands that lets you select buffers
+grouped by major mode, use HyControl, or jump to specific windows,
+window configurations or frames.
 
 See "(hyperbole)action-key-modeline-function" for how to adjust this
 behavior.
@@ -994,7 +1023,7 @@ behavior.
 * Epilog
 
 We hope you have enjoyed this introduction to Hyperbole. It can be your
-every-ready sidekick in your daily information work.  Explore the Hyperbole
+every-ready sidekick in your daily knowledge work.  Explore the Hyperbole
 menus to learn more interactively.  For reference, the Hyperbole Manual, has
 more detail about the many things that Hyperbole does when you are ready to
 dive deeper.  Read it online with the GNU Info reader at "(hyperbole)Top".
diff --git a/HY-ABOUT b/HY-ABOUT
index 8bd1ea4..38221fc 100644
--- a/HY-ABOUT
+++ b/HY-ABOUT
@@ -3,7 +3,7 @@
                   Designed and Written by Bob Weiner
                Maintained by Mats Lidell and Bob Weiner
                 https://www.gnu.org/software/hyperbole/
-                            Version 6.0.2d
+                            Version 6.0.2e
 
 GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
 an efficient and programmable hypertextual information management
diff --git a/HY-ANNOUNCE b/HY-ANNOUNCE
index 0bbf664..8874d8e 100644
--- a/HY-ANNOUNCE
+++ b/HY-ANNOUNCE
@@ -1,4 +1,4 @@
-ANNOUNCE: GNU Hyperbole 6.0.2d for Emacs 24.4 or newer is released
+ANNOUNCE: GNU Hyperbole 6.0.2e for Emacs 24.4 or newer is released
 
 The GNU Hyperbole home page, https://www.gnu.org/software/hyperbole, contains a
 number of screenshots of Hyperbole and its menus and links to useful resources.
diff --git a/HY-ANNOUNCE-SHORT b/HY-ANNOUNCE-SHORT
index d8114bb..1d4020b 100644
--- a/HY-ANNOUNCE-SHORT
+++ b/HY-ANNOUNCE-SHORT
@@ -16,7 +16,7 @@ Hyperbole includes an interactive demo to introduce you to 
its features and a
 detailed reference manual.
 
 ===========================================================================
-*                 What's New in GNU Hyperbole V6.0.2d
+*                 What's New in GNU Hyperbole V6.0.2e
 ===========================================================================
 
 See "Changes" file.
diff --git a/HY-NEWS b/HY-NEWS
index 480fdd8..b889976 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -2,7 +2,7 @@
                                 by Bob Weiner
 
 ===========================================================================
-*                                   V6.0.2d
+*                                   V6.0.2e
 ===========================================================================
 
           (See "Changes" for more complete details of changes.)
diff --git a/Makefile b/Makefile
index 16b14fc..5188366 100644
--- a/Makefile
+++ b/Makefile
@@ -54,7 +54,7 @@
 
 # This ver setup won't work under any make except GNU make, so set it manually.
 #HYPB_VERSION = "`head -3 hversion.el | tail -1 | sed -e 's/.*|\(.*\)|.*/\1/'`"
-HYPB_VERSION = 6.0.2d
+HYPB_VERSION = 6.0.2e
 
 # Emacs executable used to byte-compile .el files into .elc's.
 # Possibilities include: emacs, infodock, xemacs, etc.
diff --git a/README.md b/README.md
index df677af..adfe299 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# GNU Hyperbole 6.0.2d - The Everyday Hypertextual Information Manager
+# GNU Hyperbole 6.0.2e - The Everyday Hypertextual Information Manager
 
 <!-- START doctoc generated TOC -->
 **Table of Contents**
diff --git a/README.md.html b/README.md.html
index 059d709..4abd376 100644
--- a/README.md.html
+++ b/README.md.html
@@ -1,5 +1,5 @@
 <h1>
-<a 
id="user-content-gnu-hyperbole-602d---the-everyday-hypertextual-information-manager"
 class="anchor" 
href="#gnu-hyperbole-602d---the-everyday-hypertextual-information-manager" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>GNU Hyperbole 6.0.2d - The Everyday Hypertextual 
Information Manager</h1>
+<a 
id="user-content-gnu-hyperbole-602e---the-everyday-hypertextual-information-manager"
 class="anchor" 
href="#gnu-hyperbole-602e---the-everyday-hypertextual-information-manager" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>GNU Hyperbole 6.0.2e - The Everyday Hypertextual 
Information Manager</h1>
 
 <p><strong>Table of Contents</strong></p>
 <ul>
diff --git a/hib-debbugs.el b/hib-debbugs.el
index 88fe952..49d903c 100644
--- a/hib-debbugs.el
+++ b/hib-debbugs.el
@@ -88,7 +88,7 @@ If the query includes a single id number, displays the 
original message
 submission for that id and allows browsing of the followup discussion.
 The following buffer text formats are accepted (with point prior to any
 attribute): 
-   #id-number
+
    bug#id-number or bug# id-number or bug #id-number
    bug?attr1=val1&attr2=val2&attr3=val3
    bug#id-number?attr1=val1&attr2=val2&attr3=val3
diff --git a/hmouse-drv.el b/hmouse-drv.el
index c3f2f65..fdea347 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -654,7 +654,7 @@ the position (not below another application's window)."
                                            (hmouse-vertical-line-spacing 
in-frame)))))
            (setq window (window-at char-x line-y in-frame)))
          ;;
-         ;; Even if in-frame is found, under click-to-focus external window
+         ;; Otherwise, even if in-frame is found, under click-to-focus 
external window
          ;; managers, Emacs may have received the drag release event when
          ;; in-frame was covered by an external application's window.
          ;; Emacs presently has no way to handle this.  However, for the
@@ -665,24 +665,28 @@ the position (not below another application's window)."
          ;;
          (when (and hmouse-verify-release-window-flag
                     window (eq (window-system) 'ns))
-           (let ((topwin (executable-find "topwin"))
-                 (case-fold-search t)
-                 topmost-app)
-             (when (and topwin (file-executable-p topwin))
-               (setq topmost-app (shell-command-to-string
-                                  (format "topwin %d %d" pos-x pos-y)))
-               (cond ((string-match "emacs" topmost-app)) ; In an Emacs frame, 
do nothing.
-                     ((or (equal topmost-app "")
-                          ;; Any non-Emacs app window
-                          (string-match "\\`\\[" topmost-app))
-                      ;; Outside of any Emacs frame
-                      (setq window nil))
-                     (t                ; topwin error message
-                      ;; Setup of the topwin script is somewhat complicated,
-                      ;; so don't trigger an error just because of it.  But
-                      ;; display a message so the user knows something happened
-                      ;; when topwin encounters an error.
-                      (message "(Hyperbole): topwin Python script error: %s" 
topmost-app)))))))))
+           ;; If depress and release windows are the same and frame has
+           ;; an auto-raise property, then we know this window was
+           ;; uppermost at the point of release and can skip this computation.
+           (unless (and (eq depress-window window) (frame-parameter nil 
'auto-raise))
+             (let ((topwin (executable-find "topwin"))
+                   (case-fold-search t)
+                   topmost-app)
+               (when (and topwin (file-executable-p topwin))
+                 (setq topmost-app (shell-command-to-string
+                                    (format "topwin %d %d" pos-x pos-y)))
+                 (cond ((string-match "emacs" topmost-app)) ; In an Emacs 
frame, do nothing.
+                       ((or (equal topmost-app "")
+                            ;; Any non-Emacs app window
+                            (string-match "\\`\\[" topmost-app))
+                        ;; Outside of any Emacs frame
+                        (setq window nil))
+                       (t ;; topwin error message
+                        ;; Setup of the topwin script is somewhat complicated,
+                        ;; so don't trigger an error just because of it.  But
+                        ;; display a message so the user knows something 
happened
+                        ;; when topwin encounters an error.
+                        (message "(Hyperbole): topwin Python script error: %s" 
topmost-app))))))))))
 
     (when (called-interactively-p 'interactive)
       (message "%s at absolute pixel position %s"
diff --git a/hmouse-key.el b/hmouse-key.el
index 397ebe9..52b08d5 100644
--- a/hmouse-key.el
+++ b/hmouse-key.el
@@ -111,7 +111,7 @@ Assist Key = shift-right mouse key."
   (if (called-interactively-p 'interactive)
       ;; Assume emacs has support for 3 mouse keys.
       (message "%s the Action Mouse Key; {Shift-Mouse-3} invokes the Assist 
Mouse Key."
-              (if hmouse-middle-flag "{Mouse-2} and {Shift Mouse-2} invoke"
+              (if hmouse-middle-flag "{Mouse-2} and {Shift-Mouse-2} invoke"
                 "{Shift-Mouse-2} invokes"))))
 
 (defun hmouse-add-unshifted-smart-keys ()
diff --git a/hmouse-sh.el b/hmouse-sh.el
index 64982cb..7879d31 100644
--- a/hmouse-sh.el
+++ b/hmouse-sh.el
@@ -530,8 +530,9 @@ point determined by 
`mouse-select-region-move-to-beginning'."
     (setq hmouse-bindings (hmouse-get-bindings hmouse-middle-flag)
          hmouse-bindings-flag t)))
 
-(defun hmouse-unshifted-setup (&optional _hmouse-middle-flag)
-  "Binds the middle mouse key to the Action Key."
+(defun hmouse-unshifted-setup (&optional middle-key-only-flag)
+  "Binds the middle mouse key as the Action Key and the right mouse key as the 
Assist Key.
+With optional MIDDLE-KEY-ONLY-FLAG non-nil, binds only the middle mouse key."
   (interactive)
   (cond        ;; GNU Emacs
    (hyperb:emacs-p
@@ -540,11 +541,11 @@ point determined by 
`mouse-select-region-move-to-beginning'."
     (var:add-and-run-hook 'Info-mode-hook
                          (lambda () (define-key Info-mode-map [mouse-2] nil)))
     ;;
-    (if (not (eq window-system 'dps))
+    (unless (eq window-system 'dps)
        ;; X, OS X or MS Windows
-       (progn (hmouse-bind-key-emacs 2 #'action-key-depress-emacs 
#'action-mouse-key-emacs)
-              ;; (hmouse-bind-key-emacs 3 #'assist-key-depress-emacs 
#'assist-mouse-key-emacs)
-              )))
+      (hmouse-bind-key-emacs 2 #'action-key-depress-emacs 
#'action-mouse-key-emacs)
+      (unless middle-key-only-flag
+       (hmouse-bind-key-emacs 3 #'assist-key-depress-emacs 
#'assist-mouse-key-emacs))))
    ;;
    ;; XEmacs
    ((featurep 'xemacs)
@@ -559,23 +560,23 @@ point determined by 
`mouse-select-region-move-to-beginning'."
     ;;
     (global-set-key 'button2     'action-key-depress)
     (global-set-key 'button2up   'action-mouse-key)
-    ;; (if (and (boundp 'Info-mode-map) (keymapp Info-mode-map))
-    ;;    (funcall (lambda () (define-key Info-mode-map 'button3 nil)))
-    ;;  (add-hook 'Info-mode-hook unbind-but3))
-    ;; (if (boundp 'mode-line-map)
-    ;;    (progn (define-key mode-line-map 'button3   'assist-key-depress)
-    ;;    (define-key mode-line-map 'button3up 'assist-mouse-key)))
-    ;; (global-set-key 'button3     'assist-key-depress)
-    ;; (global-set-key 'button3up   'assist-mouse-key)
-    )
+    (unless middle-key-only-flag
+      (if (and (boundp 'Info-mode-map) (keymapp Info-mode-map))
+          (funcall (lambda () (define-key Info-mode-map 'button3 nil)))
+       (add-hook 'Info-mode-hook unbind-but3))
+      (when (boundp 'mode-line-map)
+        (define-key mode-line-map 'button3   'assist-key-depress)
+       (define-key mode-line-map 'button3up 'assist-mouse-key))
+      (global-set-key 'button3     'assist-key-depress)
+      (global-set-key 'button3up   'assist-mouse-key)))
    ;;
    ;; X
    ((equal (hyperb:window-system) "xterm")
     (define-key mouse-map x-button-middle 'action-key-depress)
     (define-key mouse-map x-button-middle-up 'action-mouse-key)
-    ;; (define-key mouse-map x-button-right 'assist-key-depress)
-    ;; (define-key mouse-map x-button-right-up 'assist-mouse-key)
-    )))
+    (unless middle-key-only-flag
+      (define-key mouse-map x-button-right 'assist-key-depress)
+      (define-key mouse-map x-button-right-up 'assist-mouse-key)))))
 
 (provide 'hmouse-sh)
 
diff --git a/hui-menu.el b/hui-menu.el
index a8a628a..554e97a 100644
--- a/hui-menu.el
+++ b/hui-menu.el
@@ -124,7 +124,8 @@ Return t if cutoff, else nil."
 
 (defun hui-menu-key-binding-item (item-name command)
   "Return a key binding menu item string built from ITEM-NAME and COMMAND."
-  (format "%s(%s)" item-name (key-description (where-is-internal command nil 
t))))
+  (concat item-name (when (where-is-internal command nil t)
+                     (format "(%s)" (key-description (where-is-internal 
command nil t))))))
 
 (defun hui-menu-key-bindings (rest-of-menu)
   (nconc
diff --git a/hui-mini.el b/hui-mini.el
index e986d41..93de1d1 100644
--- a/hui-mini.el
+++ b/hui-mini.el
@@ -345,6 +345,7 @@ constructs.  If not given, the top-level Hyperbole menu is 
used."
       menu-line)))
 
 (defun hui:menu-web-search ()
+  "Hyperbole minibuffer menu of web search engines."
   (let ((web-mini-menu
         (cons 'web
               (cons '("Web>")
diff --git a/hui-mouse.el b/hui-mouse.el
index ef03144..964ca45 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -598,6 +598,22 @@ If assist-key is pressed:
 ;;; smart-dired functions
 ;;; ************************************************************************
 
+(defun smart-dired-pathname-up-to-point ()
+  "Assume point is on the first line of a Dired buffer.  Return the part of 
the pathname up through point, else the current directory path.
+Use for direct selection of an ancestor directory of this directory."
+  (interactive)
+  (if (not (looking-at "\\s-*$"))
+      (save-excursion
+       (re-search-forward "[/:\n]" nil t)
+       (buffer-substring-no-properties
+        (if (and (not (bobp)) (= (preceding-char) ?/))
+            (point)
+          (1- (point)))
+        (progn (beginning-of-line)
+               (skip-syntax-forward "-")
+               (point))))
+    default-directory))
+
 (defun smart-dired ()
   "Uses a single key or mouse key to manipulate directory entries.
 
@@ -606,24 +622,40 @@ caller has already checked that the key was pressed in an 
appropriate buffer
 and has moved the cursor there.
 
 If key is pressed:
- (1) within an entry line, the selected file/directory is displayed for
-     editing in the other window;
- (2) on the first line of the buffer, if any deletes are to be
-     performed, they are executed after user verification; otherwise, nothing
-     is done;
- (3) on or after the last line in the buffer, this dired invocation is quit."
+ (1) within an entry line, the selected file/directory is displayed
+     for editing, normally in another window but if an entry has been dragged
+     for display in another window, then this entry is displayed in the current
+     window (DisplayHere minor mode is shown in the mode-line; use {g}
+     to disable it)
+ (2) on the first line of the buffer (other than the end of line):
+     (a) within the leading whitespace, then if any deletes are to be
+         performed, they are executed after user verification; otherwise,
+         nothing is done;
+     (b) otherwise, dired is run in another window on the ancestor directory
+         of the current directory path up through the location of point;
+         if point is before the first character, then the / root directory
+         is used.
+ (3) on or after the last line in the buffer or at the end of the first line,
+     this dired invocation is quit."
 
   (interactive)
   (cond ((first-line-p)
-        (if (save-excursion
-              (goto-char (point-min))
-              (re-search-forward "^D" nil t))
-            (cond ;; For Tree-dired compatibility
-             ((fboundp 'dired-do-flagged-delete)
-              (dired-do-flagged-delete))
-             ((fboundp 'dired-do-deletions)
-              (dired-do-deletions))
-             (t (error "(smart-dired): No Dired expunge function.")))))
+        (cond ((eolp) (quit-window))
+              ((and (looking-at "\\s-")
+                    (save-excursion
+                      (skip-syntax-backward "-"))
+                    (bolp))
+               ;; In whitespace at beginning of 1st line, perform deletes.
+               (if (save-excursion
+                     (goto-char (point-min))
+                     (re-search-forward "^D" nil t))
+                   (cond ;; For Tree-dired compatibility
+                    ((fboundp 'dired-do-flagged-delete)
+                     (dired-do-flagged-delete))
+                    ((fboundp 'dired-do-deletions)
+                     (dired-do-deletions))
+                    (t (error "(smart-dired): No Dired expunge function.")))))
+              (t (hpath:find (smart-dired-pathname-up-to-point)))))
        ((last-line-p)
         (quit-window))
        (t (hpath:find (dired-get-filename)))))
@@ -642,11 +674,11 @@ If assist-key is pressed:
      deletion;
  (3) anywhere else within an entry line, the current entry is marked for
      deletion;
- (4) on or after the last line in the buffer, all delete marks on all entries
-     are undone."
+ (4) on or after the last line in the buffer or at the end of the
+     first line, all delete marks on all entries are undone."
 
   (interactive)
-  (cond ((last-line-p)
+  (cond ((or (last-line-p) (and (first-line-p) (eolp)))
         (dired-unmark-all-files ?D)
         (goto-char (point-max)))
        ((looking-at "~") (dired-flag-backup-files))
@@ -1289,11 +1321,12 @@ If not on a file name, returns nil."
          '(outline-mode-hook outline-minor-mode-hook)))
 
 (defun smart-outline-level ()
-  "Return current outline level if point is on a line that begins with 
`outline-regexp'."
+  "Return current outline level if point is on a line that begins with 
`outline-regexp', else 0."
   (save-excursion
     (beginning-of-line)
-    (when (looking-at outline-regexp)
-      (funcall outline-level))))
+    (if (looking-at outline-regexp)
+       (funcall outline-level)
+      0)))
 
 (defun smart-outline ()
   "Collapses, expands, and moves outline entries.
diff --git a/hui-window.el b/hui-window.el
index 4389c34..ec1c145 100644
--- a/hui-window.el
+++ b/hui-window.el
@@ -25,30 +25,36 @@
 ;;
 ;; Drag from shared window side
 ;;   or from left of scroll bar    Resize window width         <- same
+;; Modeline vertical drag          Resize window height        <- same
 ;;
-;; Drag buffer/file menu item      Display buffer/file there   Swap window 
buffers
-;;   to another window
-;; Modeline drag to another window Replace dest. buffer with   Swap window 
buffers
-;;                                   source buffer
-;; Other drag between windows      Create/modify a link but    Swap window 
buffers
-;; Drag buffer/file menu item      Display buffer/file
-;;   outside of Emacs                in a new frame            Move window to 
a new frame
+;; Other Modeline drag to          Replace dest. buffer with   Swap window 
buffers
+;;   another window                  source buffer
+;;
+;; Drag between windows from:
+;;   buffer/file menu item         Display buffer/file in      Swap window 
buffers
+;;                                   window of button release
+;;   buffer/file menu 1st line     Move buffer/file menu       Swap window 
buffers
+;;   anywhere else                 Create/modify a link button Swap window 
buffers
+;;
+;; Drag outside of Emacs from:
+;;   buffer/file menu item         Display buffer/file in      Move window to 
a new frame
+;;                                   a new frame
+;;   Modeline or other window      Clone window to a new frame Move window to 
a new frame
 ;;
-;; Modeline or other window drag   Clone window to a new frame Move window to 
a new frame
-;;   outside of Emacs              
-;; Modeline depress & wind release Resize window height        <- same
 ;; Click in modeline
 ;;     Left modeline edge          Bury buffer                 Unbury bottom 
buffer
 ;;     Right modeline edge         Info                        Smart Key 
Summary
 ;;     Buffer ID                   Dired on buffer's dir       Next buffer
 ;;     Other blank area            Action Key modeline hook    Assist Key 
modeline hook
+;;                                   Show/Hide Buffer Menu      Popup Jump & 
Manage Menu
 ;;
 ;; Drag in a window, region active Error, not allowed          Error, not 
allowed
 ;; Drag horizontally in a window   Split window below          Delete window
 ;; Drag vertically in a window     Split window side-by-side   Delete window
 ;; Drag diagonally in a window     Save window-config          Restore 
window-config from ring
 ;;
-;; Active region exists            Yank region at release      Kill region and 
yank at release
+;; Active region exists, click     Yank region at release      Kill region and 
yank at release
+;;   outside of the region
 
 ;;; Code:
 ;;; ************************************************************************
@@ -104,7 +110,15 @@ of screen control commands."
     (ibuffer-mode (ibuffer-current-buffer t))
     (helm-major-mode (helm-get-selection (current-buffer)))
     ;; Note how multiple major modes may be grouped with a single form for 
item getting.
-    ((dired-mode vc-dired-mode wdired-mode) (dired-get-filename nil t))))
+    ((dired-mode vc-dired-mode wdired-mode) (or (when (dired-get-filename nil 
t)
+                                                 
(hmouse-dired-display-here-mode 1)
+                                                 (dired-get-filename nil t))
+                                               ;; Drag from first line current 
directory
+                                               ;; means move this dired buffer 
to the
+                                               ;; release window.
+                                               (prog1 (current-buffer)
+                                                 (hmouse-pulse-buffer)
+                                                 (bury-buffer))))))
   "List of (major-mode lisp-form) lists.
 The car of an item must be a major-mode symbol.  The cadr of an item
 is a Lisp form to evaluate to get the item name at point (typically a
@@ -174,8 +188,9 @@ drag release window.")
                ;;   ((and (hmouse-modeline-depress) 
(hmouse-drag-between-frames)) .
                ;;    ((hmouse-clone-window-to-frame) . 
(hmouse-move-window-to-frame)))
                ;;
-               ;; Modeline drag between windows
-               ((and (hmouse-modeline-depress) (hmouse-drag-between-windows)) .
+               ;; Non-vertical Modeline drag between windows
+               ((and (hmouse-modeline-depress) (hmouse-drag-between-windows)
+                     (not (hmouse-drag-vertically-within-emacs))) .
                 ((hmouse-buffer-to-window) . (hmouse-swap-buffers)))
                ;; Modeline drag that ends outside of Emacs
                ((and (hmouse-modeline-depress) 
(hmouse-drag-outside-all-windows)) .
@@ -267,6 +282,31 @@ part of InfoDock and not a part of Hyperbole)."
        (goto-char hkey-value)
        (hmouse-save-region)))
 
+(defun hmouse-dired-readin-hook ()
+  "Remove local `hpath:display-where' setting whenever re-read a dired 
directory.
+See `hmouse-dired-item-dragged' for use."
+  (hmouse-dired-display-here-mode 0))
+
+(define-minor-mode hmouse-dired-display-here-mode
+  "Once a dired buffer item has been dragged, make next Action Key press on an 
item display it in the same dired window.
+
+By default an Action Key press on a dired item displays it in another
+window.   But once a Dired item is dragged to another window, the next
+Action Key press should display it in the dired window so that the
+behavior matches that of Buffer Menu and allows for setting what is
+displayed in all windows on screen, including the dired window.
+
+If the directory is re-read into the dired buffer with {g}, then Action
+Key behavior reverts to as though no items have been dragged."
+  nil
+  " DisplayHere"
+  nil
+  (if hmouse-dired-display-here-mode
+      (progn (set (make-local-variable 'hpath:display-where) 'this-window)
+            (add-hook 'dired-after-readin-hook 'hmouse-dired-readin-hook nil 
t))
+    (kill-local-variable 'hpath:display-where)
+    (remove-hook 'dired-after-readin-hook 'hmouse-dired-readin-hook t)))
+
 (defun hmouse-drag-region-active ()
   "Return non-nil if an active region existed in the depress buffer prior to 
the depress and a drag motion has occurred."
   (save-excursion
@@ -492,12 +532,12 @@ Value returned is nil if not a horizontal drag, 'left if 
drag moved left or
              hmouse-y-drag-sensitivity)
           (if (< last-depress-x last-release-x) 'right 'left)))))
 
-(defun hmouse-drag-vertically ()
-  "Returns non-nil iff last Action Key use was a vertical drag within a single 
window.
+(defun hmouse-drag-vertically-within-emacs ()
+  "Returns non-nil iff last Action Key use was a vertical drag that started 
and ended within the same Emacs frame.
 If free variable `assist-flag' is non-nil, uses Assist Key.
 Value returned is nil if not a vertical line drag, 'up if drag moved up or
 'down otherwise."
-  (when (hmouse-drag-same-window)
+  (unless (or (hmouse-drag-between-frames) (hmouse-drag-outside-all-windows))
     (let ((last-depress-x) (last-release-x)
          (last-depress-y) (last-release-y))
       (if assist-flag
@@ -521,6 +561,14 @@ Value returned is nil if not a vertical line drag, 'up if 
drag moved up or
               hmouse-x-drag-sensitivity)
           (if (< last-depress-y last-release-y) 'down 'up)))))
 
+(defun hmouse-drag-vertically ()
+  "Returns non-nil iff last Action Key use was a vertical drag within a single 
window.
+If free variable `assist-flag' is non-nil, uses Assist Key.
+Value returned is nil if not a vertical line drag, 'up if drag moved up or
+'down otherwise."
+  (when (hmouse-drag-same-window)
+    (hmouse-drag-vertically-within-emacs)))
+
 (defun hmouse-drag-window-side ()
   "Returns non-nil if Action Key was dragged from a window side divider.
 If free variable `assist-flag' is non-nil, uses Assist Key."
@@ -742,7 +790,9 @@ buffer itself to the release location."
        (select-window w2)))
     (unwind-protect
        (cond ((not w1-ref)
-              (error "(hmouse-item-to-window): Action Mouse Key item drag must 
start in a live window"))
+              (if (not (window-live-p w1))
+                  (error "(hmouse-item-to-window): Action Mouse Key item drag 
must start in a live window")
+                (error "(hmouse-item-to-window): No item to display at start 
of Action Mouse Key drag")))
              ((buffer-live-p w1-ref)
               (set-window-buffer w2 w1-ref)
               (hmouse-pulse-buffer))
diff --git a/hversion.el b/hversion.el
index 35dfcaa..1eb3097 100644
--- a/hversion.el
+++ b/hversion.el
@@ -23,7 +23,7 @@
 ;;; Public variables
 ;;; ************************************************************************
 
-(defconst hyperb:version "6.0.2d" "GNU Hyperbole revision number.")
+(defconst hyperb:version "6.0.2e" "GNU Hyperbole revision number.")
 
 ;;;###autoload
 (defvar hyperb:microcruft-os-p
diff --git a/hycontrol.el b/hycontrol.el
index 4a2fcc2..23293bb 100644
--- a/hycontrol.el
+++ b/hycontrol.el
@@ -1,4 +1,4 @@
-;;; hycontrol.el --- Interactive sizing, moving, replicating and deleting of 
windows and frames.
+;;; hycontrol.el --- Interactive sizing, moving, replicating and deleting of 
windows and frames
 ;;
 ;; Author:       Bob Weiner
 ;;
@@ -88,8 +88,8 @@ It's value is an (x-offset . y-offset) pair in pixels."
   :group 'hyperbole-screen)
 
 (defvar hycontrol-screen-offset-alist
-  '(((1920 . 1080) . (10 0 68 0)) ; 24" iMac HD display
-    ((2560 . 1440) . (15 0 88 0)) ; 27" iMac HD display
+  '(((1920 . 1080) . (0 10 0 68)) ; 24" iMac HD display
+    ((2560 . 1440) . (0 15 0 95)) ; 27" iMac HD display
     (t . (0 0 0 0)))
   "*Alist of (screen-predicate . (top-offset right-offset bottom-offset 
left-offset) pairs.
 Offsets are integers given in pixels.  The offsets associated with the first
@@ -127,19 +127,480 @@ The final predicate should always be t, for default 
values, typically of zero.")
                                (< value (display-pixel-width)))))
   :group 'hyperbole-screen)
 
+(defvar hycontrol-frame-widths
+  '(1.0 0.75 0.666 0.5 0.333 0.25)
+    "List of frame width percentages that HyControl cycles through when 
adjusting a frame's width.
+0.75 and 75 are treated as the same percentage.")
+
+(defvar hycontrol-frame-heights
+  '(1.0 0.75 0.666 0.5 0.333 0.25)
+  "List of frame height percentages that HyControl cycles through when 
adjusting a frame's height.
+0.75 and 75 are treated as the same percentage.")
+
+(defvar hycontrol-arg nil
+  "HyControl copy of prefix-arg that it changes within key bindings
+post-command-hook synchronizes this value to `current-prefix-arg'.")
+
+;;; Frame Keys
+
+(defvar hycontrol-frames-mode-map
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map) ;; Disable self-inserting keys.
+
+    (define-key map [up]    (lambda () (interactive) (hycontrol-move-frame 'up 
hycontrol-arg)))
+    (define-key map [down]  (lambda () (interactive) (hycontrol-move-frame 
'down hycontrol-arg)))
+    (define-key map [left]  (lambda () (interactive) (hycontrol-move-frame 
'left hycontrol-arg)))
+    (define-key map [right] (lambda () (interactive) (hycontrol-move-frame 
'right hycontrol-arg)))
+
+    (define-key map [kp-0]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-0 hycontrol-arg)))
+    (define-key map [kp-1]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-1 hycontrol-arg)))
+    (define-key map [kp-2]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-2 hycontrol-arg)))
+    (define-key map [kp-3]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-3 hycontrol-arg)))
+    (define-key map [kp-4]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-4 hycontrol-arg)))
+    (define-key map [kp-5]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-5 hycontrol-arg)))
+    (define-key map [kp-6]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-6 hycontrol-arg)))
+    (define-key map [kp-7]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-7 hycontrol-arg)))
+    (define-key map [kp-8]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-8 hycontrol-arg)))
+    (define-key map [kp-9]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-9 hycontrol-arg)))
+
+    ;; Clear hycontrol-arg
+    (define-key map "."     (lambda () (interactive) (setq hycontrol-arg 0) 
(hycontrol-frame-to-screen-edges 0)))
+    (define-key map "a"     'hycontrol-frame-adjust-widths)
+    (define-key map "A"     'hycontrol-frame-adjust-heights)
+    (define-key map "b"     'bury-buffer)
+    (define-key map "c"     'hycontrol-frame-to-screen-edges)
+    (define-key map "d"     'delete-frame)
+    (define-key map "D"     'hycontrol-delete-other-frames)
+    (define-key map "f"     'hycontrol-clone-window-to-new-frame)
+    (define-key map "F"     'hycontrol-window-to-new-frame)
+    (define-key map "\C-g"  (lambda () (interactive) (setq 
hycontrol--exit-status 'abort-from-frames)))
+    (define-key map "%"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-percentage-of-screen hycontrol-arg))))
+    (define-key map "H"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-height-percentage-of-screen hycontrol-arg))))
+    (define-key map "W"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-width-percentage-of-screen hycontrol-arg))))
+    (define-key map "h"     (lambda () (interactive) 
(hycontrol-set-frame-height nil (+ (frame-height) hycontrol-arg))))
+    (define-key map "i"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-top hycontrol-arg))))
+    (define-key map "j"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-left hycontrol-arg))))
+    (define-key map "k"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-right hycontrol-arg))))
+    (define-key map "l"     'lower-frame)
+    (define-key map "m"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-bottom hycontrol-arg))))
+    (define-key map "n"     (lambda () (interactive) 
(hycontrol-set-frame-width nil (- (frame-width) hycontrol-arg))))
+    (define-key map "o"     (lambda () (interactive) (setq w 
(selected-window)) (other-window hycontrol-arg) (if (eq w (selected-window)) 
(other-window 1))))
+    (define-key map "O"     (lambda () (interactive) (setq w 
(selected-window)) (other-frame hycontrol-arg) (if (eq w (selected-window)) 
(other-frame 1))))
+    ;; Numeric keypad emulation for keyboards that lack one.
+    (define-key map "p"     (lambda () (interactive) 
(hycontrol-virtual-numeric-keypad hycontrol-arg)))
+    (define-key map "q"     (lambda () (interactive) (setq 
hycontrol--exit-status 'quit-from-frames)))
+    (define-key map "r"     'raise-frame)
+    (define-key map "s"     (lambda () (interactive) 
(hycontrol-set-frame-height nil (- (frame-height) hycontrol-arg))))
+    (define-key map "t"     (lambda () (interactive) (setq 
hycontrol--exit-status 'toggle-from-frames)))
+    (define-key map "u"     'unbury-buffer)
+    (define-key map "w"     (lambda () (interactive) 
(hycontrol-set-frame-width nil (+ (frame-width) hycontrol-arg))))
+    (define-key map "Z"     (lambda () (interactive) (if (> hycontrol-arg 9) 
(setq hycontrol-arg 1)) (hycontrol-frame-zoom 'zoom-frm-in hycontrol-arg 
hycontrol--debug)))
+    (define-key map "z"     (lambda () (interactive) (if (> hycontrol-arg 9) 
(setq hycontrol-arg 1)) (hycontrol-frame-zoom 'zoom-frm-out hycontrol-arg 
hycontrol--debug)))
+    (define-key map "\["    'hycontrol-make-frame)
+    (define-key map "\]"    'hycontrol-make-frame)
+    (define-key map "\("    'hycontrol-save-frame-configuration)
+    (define-key map "\)"    'hycontrol-restore-frame-configuration)
+    ;; Something in this command's event handling when used within HyControl's 
event loop slows down
+    ;; frame iconification under macOS 100-fold, so don't enable it until this 
issue is resolved.
+    ;; (define-key map "^"    'iconify-frame)
+    (define-key map "~"     (lambda () (interactive)
+                             (or (hycontrol-frame-swap-buffers) 
(hycontrol-window-swap-buffers)
+                                 (hycontrol-user-error hycontrol--debug 
"(HyControl): There must be only two windows on screen to swap buffers."))))
+    (define-key map "-"     'hycontrol-frame-minimize-lines)
+    (define-key map "+"     'toggle-frame-maximized)
+    (define-key map "="     (lambda () (interactive)
+                             (and (> (length (visible-frame-list)) 1)
+                                  (y-or-n-p "Resize all other frames to the 
size of the selected frame?")
+                                  (mapc (lambda (f)
+                                          (hycontrol-set-frame-size
+                                           f (frame-pixel-width) 
(frame-pixel-height) t)) (visible-frame-list)))))
+
+    (define-key map "\C-u"  (lambda () (interactive) (setq hycontrol-arg (* 
hycontrol-arg 4))
+                             (if (> hycontrol-arg hycontrol-maximum-units) 
(setq hycontrol-arg 4))))
+    (define-key map "0"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 0))))
+    (define-key map "1"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 1))))
+    (define-key map "2"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 2))))
+    (define-key map "3"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 3))))
+    (define-key map "4"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 4))))
+    (define-key map "5"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 5))))
+    (define-key map "6"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 6))))
+    (define-key map "7"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 7))))
+    (define-key map "8"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 8))))
+    (define-key map "9"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 9))))
+
+    map)
+  "Keymap to use when in Hyperbole HyControl frames mode.")
+
+;;; Window Keys
+
+(defvar hycontrol-windows-mode-map
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map) ;; Disable self-inserting keys.
+
+    (define-key map [up]    (lambda () (interactive) (hycontrol-move-frame 'up 
hycontrol-arg)))
+    (define-key map [down]  (lambda () (interactive) (hycontrol-move-frame 
'down hycontrol-arg)))
+    (define-key map [left]  (lambda () (interactive) (hycontrol-move-frame 
'left hycontrol-arg)))
+    (define-key map [right] (lambda () (interactive) (hycontrol-move-frame 
'right hycontrol-arg)))
+
+    (define-key map [kp-0]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-0 hycontrol-arg)))
+    (define-key map [kp-1]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-1 hycontrol-arg)))
+    (define-key map [kp-2]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-2 hycontrol-arg)))
+    (define-key map [kp-3]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-3 hycontrol-arg)))
+    (define-key map [kp-4]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-4 hycontrol-arg)))
+    (define-key map [kp-5]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-5 hycontrol-arg)))
+    (define-key map [kp-6]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-6 hycontrol-arg)))
+    (define-key map [kp-7]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-7 hycontrol-arg)))
+    (define-key map [kp-8]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-8 hycontrol-arg)))
+    (define-key map [kp-9]  (lambda () (interactive) (hycontrol-numeric-keypad 
'kp-9 hycontrol-arg)))
+
+    ;; Clear hycontrol-arg
+    (define-key map "."     (lambda () (interactive) (setq hycontrol-arg 0) 
(hycontrol-frame-to-screen-edges 0)))
+    (define-key map "a"     'hycontrol-frame-adjust-widths)
+    (define-key map "A"     'hycontrol-frame-adjust-heights)
+    (define-key map "b"     'bury-buffer)
+    (define-key map "c"     'hycontrol-frame-to-screen-edges)
+    (define-key map "d"     'delete-window)
+    (define-key map "D"     'hycontrol-delete-other-windows)
+    (define-key map "f"     'hycontrol-clone-window-to-new-frame)
+    (define-key map "F"     'hycontrol-window-to-new-frame)
+    (define-key map "\C-g"  (lambda () (interactive) (setq 
hycontrol--exit-status 'abort-from-windows)))
+    (define-key map "h"     (lambda () (interactive) (enlarge-window 
hycontrol-arg)))
+
+    ;; Allow frame resizing even when in window control mode because
+    ;; it may be used often.
+    (define-key map "i"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-top hycontrol-arg))))
+    (define-key map "j"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-left hycontrol-arg))))
+    (define-key map "k"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-right hycontrol-arg))))
+    (define-key map "m"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-frame-resize-to-bottom hycontrol-arg))))
+    (define-key map "n"     (lambda () (interactive) 
(shrink-window-horizontally hycontrol-arg)))
+
+    (define-key map "o"     (lambda () (interactive) (setq w 
(selected-window)) (other-window hycontrol-arg) (if (eq w (selected-window)) 
(other-window 1))))
+    (define-key map "O"     (lambda () (interactive) (setq w 
(selected-window)) (other-frame hycontrol-arg) (if (eq w (selected-window)) 
(other-frame 1))))
+    ;; Numeric keypad emulation for keyboards that lack one.
+    (define-key map "p"     (lambda () (interactive) 
(hycontrol-virtual-numeric-keypad hycontrol-arg)))
+    (define-key map "q"     (lambda () (interactive) (setq 
hycontrol--exit-status 'quit-from-windows)))
+    (define-key map "s"     (lambda () (interactive) (shrink-window 
hycontrol-arg)))
+    (define-key map "t"     (lambda () (interactive) (setq 
hycontrol--exit-status 'toggle-from-windows)))
+    (define-key map "u"     'unbury-buffer)
+    (define-key map "w"     (lambda () (interactive) 
(enlarge-window-horizontally hycontrol-arg)))
+    (define-key map "Z"     (lambda () (interactive) (if (fboundp 
'text-scale-increase)
+                                                        ;; Emacs autoloaded 
function
+                                                        (text-scale-increase 
(if (< hycontrol-arg 10) hycontrol-arg (setq hycontrol-arg 1))))))
+    (define-key map "z"     (lambda () (interactive) (if (fboundp 
'text-scale-decrease)
+                                                        ;; Emacs autoloaded 
function
+                                                        (text-scale-decrease 
(if (< hycontrol-arg 10) hycontrol-arg (setq hycontrol-arg 1))))))
+
+    (define-key map "\["    'split-window-vertically)
+    (define-key map "\]"    'split-window-horizontally)
+    (define-key map "\("    'hycontrol-save-frame-configuration)
+    (define-key map "\)"    'hycontrol-restore-frame-configuration)
+
+    (define-key map "~"     (lambda () (interactive)
+                             (or (hycontrol-window-swap-buffers) 
(hycontrol-frame-swap-buffers)
+                                 (hycontrol-user-error hycontrol--debug 
"(HyControl): There must be only two windows on screen to swap buffers."))))
+    (define-key map "-"     'hycontrol-window-minimize-lines)
+    (define-key map "+"     'hycontrol-window-maximize-lines)
+    (define-key map "="     (lambda () (interactive) (and (> (length 
(window-list)) 1)
+                                                         (y-or-n-p "Resize 
windows evenly across this frame?")
+                                                         (balance-windows))))
+
+    (define-key map "\C-u"  (lambda () (interactive) (setq hycontrol-arg (* 
hycontrol-arg 4))
+                             (if (> hycontrol-arg hycontrol-maximum-units) 
(setq hycontrol-arg 4))))
+    (define-key map "0"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 0))))
+    (define-key map "1"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 1))))
+    (define-key map "2"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 2))))
+    (define-key map "3"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 3))))
+    (define-key map "4"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 4))))
+    (define-key map "5"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 5))))
+    (define-key map "6"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 6))))
+    (define-key map "7"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 7))))
+    (define-key map "8"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 8))))
+    (define-key map "9"     (lambda () (interactive) (setq hycontrol-arg 
(hycontrol-universal-arg-digit hycontrol-arg 9))))
+
+    map)
+  "Keymap to use when in Hyperbole HyControl window mode.")
+
+
 ;;; ************************************************************************
 ;;; Private variables
 ;;; ************************************************************************
 
+(defvar hycontrol--frames-prompt-format
+ (concat "FRAME: (h=heighten, s=shorten, w=widen, n=narrow, %%/H/W=screen 
%%age, arrow=move frame) by %d unit%s, .=clear units\n"
+        ;; d/^/D=delete/iconify frame/others - iconify left out due to some 
bug on macOS (see comment near ^ below)
+        "a/A=cycle adjust width/height, d/D=delete frame/others, o/O=other 
win/frame, [/]=create frame, (/)=save/restore fconfig\n"
+        "f/F=clone/move win to new frame, -/+=minimize/maximize frame, 
==frames same size, u/b/~=un/bury/swap bufs\n"
+        "Frame to edges: c=cycle, i/j/k/m=expand/contract, p/num-keypad=move; 
z/Z=zoom out/in, t=to WINDOW:, q=quit")
+ "HyControl frames-mode minibuffer prompt string to pass to format.
+Pass it with 2 arguments: prefix-arg and a plural string indicating if
+ prefix-arg is not equal to 1.")
+
+(defvar hycontrol--windows-prompt-format
+  (concat
+   "WINDOW: (h=heighten, s=shorten, w=widen, n=narrow, arrow=move frame) by %d 
unit%s, .=clear units\n"
+   ;; No room to show: a/A=cycle adjust width/height
+   "d/D=delete win/others, o/O=other win/frame, [/]=split win atop/sideways, 
(/)=save/restore wconfig\n"
+   "f/F=clone/move win to new frame, -/+=minimize/maximize win, ==wins same 
size, u/b/~=un/bury/swap bufs\n"
+   "Frame to edges: c=cycle, i/j/k/m=expand/contract, p/num-keypad=move; 
z/Z=zoom out/in, t=to FRAME:, q=quit")
+  "HyControl windows-mode minibuffer prompt string to pass to format.
+Pass it with 2 arguments: prefix-arg and a plural string indicating if
+prefix-arg is not equal to 1.")
+
+
+(defvar hycontrol--debug nil
+  "Non-nil when HyControl is invoked with a -1 argument to output debugging 
messages.")
+
+(defvar hycontrol--exit-status nil
+  "Internal HyControl status indicator of how it was exited.
+After exit, it should be one of the following symbols triggered by the
+associated key: quit {q}, abort {C-g}, or toggle {t}.")
+
+
 (defvar hycontrol--fconfig nil
   "Used to store a frame configuration while in hycontrol")
 
 (defvar hycontrol--wconfig nil
   "Used to store a window configuration while in hycontrol")
 
+
+(defvar hycontrol--quit-function nil
+  "Stores function auto-generated by a call to `set-transient-map' to remove 
the transient-map later.")
+
+
 (defvar hycontrol--screen-edge-position 0
   "Cycles between 0-7 representing corner and center edge positions in 
clockwise order from the upper left corner.")
 
+(defvar hycontrol--frame-widths-pointer nil)
+(defvar hycontrol--frame-heights-pointer nil)
+
+;;; ************************************************************************
+;;; Private functions
+;;; ************************************************************************
+
+(defun hycontrol-frames-post-command-hook ()
+  "Added to `post-command-hook' while in HyControl frames mode."
+  (condition-case ()
+      (funcall #'hycontrol-frames-post-command-hook-body)
+    (quit (funcall #'hycontrol-frames-post-command-hook-body))))
+
+(defun hycontrol-frames-post-command-hook-body ()
+  (when (null hycontrol-arg) (setq hycontrol-arg 1))
+  (setq current-prefix-arg hycontrol-arg)
+  (if hycontrol--exit-status
+      (progn (remove-hook 'post-command-hook 
'hycontrol-frames-post-command-hook)
+            (funcall hycontrol--quit-function))
+    (message hycontrol--frames-prompt-format hycontrol-arg (if (= 
hycontrol-arg 1) "" "s"))))
+
+(defun hycontrol-windows-post-command-hook ()
+  "Added to `post-command-hook' while in HyControl windows mode."
+  (condition-case ()
+      (funcall #'hycontrol-windows-post-command-hook-body)
+    (quit (funcall #'hycontrol-windows-post-command-hook-body))))
+
+(defun hycontrol-windows-post-command-hook-body ()
+  (when (null hycontrol-arg) (setq hycontrol-arg 1))
+  (setq current-prefix-arg hycontrol-arg)
+  (if hycontrol--exit-status
+      (progn (remove-hook 'post-command-hook 
'hycontrol-windows-post-command-hook)
+            (funcall hycontrol--quit-function))
+    (message hycontrol--windows-prompt-format hycontrol-arg (if (= 
hycontrol-arg 1) "" "s"))))
+
+(defun hycontrol-exit-mode ()
+  "Run by the HyControl frame or window transient keymap after it is disabled."
+  (setq inhibit-quit nil)
+  (pcase hycontrol--exit-status
+    ('toggle-from-frames  (hycontrol-windows hycontrol-arg hycontrol--debug))
+    ('toggle-from-windows (hycontrol-frames hycontrol-arg hycontrol--debug))
+    ('abort-from-frames   (progn (ding)
+                                (setq hycontrol--exit-status nil)
+                                ;; Use of (keyboard-quit) here would
+                                ;; trigger an error in post-command-hook,
+                                ;; so don't use.
+                                (top-level)))
+    ('abort-from-windows  (progn (ding)
+                                (setq hycontrol--exit-status nil)
+                                (top-level)))
+    ('quit-from-frames    (message "Finished controlling frames"))
+    ('quit-from-windows   (message "Finished controlling windows"))))
+
+(defun hycontrol-stay-in-mode ()
+  "Return non-nil if HyControl mode should remain active."
+  (null hycontrol--exit-status))
+
+
+(defun hycontrol-universal-arg-digit (arg digit)
+  "Return the new prefix argument based on existing ARG and new DIGIT."
+  (setq arg (+ (* arg 10) digit)) (if (> arg hycontrol-maximum-units) (setq 
arg digit))
+  arg)
+
+
+(defsubst hycontrol-frame-edges (&optional frame)
+  "Return the outermost edge coordinates of optional or selected FRAME.
+FRAME must be a live frame and defaults to the selected one.  The
+list returned has the form (Left Top Right Bottom) where all
+values are in pixels relative to the origin - the position (0, 0)
+- of FRAME’s display.  For terminal frames all values are
+relative to Left and Top which are both zero."
+  (frame-edges frame 'outer-edges))
+
+(defsubst hycontrol-frame-x-origin (&optional frame)
+  "Return the X origin coordinate (upper left point) of optional FRAME or the 
selected frame.  This includes all graphical window manager decorations.
+Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
+  (nth 0 (hycontrol-frame-edges frame)))
+
+(defsubst hycontrol-frame-y-origin (&optional frame)
+  "Return the Y origin coordinate (upper left point) of optional FRAME or the 
selected frame.  This includes all graphical window manager decorations.
+Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
+  (nth 1 (hycontrol-frame-edges frame)))
+
+(defun hycontrol-frame-height (&optional frame)
+  "Return the height of optional FRAME or the selected frame.  This includes 
all graphical window manager decorations.
+Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
+  (frame-pixel-height frame))
+
+(defun hycontrol-frame-width (&optional frame)
+  "Return the width of optional FRAME or the selected frame.  This includes 
all graphical window manager decorations.
+Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
+  (frame-pixel-width frame))
+
+;; Frame Resizing Support
+(defconst hycontrol-screen-offset-sensitivity 12
+  "Number of pixels a frame dimension can be off from its screen-offset and 
still be considered at the screen edge.")
+
+(defun hycontrol-frame-at-left-p ()
+  "Return non-nil if selected frame's left edge is at the left edge of the 
screen sans `hycontrol-screen-left-offset'."
+  (<= (- (nth 0 (hycontrol-frame-edges)) hycontrol-screen-left-offset)
+      hycontrol-screen-offset-sensitivity))
+
+(defun hycontrol-frame-at-top-p ()
+  "Return non-nil if selected frame's bottom is at the top of the screen sans 
`hycontrol-screen-top-offset'."
+  (<= (- (nth 1 (hycontrol-frame-edges)) hycontrol-screen-top-offset
+        ;; Under macOS, frames are automatically offset vertically by
+        ;; the height of the global menubar, so account for that.
+        (if (eq system-type 'darwin) 23 0))
+      hycontrol-screen-offset-sensitivity))
+
+(defun hycontrol-frame-at-right-p ()
+  "Return non-nil if selected frame's right edge is at the right edge of the 
screen sans `hycontrol-screen-right-offset'."
+  (<= (- (display-pixel-width) (nth 2 (hycontrol-frame-edges)) 
hycontrol-screen-right-offset)
+      hycontrol-screen-offset-sensitivity))
+
+(defun hycontrol-frame-at-bottom-p ()
+  "Return non-nil if selected frame's bottom is at the bottom of the screen 
sans `hycontrol-screen-bottom-offset'."
+  (<= (- (display-pixel-height) (nth 3 (hycontrol-frame-edges)) 
hycontrol-screen-bottom-offset
+        ;; Under macOS, frames are automatically offset vertically by
+        ;; the height of the global menubar, so account for that.
+        (if (eq system-type 'darwin) -23 0))
+      hycontrol-screen-offset-sensitivity))
+
+;; Frame Zoom Support
+(defun hycontrol-frame-zoom (zoom-func arg max-msgs)
+  "Zoom default frame face using ZOOM-FUNC and amount ARG (must be 1-9).
+MAX-MSGS is a number used only if ZOOM-FUNC is undefined and an error message 
is logged."
+  (if (fboundp zoom-func)
+      (let ((frame-zoom-font-difference arg))
+       (funcall zoom-func))
+    (hycontrol-user-error max-msgs "(HyControl): Zooming requires separate 
\"zoom-frm.el\" Emacs Lisp library installation")))
+
+
+(defun hycontrol-make-frame ()
+  "Create and select a new frame with the same size and selected buffer as the 
selected frame.
+It is offset from the selected frame by `hycontrol-frame-offset' (x . y) 
pixels."
+  (interactive)
+  (select-frame (make-frame (list (cons 'width (frame-width)) (cons 'height 
(frame-height))
+                                 (cons 'left (+ (car hycontrol-frame-offset) 
(car (frame-position))))
+                                 (cons 'top  (+ (cdr hycontrol-frame-offset) 
(cdr (frame-position))))))))
+
+(defun hycontrol-move-frame (arrow pixels)
+  (let ((x (car (frame-position)))
+       (y (cdr (frame-position))))
+    (pcase arrow
+      ('up    (set-frame-position nil x (- y pixels)))
+      ('down  (set-frame-position nil x (+ y pixels)))
+      ('left  (set-frame-position nil (- x pixels) y))
+      ('right (set-frame-position nil (+ x pixels) y)))))
+
+(defun hycontrol-numeric-keypad (e _arg)
+  "Move the selected frame to a screen location based on the location of the 
last pressed numeric keypad key."
+  (let ((num (if (integerp e)
+                e
+              ;; kp-<num> symbol
+              (- (aref (symbol-name e) 3) ?0))))
+    (funcall
+     (nth num '(nil hycontrol-frame-to-bottom-left 
hycontrol-frame-to-bottom-center hycontrol-frame-to-bottom-right
+               hycontrol-frame-to-left-center hycontrol-frame-to-center 
hycontrol-frame-to-right-center
+               hycontrol-frame-to-top-left hycontrol-frame-to-top-center 
hycontrol-frame-to-top-right)))))
+
+(defun hycontrol-set-frame-height (frame height &optional pretend pixelwise)
+  "Set text height of frame FRAME to HEIGHT lines and fit it to the screen.
+Optional third arg PRETEND non-nil means that redisplay should use
+HEIGHT lines but that the idea of the actual height of the frame should
+not be changed.
+
+Optional fourth argument PIXELWISE non-nil means that FRAME should be
+HEIGHT pixels high.  Note: When ‘frame-resize-pixelwise’ is nil, some
+window managers may refuse to honor a HEIGHT that is not an integer
+multiple of the default frame font height."
+  (let ((frame-resize-pixelwise t))
+    (set-frame-height frame height pretend pixelwise)
+    (hycontrol-frame-fit-to-screen frame)))
+
+(defun hycontrol-set-frame-position (frame x y)
+  "Set position of FRAME to (X, Y) and ensure it fits on screen.
+FRAME must be a live frame and defaults to the selected one.  X and Y,
+if positive, specify the coordinate of the left and top edge of FRAME’s
+outer frame in pixels relative to an origin (0, 0) of FRAME’s display.
+If any of X or Y is negative, it specifies the coordinates of the right
+or bottom edge of the outer frame of FRAME relative to the right or
+bottom edge of FRAME’s display."
+  (let ((frame-resize-pixelwise t))
+    (hycontrol-frame-fit-to-screen frame)
+    (set-frame-position frame x y)))
+
+(defun hycontrol-set-frame-size (frame width height &optional pixelwise)
+  "Set text size of FRAME to WIDTH by HEIGHT, measured in characters.
+Ensure frame fits within the screen size.
+
+Optional argument PIXELWISE non-nil means to measure in pixels.  Note:
+When ‘frame-resize-pixelwise’ is nil, some window managers may refuse to
+honor a WIDTH that is not an integer multiple of the default frame font
+width or a HEIGHT that is not an integer multiple of the default frame
+font height."
+  (let ((x-origin (hycontrol-frame-x-origin))
+       (y-origin (hycontrol-frame-y-origin))
+       (frame-resize-pixelwise t))
+    (set-frame-size frame width height pixelwise)
+    (hycontrol-frame-fit-to-screen frame x-origin y-origin)))
+
+(defun hycontrol-set-frame-width (frame width &optional pretend pixelwise)
+  "Set text width of frame FRAME to WIDTH columns and fit it to the screen.
+Optional third arg PRETEND non-nil means that redisplay should use WIDTH
+columns but that the idea of the actual width of the frame should not
+be changed.
+
+Optional fourth argument PIXELWISE non-nil means that FRAME should be
+WIDTH pixels wide.  Note: When ‘frame-resize-pixelwise’ is nil, some
+window managers may refuse to honor a WIDTH that is not an integer
+multiple of the default frame font width."
+  (let ((x-origin (hycontrol-frame-x-origin))
+       (y-origin (hycontrol-frame-y-origin))
+       (frame-resize-pixelwise t))
+    (set-frame-width frame width pretend pixelwise)
+    (hycontrol-frame-fit-to-screen frame x-origin y-origin)))
+
+
+(defun hycontrol-message (max-msgs &rest msg-args)
+  "Log MAX-MSGS, adding MSG to the *Messages* buffer log."
+  (let ((message-log-max max-msgs))
+    (apply #'message msg-args)))
+
+(defun hycontrol-user-error (max-msgs &rest err)
+  "Log MAX-MSGS, adding ERR to the *Messages* buffer log; display ERR for 2 
seconds."
+  (let ((message-log-max max-msgs))
+    (beep)
+    (apply #'message err)
+    (sit-for 2)))
+
 ;;; ************************************************************************
 ;;; Public functions
 ;;; ************************************************************************
@@ -153,98 +614,28 @@ unhandled events are logged to the *Messages* buffer.  If 
ARG is < 1, it is
 set to 1.  If it is > `hycontrol-maximum-units', it is set to
 `hycontrol-maximum-units'."
   (interactive "p")
+  (setq arg (prefix-numeric-value arg)
+       inhibit-quit t
+       hycontrol--exit-status nil)
   (if (eq arg -1) (setq debug t))
   (and debug (not (integerp debug)) (setq debug message-log-max))
+  (setq hycontrol--debug debug)
   (if (called-interactively-p 'interactive) (hycontrol-save-configurations))
   (let ((message-log-max nil)
        (resize-mini-windows t) ;; automatically shrink
-       (use-dialog-box) ;; prevent y-or-n dialog boxes
-       e w)
-    (if (catch 'done
-         (cond ((or (not (integerp arg)) (< arg 1))
-                (setq arg 1))
-               ((> arg hycontrol-maximum-units)
-                (setq arg hycontrol-maximum-units)))
-         (while t
-           (message
-            (concat
-             "FRAME: (h=heighten, s=shorten, w=widen, n=narrow, %%/H/W=screen 
%%age, arrow=move frame) by %d unit%s, .=clear units\n"
-             ;; d/^/D=delete/iconify frame/others - iconify left out due to 
some bug on macOS (see comment near ^ below)
-             "d/D=delete frame/others, o/O=other win/frame, [/]=create frame, 
(/)=save/restore fconfig\n"
-             "f/F=clone/move win to new frame, -/+=minimize/maximize frame, 
==frames same size, u/b/~=un/bury/swap bufs\n"
-             "Frame to edges: c=cycle, i/j/k/m=expand/contract, 
p/num-keypad=move; z/Z=zoom out/in, t=to WINDOW:, q=quit")
-            arg
-            (if (= arg 1) "" "s"))
-           (condition-case ()
-               (progn
-                 (setq e (read-event))
-                 (cond
-                  ((memq e '(up down left right))
-                   (hycontrol-move-frame e arg))
-                  ((memq e '(kp-0 kp-1 kp-2 kp-3 kp-4 kp-5 kp-6 kp-7 kp-8 
kp-9))
-                   (hycontrol-numeric-keypad e arg))
-                  ((eq e ?.) (setq arg 0) (hycontrol-frame-to-screen-edges 0)) 
;; Clear arg
-                  ((eq e ?b) (bury-buffer))
-                  ((eq e ?c) (hycontrol-frame-to-screen-edges))
-                  ((eq e ?d) (delete-frame))
-                  ((eq e ?D) (hycontrol-delete-other-frames))
-                  ((eq e ?f) (hycontrol-clone-window-to-new-frame))
-                  ((eq e ?F) (hycontrol-window-to-new-frame))
-                  ((eq e ?\C-g) (keyboard-quit))
-                  ((eq e ?%) (hycontrol-frame-percentage-of-screen arg))
-                  ((eq e ?H) (hycontrol-frame-height-percentage-of-screen arg))
-                  ((eq e ?W) (hycontrol-frame-width-percentage-of-screen arg))
-                  ((eq e ?h) (set-frame-height nil (+ (frame-height) arg)))
-                  ((eq e ?i) (setq arg (hycontrol-frame-resize-to-top arg)))
-                  ((eq e ?j) (setq arg (hycontrol-frame-resize-to-left arg)))
-                  ((eq e ?k) (setq arg (hycontrol-frame-resize-to-right arg)))
-                  ((eq e ?l) (lower-frame))
-                  ((eq e ?m) (setq arg (hycontrol-frame-resize-to-bottom arg)))
-                  ((eq e ?n) (set-frame-width nil (- (frame-width) arg)))
-                  ((eq e ?o) (setq w (selected-window)) (other-window arg) (if 
(eq w (selected-window)) (other-window 1)))
-                  ((eq e ?O) (setq w (selected-window)) (other-frame arg) (if 
(eq w (selected-window)) (other-frame 1)))
-                  ;; Numeric keypad emulation for keyboards that lack one.
-                  ((eq e ?p) (hycontrol-virtual-numeric-keypad arg))
-                  ;; Don't use expr to the right; it prevents ESC use as Meta: 
((memq e (list ?q (aref (kbd "<escape>") 0))) (throw 'done t))
-                  ((eq e ?q) (throw 'done t))
-                  ((eq e ?r) (raise-frame))
-                  ((eq e ?s) (set-frame-height nil (- (frame-height) arg)))
-                  ((eq e ?t) (throw 'done nil))
-                  ((eq e ?u) (unbury-buffer))
-                  ((eq e ?w) (set-frame-width nil (+ (frame-width) arg)))
-                  ((eq e ?Z) (if (> arg 9) (setq arg 1)) (hycontrol-frame-zoom 
'zoom-frm-in arg debug))
-                  ((eq e ?z) (if (> arg 9) (setq arg 1)) (hycontrol-frame-zoom 
'zoom-frm-out arg debug))
-                  ((memq e '(?\[ ?\])) (hycontrol-make-frame))
-                  ((eq e ?\() (call-interactively 
'hycontrol-save-frame-configuration))
-                  ((eq e ?\)) (hycontrol-restore-frame-configuration))
-                  ;; Something in this command's event handling when used 
within HyControl's event loop slows down
-                  ;; frame iconification under macOS 100-fold, so don't enable 
it until this issue is resolved.
-                  ;; ((eq e ?^)  (iconify-frame))
-                  ((eq e ?~) (or (hycontrol-frame-swap-buffers) 
(hycontrol-window-swap-buffers)
-                                 (hycontrol-user-error debug "(HyControl): 
There must be only two windows on screen to swap buffers.")))
-                  ((eq e ?-) (hycontrol-frame-minimize-lines))
-                  ((eq e ?+) (toggle-frame-maximized))
-                  ((eq e ?=)
-                   (and (> (length (visible-frame-list)) 1)
-                        (y-or-n-p "Resize all other frames to the size of the 
selected frame?")
-                        (mapc (lambda (f) (set-frame-size f 
(frame-pixel-width) (frame-pixel-height) t)) (visible-frame-list))))
-                  ((eq e ?\C-u)
-                   (setq arg (* arg 4))
-                   (if (> arg hycontrol-maximum-units) (setq arg 4)))
-                  ((and (integerp e) (>= e ?0) (<= e ?9))
-                   (setq arg (+ (* arg 10) (- e ?0)))
-                   (if (> arg hycontrol-maximum-units) (setq arg (- e ?0))))
-                  ((hycontrol-handle-event e arg))
-                  (t (beep)
-                     (if debug (hycontrol-message debug "(HyDebug): 
Frame/window unhandled event - %s"
-                                                  (hycontrol-prettify-event 
e)))))
-                 (discard-input))
-             (error (if debug (hycontrol-message debug "(HyDebug): 
Frame/window unhandled event - %s"
-                                                 (hycontrol-prettify-event e)))
-                    (discard-input)
-                    (beep)))))
-       (message "Finished controlling frames")
-      (hycontrol-windows arg debug))))
+       (use-dialog-box)) ;; prevent y-or-n dialog boxes
+    (cond ((or (not (integerp arg)) (< arg 1))
+          (setq arg 1))
+         ((> arg hycontrol-maximum-units)
+          (setq arg hycontrol-maximum-units)))
+    (setq hycontrol-arg arg)
+    (funcall #'hycontrol-frames-post-command-hook)
+    (add-hook 'post-command-hook 'hycontrol-frames-post-command-hook)
+    ;; Use normal event loop with transient-map until {C-g} or {q} is
+    ;; pressed, then exit.
+    (setq hycontrol--quit-function
+         (set-transient-map hycontrol-frames-mode-map #'hycontrol-stay-in-mode
+                            #'hycontrol-exit-mode))))
 
 ;;;###autoload
 (defun hycontrol-windows (&optional arg debug)
@@ -255,98 +646,36 @@ unhandled events are logged to the *Messages* buffer.  If 
ARG is < 1, it is
 set to 1.  If it is > `hycontrol-maximum-units', it is set to
 `hycontrol-maximum-units'."
   (interactive "p")
+  (setq arg (prefix-numeric-value arg)
+       inhibit-quit t
+       hycontrol--exit-status nil)
   (if (eq arg -1) (setq debug t))
   (and debug (not (integerp debug)) (setq debug message-log-max))
+  (setq hycontrol--debug debug)
   (if (called-interactively-p 'interactive) (hycontrol-save-configurations))
   (let ((message-log-max nil)
        (resize-mini-windows t) ;; automatically shrink
-       (use-dialog-box) ;; prevent y-or-n dialog boxes
-       e w)
-    (if (catch 'done
-         (cond ((or (not (integerp arg)) (< arg 1))
-                (setq arg 1))
-               ((> arg hycontrol-maximum-units)
-                (setq arg hycontrol-maximum-units)))
-         (while t
-           (message
-            (concat
-             "WINDOW: (h=heighten, s=shorten, w=widen, n=narrow, arrow=move 
frame) by %d unit%s, .=clear units\n"
-             "d/D=delete win/others, o/O=other win/frame, [/]=split win 
atop/sideways, (/)=save/restore wconfig\n"
-             "f/F=clone/move win to new frame, -/+=minimize/maximize win, 
==wins same size, u/b/~=un/bury/swap bufs\n"
-             "Frame to edges: c=cycle, i/j/k/m=expand/contract, 
p/num-keypad=move; z/Z=zoom out/in, t=to FRAME:, q=quit")
-            arg
-            (if (= arg 1) "" "s"))
-           (condition-case ()
-               (progn
-                 (setq e (read-event))
-                 (cond
-                  ((memq e '(up down left right))
-                   (hycontrol-move-frame e arg))
-                  ((memq e '(kp-0 kp-1 kp-2 kp-3 kp-4 kp-5 kp-6 kp-7 kp-8 
kp-9))
-                   (hycontrol-numeric-keypad e arg))
-                  ((eq e ?.) (setq arg 0)) ;; Clear arg
-                  ((eq e ?b) (bury-buffer))
-                  ((eq e ?c) (hycontrol-frame-to-screen-edges))
-                  ((eq e ?d) (delete-window))
-                  ((eq e ?D) (hycontrol-delete-other-windows))
-                  ((eq e ?f) (hycontrol-clone-window-to-new-frame))
-                  ((eq e ?F) (hycontrol-window-to-new-frame))
-                  ((eq e ?\C-g) (keyboard-quit))
-                  ((eq e ?h) (enlarge-window arg))
-                  ;; Allow frame resizing even when in window control
-                  ;; mode because it may be used often.
-                  ((eq e ?i) (setq arg (hycontrol-frame-resize-to-top arg)))
-                  ((eq e ?j) (setq arg (hycontrol-frame-resize-to-left arg)))
-                  ((eq e ?k) (setq arg (hycontrol-frame-resize-to-right arg)))
-                  ((eq e ?m) (setq arg (hycontrol-frame-resize-to-bottom arg)))
-                  ((eq e ?n) (shrink-window-horizontally arg))
-                  ((eq e ?o) (setq w (selected-window)) (other-window arg) (if 
(eq w (selected-window)) (other-window 1)))
-                  ((eq e ?O) (setq w (selected-window)) (other-frame arg) (if 
(eq w (selected-window)) (other-frame 1)))
-                  ;; Numeric keypad emulation for keyboards that lack one.
-                  ((eq e ?p) (hycontrol-virtual-numeric-keypad arg))
-                  ;; Don't use expr to the right; it prevents ESC use as Meta: 
((memq e (list ?q (aref (kbd "<escape>") 0))) (throw 'done t))
-                  ((eq e ?q) (throw 'done t))
-                  ((eq e ?s) (shrink-window arg))
-                  ((eq e ?t) (throw 'done nil))
-                  ((eq e ?u) (unbury-buffer))
-                  ((eq e ?w) (enlarge-window-horizontally arg))
-                  ((and (eq e ?Z) (fboundp 'text-scale-increase))
-                   ;; Emacs autoloaded function
-                   (text-scale-increase (if (< arg 10) arg (setq arg 1))))
-                  ((and (eq e ?z) (fboundp 'text-scale-decrease))
-                   ;; Emacs autoloaded function
-                   (text-scale-decrease (if (< arg 10) arg (setq arg 1))))
-                  ((eq e ?\[) (split-window-vertically))
-                  ((eq e ?\]) (split-window-horizontally))
-                  ((eq e ?\() (call-interactively 
'hycontrol-save-window-configuration))
-                  ((eq e ?\)) (hycontrol-restore-window-configuration))
-                  ((eq e ?~) (or (hycontrol-window-swap-buffers) 
(hycontrol-frame-swap-buffers)
-                                 (hycontrol-user-error debug "(HyControl): 
There must be only two windows on screen to swap buffers.")))
-                  ((eq e ?-) (hycontrol-window-minimize-lines))
-                  ((eq e ?+) (hycontrol-window-maximize-lines))
-                  ((eq e ?=)
-                   (and (> (length (window-list)) 1)
-                        (y-or-n-p "Resize windows evenly across this frame?")
-                        (balance-windows)))
-                  ((eq e ?\C-u)
-                   (setq arg (* arg 4))
-                   (if (> arg hycontrol-maximum-units) (setq arg 4)))
-                  ((and (integerp e) (>= e ?0) (<= e ?9))
-                   (setq arg (+ (* arg 10) (- e ?0)))
-                   (if (> arg hycontrol-maximum-units) (setq arg (- e ?0))))
-                  ((hycontrol-handle-event e arg))
-                  (t (beep)
-                     (if debug (hycontrol-message debug "(HyDebug): 
Frame/window unhandled event - %s"
-                                                  (hycontrol-prettify-event 
e)))))
-                 (discard-input))
-             (error (if debug (hycontrol-message debug "(HyDebug): 
Frame/window unhandled event - %s"
-                                                  (hycontrol-prettify-event 
e)))
-                    (beep)
-                    (discard-input)))))
-       (message "Finished controlling windows")
-      (hycontrol-frames arg debug))))
+       (use-dialog-box)) ;; prevent y-or-n dialog boxes
+    (cond ((or (not (integerp arg)) (< arg 1))
+          (setq arg 1))
+         ((> arg hycontrol-maximum-units)
+          (setq arg hycontrol-maximum-units)))
+    (setq hycontrol-arg arg)
+    (funcall #'hycontrol-windows-post-command-hook)
+    (add-hook 'post-command-hook 'hycontrol-windows-post-command-hook)
+    ;; Use normal event loop with transient-map until {C-g} or {q} is
+    ;; pressed, then exit.
+    (setq hycontrol--quit-function
+         (set-transient-map hycontrol-windows-mode-map #'hycontrol-stay-in-mode
+                            #'hycontrol-exit-mode))))
 
 ;;; Frame Display Commands
+(defun hycontrol-delete-other-frames ()
+  "Confirm and then delete all other frames."
+  (interactive)
+  (if (y-or-n-p "Delete all frames on this screen other than the selected 
one?")
+      (delete-other-frames)))
+
 (defun hycontrol-frame-swap-buffers ()
   "Swap the buffers displayed by each of two frames and return t.
 The selected frame may have multiple windows; the selected window is
@@ -404,95 +733,120 @@ With an optional arg of 0, just reset the cycle position 
to 0."
 (defun hycontrol-frame-to-bottom ()
   "Move the selected frame to the bottom of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (car (frame-position))
-                     (- (display-pixel-height) (hycontrol-frame-height)
-                        hycontrol-screen-bottom-offset)))
+  (hycontrol-set-frame-position
+   nil (car (frame-position))
+   (- (display-pixel-height) (hycontrol-frame-height)
+      hycontrol-screen-bottom-offset)))
 
 (defun hycontrol-frame-to-left ()
   "Move the selected frame to the left of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil hycontrol-screen-left-offset (cdr (frame-position))))
+  (hycontrol-set-frame-position nil hycontrol-screen-left-offset (cdr 
(frame-position))))
 
 (defun hycontrol-frame-to-right ()
   "Move the selected frame to the right of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (- (display-pixel-width) (hycontrol-frame-width)
-                        hycontrol-screen-right-offset)
-                     (cdr (frame-position))))
-
+  (hycontrol-set-frame-position
+   nil (- (display-pixel-width) (hycontrol-frame-width)
+         hycontrol-screen-right-offset)
+   (cdr (frame-position))))
+
+(defun hycontrol-frame-fit-to-screen (&optional frame x-origin y-origin)
+  "Ensure the selected frame fits within the screen, allowing for 
hycontrol-screen-*-offsets.
+Accepts optional arguments FRAME, X-ORIGIN, and Y-ORIGIN (in pixels) to use 
when resizing FRAME (defaults to selected frame)."
+  (let ((max-width (- (display-pixel-width) hycontrol-screen-left-offset 
hycontrol-screen-right-offset 2))
+       (max-height (- (display-pixel-height) hycontrol-screen-top-offset 
hycontrol-screen-bottom-offset 2)))
+    (setq x-origin (or x-origin (hycontrol-frame-x-origin frame))
+         y-origin (or y-origin (hycontrol-frame-y-origin frame)))
+    (when (or (> (hycontrol-frame-width frame) max-width) (> 
(hycontrol-frame-height frame) max-height))
+      ;; Adjust frame size to fit within screen
+      (set-frame-size frame (min (hycontrol-frame-width frame) max-width)
+                     (min (hycontrol-frame-height frame) max-height)
+                     t)
+      (if hycontrol--debug (hycontrol-message hycontrol--debug "(HyDebug): 
"Screen (X,Y): %d, %d; Frame Edges (L,T,R,B): %s"
+                                  (display-pixel-width) (display-pixel-height) 
(hycontrol-frame-edges frame)))
+      )
+    ;; Ensure entire frame is positioned onscreen, keeping the
+    ;; original frame origin coordinates if possible.
+    (set-frame-position frame
+                       (min (max 0 x-origin) 
+                            (- (display-pixel-width) (hycontrol-frame-width 
frame) hycontrol-screen-right-offset))
+                       (min (max 0 y-origin)
+                            (- (display-pixel-height) (hycontrol-frame-height 
frame) hycontrol-screen-bottom-offset)))
+      (if hycontrol--debug (hycontrol-message hycontrol--debug "(HyDebug): 
"Screen (X,Y): %d, %d; Frame Edges (L,T,R,B): %s"
+                                  (display-pixel-width) (display-pixel-height) 
(hycontrol-frame-edges frame)))))
 
 (defun hycontrol-frame-to-top ()
   "Move the selected frame to the top of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil (car (frame-position)) hycontrol-screen-top-offset))
+  (hycontrol-set-frame-position nil (car (frame-position)) 
hycontrol-screen-top-offset))
 
 (defun hycontrol-frame-to-bottom-center ()
   "Move the selected frame to the center of the bottom of the screen, allowing 
for hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (round (/ (- (display-pixel-width) 
(hycontrol-frame-width)) 2))
-                     (- (display-pixel-height) (hycontrol-frame-height)
-                        hycontrol-screen-bottom-offset)))
+  (hycontrol-set-frame-position
+   nil (round (/ (- (display-pixel-width) (hycontrol-frame-width)) 2))
+   (- (display-pixel-height) (hycontrol-frame-height)
+      hycontrol-screen-bottom-offset)))
 
 (defun hycontrol-frame-to-center ()
   "Move the selected frame to the center of the screen."
   (interactive)
-  (set-frame-position nil
-                     (round (/ (- (display-pixel-width) 
(hycontrol-frame-width)) 2))
-                     (round (/ (- (display-pixel-height) 
(hycontrol-frame-height)) 2))))
+  (hycontrol-set-frame-position
+   nil
+   (round (/ (- (display-pixel-width) (hycontrol-frame-width)) 2))
+   (round (/ (- (display-pixel-height) (hycontrol-frame-height)) 2))))
 
 
 (defun hycontrol-frame-to-left-center ()
   "Move the selected frame to the center of the left of the screen, allowing 
for hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil hycontrol-screen-left-offset (round (/ (- 
(display-pixel-height) (hycontrol-frame-height)) 2))))
+  (hycontrol-set-frame-position
+   nil hycontrol-screen-left-offset (round (/ (- (display-pixel-height) 
(hycontrol-frame-height)) 2))))
 
 (defun hycontrol-frame-to-right-center ()
   "Move the selected frame to the center of the right of the screen, allowing 
for hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (- (display-pixel-width) (hycontrol-frame-width)
-                        hycontrol-screen-right-offset)
-                     (round (/ (- (display-pixel-height) 
(hycontrol-frame-height)) 2))))
+  (hycontrol-set-frame-position
+   nil (- (display-pixel-width) (hycontrol-frame-width)
+         hycontrol-screen-right-offset)
+   (round (/ (- (display-pixel-height) (hycontrol-frame-height)) 2))))
 
 (defun hycontrol-frame-to-top-center ()
   "Move the selected frame to the center of the top of the screen, allowing 
for hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil (round (/ (- (display-pixel-width) 
(hycontrol-frame-width)) 2)) hycontrol-screen-top-offset))
+  (hycontrol-set-frame-position nil (round (/ (- (display-pixel-width) 
(hycontrol-frame-width)) 2)) hycontrol-screen-top-offset))
 
 (defun hycontrol-frame-to-bottom-left ()
   "Move the selected frame to the bottom left of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     hycontrol-screen-left-offset
-                     (- (display-pixel-height) (hycontrol-frame-height)
-                        hycontrol-screen-bottom-offset)))
+  (hycontrol-set-frame-position nil
+                               hycontrol-screen-left-offset
+                               (- (display-pixel-height) 
(hycontrol-frame-height)
+                                  hycontrol-screen-bottom-offset)))
 
 (defun hycontrol-frame-to-bottom-right ()
   "Move the selected frame to the bottom right of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (- (display-pixel-width) (hycontrol-frame-width)
-                        hycontrol-screen-right-offset)
-                     (- (display-pixel-height) (hycontrol-frame-height)
-                        hycontrol-screen-bottom-offset)))
+  (hycontrol-set-frame-position
+   nil
+   (- (display-pixel-width) (hycontrol-frame-width) 
hycontrol-screen-right-offset)
+   (- (display-pixel-height) (hycontrol-frame-height) 
hycontrol-screen-bottom-offset)))
 
 ;; Frame Resizing
 
 (defun hycontrol-frame-to-top-left ()
   "Move the selected frame to the top left of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil hycontrol-screen-left-offset 
hycontrol-screen-top-offset))
+  (hycontrol-set-frame-position nil hycontrol-screen-left-offset 
hycontrol-screen-top-offset))
 
 (defun hycontrol-frame-to-top-right ()
   "Move the selected frame to the top right of the screen, allowing for 
hycontrol-screen-*-offsets."
   (interactive)
-  (set-frame-position nil
-                     (- (display-pixel-width) (hycontrol-frame-width)
-                        hycontrol-screen-right-offset)
-                     hycontrol-screen-top-offset))
+  (hycontrol-set-frame-position
+   nil (- (display-pixel-width) (hycontrol-frame-width)
+         hycontrol-screen-right-offset)
+   hycontrol-screen-top-offset))
 
 ;;; Frame Resizing Commands
 (defun hycontrol-frame-resize-percentage (arg)
@@ -502,17 +856,13 @@ in half (return 0.5).  2-100 is converted to a percentage 
to multiply by.
 Over 100 is set to 100.  Under 0 is set to 0.  Floats between 0 and 1
 are taken as percentages and used.  Other floats are rounded.
 non-integer arguments are ignored and the default value is used."
-  (cond ((integerp arg)
+  (cond ((numberp arg)
         (cond 
-          ((= arg 0) 1)
-          ((= arg 1) 0.5)
-          ((and (> arg 1) (<= arg 100)) (/ arg 100.0))
-          ((< arg 0) 0)
-          ((> arg 100) 1)))
-       ((floatp arg)
-        (if (and (<= 0.0 arg) (<= arg 1.0))
-            arg
-          (hycontrol-frame-resize-percentage (round arg))))
+         ((= arg 0) 1)
+         ((= arg 1) 0.5)
+         ((and (> arg 1) (<= arg 100)) (/ arg 100.0))
+         ((< arg 0) 0)
+         ((> arg 100) 1)))
        (t (hycontrol-frame-resize-percentage 1))))
 
 (defun hycontrol-frame-resize-arg (arg)
@@ -553,7 +903,7 @@ if ARG is 1 or nil) but keep it at the left of the screen."
        ;; Reduce frame width to ARG percent, keeping left side fixed.
        (set-frame-width nil (floor (* (frame-pixel-width) arg)) nil t)
       ;; Expand frame width all the way to the left, keeping right side fixed.
-      (set-frame-width nil (round (- (+ (hycontrol-frame-width) (car 
(frame-position)))
+      (set-frame-width nil (floor (- (+ (hycontrol-frame-width) (car 
(frame-position)))
                                     (* 2.5 (frame-scroll-bar-width))
                                     hycontrol-screen-left-offset))
                       nil t))
@@ -571,13 +921,13 @@ if ARG is 1 or nil) but keep it at the right of the 
screen."
        ;; Reduce frame width to ARG percent, keeping right side fixed.
        (set-frame-width nil (floor (* (frame-pixel-width) arg)) nil t)
       ;; Expand frame width all the way to the right, keeping left side fixed.
-      (set-frame-width nil (round (- (display-pixel-width) (car 
(frame-position))
+      (set-frame-width nil (floor (- (display-pixel-width) (car 
(frame-position))
                                     (* 2.5 (frame-scroll-bar-width))
                                     hycontrol-screen-right-offset))
                       nil t))
     (hycontrol-frame-to-right))
   (hycontrol-frame-resize-arg arg))
-  
+
 (defun hycontrol-frame-resize-to-top (&optional arg)
   "Expand the selected frame to the top of the screen, allowing for 
hycontrol-screen-*-offsets.
 If already at the top, adjust its height to ARG percent of the screen (50% by 
default
@@ -613,26 +963,52 @@ PERCENT may be given as a decimal percentage or a number 
between 0 and 100.
 Optional DIMENSION if given must be either of the symbols, height or
 width to affect only that dimension." 
   (interactive "nResize frame to be this percent of the screen (1-100): ")
-  (and (numberp percent) (>= percent 1)
-       (setq percent (/ percent 100.0)))
-  (if (and (numberp percent) (> percent 0) (<= percent 1))
-      (let ((frame-resize-pixelwise t))
+  (if (and (numberp percent)
+          (progn
+            ;; Normalize to a fractional percentage
+            (when (> percent 1)
+              (setq percent (/ percent 100.0)))
+            (setq percent (max (min (float percent) 0.998) 0.0))
+            (> percent 0.0)))
+      (let ((frame-resize-pixelwise t)
+           max-height
+           max-width)
        (cond ((eq dimension 'height)
-              (set-frame-height nil (round (* (- (display-pixel-height) 
hycontrol-screen-top-offset hycontrol-screen-bottom-offset)
-                                              percent)) nil t))
+              (set-frame-height
+               nil (min (floor (* (setq max-height (- (display-pixel-height) 
hycontrol-screen-top-offset hycontrol-screen-bottom-offset))
+                                  percent))
+                        max-height)
+               nil t))
              ((eq dimension 'width)
-              (set-frame-width nil (round (* (- (display-pixel-width)
-                                                (* 2.5 
(frame-scroll-bar-width))
-                                                hycontrol-screen-left-offset 
hycontrol-screen-right-offset)
-                                             percent)) nil t))
-             (t (set-frame-size nil (round (* (- (display-pixel-width)
-                                                 (* 2.5 
(frame-scroll-bar-width))
-                                                 hycontrol-screen-left-offset 
hycontrol-screen-right-offset)
-                                              percent))
-                                (round (* (- (display-pixel-height) 
hycontrol-screen-top-offset hycontrol-screen-bottom-offset)
-                                          percent))
-                                t))))
-    (error "(hycontrol-frame-fraction-of-screen): `%s', must be a percent 
value between 0 and 100." percent)))
+              (set-frame-width
+               nil (min (floor (* (setq max-width (- (display-pixel-width)
+                                                     (* 2.5 
(frame-scroll-bar-width))
+                                                     
hycontrol-screen-left-offset hycontrol-screen-right-offset))
+                                  percent))
+                        max-width)
+               nil t))
+             (t (set-frame-size
+                 nil (min (floor (* (setq max-width (- (display-pixel-width)
+                                                       (* 2.5 
(frame-scroll-bar-width))
+                                                       
hycontrol-screen-left-offset hycontrol-screen-right-offset))
+                                    percent))
+                          max-width)
+                 (min (floor (* (setq max-height (- (display-pixel-height) 
hycontrol-screen-top-offset hycontrol-screen-bottom-offset))
+                                percent))
+                      max-height)
+                 t)))
+       ;; If resize has caused right or bottom edge to move
+       ;; offscreen, align these edges to the edge of the screen
+       ;; (moving the frame).
+       (when (> (+ (hycontrol-frame-x-origin) (hycontrol-frame-width))
+                (- (display-pixel-width) hycontrol-screen-right-offset))
+         (hycontrol-frame-to-right))
+       (when (> (+ (hycontrol-frame-y-origin) (hycontrol-frame-height))
+                (- (display-pixel-height) hycontrol-screen-bottom-offset))
+         (hycontrol-frame-to-bottom))
+       ;; Return the scaled percentage for setting as numeric argument.
+       (floor (* percent 100)))
+    (error "(hycontrol-frame-fraction-of-screen): `%s', must be a percent 
value above 0 and less than or equal to 100." percent)))
 
 (defun hycontrol-frame-height-percentage-of-screen (percent)
   "Resize the selected frame's height to be approximately PERCENT of the 
screen."
@@ -644,7 +1020,107 @@ width to affect only that dimension."
   (interactive "nResize frame width to be this percent of the screen (1-100): 
")
   (hycontrol-frame-percentage-of-screen percent 'width))
 
+;;; Frame Cycle Common Sizes
+
+(defun hycontrol-set-width-percentage-full-height (width-percentage)
+  (hycontrol-frame-width-percentage-of-screen width-percentage)
+  (hycontrol-frame-height-percentage-of-screen 1))
+
+(defun hycontrol-set-height-percentage-full-width (height-percentage)
+  (hycontrol-frame-width-percentage-of-screen 1)
+  (hycontrol-frame-height-percentage-of-screen height-percentage))
+
+;;;###autoload
+(defun hycontrol-frame-adjust-widths ()
+  "Cycle though different common width adjustments of a frame.
+Widths are given in screen percentages by the list
+`hycontrol-frame-widths' and typically go from widest to narrowest."
+  (interactive)
+  (when (null hycontrol--frame-widths-pointer)
+    (setq hycontrol--frame-widths-pointer hycontrol-frame-widths))
+  (hycontrol-frame-width-percentage-of-screen
+   (car hycontrol--frame-widths-pointer))
+  (message "Screen Percentage: Width %.1f%%; Fixed Height %.1f%%"
+          (* 100.0 (car hycontrol--frame-widths-pointer))
+          (* 100.0 (/ (float (hycontrol-frame-height))
+                      (- (display-pixel-height) hycontrol-screen-top-offset 
hycontrol-screen-bottom-offset))))
+  (setq hycontrol--frame-widths-pointer
+       (cdr hycontrol--frame-widths-pointer)))
+
+;;;###autoload
+(defun hycontrol-frame-adjust-widths-full-height ()
+  "Cycle though different common widths adjustments of a frame after fixing 
its height full-screen.
+Widths are given in screen percentages by the list
+`hycontrol-frame-widths' and typically go from widest to narrowest."
+  (interactive)
+  (when (null hycontrol--frame-widths-pointer)
+    (setq hycontrol--frame-widths-pointer hycontrol-frame-widths))
+  (hycontrol-set-width-percentage-full-height
+   (car hycontrol--frame-widths-pointer))
+  (message "Screen Percentage: Width %.1f%%; Fixed Height %d%%"
+          (* (car hycontrol--frame-widths-pointer) 100.0) 100)
+  (setq hycontrol--frame-widths-pointer
+       (cdr hycontrol--frame-widths-pointer)))
+
+;;;###autoload
+(defun hycontrol-frame-adjust-heights ()
+  "Cycle though different common height adjustments of a frame.
+Heights are given in screen percentages by the list
+`hycontrol-frame-heights' and typically go from tallest to shortest."
+  (interactive)
+  (when (null hycontrol--frame-heights-pointer)
+    (setq hycontrol--frame-heights-pointer hycontrol-frame-heights))
+  (hycontrol-frame-height-percentage-of-screen
+   (car hycontrol--frame-heights-pointer))
+  (message "Screen Percentage: Fixed Width %.1f%%; Height %.1f%%"
+          (* 100.0 (/ (float (hycontrol-frame-width)) (- (display-pixel-width)
+                                                         
hycontrol-screen-left-offset hycontrol-screen-right-offset)))
+          (* 100.0 (car hycontrol--frame-heights-pointer)))
+  (setq hycontrol--frame-heights-pointer
+       (cdr hycontrol--frame-heights-pointer)))
+
+;;;###autoload
+(defun hycontrol-frame-adjust-heights-full-width ()
+  "Cycle though different common height adjustments of a frame after fixing 
its width full-screen.
+Heights are given in screen percentages by the list
+`hycontrol-frame-heights' and typically go from tallest to shortest."
+  (interactive)
+  (when (null hycontrol--frame-heights-pointer)
+    (setq hycontrol--frame-heights-pointer hycontrol-frame-heights))
+  (hycontrol-set-height-percentage-full-width
+   (car hycontrol--frame-heights-pointer))
+  (message "Screen Percentage: Fixed Width %d%%; Height %.1f%%"
+          100 (* (car hycontrol--frame-heights-pointer) 100.0))
+  (setq hycontrol--frame-heights-pointer
+       (cdr hycontrol--frame-heights-pointer)))
+
+;;; Frame Configuratons
+
+(defun hycontrol-restore-frame-configuration ()
+  (interactive)
+  (when (and (y-or-n-p "Restore previously saved configuration of all frames?")
+            (frame-configuration-p hycontrol--fconfig))
+    (set-frame-configuration hycontrol--fconfig)))
+
+(defun hycontrol-save-frame-configuration ()
+  (interactive)
+  (setq hycontrol--fconfig (current-frame-configuration))
+  (if (called-interactively-p 'interactive)
+      (minibuffer-message "(Hyperbole): Saved configuration of all frames")))
+
+(defun hycontrol-save-configurations ()
+  (interactive)
+  (hycontrol-save-frame-configuration)
+  (hycontrol-save-window-configuration))
+
+
 ;;; Window Commands
+(defun hycontrol-delete-other-windows ()
+  "Confirm and then delete all other windows in the selected frame."
+  (interactive)
+  (if (y-or-n-p "Delete all windows in this frame other than the selected 
one?")
+      (delete-other-windows)))
+
 (defun hycontrol-window-maximize-lines ()
   "Grow window to its maximum possible number of lines without removing any 
windows."
   (interactive)
@@ -695,7 +1171,9 @@ is non-nil, leave the original window and just clone it 
into the new frame."
                                      (car (frame-position (window-frame w))))
                               (+ (cdr hycontrol-frame-offset)
                                  (cdr (frame-position (window-frame w)))))
-          (set-frame-size nil (window-size w t t) (window-size w nil t) t)
+          (if (one-window-p)
+              (hycontrol-set-frame-size nil (hycontrol-frame-width) 
(hycontrol-frame-height) t)
+            (hycontrol-set-frame-size nil (window-size w t t) (window-size w 
nil t) t))
           (with-selected-frame (window-frame w)
             (unless (or hycontrol-keep-window-flag (one-window-p t))
               (delete-window w)))))))
@@ -703,21 +1181,34 @@ is non-nil, leave the original window and just clone it 
into the new frame."
 ;;;###autoload
 (defun hycontrol-clone-window-to-new-frame ()
   "Create a new frame sized to match the selected window and with its buffer."
+  (interactive)
   (let ((hycontrol-keep-window-flag t))
     (hycontrol-window-to-new-frame)))
 
+(defun hycontrol-restore-window-configuration ()
+  (interactive)
+  (when (and (y-or-n-p "Restore saved window configuration in this frame?")
+            (window-configuration-p hycontrol--wconfig))
+    (set-window-configuration hycontrol--wconfig)))
+
+(defun hycontrol-save-window-configuration ()
+  (interactive)
+  (setq hycontrol--wconfig (current-window-configuration))
+  (if (called-interactively-p 'interactive)
+      (minibuffer-message "(Hyperbole): Saved window configuration for this 
frame")))
+
 ;;; Screen Offsets - Set once when this file is loaded; 
`hycontrol-set-screen-offsets' resets them.
 (defun hycontrol-display-screen-offsets ()
   "Display a user minibuffer message listing HyControl's screen edge offsets 
in pixels."
   (interactive)
-  (message "Screen pixel offsets are: Top: %d; Right: %d; Bot: %d; Left: %d"
+  (message "Screen pixel offsets are: Left: %d; Top: %d; Right: %d; Bot: %d"
+          hycontrol-screen-left-offset
           hycontrol-screen-top-offset
           hycontrol-screen-right-offset
-          hycontrol-screen-bottom-offset
-          hycontrol-screen-left-offset))
+          hycontrol-screen-bottom-offset))
 
 (defun hycontrol-get-screen-offsets ()
-  "Return the first matching list of screen edge offsets from 
`hycontrol-screen-offset-alist'.
+  "Return the first matching list of screen edge .50%%%offsets from 
`hycontrol-screen-offset-alist'.
 See its documentation for more information."
   (interactive)
   (prog1 (catch 'result
@@ -753,207 +1244,15 @@ See its documentation for more information."
 See its documentation for more information."
   (interactive)
   (let ((offsets (hycontrol-get-screen-offsets)))
-    (setq hycontrol-screen-top-offset    (nth 0 offsets)
-         hycontrol-screen-right-offset  (nth 1 offsets)
-         hycontrol-screen-bottom-offset (nth 2 offsets)
-         hycontrol-screen-left-offset   (nth 3 offsets))
+    (setq hycontrol-screen-left-offset   (nth 0 offsets)
+          hycontrol-screen-top-offset    (nth 1 offsets)
+         hycontrol-screen-right-offset  (nth 2 offsets)
+         hycontrol-screen-bottom-offset (nth 3 offsets))
     (if (called-interactively-p 'interactive) 
(hycontrol-display-screen-offsets))
     offsets))
 
 (hycontrol-set-screen-offsets)
 
-;;; ************************************************************************
-;;; Private functions
-;;; ************************************************************************
-
-(defun hycontrol-delete-other-frames ()
-  "Confirm and then delete all other frames."
-  (if (y-or-n-p "Delete all frames on this screen other than the selected 
one?")
-      (delete-other-frames)))
-
-(defun hycontrol-delete-other-windows ()
-  "Confirm and then delete all other windows in the selected frame."
-  (if (y-or-n-p "Delete all windows in this frame other than the selected 
one?")
-      (delete-other-windows)))
-
-(defun hycontrol-prettify-event (e)
-  "Return a formatted version of event E ready for printing."
-  (cond ((integerp e)
-        (key-description (vector e)))
-       ((sequencep e) 
-        (key-description e))
-       (t e)))
-
-(defsubst hycontrol-frame-edges (&optional frame)
-  "Return the outermost edges of optional or selected FRAME."
-  (frame-edges frame 'native-edges))
-
-(defun hycontrol-frame-height (&optional frame)
-  "Return the height of optional FRAME or the selected frame.  This includes 
all graphical window manager decorations.
-Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
-    (- (nth 3 (hycontrol-frame-edges frame))
-       (nth 1 (hycontrol-frame-edges frame))))
-
-(defun hycontrol-frame-width (&optional frame)
-  "Return the height of optional FRAME or the selected frame.  This includes 
all graphical window manager decorations.
-Under a graphical window system, this is in pixels; otherwise, it is in 
characters."
-    (- (nth 2 (hycontrol-frame-edges frame))
-       (nth 0 (hycontrol-frame-edges frame))))
-
-
-;; Frame Resizing Support
-(defconst hycontrol-screen-offset-sensitivity 12
-  "Number of pixels a frame dimension can be off from its screen-offset and 
still be considered at the screen edge.")
-
-(defun hycontrol-frame-at-left-p ()
-  "Return non-nil if selected frame's left edge is at the left edge of the 
screen sans `hycontrol-screen-left-offset'."
-  (<= (- (nth 0 (hycontrol-frame-edges)) hycontrol-screen-left-offset)
-      hycontrol-screen-offset-sensitivity))
-
-(defun hycontrol-frame-at-top-p ()
-  "Return non-nil if selected frame's bottom is at the top of the screen sans 
`hycontrol-screen-top-offset'."
-  (<= (- (nth 1 (hycontrol-frame-edges)) hycontrol-screen-top-offset
-        ;; Under macOS, frames are automatically offset vertically by
-        ;; the height of the global menubar, so account for that.
-        (if (eq system-type 'darwin) 23 0))
-      hycontrol-screen-offset-sensitivity))
-
-(defun hycontrol-frame-at-right-p ()
-  "Return non-nil if selected frame's right edge is at the right edge of the 
screen sans `hycontrol-screen-right-offset'."
-  (<= (- (display-pixel-width) (nth 2 (hycontrol-frame-edges)) 
hycontrol-screen-right-offset)
-      hycontrol-screen-offset-sensitivity))
-
-(defun hycontrol-frame-at-bottom-p ()
-  "Return non-nil if selected frame's bottom is at the bottom of the screen 
sans `hycontrol-screen-bottom-offset'."
-  (<= (- (display-pixel-height) (nth 3 (hycontrol-frame-edges)) 
hycontrol-screen-bottom-offset
-        ;; Under macOS, frames are automatically offset vertically by
-        ;; the height of the global menubar, so account for that.
-        (if (eq system-type 'darwin) -23 0))
-      hycontrol-screen-offset-sensitivity))
-
-;; Frame Zoom Support
-(defun hycontrol-frame-zoom (zoom-func arg max-msgs)
-  "Zoom default frame face using ZOOM-FUNC and amount ARG (must be 1-9).
-MAX-MSGS is a number used only if ZOOM-FUNC is undefined and an error message 
is logged."
-  (if (fboundp zoom-func)
-      (let ((frame-zoom-font-difference arg))
-       (funcall zoom-func))
-    (hycontrol-user-error max-msgs "(HyControl): Zooming requires separate 
\"zoom-frm.el\" Emacs Lisp library installation")))
-
-(defun hycontrol-handle-event (e arg)
-  "Process input event E with prefix ARG set and return it or return nil if 
cannot process it."
-  (setq current-prefix-arg arg)
-  (if (eq e 'escape) (setq e 27)) ; Convert escape symbol to character code.
-  (cond ((listp e)
-        (cond
-         ((eq (car e) 'delete-frame)
-          (handle-delete-frame e))
-         ((eq (car e) 'focus-in)
-          (handle-focus-in e))
-         ((eq (car e) 'focus-out)
-          (handle-focus-out e))
-         ((eq (car e) 'switch-frame)
-          (handle-switch-frame e))
-         ((or (eq (car e) 'select-window)
-              (and (memq (car e) '(down-mouse-1 mouse-1))
-                   (window-live-p (posn-window (event-end e)))))
-          (handle-select-window e)
-          (mouse-set-point e))
-         (t (setq e nil))))
-       ((symbolp e)
-        (if (commandp (key-binding (vector e)))
-            (call-interactively (key-binding (vector e)))
-          (setq e nil)))
-       ;; Ignore self-insert-chars since many characters are used as
-       ;; HyControl commands.
-       ((integerp e)
-        (cond ((keymapp (key-binding (vector e)))
-               ;; Read a whole key sequence to get the binding
-               (let ((keys (vector)))
-                 (while (and (if (eq e 'escape) (setq e 27) t) ; Convert 
escape symbol to character code.
-                             (setq keys (vconcat keys (vector e)))
-                             (keymapp (key-binding (vector e))))
-                   (setq e (read-key)))
-                 (cond ((and (commandp (key-binding keys))
-                             (not (memq (key-binding keys) 
'(self-insert-command))))
-                        (call-interactively (key-binding keys)))
-                       (t (setq e nil)))
-                 (discard-input)))
-              ((and (commandp (key-binding (vector e)))
-                    (not (memq (key-binding (vector e)) 
'(self-insert-command))))
-               (call-interactively (key-binding (vector e))))
-              (t (setq e nil))))
-       (t (setq e nil)))
-  e)
-
-(defun hycontrol-make-frame ()
-   "Create and select a new frame with the same size and selected buffer as 
the selected frame.
-It is offset from the selected frame by `hycontrol-frame-offset' (x . y) 
pixels."
-   (select-frame (make-frame (list (cons 'width (frame-width)) (cons 'height 
(frame-height))
-                                  (cons 'left (+ (car hycontrol-frame-offset) 
(car (frame-position))))
-                                  (cons 'top  (+ (cdr hycontrol-frame-offset) 
(cdr (frame-position))))))))
-
-(defun hycontrol-move-frame (arrow pixels)
-  (let ((x (car (frame-position)))
-       (y (cdr (frame-position))))
-  (cond ((eq arrow 'up)
-        (set-frame-position nil x (- y pixels)))
-       ((eq arrow 'down)
-        (set-frame-position nil x (+ y pixels)))
-       ((eq arrow 'left)
-        (set-frame-position nil (- x pixels) y))
-       ((eq arrow 'right)
-        (set-frame-position nil (+ x pixels) y)))))
-
-(defun hycontrol-numeric-keypad (e _arg)
-  "Move the selected frame to a screen location based on the location of the 
last pressed numeric keypad key."
-  (let ((num (if (integerp e)
-                e
-              ;; kp-<num> symbol
-              (- (aref (symbol-name e) 3) ?0))))
-    (funcall
-     (nth num '(nil hycontrol-frame-to-bottom-left 
hycontrol-frame-to-bottom-center hycontrol-frame-to-bottom-right
-               hycontrol-frame-to-left-center hycontrol-frame-to-center 
hycontrol-frame-to-right-center
-               hycontrol-frame-to-top-left hycontrol-frame-to-top-center 
hycontrol-frame-to-top-right)))))
-
-(defun hycontrol-restore-frame-configuration ()
-  (when (and (y-or-n-p "Restore previously saved configuration of all frames?")
-            (frame-configuration-p hycontrol--fconfig))
-    (set-frame-configuration hycontrol--fconfig)))
-
-(defun hycontrol-save-frame-configuration ()
-  (interactive)
-  (setq hycontrol--fconfig (current-frame-configuration))
-  (if (called-interactively-p 'interactive)
-      (minibuffer-message "(Hyperbole): Saved configuration of all frames")))
-
-(defun hycontrol-restore-window-configuration ()
-  (when (and (y-or-n-p "Restore saved window configuration in this frame?")
-            (window-configuration-p hycontrol--wconfig))
-    (set-window-configuration hycontrol--wconfig)))
-
-(defun hycontrol-save-window-configuration ()
-  (interactive)
-  (setq hycontrol--wconfig (current-window-configuration))
-  (if (called-interactively-p 'interactive)
-      (minibuffer-message "(Hyperbole): Saved window configuration for this 
frame")))
-
-(defun hycontrol-save-configurations ()
-  (hycontrol-save-frame-configuration)
-  (hycontrol-save-window-configuration))
-
-(defun hycontrol-message (max-msgs &rest msg)
-  "Log MAX-MSGS, adding MSG to the *Messages* buffer log."
-  (let ((message-log-max max-msgs))
-    (apply #'message msg)))
-
-(defun hycontrol-user-error (max-msgs &rest err)
-  "Log MAX-MSGS, adding ERR to the *Messages* buffer log; display ERR for 2 
seconds."
-  (let ((message-log-max max-msgs))
-    (beep)
-    (apply #'message err)
-    (sit-for 2)))
-
 (provide 'hycontrol)
 
 ;;; hycontrol.el ends here
diff --git a/hyperbole-pkg.el b/hyperbole-pkg.el
index f4a7caf..9fdd509 100644
--- a/hyperbole-pkg.el
+++ b/hyperbole-pkg.el
@@ -1,5 +1,5 @@
 ;; -*- no-byte-compile: t -*-
-(define-package "hyperbole" "6.0.2d" "GNU Hyperbole: The Everyday Hypertextual 
Information Manager"
+(define-package "hyperbole" "6.0.2e" "GNU Hyperbole: The Everyday Hypertextual 
Information Manager"
   '((emacs "24.4"))
   :url "http://www.gnu.org/software/hyperbole";
   :keywords '("comm" "convenience" "files" "frames" "hypermedia" "languages"
diff --git a/hyperbole.el b/hyperbole.el
index 1b9de00..90fee15 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -5,8 +5,8 @@
 ;; Author:           Bob Weiner
 ;; Maintainer:       Bob Weiner <address@hidden> and Mats Lidell 
<address@hidden>
 ;; Created:          06-Oct-92 at 11:52:51
-;; Released:         09-Aug-16
-;; Version:          6.0.2
+;; Released:         19-Oct-17
+;; Version:          6.0.2e
 ;; Keywords:         comm, convenience, files, frames, hypermedia, languages, 
mail, matching, mouse, multimedia, outlines, tools, wp
 ;; Package:          hyperbole
 ;; Package-Requires: ((emacs "24.4"))
diff --git a/man/hkey-help.txt b/man/hkey-help.txt
index a89673b..9e83fcf 100644
--- a/man/hkey-help.txt
+++ b/man/hkey-help.txt
@@ -28,35 +28,42 @@ Mouse-only Control
     expression, such as a
     string, list or markup
     language tag pair
+
   Drag from shared window side
     or from left of scroll bar  Resizes window width       <- same
+  Modeline vertical drag        Resizes window height      <- same
+
+  Other Modeline drag to        Replaces dest. buffer      Swaps window buffers
+    another window                with source buffer
+
+  Drag between windows from:
+    buffer/file menu item       Displays buffer/file in    Swaps window buffers
+                                  window of button release 
+    buffer/file menu 1st line   Moves buffer/file menu     Swaps window buffers
+    anywhere else               Creates/modifies a link    Swaps window buffers
 
-  Drag between windows from     Displays buffer/file in    Swaps window buffers
-    buffer/file menu item         window of button release 
-  Modeline drag to another      Replaces dest. buffer with Swaps window buffers
-    window                        source buffer
-  Other drag between windows    Creates/modifies a link    Swaps window buffers
-  Drag to outside Emacs from    Displays buffer/file in    Moves window to new 
frame
-    buffer/file menu item         a new frame
+  Drag outside of Emacs from:
+    buffer/file menu item       Displays buffer/file in    Moves window to new 
frame
+                                  a new frame
+    Modeline or other window    Clones window to new frame Moves window to new 
frame
 
-  Modeline or other window drag
-    outside of Emacs            Clones window to new frame Moves window to new 
frame
-  Modeline depress+wind release Resizes window height      <- same
   Modeline Click
     Left modeline edge          Buries current buffer      Unburies bottom 
buffer
     Right modeline edge         Info manual browser        Smart Key summary
     Buffer ID                   Dired on buffer's dir      Next buffer
     Other blank area            Action Key modeline hook   Assist Key modeline 
hook
-                                  Show/Hide Buffer Menu      Popup Jump & 
Manage Menu
+                                  Shows/Hides Buffer Menu    Popup Jump & 
Manage Menu
 
   Drag in window, region active Error, not allowed         Error, not allowed
   Horizontal drag in a window   Splits window below        Deletes window
   Vertical drag in a window     Splits window side-by-side Deletes window
   Diagonal drag in a window     Saves wconfig              Restores wconfig 
from ring
 
-  Active region exists          Yanks region at release    Kills & yanks 
region at release
+  Active region exists, click   Yanks region at release    Kills region and 
yanks at release
+   outside of the region
 
 Hyperbole Key Press/Click in Special Modes
+  Region Active                 Yanks region at release    Kills & yanks 
region at release
   Emacs Push Button             Activates button           Button help
   Thing Begin or End            Mark thing region          Mark & kill thing 
region
   Page Directory Listing        Jumps to page              <- same
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 6a37bf3..fdd554c 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
 <html>
 <!-- This manual is for GNU Hyperbole
-(Edition 6.0.2d, Published October 6, 2017).
+(Edition 6.0.2e, Published October 19, 2017).
 
 Copyright (C) 1989-2016  Free Software Foundation, Inc.
 
@@ -89,8 +89,8 @@ ul.no-bullet {list-style: none}
 <ul class="no-bullet">
 <li><a name="stoc-GNU-Hyperbole" href="#toc-GNU-Hyperbole">GNU 
Hyperbole</a></li>
 <li><a name="stoc-Introduction-1" href="#toc-Introduction-1">1 
Introduction</a></li>
-<li><a name="stoc-Buttons-1" href="#toc-Buttons-1">2 Buttons</a></li>
-<li><a name="stoc-Smart-Keys-1" href="#toc-Smart-Keys-1">3 Smart Keys</a></li>
+<li><a name="stoc-Smart-Keys-1" href="#toc-Smart-Keys-1">2 Smart Keys</a></li>
+<li><a name="stoc-Buttons-1" href="#toc-Buttons-1">3 Buttons</a></li>
 <li><a name="stoc-Menus-1" href="#toc-Menus-1">4 Menus</a></li>
 <li><a name="stoc-HyControl-1" href="#toc-HyControl-1">5 HyControl</a></li>
 <li><a name="stoc-Koutliner-1" href="#toc-Koutliner-1">6 Koutliner</a></li>
@@ -126,39 +126,39 @@ ul.no-bullet {list-style: none}
   <li><a name="toc-Hyperbole-Overview-1" href="#Hyperbole-Overview">1.3 
Hyperbole Overview</a></li>
   <li><a name="toc-Mail-Lists-1" href="#Mail-Lists">1.4 Mail Lists</a></li>
 </ul></li>
-<li><a name="toc-Buttons-1" href="#Buttons">2 Buttons</a>
+<li><a name="toc-Smart-Keys-1" href="#Smart-Keys">2 Smart Keys</a>
 <ul class="no-bullet">
-  <li><a name="toc-Explicit-Buttons-1" href="#Explicit-Buttons">2.1 Explicit 
Buttons</a></li>
-  <li><a name="toc-Global-Buttons-1" href="#Global-Buttons">2.2 Global 
Buttons</a></li>
-  <li><a name="toc-Implicit-Buttons-1" href="#Implicit-Buttons">2.3 Implicit 
Buttons</a></li>
-  <li><a name="toc-Button-Files-1" href="#Button-Files">2.4 Button 
Files</a></li>
-  <li><a name="toc-Action-Types-1" href="#Action-Types">2.5 Action 
Types</a></li>
-  <li><a name="toc-Button-Type-Precedence-1" 
href="#Button-Type-Precedence">2.6 Button Type Precedence</a></li>
-  <li><a name="toc-Utilizing-Explicit-Buttons-1" 
href="#Utilizing-Explicit-Buttons">2.7 Utilizing Explicit Buttons</a>
+  <li><a name="toc-Smart-Key-Bindings-1" href="#Smart-Key-Bindings">2.1 Smart 
Key Bindings</a></li>
+  <li><a name="toc-Smart-Key-Operations-1" href="#Smart-Key-Operations">2.2 
Smart Key Operations</a></li>
+  <li><a name="toc-Smart-Key-Modeline-Clicks-1" 
href="#Smart-Key-Modeline-Clicks">2.3 Smart Key Modeline Clicks</a></li>
+  <li><a name="toc-Smart-Key-Thing-Selection-1" 
href="#Smart-Key-Thing-Selection">2.4 Smart Key Thing Selection</a></li>
+  <li><a name="toc-Smart-Key-Argument-Selection-1" 
href="#Smart-Key-Argument-Selection">2.5 Smart Key Argument Selection</a></li>
+  <li><a name="toc-Smart-Key-Modifiers-1" href="#Smart-Key-Modifiers">2.6 
Smart Key Modifiers</a></li>
+  <li><a name="toc-Smart-Key-Debugging-1" href="#Smart-Key-Debugging">2.7 
Smart Key Debugging</a></li>
+</ul></li>
+<li><a name="toc-Buttons-1" href="#Buttons">3 Buttons</a>
+<ul class="no-bullet">
+  <li><a name="toc-Explicit-Buttons-1" href="#Explicit-Buttons">3.1 Explicit 
Buttons</a></li>
+  <li><a name="toc-Global-Buttons-1" href="#Global-Buttons">3.2 Global 
Buttons</a></li>
+  <li><a name="toc-Implicit-Buttons-1" href="#Implicit-Buttons">3.3 Implicit 
Buttons</a></li>
+  <li><a name="toc-Button-Files-1" href="#Button-Files">3.4 Button 
Files</a></li>
+  <li><a name="toc-Action-Types-1" href="#Action-Types">3.5 Action 
Types</a></li>
+  <li><a name="toc-Button-Type-Precedence-1" 
href="#Button-Type-Precedence">3.6 Button Type Precedence</a></li>
+  <li><a name="toc-Utilizing-Explicit-Buttons-1" 
href="#Utilizing-Explicit-Buttons">3.7 Utilizing Explicit Buttons</a>
   <ul class="no-bullet">
-    <li><a name="toc-Creation-1" href="#Creation">2.7.1 Creation</a>
+    <li><a name="toc-Creation-1" href="#Creation">3.7.1 Creation</a>
     <ul class="no-bullet">
-      <li><a name="toc-Creation-Via-Action-Key-Drags" 
href="#By-Dragging">2.7.1.1 Creation Via Action Key Drags</a></li>
-      <li><a name="toc-Creation-Via-Menus" href="#By-Menu">2.7.1.2 Creation 
Via Menus</a></li>
+      <li><a name="toc-Creation-Via-Action-Key-Drags" 
href="#By-Dragging">3.7.1.1 Creation Via Action Key Drags</a></li>
+      <li><a name="toc-Creation-Via-Menus" href="#By-Menu">3.7.1.2 Creation 
Via Menus</a></li>
     </ul></li>
-    <li><a name="toc-Renaming-1" href="#Renaming">2.7.2 Renaming</a></li>
-    <li><a name="toc-Deletion-1" href="#Deletion">2.7.3 Deletion</a></li>
-    <li><a name="toc-Modification-1" href="#Modification">2.7.4 
Modification</a></li>
-    <li><a name="toc-Location-1" href="#Location">2.7.5 Location</a></li>
-    <li><a name="toc-Buttons-in-Mail-1" href="#Buttons-in-Mail">2.7.6 Buttons 
in Mail</a></li>
-    <li><a name="toc-Buttons-in-News-1" href="#Buttons-in-News">2.7.7 Buttons 
in News</a></li>
+    <li><a name="toc-Renaming-1" href="#Renaming">3.7.2 Renaming</a></li>
+    <li><a name="toc-Deletion-1" href="#Deletion">3.7.3 Deletion</a></li>
+    <li><a name="toc-Modification-1" href="#Modification">3.7.4 
Modification</a></li>
+    <li><a name="toc-Location-1" href="#Location">3.7.5 Location</a></li>
+    <li><a name="toc-Buttons-in-Mail-1" href="#Buttons-in-Mail">3.7.6 Buttons 
in Mail</a></li>
+    <li><a name="toc-Buttons-in-News-1" href="#Buttons-in-News">3.7.7 Buttons 
in News</a></li>
   </ul></li>
 </ul></li>
-<li><a name="toc-Smart-Keys-1" href="#Smart-Keys">3 Smart Keys</a>
-<ul class="no-bullet">
-  <li><a name="toc-Smart-Key-Bindings-1" href="#Smart-Key-Bindings">3.1 Smart 
Key Bindings</a></li>
-  <li><a name="toc-Smart-Key-Operations-1" href="#Smart-Key-Operations">3.2 
Smart Key Operations</a></li>
-  <li><a name="toc-Smart-Key-Modeline-1" href="#Smart-Key-Modeline">3.3 Smart 
Key Modeline</a></li>
-  <li><a name="toc-Smart-Key-Thing-Selection-1" 
href="#Smart-Key-Thing-Selection">3.4 Smart Key Thing Selection</a></li>
-  <li><a name="toc-Smart-Key-Argument-Selection-1" 
href="#Smart-Key-Argument-Selection">3.5 Smart Key Argument Selection</a></li>
-  <li><a name="toc-Smart-Key-Modifiers-1" href="#Smart-Key-Modifiers">3.6 
Smart Key Modifiers</a></li>
-  <li><a name="toc-Smart-Key-Debugging-1" href="#Smart-Key-Debugging">3.7 
Smart Key Debugging</a></li>
-</ul></li>
 <li><a name="toc-Menus-1" href="#Menus">4 Menus</a></li>
 <li><a name="toc-HyControl-1" href="#HyControl">5 HyControl</a></li>
 <li><a name="toc-Koutliner-1" href="#Koutliner">6 Koutliner</a>
@@ -189,11 +189,11 @@ ul.no-bullet {list-style: none}
 </ul></li>
 <li><a name="toc-HyRolo-1" href="#HyRolo">7 HyRolo</a>
 <ul class="no-bullet">
-  <li><a name="toc-Rolo-Concepts-1" href="#Rolo-Concepts">7.1 Rolo 
Concepts</a></li>
-  <li><a name="toc-Rolo-Menu-1" href="#Rolo-Menu">7.2 Rolo Menu</a></li>
-  <li><a name="toc-Rolo-Searching-1" href="#Rolo-Searching">7.3 Rolo 
Searching</a></li>
-  <li><a name="toc-Rolo-Keys-1" href="#Rolo-Keys">7.4 Rolo Keys</a></li>
-  <li><a name="toc-Rolo-Settings-1" href="#Rolo-Settings">7.5 Rolo 
Settings</a></li>
+  <li><a name="toc-HyRolo-Concepts-1" href="#HyRolo-Concepts">7.1 HyRolo 
Concepts</a></li>
+  <li><a name="toc-Rolo-Menu" href="#HyRolo-Menu">7.2 Rolo Menu</a></li>
+  <li><a name="toc-HyRolo-Searching-1" href="#HyRolo-Searching">7.3 HyRolo 
Searching</a></li>
+  <li><a name="toc-HyRolo-Keys-1" href="#HyRolo-Keys">7.4 HyRolo Keys</a></li>
+  <li><a name="toc-HyRolo-Settings-1" href="#HyRolo-Settings">7.5 HyRolo 
Settings</a></li>
 </ul></li>
 <li><a name="toc-Window-Configurations-1" href="#Window-Configurations">8 
Window Configurations</a></li>
 <li><a name="toc-Developing-with-Hyperbole-1" 
href="#Developing-with-Hyperbole">9 Developing with Hyperbole</a>
@@ -279,7 +279,7 @@ ul.no-bullet {list-style: none}
     <li><a name="toc-Smart-Key-_002d-Tar-File-Mode-1" 
href="#Smart-Key-_002d-Tar-File-Mode">E.2.33 Smart Key - Tar File Mode</a></li>
     <li><a name="toc-Smart-Key-_002d-Man-Pages-1" 
href="#Smart-Key-_002d-Man-Pages">E.2.34 Smart Key - Man Pages</a></li>
     <li><a name="toc-Smart-Key-_002d-WWW-URLs-1" 
href="#Smart-Key-_002d-WWW-URLs">E.2.35 Smart Key - WWW URLs</a></li>
-    <li><a name="toc-Smart-Key-_002d-Rolo-Match-Buffers-1" 
href="#Smart-Key-_002d-Rolo-Match-Buffers">E.2.36 Smart Key - Rolo Match 
Buffers</a></li>
+    <li><a name="toc-Smart-Key-_002d-HyRolo-Match-Buffers-1" 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">E.2.36 Smart Key - HyRolo Match 
Buffers</a></li>
     <li><a name="toc-Smart-Key-_002d-Gomoku-Game-1" 
href="#Smart-Key-_002d-Gomoku-Game">E.2.37 Smart Key - Gomoku Game</a></li>
     <li><a name="toc-Smart-Key-_002d-The-OO_002dBrowser-1" 
href="#Smart-Key-_002d-The-OO_002dBrowser">E.2.38 Smart Key - The 
OO-Browser</a></li>
     <li><a name="toc-Smart-Key-_002d-Default-Context-1" 
href="#Smart-Key-_002d-Default-Context">E.2.39 Smart Key - Default 
Context</a></li>
@@ -322,8 +322,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 6.0.2d
-Printed October 6, 2017.
+Edition 6.0.2e
+Printed October 19, 2017.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -332,7 +332,7 @@ Printed October 6, 2017.
 </PRE>
 
 <CENTER>
-  <DT><B>Screenshot of the Hyperbole Koutliner, Demonstration and 
Rolo</B></DT><BR><BR>
+  <DT><B>Screenshot of the Hyperbole Koutliner, Demonstration and 
HyRolo</B></DT><BR><BR>
   <IMG NAME="Hyperbole Screenshot" SRC="im/hyperbole-cv.png"><BR>
 </CENTER>
 <br>
@@ -341,7 +341,6 @@ Printed October 6, 2017.
 
 
 <a name="index-credits"></a>
-<a name="index-InfoDock_002c-obtaining"></a>
 <a name="index-Hyperbole_002c-obtaining"></a>
 <a name="index-anonymous-ftp"></a>
 <p>GNU Hyperbole was designed and written by Bob Weiner.
@@ -377,9 +376,9 @@ years.  The Koutliner is dedicated to my lovely wife, Kathy.
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#Introduction" 
accesskey="1">Introduction</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Buttons" 
accesskey="2">Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Keys" 
accesskey="2">Smart Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Keys" 
accesskey="3">Smart Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Buttons" 
accesskey="3">Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Menus" 
accesskey="4">Menus</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -433,6 +432,24 @@ Introduction
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
+Smart Keys
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Bindings">Smart Key Bindings</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Operations">Smart 
Key Operations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modifiers">Smart 
Key Modifiers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Debugging">Smart 
Key Debugging</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
 Buttons
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Explicit-Buttons">Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -477,24 +494,6 @@ Creation
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
-Smart Keys
-
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Bindings">Smart Key Bindings</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Operations">Smart 
Key Operations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modeline">Smart 
Key Modeline</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modifiers">Smart 
Key Modifiers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Debugging">Smart 
Key Debugging</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-
 Koutliner
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Menu-Commands">Menu Commands</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -547,15 +546,15 @@ Viewing
 
 HyRolo
 
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Rolo-Concepts">Rolo Concepts</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#HyRolo-Concepts">HyRolo Concepts</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Menu">Rolo 
Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Menu">HyRolo 
Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Searching">Rolo 
Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Searching">HyRolo 
Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Keys">Rolo 
Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Keys">HyRolo 
Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Settings">Rolo 
Settings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Settings">HyRolo 
Settings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 
@@ -715,7 +714,7 @@ Smart Keyboard Keys
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW 
URLs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Rolo-Match-Buffers">Smart Key - Rolo Match 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku 
Game</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -731,13 +730,13 @@ Smart Keyboard Keys
 <a name="Introduction"></a>
 <div class="header">
 <p>
-Next: <a href="#Buttons" accesskey="n" rel="next">Buttons</a>, Previous: <a 
href="#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="#Top" accesskey="u" 
rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Keys" accesskey="n" rel="next">Smart Keys</a>, Previous: 
<a href="#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Introduction-1"></a>
 <h2 class="chapter">1 Introduction</h2>
 
 <p>This edition of the GNU Hyperbole Manual is for use with any version
-6.0.2d or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+6.0.2e or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
 or higher.  It will trigger an error if your Emacs is older.
 </p>
 <p>This chapter summarizes the structure of the rest of the manual,
@@ -789,8 +788,6 @@ question, suggest a feature or report a bug in Hyperbole.  
A few
 commonly asked questions are answered in this manual.  See <a 
href="#Questions-and-Answers">Questions and Answers</a>.  See <a 
href="#References">References</a>, if you are interested in classic
 articles on hypertext.
 </p>
-<p>See <a href="#Buttons">Buttons</a>, for an overview of Hyperbole buttons 
and how to use them.
-</p>
 <p>See <a href="#Smart-Keys">Smart Keys</a>, for an explanation of the 
innovative, context-sensitive
 mouse and keyboard Action and Assist Keys offered by Hyperbole.
 See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for a complete 
reference on what the Action
@@ -803,6 +800,8 @@ provides a number of overlapping interaction methods that 
support
 differing work styles and hardware limitations.  In such instances,
 you need learn only one technique that suits you.
 </p>
+<p>See <a href="#Buttons">Buttons</a>, for an overview of Hyperbole buttons 
and how to use them.
+</p>
 <p>See <a href="#Menus">Menus</a>, for summaries of Hyperbole menu commands 
and how to use
 the minibuffer-based menus that work on dumb terminals, PCs or workstations.
 </p>
@@ -882,7 +881,6 @@ Next: <a href="#Mail-Lists" accesskey="n" rel="next">Mail 
Lists</a>, Previous: <
 <a name="index-hypertext"></a>
 <a name="index-Emacs-Lisp"></a>
 <a name="index-Emacs"></a>
-<a name="index-XEmacs"></a>
 <p>GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
 an efficient and programmable hypertextual information management
 system.  It is intended for everyday work on any GNU Emacs platform.
@@ -1066,2092 +1064,2223 @@ Hyperbole, &lt;address@hidden&gt;.  For more 
details,
 see <a href="#Suggestion-or-Bug-Reporting">Suggestion or Bug Reporting</a>.
 </p>
 <hr>
-<a name="Buttons"></a>
+<a name="Smart-Keys"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Keys" accesskey="n" rel="next">Smart Keys</a>, Previous: 
<a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Buttons" accesskey="n" rel="next">Buttons</a>, Previous: <a 
href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Buttons-1"></a>
-<h2 class="chapter">2 Buttons</h2>
-
-<a name="index-button"></a>
-<p>This chapter explains use of Hyperbole <em>buttons</em>.  There are several
-kinds of Hyperbole buttons: buttons that are created one at a time and
-stored in files (<em>explicit buttons</em>); buttons that can be
-activated by name anytime (<em>global buttons</em>); and buttons defined
-by textual patterns where one definition can create an infinite number
-of buttons (<em>implicit buttons</em>).
-</p>
-<p>Hyperbole buttons are embedded within textual documents; they may be
-created, modified, moved or deleted.  Each button performs a specific
-action, such as linking to a file or executing a shell command.
-</p>
-<a name="index-button_002c-explicit"></a>
-<a name="index-button_002c-global"></a>
-<a name="index-button_002c-implicit"></a>
-<a name="index-button-category"></a>
-<a name="index-explicit-button"></a>
-<a name="index-global-button"></a>
-<a name="index-implicit-button"></a>
-<p>There are three categories of Hyperbole buttons:
-</p><dl compact="compact">
-<dt><em>explicit buttons</em></dt>
-<dd><p>created by Hyperbole, accessible from within a single document;
-</p>
-</dd>
-<dt><em>global buttons</em></dt>
-<dd><p>created by Hyperbole, specific to each user, and accessible anywhere
-within a user&rsquo;s network of documents;
-</p>
-</dd>
-<dt><em>implicit buttons</em></dt>
-<dd><p>created and managed by other programs or embedded within the structure
-of a document, accessible from within a single document.  Hyperbole
-recognizes implicit buttons by contextual patterns given in their type
-specifications (explained later).
-</p></dd>
-</dl>
-
-<p>Explicit Hyperbole buttons may be embedded within any type of text file.
-Implicit buttons may appear only within document contexts allowed by
-their types, which may limit the kinds of documents or the locations
-within those documents at which such buttons may be found.  All global
-buttons for a user are stored in a single location and are activated by
-entering their names, rather than by direct selection, the means used to
-activate explicit and implicit buttons.
-</p>
-<p>To summarize:
-</p>
-<div class="example">
-<pre class="example">Button Category   Active Within        Activation Means   
   Managed By
-========================================================================
-Explicit          a single document    direct selection      Hyperbole
-Global            any document         entering its name     Hyperbole
-Implicit          a matching context   direct selection      other tools
-
-</pre></div>
+<a name="Smart-Keys-1"></a>
+<h2 class="chapter">2 Smart Keys</h2>
 
-<a name="index-terminal-use"></a>
-<p>A click on a Hyperbole button may activate it or describe its actions,
-depending on which mouse key is used.  Buttons may also be activated
-from a keyboard.  (In fact, virtually all Hyperbole operations,
-including menu usage, may be performed from any standard character
-terminal interface, so you need not be anchored to a workstation all
-day).  See <a href="#Smart-Keys">Smart Keys</a>.  There is also a key that 
shows you how a
-button will behave before you activated it, see <a 
href="#Smart-Key-Operations">Smart Key Operations</a>.
+<a name="index-Smart-Key"></a>
+<a name="index-mouse-support"></a>
+<a name="index-Action-Key"></a>
+<a name="index-Assist-Key"></a>
+<a name="index-middle-mouse-key"></a>
+<a name="index-hmouse_002dmiddle_002dflag"></a>
+<a name="index-Action-Key-1"></a>
+<a name="index-Assist-Key-1"></a>
+<p>Hyperbole offers two special <em>Smart Keys</em>, the Action Key and the
+Assist Key, that perform an extensive array of context-sensitive
+operations across emacs usage.  In many popular modes, they allow you
+to perform common, sometimes complex operations without having to use a
+different key for each operation.  Just press a Smart Key and the
+right thing happens.  This chapter explains typical uses of the Smart
+Keys.  See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for 
complete descriptions of their
+behavior in all contexts.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Explicit-Buttons" 
accesskey="1">Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Bindings" 
accesskey="1">Smart Key Bindings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Global-Buttons" 
accesskey="2">Global Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Operations" 
accesskey="2">Smart Key Operations</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Implicit-Buttons" 
accesskey="3">Implicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modeline-Clicks" 
accesskey="3">Smart Key Modeline Clicks</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Button-Files" 
accesskey="4">Button Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Thing-Selection" 
accesskey="4">Smart Key Thing Selection</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Action-Types" 
accesskey="5">Action Types</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Argument-Selection" accesskey="5">Smart Key Argument 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Button-Type-Precedence" 
accesskey="6">Button Type Precedence</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modifiers" 
accesskey="6">Smart Key Modifiers</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Utilizing-Explicit-Buttons" 
accesskey="7">Utilizing Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Debugging" 
accesskey="7">Smart Key Debugging</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="Explicit-Buttons"></a>
+<a name="Smart-Key-Bindings"></a>
 <div class="header">
 <p>
-Next: <a href="#Global-Buttons" accesskey="n" rel="next">Global Buttons</a>, 
Previous: <a href="#Buttons" accesskey="p" rel="prev">Buttons</a>, Up: <a 
href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-Operations" accesskey="n" rel="next">Smart Key 
Operations</a>, Previous: <a href="#Smart-Keys" accesskey="p" rel="prev">Smart 
Keys</a>, Up: <a href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Explicit-Buttons-1"></a>
-<h3 class="section">2.1 Explicit Buttons</h3>
+<a name="Smart-Key-Bindings-1"></a>
+<h3 class="section">2.1 Smart Key Bindings</h3>
 
-<a name="index-explicit-button-1"></a>
-<a name="index-button_002c-explicit-1"></a>
-<a name="index-button-label"></a>
-<a name="index-button-name"></a>
-<p>Hyperbole creates and manages <em>explicit buttons</em> which perform
-specific actions when activated (typically through a button press).
-They look like this &lsquo;<samp>&lt;(fake button)&gt;</samp>&rsquo;.  They 
are quickly
-recognizable, yet relatively non-distracting as you scan the text in
-which they are embedded.  The text between the 
&lsquo;<samp>&lt;(</samp>&rsquo; and &lsquo;<samp>)&gt;</samp>&rsquo;
-delimiters is called the <em>button label</em> or <em>button name</em>.
-Spacing between words within a button label is irrelevant to Hyperbole.
-Button labels may wrap across several lines without causing a problem;
-just be sure to select the first line of the button to activate it.
-</p>
-<p>Explicit buttons may be added to any editable text file; for source
-code files, simply place buttons within comments.  Buttons that you
-use for quick navigation to websites or other things you do often
-should be added to your personal button file.  See <a 
href="#Button-Files">Button Files</a>.
+<a name="index-C_002du-M_002dRET"></a>
+<a name="index-M_002dRET"></a>
+<p>From the keyboard, <kbd>{M-<span class="key">RET</span>}</kbd> is the 
Action Key and <kbd>{C-u
+M-<span class="key">RET</span>}</kbd> is the Assist Key.  These keys allow 
context-sensitive
+operation from any keyboard.
 </p>
-<a name="index-button_002c-moving"></a>
-<a name="index-moving-buttons"></a>
-<p>Explicit buttons may be freely moved about within the buffer in which
-they are created.  (No present support exists for moving buttons between
-buffers; support the Hyperbole project if you would like to help make
-this happen).  A single button may also appear multiple times within the
-same buffer; simply copy the button label with its delimiters
-to a new location if you need another copy of it.
+
+<a name="index-shift_002dmiddle-mouse-key"></a>
+<a name="index-shift_002dleft-mouse-key"></a>
+<a name="index-shift_002dright-mouse-key"></a>
+<a name="index-middle-mouse-key-1"></a>
+<a name="index-hmouse_002dmiddle_002dflag-1"></a>
+<p>From the mouse, the <em>Action Key</em> is bound to your shift-middle
+mouse key (or shift-left on a 2-button mouse).  The <em>Assist Key</em>
+is bound to your shift-right mouse key, assuming Hyperbole is run
+under an external window system.
 </p>
-<p>For details on how to create, activate, delete or modify explicit
-buttons, see <a href="#Utilizing-Explicit-Buttons">Utilizing Explicit 
Buttons</a>.
+<a name="index-hmouse_002dadd_002dunshifted_002dkeys"></a>
+<a name="index-unshifted-mouse-bindings"></a>
+<a name="index-unshifted-mouse-keys"></a>
+<a name="index-mouse-keys_002c-unshifted"></a>
+<a name="index-smart-keys_002c-unshifted"></a>
+<p>Users or those who set the variable, <code>hmouse-middle-flag</code>,
+to &lsquo;<samp>t</samp>&rsquo; before loading Hyperbole, may also use the 
middle mouse
+key as the Action Key).  If you want both the middle mouse key as the
+Action Key and the right mouse key as the Assist Key for ease of use,
+then within your personal <samp>~/.emacs</samp> file, add:
+  <code>(add-hook 'hyperbole-init-hook 'hmouse-add-unshifted-smart-keys)</code>
+and then restart Emacs.
 </p>
-<a name="index-link-button"></a>
-<a name="index-referent"></a>
-<p>Each explicit button is assigned an action type that determines the
-actions it performs.  <em>Link action types</em> connect buttons to
-particular types of <em>referents</em>, the targets of their links.  Link
-action type names all begin with <code>link-</code>.  Link action button
-referents are displayed when such buttons are  by
-pressing or clicking upon them.  See <a href="#Action-Types">Action Types</a>, 
for a list of
-standard action types including link types.
+<a name="index-key-binding_002c-smart-keys"></a>
+<a name="index-smart-key-commands"></a>
+<a name="index-smart-key-assignments"></a>
+<a name="index-action_002dkey"></a>
+<a name="index-assist_002dkey"></a>
+<a name="index-action_002dmouse_002dkey"></a>
+<a name="index-assist_002dmouse_002dkey"></a>
+<p>If you prefer other key assignments, simply bind the commands
+<code>action-key</code> and <code>assist-key</code> to keyboard keys.
+<code>hkey-either</code> may be used instead if you prefer a single
+key binding for both commands; a prefix argument, such as <kbd>{C-u}</kbd>,
+then invokes <code>assist-key</code>.  You may also bind 
<code>action-mouse-key</code>
+and <code>assist-mouse-key</code> to other mouse keys, if you like, though
+you won&rsquo;t be able to execute drag actions with such key bindings.
 </p>
-<a name="index-linking_002c-in_002dplace"></a>
-<a name="index-Hyperbole-data-model"></a>
-<p>Hyperbole does not manage referent data; this is left to the
-applications that generate the data.  This means that Hyperbole
-provides in-place linking and does not require reformatting of data to
-integrate with Hyperbole.
+<p>Mouse configuration of the Smart Keys is automatic for GNU Emacs under
+Mac OS X, the X Window System and MS Windows assuming your emacs program
+has been built with support for any of these window systems.
 </p>
-<a name="index-button-data"></a>
-<a name="index-button-attribute"></a>
-<a name="index-file_002c-_002ehypb"></a>
-<p>Hyperbole stores the <em>button data</em> that gives an explicit button its
-behavior, separately from the button label, in a file named
-<samp>.hypb</samp> (<samp>_hypb</samp> under MS Windows) within the same 
directory
-as the file in which the button is created.  Thus, all files in the
-same directory share a common button data file.  Button data is
-comprised of individual <em>button attribute</em> values.  A user never
-sees this data in its raw form but may see a formatted version by
-asking for help on a button.
+<a name="index-file_002c-_002eemacs"></a>
+<a name="index-hmouse_002dtoggle_002dbindings"></a>
+<a name="index-mouse-key-toggle"></a>
+<a name="index-Smart-Mouse-Key-toggle"></a>
+<a name="index-C_002dc-t"></a>
+<p>If you ever want to restore the mouse bindings that existed before
+Hyperbole was loaded, use the <code>hmouse-toggle-bindings</code> command.
+It switches between the Hyperbole mouse key bindings and those set
+prior to loading Hyperbole and then back again if invoked once more.
+There is no default key binding for this command; use <kbd>{M-x
+hmouse-toggle-bindings <span class="key">RET</span>}</kbd>.  Alternatively, 
you may select a
+key and bind it as part of any setting of <code>hyperbole-init-hook</code>
+within your personal <samp>~/.emacs</samp> file.  For example, <code>(add-hook
+'hyperbole-init-hook (lambda () (global-set-key &quot;\C-ct&quot;
+'hmouse-toggle-bindings)))</code>.
 </p>
 
 <hr>
-<a name="Global-Buttons"></a>
+<a name="Smart-Key-Operations"></a>
 <div class="header">
 <p>
-Next: <a href="#Implicit-Buttons" accesskey="n" rel="next">Implicit 
Buttons</a>, Previous: <a href="#Explicit-Buttons" accesskey="p" 
rel="prev">Explicit Buttons</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-Modeline-Clicks" accesskey="n" rel="next">Smart Key 
Modeline Clicks</a>, Previous: <a href="#Smart-Key-Bindings" accesskey="p" 
rel="prev">Smart Key Bindings</a>, Up: <a href="#Smart-Keys" accesskey="u" 
rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Global-Buttons-1"></a>
-<h3 class="section">2.2 Global Buttons</h3>
+<a name="Smart-Key-Operations-1"></a>
+<h3 class="section">2.2 Smart Key Operations</h3>
 
-<a name="index-global-button-1"></a>
-<a name="index-button_002c-global-1"></a>
-<a name="index-button-label-1"></a>
-<p>Access to explicit buttons depends upon the information on your screen
-since they are embedded within particular buffers.  Sometimes it is
-useful to activate buttons without regard to the information with which
-you are working.  In such instances, you use <em>global buttons</em>, which
-are buttons that may be activated or otherwise operated upon by entering
-their labels/names when they are prompted for, rather than selecting the
-buttons within a buffer.
+<a name="index-button-activation"></a>
+<a name="index-activation"></a>
+<a name="index-button-help"></a>
+<p>The Action Key generally selects entities, creates links and
+activates buttons.  The Assist Key generally provides help,
+such as reporting on a button&rsquo;s attributes, or serves a complementary
+function to whatever the Action Key does within a context.
 </p>
-<p>If you want a permanent link to a file section that you can follow at
-any time, you can use a global button.  Or what about an Emacs keyboard
-macro that you use frequently?  Create an <code>exec-kbd-macro</code> button
-with an easy to type name and then you can activate it whenever the need
-arises.
+<a name="index-Smart-Key-operation"></a>
+<a name="index-menu-item_002c-Doc_002fSmartKeys"></a>
+<a name="index-Smart-Key-summary"></a>
+<a name="index-modeline_002c-Smart-Keys"></a>
+<p>The Hyperbole Doc/SmartKeys menu entry displays a summary of what the
+Smart Keys do in all of their different contexts.  Alternatively, a
+click of the Assist Mouse Key in the right corner of a window
+modeline (within the rightmost 3 characters) toggles between
+displaying this summary and hiding it.  Reference this summary
+whenever you need it.
 </p>
-<a name="index-C_002dh-h-g"></a>
-<a name="index-menu_002c-Gbut"></a>
-<a name="index-menu_002c-Global_002dButton"></a>
-<p>Global buttons are managed with the Hyperbole Gbut/ menu accessed with
-<kbd>{C-h h g}</kbd>.  The Create item, <kbd>{C-h h g c}</kbd>, prompts for a
-global button name, an action type, and the action&rsquo;s associated
-arguments, such as a file to link to.  It then creates the button.  To
-activate the button, use the Act menu item, <kbd>{C-h h g a}</kbd>.  Type
-the button&rsquo;s name and its action will be executed.
+<p>The following table is the same summary.  Much of the browsing power
+of Hyperbole comes from the use of the Smart Keys, so spend some time
+practicing how to use them.  Study what modeline clicks and window
+drag actions do as these will give you a lot of power without much
+effort.  This table may appear daunting at first, but as you practice
+and notice that the Smart Keys do just a few context-sensitive things
+per editor mode, you will find it easy to just press or point and
+click and let Hyperbole do the right thing in each context.
 </p>
-<p>Global buttons are actually explicit buttons stored at the end of your
-personal button file, see <a href="#Button-Files">Button Files</a>.  You can 
always go into that
-file and activate, edit or annotate these buttons with comments.
+<div class="format">
+<div class="smallexample">
+<pre 
class="smallexample">========================================================================================
+                                              Smart Keys
+Context                         Action Key                 Assist Key
+========================================================================================
+Hyperbole
+  On a minibuffer menu item     Activates item             Item help
+  On an explicit button         Activates button           Button help
+  Reading argument
+    1st press at an arg value   Value copied to minibuffer &lt;- same
+    2nd press at an arg value   Value used as argument     &lt;- same
+    In minibuffer               Accepts minibuffer arg     Completion help
+  On an implicit button         Activates button           Button help
+  Within a koutline cell        Collapses and expands      Shows tree props
+  Left of a koutline cell       Creates a klink            Moves a tree
+  HyRolo Match Buffer           Edits entries and mails to e-mail addresses
+
+Mouse or Keyboard Display Control
+  Line end, not end of buffer
+    smart-scroll-proportional
+      = t   (default)           Makes curr line top line   Bottom line
+      = nil                     Scrolls up a windowful     Scrolls down
+  End of Any Help buffer        Restores screen to the previous state
+  Read-only View Mode           Scrolls up a windowful     Scrolls wind down
+
+Mouse-only Control
+  Drag from thing start or end  Yanks thing at release     Kills thing and 
yanks
+    A thing is a delimited                                 at release
+    expression, such as a
+    string, list or markup
+    language tag pair
+
+  Drag from shared window side
+    or from left of scroll bar  Resizes window width       &lt;- same
+  Modeline vertical drag        Resizes window height      &lt;- same
+
+  Other Modeline drag to        Replaces dest. buffer      Swaps window buffers
+    another window                with source buffer
+
+  Drag between windows from:
+    buffer/file menu item       Displays buffer/file in    Swaps window buffers
+                                  window of button release 
+    buffer/file menu 1st line   Moves buffer/file menu     Swaps window buffers
+    anywhere else               Creates/modifies a link    Swaps window buffers
+
+  Drag outside of Emacs from:
+    buffer/file menu item       Displays buffer/file in    Moves window to new 
frame
+                                  a new frame
+    Modeline or other window    Clones window to new frame Moves window to new 
frame
+
+  Modeline Click
+    Left modeline edge          Buries current buffer      Unburies bottom 
buffer
+    Right modeline edge         Info manual browser        Smart Key summary
+    Buffer ID                   Dired on buffer's dir      Next buffer
+    Other blank area            Action Key modeline hook   Assist Key modeline 
hook
+                                  Shows/Hides Buffer Menu    Popup Jump &amp; 
Manage Menu
+
+  Drag in window, region active Error, not allowed         Error, not allowed
+  Horizontal drag in a window   Splits window below        Deletes window
+  Vertical drag in a window     Splits window side-by-side Deletes window
+  Diagonal drag in a window     Saves wconfig              Restores wconfig 
from ring
+
+  Active region exists, click   Yanks region at release    Kills region and 
yanks at release
+   outside of the region
+
+Hyperbole Key Press/Click in Special Modes
+  Region Active                 Yanks region at release    Kills &amp; yanks 
region at release
+  Emacs Push Button             Activates button           Button help
+  Thing Begin or End            Mark thing region          Mark &amp; kill 
thing region
+  Page Directory Listing        Jumps to page              &lt;- same
+  Imenu Programming Identifier  Jumps to in-buffer def     Prompts for 
identifier to jump to
+  C,C++,Objective-C,Java Modes  Jumps to id/include def    Jumps to next def
+  Assembly Language Mode        Jumps to id/include def    Jumps to next def
+  Java Cross-reference Tag      Jumps to identifier def    Jumps to next def
+  JavaScript and Python Modes   Jumps to identifier def    Jumps to next def
+  Any Lisp or Fortran Mode      Jumps to identifier def    Jumps to next def
+  Emacs Lisp Compiler Error     Jumps to def with error    &lt;- same
+  Other Compiler Error          Jumps to src error line    &lt;- same
+  Grep or Occur Match           Jumps to match source line &lt;- same
+  Multi-buffer Occur Match      Jumps to match source line &lt;- same
+  Etags `TAGS' file entry       Jumps to source line       Button help
+  Ctags file entry              Jumps to source line       Button help
+  Texinfo Cross-reference
+    Before opening brace        Jumps to Texinfo referent  Button help
+    Within braces               Jumps to Info referent     Button help
+    Menu Item or node hdr       Jumps to Texinfo referent  Button help
+    Include file                Jumps to Texinfo referent  Button help
+    code/var reference          Displays doc for referent  Button help
+  Org Mode                      Follows links and cycles outline views
+  Outline Major/Minor Modes     Collapses, expands, and moves outline entries
+  Man Apropos                   Displays man page entry    &lt;- same
+  Man Pages                     Follows cross refs, file refs and C code refs
+  I/Buffer Menu                 Saves, deletes and displays buffers
+
+Emacs Info Reader
+  Menu Entry or Cross Ref       To referent                &lt;- same
+  Up, Next or Prev Header       To referent                To prior node
+  File entry of Header          To top node                To (DIR) node
+  End of current node           To next node               To previous node
+  Anywhere else                 Scrolls up a windowful     Scrolls wind down
+
+Subsystems
+  Calendar                      Scrolls or shows appts     Scrolls/marks date
+  GNU Debbugs Tracker           Displays issue discussion  Displays issue 
status
+  Dired Mode                    Views and deletes files from dir listing
+  GNUS News Reader              Toggles group subscriptions, gets new news,
+                                  and browses articles
+  Mail Reader and Summaries     Browses, deletes and expunges messages
+  OO-Browser                    Browses object classes and elements
+  Tar Mode                      Views and edits files from tar archive files
+
+Any other context (defaults)    Invalid context error      Invalid context 
error
+========================================================================================
+</pre></div>
+</div>
+
+<p>See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for extensive 
reference documentation on the
+Smart Keys.
+</p>
+<a name="index-action_002dkey_002ddefault_002dfunction"></a>
+<a name="index-assist_002dkey_002ddefault_002dfunction"></a>
+<a name="index-Smart-Key_002c-default-context"></a>
+<a name="index-default-Smart-Key-context"></a>
+<p>Note how the last line in the table explains that the default behavior of
+the Smart Keys in an unknown context is to report an error.  You can change
+these behaviors by setting two variables.  See the documentation
+for the variables <code>action-key-default-function</code> and
+<code>assist-key-default-function</code> for information on how to customize
+the behavior of the Smart Keys within default contexts.
+</p>
+<a name="index-Smart-Key-help"></a>
+<a name="index-help_002c-Smart-Key"></a>
+<a name="index-context_002dsensitive-help"></a>
+<p>When you use a mouse and you want to find out what either of the Smart
+Keys does within a context, depress the one you want to check on and
+hold it down, then press the other and release as you please.  A help
+buffer will pop up explaining the actions that will be performed in that
+context, if any.  A press of either Smart Key at the end of that
+help buffer will restore your display to its configuration prior to
+invoking help.
+</p>
+<a name="index-C_002dh-A"></a>
+<a name="index-C_002du-C_002dh-A"></a>
+<p>On the keyboard, <kbd>{C-h A}</kbd> displays this same context-sensitive
+help for the Action Key while <kbd>{C-u C-h A}</kbd> displays the help for
+the Assist Key.  Note that <kbd>{C-h a}</kbd> performs a function unrelated
+to Hyperbole, so you must press the shift key when you type
+the <tt class="key">A</tt> character.
 </p>
 <hr>
-<a name="Implicit-Buttons"></a>
+<a name="Smart-Key-Modeline-Clicks"></a>
 <div class="header">
 <p>
-Next: <a href="#Button-Files" accesskey="n" rel="next">Button Files</a>, 
Previous: <a href="#Global-Buttons" accesskey="p" rel="prev">Global 
Buttons</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-Thing-Selection" accesskey="n" rel="next">Smart Key 
Thing Selection</a>, Previous: <a href="#Smart-Key-Operations" accesskey="p" 
rel="prev">Smart Key Operations</a>, Up: <a href="#Smart-Keys" accesskey="u" 
rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Implicit-Buttons-1"></a>
-<h3 class="section">2.3 Implicit Buttons</h3>
+<a name="Smart-Key-Modeline-Clicks-1"></a>
+<h3 class="section">2.3 Smart Key Modeline Clicks</h3>
 
-<a name="index-button_002c-implicit-1"></a>
-<a name="index-implicit-button-1"></a>
-<p><em>Implicit buttons</em> are virtual buttons recognized within the
-natural structure of a document.  For example, a web URL button that
-displays its link or an email address button that starts a mail
-message to the associated address.  Implicit buttons are identified by
-contextual patterns found within documents.  An <em>Implicit button
-type</em> identifies a pattern or state that when matched triggers
-an <em>action</em> associated with the implicit button type.  The action
-is specified by either a Hyperbole action type (see <a 
href="#Action-Types">Action Types</a>)
-or an Emacs Lisp function.  Implicit button types may use the same
-action types that explicit buttons use.  As an example, a pathname
-implicit button type would match to any existing local filename or
-directory name and its action would be to display the associated file
-or directory, typically in another window.
+<p>Smart Key clicks on a window&rsquo;s modeline offer many powerful browsing
+features including directory editing (dired), user manual browsing, and
+window, buffer and frame selection.  Generally, only Hyperbole-specific
+modeline actions are discussed herein.
+</p>
+<p>&ndash; Leftmost Character
+</p>
+<a name="index-bury-buffer"></a>
+<a name="index-unbury-buffer"></a>
+<a name="index-modeline_002c-bury-buffer"></a>
+<a name="index-modeline_002c-unbury-buffer"></a>
+<a name="index-modeline_002c-leftmost-character"></a>
+<p>Action Key clicks on the first (usually blank) character of the
+modeline bury the current buffer in the buffer list and display the
+next buffer in the list.  Assist Key clicks do the reverse and unbury
+the bottom buffer.
+</p>
+<a name="index-modeline_002c-next-buffer"></a>
+<a name="index-modeline_002c-prev-buffer"></a>
+<p>A similar effect can be achieved with the standard Emacs mouse 1 and 3 
buttons
+on the Buffer Id element of modeline which cycle through previous and next
+buffers respectively.  This may be easier to use since you can click anywhere
+on the buffer identifier.
+</p>
+<p>&ndash; Buffer Id Element
 </p>
-<a name="index-file_002c-hibtypes_002eel"></a>
-<a name="index-context"></a>
-<a name="index-boolean-expressions"></a>
-<a name="index-activating-implicit-button"></a>
-<a name="index-menu-item_002c-Ibut_002fAct"></a>
-<a name="index-C_002dh-h-i-a"></a>
-<p>Unlike explicit buttons, implicit buttons have no individual button data
-other than their textual labels.  You use implicit button types which
-include boolean expressions (predicates) that match to both the label
-and the context required of any button of the type.  Each time a Smart
-Key is pressed at a location, Hyperbole evaluates the predicates from
-the list of implicit button types and the first one that evaluates true
-is selected and its associated action is triggered.  The Ibut/Act menu
-item, <kbd>{C-h h i a}</kbd>, also activates any implicit button found at the
-current point.
+<a name="index-dired"></a>
+<a name="index-modeline_002c-dired"></a>
+<a name="index-buffer-id"></a>
+<a name="index-modeline_002c-buffer-id"></a>
+<a name="index-dragging-items_002c-dired"></a>
+<p>On the left part of the modeline is the buffer identification,
+generally the name of the buffer in use.  An Action Key click on that
+switches the window to edit the buffer&rsquo;s directory using dired.
+Action Key clicks on directory items display them in other windows.
+An Action Key drag from an item to another window displays the item in
+that window.  An Action Key click on the first line directory path,
+specifically on any ancestor part of the path, starts another dired
+session on the ancestor directory.  Click at the end of 
+</p>
+<p>&ndash; Large Blank Area
 </p>
-<p>All of this happens transparently and is easy to use once you try it.
-The Hyperbole Smart Keys offer extensive additional context-sensitive
-point-and-click type behavior beyond implicit button types.  See <a 
href="#Smart-Key-Operations">Smart Key Operations</a>.
+<a name="index-buffer-menu"></a>
+<a name="index-modeline_002c-buffer-menu"></a>
+<a name="index-jump-menu"></a>
+<a name="index-modeline_002c-jump-menu"></a>
+<a name="index-dragging-items_002c-buffer-menu"></a>
+<p>An Action Mouse Key click in a blank area of a window modeline (away
+from left and right edges) toggles between displaying and hiding a
+list of all buffers.  Once displayed, an Action Key click on a buffer
+item will display it in another window.  You can drag items to specific
+windows for display as well.
 </p>
-<a name="index-ibtypes_002c-list-of"></a>
-<a name="index-implicit-button-types"></a>
-<p>Below, standard implicit button types are listed in the order in which
-Hyperbole tries to match to the types when looking for an implicit
-button; <kbd>{C-h h i t <span class="key">RET</span>}</kbd> provides similar 
information.  See
-the Hyperbole file, <samp>hibtypes.el</samp>, for complete examples of
-implicit button types.
+<p>An Assist Key click in the blank area of the modeline displays a quick
+access menu of display-oriented commands.  You can jump to buffers
+categorized by major mode, jump to windows by buffer name, or to
+frames by name.  Manage your windows and frames quickly with this menu
+as well.  As always with Hyperbole, just try it and you&rsquo;ll begin to
+wonder how you lived without it before.
 </p>
-<dl compact="compact">
-<dd>
-<a name="index-ibtypes-completion"></a>
-<a name="index-completion"></a>
-</dd>
-<dt><code>completion</code></dt>
-<dd><p>Inserts the completion at point into the minibuffer or the other window.
+<p>&ndash; Right Corner
 </p>
-<a name="index-ibtypes-hyp_002dsource"></a>
-<a name="index-Hyperbole-report"></a>
-</dd>
-<dt><code>hyp-source</code></dt>
-<dd><p>Turns source location entries in Hyperbole reports into buttons that
-jump to the associated location.
+<a name="index-Info-browser"></a>
+<a name="index-modeline-click-and-drag"></a>
+<a name="index-modeline_002c-Info-Browser"></a>
+<p>A click of the Action Mouse Key in the right corner of a window
+modeline (within the rightmost 3 characters) displays or hides the
+GNU Info Manual Browser, giving you quick point and click access to
+an amazing wealth of documentation, since the Action Key also browses
+through these manuals and follows their hyperlinked cross-references.
+A click of the Assist Key in the same location displays or hides the
+Smart Key summary, as noted earlier.
 </p>
-<a name="index-ibtypes-hyp_002daddress"></a>
-<a name="index-Hyperbole-mail-list"></a>
-</dd>
-<dt><code>hyp-address</code></dt>
-<dd><p>Turns a Hyperbole support/discussion e-mail address into an implicit
-button which inserts Hyperbole environment information.  This is
-useful when sending mail to a Hyperbole discussion mail list.  See
-also the documentation for <code>actypes::hyp-config</code>.
+<p>&ndash; Customizable Variables
 </p>
-<a name="index-ibtypes-Info_002dnode"></a>
-<a name="index-Info-node"></a>
-</dd>
-<dt><code>Info-node</code></dt>
-<dd><p>Makes &quot;(filename)nodename&quot; buttons display the associated 
Info node.
-Also makes &quot;(filename)itemname&quot; buttons display the associated Info
-index item.
+<a name="index-action_002dkey_002dmodeline_002dfunction"></a>
+<a name="index-assist_002dkey_002dmodeline_002dfunction"></a>
+<a name="index-action_002dkey_002dmodeline"></a>
+<a name="index-assist_002dkey_002dmodeline"></a>
+<a name="index-hmouse_002dcontext_002dmenu"></a>
+<a name="index-hmouse_002dcontext_002dibuffer_002dmenu"></a>
+<a name="index-ibuffer-menu"></a>
+<p>Hyperbole modeline mouse click actions are controlled by the two functions,
+<code>action-key-modeline</code> and <code>assist-key-modeline</code>.  If you 
know
+a little Emacs Lisp you can change these to do whatever you like.
+When a Smart Key press is on a blank part of a modeline but not at
+the left or right, the function given by one of these two variables
+is executed: <code>action-key-modeline-function</code> or
+<code>assist-key-modeline-function</code>.  By default, the Action Key toggles
+between displaying and hiding the buffer menu.  If you like the more
+advanced features of <code>Ibuffer Mode</code>, you can change the buffer menu
+to use that with the following in your Emacs initialization file:
+<code>(setq action-key-modeline-function #'hmouse-context-ibuffer-menu)</code>.
+To set it back to the default use:
+<code>(setq action-key-modeline-function #'hmouse-context-menu)</code>.
 </p>
-<a name="index-ibtypes-www_002durl"></a>
-<a name="index-URL"></a>
-<a name="index-World_002dwide-Web"></a>
-<a name="index-WWW"></a>
-<a name="index-Action-Key_002c-web-browsing"></a>
-<a name="index-Action-Key_002c-web-browsing-1"></a>
-<a name="index-browse_002durl_002dbrowser_002dfunction"></a>
-</dd>
-<dt><code>www-url</code></dt>
-<dd><p>When not in an Emacs web browser buffer, follows any non-ftp URL (link) 
at point.
-The variable, <code>browse-url-browser-function</code>, may be used to 
customize
-which URL browser is called.  Terse URLs which lack a protocol prefix,
-like www.gnu.org, are also recognized.
+<a name="index-dired_002djump"></a>
+<a name="index-hui_002dmenu_002dscreen_002dcommands"></a>
+<a name="index-directory-editor"></a>
+<a name="index-dired-1"></a>
+<a name="index-modeline_002c-screen-command-menu"></a>
+<p>The default <code>assist-key-modeline-function</code> is to pop up a menu of
+convenient screen commands that lets you select buffers grouped by
+major mode, use HyControl, or jump to specific windows, window
+configurations or frames.  If you would prefer it runs the directory
+editor <code>dired</code> on the directory associated with the window of the
+modeline press, use this: <code>(setq assist-key-modeline-function 
#'dired-jump)</code>.
+To set it back to the default use:
+<code>(setq assist-key-modeline-function #'hui-menu-screen-commands)</code>.
 </p>
-<a name="index-ibtypes-gnus_002dpush_002dbutton"></a>
-<a name="index-GNUS-push_002dbuttons"></a>
-<a name="index-hiding-signatures"></a>
-<a name="index-signatures_002c-hiding"></a>
-</dd>
-<dt><code>gnus-push-button</code></dt>
-<dd><p>Activates GNUS-specific article push-buttons, e.g. for hiding
-signatures.  GNUS is a news and mail reader.&quot;
+<p>These variables may also be changed permanently with the Emacs
+interactive customization interface.  Use <kbd>{M-x customize-variable
+<span class="key">RET</span> assist-key-modeline-function <span 
class="key">RET</span>}</kbd>.  In the Assist
+Modeline Function text field that appears, change the value
+to <code>dired-jump</code>.  Then press the &ldquo;Apply and Save&rdquo; 
button.
 </p>
-<a name="index-ibtypes-texinfo_002dref"></a>
-<a name="index-Texinfo-cross_002dreference"></a>
-<a name="index-cross_002dreference_002c-Texinfo"></a>
-</dd>
-<dt><code>texinfo-ref</code></dt>
-<dd><p>Displays Texinfo, Info node or help associated with Texinfo node, menu
-item, @xref, @pxref, @ref, @code or @var at point.  If point is
-within the braces of a cross-reference, the associated Info node is
-shown.  If point is to the left of the braces but after the @ symbol and
-the reference is to a node within the current Texinfo file, then the
-Texinfo node is shown.
+<hr>
+<a name="Smart-Key-Thing-Selection"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Key-Argument-Selection" accesskey="n" rel="next">Smart 
Key Argument Selection</a>, Previous: <a href="#Smart-Key-Modeline-Clicks" 
accesskey="p" rel="prev">Smart Key Modeline Clicks</a>, Up: <a 
href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Key-Thing-Selection-1"></a>
+<h3 class="section">2.4 Smart Key Thing Selection</h3>
+
+<a name="index-sexp-selection"></a>
+<a name="index-code-block-selection"></a>
+<a name="index-selection"></a>
+<a name="index-smart-selection"></a>
+<a name="index-smart-marking"></a>
+<a name="index-region-selection"></a>
+<a name="index-things"></a>
+<a name="index-delimited-things"></a>
+<p>Hyperbole has some radically cool ways to select regions of structured
+text or source code and to copy or move them between buffers with a
+single mouse drag or two key presses.  A great deal of smarts are
+built-in so that it does the right thing most of the time; many other
+attempts at similar behavior such as thing.el fail to deal with many
+file format complexities.
 </p>
-<p>For @code and @var references, the associated documentation string
-is displayed.
+<p>We use the term <em>things</em> to refer to structured entities that
+Hyperbole can select.  These include: delimited pairs of (), {}, &lt;&gt;,
+[] and quote marks, source code functions, source code comments and
+matching tag pairs in HTML and SGML modes.  <em>Delimited things</em> are
+those things that contain a selectable delimiter such as an opening
+parenthesis.
 </p>
-<a name="index-ibtypes-mail_002daddress"></a>
-<a name="index-e_002dmail-address"></a>
-<a name="index-rolo-address"></a>
-<a name="index-address"></a>
-</dd>
-<dt><code>mail-address</code></dt>
-<dd><p>If on an e-mail address in a specific buffer type, mail to that address
-in another window. Applies to the rolo match buffer, any buffer
-attached to a file in <code>hyrolo-file-list</code>, or any buffer with 
<samp>mail</samp>
-or <samp>rolo</samp> (case-insensitive) within its name.
+<a name="index-HTML-tag-pair"></a>
+<a name="index-SGML-tag-pair"></a>
+<p>The best way to mark a delimited thing is to move your cursor to the
+starting delimiter of the thing and then press the Action Key.  Typically,
+you will see the thing highlight.  You can then operate upon it as you
+would any Emacs region.  In many cases, you can do the same thing upon
+the closing delimiter but this is not as reliable.  An Action Key
+press on the start of an HTML or SGML tag pair marks the entire region
+span of the pair.  If you use the Assist Key instead, it will mark and
+kill (delete) the thing.
 </p>
-<a name="index-ibtypes-patch_002dmsg"></a>
-<a name="index-patch-output"></a>
-</dd>
-<dt><code>patch-msg</code></dt>
-<dd><p>Jumps to the source code associated with output from the 
&lsquo;<samp>patch</samp>&rsquo;
-program.  Patch applies diffs to source code.
+<a name="index-drag_002c-with-region"></a>
+<a name="index-kill-region"></a>
+<a name="index-yank-region"></a>
+<a name="index-cut-region"></a>
+<a name="index-copy-region"></a>
+<a name="index-paste-region"></a>
+<p>Even better are Smart Mouse Key drags which let you copy or move
+delimited things in one operation without even highlighting them.  To
+copy, simply drag with the Action Key from a thing&rsquo;s opening delimiter
+and release somewhere outside of the thing, either within the same
+window or within another window.  The thing will be copied to the
+point of release.  If you want to move a thing, simply perform the
+same drag but with the Assist Mouse Key.  Ensure that you do not move
+any explicit buttons from one buffer to another as that does not
+presently work.
 </p>
-<a name="index-ibtypes-elisp_002dcompiler_002dmsg"></a>
-<a name="index-byte-compiler-error"></a>
-<a name="index-Emacs-Lisp-compiler-error"></a>
-<a name="index-compiler-error"></a>
-</dd>
-<dt><code>elisp-compiler-msg</code></dt>
-<dd><p>Jumps to the source code for a definition associated with a
-byte-compiler error message.  Works when activated anywhere within an
-error line.
+<p>Try out some of these operations in HTML or source code files to see
+how they can speed your editing.
 </p>
-<a name="index-ibtypes-debugger_002dsource"></a>
-<a name="index-gdb"></a>
-<a name="index-dbx"></a>
-<a name="index-xdb"></a>
-<a name="index-stack-frame"></a>
-<a name="index-breakpoint"></a>
-<a name="index-source-line"></a>
-</dd>
-<dt><code>debugger-source</code></dt>
-<dd><p>Jumps to the source line associated with a debugger stack frame or
-breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
-recognized in any buffer.
+<p>Hyperbole also binds two convenience keys for working with things.
 </p>
-<a name="index-ibtypes-grep_002dmsg"></a>
-<a name="index-grep"></a>
-<a name="index-compiler-error-1"></a>
-</dd>
-<dt><code>grep-msg</code></dt>
-<dd><p>Jumps to a line associated with grep or compilation error messages.
-Messages are recognized in any buffer.
+<a name="index-C_002dc-RET"></a>
+<a name="index-hui_002dselect_002dthing"></a>
+<a name="index-hui_002dselect_002dthing_002dwith_002dmouse"></a>
+<p>The first such key is <kbd>{C-c <span class="key">RET</span>}</kbd> 
<code>hui-select-thing</code>
+which selects bigger and bigger syntactic regions with each successive
+use.  Double or triple clicks of the Selection Key (left mouse key) do
+the same thing.  The first press selects a region based upon the
+character at point.  For example, with point over an opening or
+closing grouping character, such as { or }, the whole grouping is
+selected, e.g. a C function.  When on an _ or - within a programming
+language identifier name, the whole name is selected.  The type of
+selection is displayed in the minibuffer as feedback.  When using a
+language in which indentation determines nesting level like Python, a
+double click on the first alpha character of a line, such as an if
+statement, selects the whole statement.  Use <kbd>{C-g}</kbd> to unmark the
+region when done.  Use, <code>hui-select-thing-with-mouse</code> if you want
+to bind this to a different mouse key to use single clicks instead of
+double clicks.
 </p>
-<a name="index-ibtypes-klink"></a>
-<a name="index-klink"></a>
-<a name="index-koutline-link"></a>
-<a name="index-kcell-link"></a>
-</dd>
-<dt><code>klink</code></dt>
-<dd><p>Follows a link delimited by &lt;&gt; to a koutline cell.
-See the documentation for <code>actypes::link-to-kotl</code> for valid link
-specifiers.
+<a name="index-C_002dc-_002e"></a>
+<a name="index-hui_002dselect_002dgoto_002dmatching_002dtag"></a>
+<p>The second convenience key is bound only in HTML/web mode.  <kbd>{C-c
+.}</kbd> <code>hui-select-goto-matching-tag</code> jumps between the opening 
and
+closing tag of a pair.  It moves point to the start of the tag paired
+with the closest tag that point is within or which it precedes.  A
+second press moves point to the matching tag of the pair, allowing you
+to quickly jump back and forth between opening and closing tags.
 </p>
-<a name="index-ibtypes-man_002dapropos"></a>
-<a name="index-UNIX-manual"></a>
-<a name="index-man-pages"></a>
-<a name="index-man-apropos"></a>
-</dd>
-<dt><code>man-apropos</code></dt>
-<dd><p>Makes man apropos entries (from &lsquo;<samp>man -k</samp>&rsquo;) 
display associated man pages when
-selected.
+<hr>
+<a name="Smart-Key-Argument-Selection"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Key-Modifiers" accesskey="n" rel="next">Smart Key 
Modifiers</a>, Previous: <a href="#Smart-Key-Thing-Selection" accesskey="p" 
rel="prev">Smart Key Thing Selection</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Key-Argument-Selection-1"></a>
+<h3 class="section">2.5 Smart Key Argument Selection</h3>
+
+<a name="index-Hyperbole-help"></a>
+<p>A prime design criterion of Hyperbole&rsquo;s user interface is that you
+should be able to see what an operation will do before using it.  The
+Assist Key typically shows you what a button or minibuffer menu item
+will do before you activate it.  Hyperbole also displays the result of
+directly selecting an argument value with the Action Key, to provide
+feedback as to whether the correct item has been selected.  A second
+press/click is necessary before an argument is accepted and processed.
 </p>
-<a name="index-ibtypes-rfc"></a>
-<a name="index-Internet-RFC"></a>
-<a name="index-Request-For-Comment"></a>
-<a name="index-RFC"></a>
-<a name="index-remote-file"></a>
-<a name="index-ftp"></a>
-</dd>
-<dt><code>rfc</code></dt>
-<dd><p>Retrieves and displays an Internet rfc referenced at point.  Requires 
remote
-file access, e.g. via the Tramp library, for remote ftp retrievals.  The
-following formats are recognized: RFC822, rfc-822, and RFC 822.  The
-<code>hpath:rfc</code> variable specifies the location from which to retrieve
-RFCs.&quot;
+<a name="index-argument-entry"></a>
+<a name="index-direct-selection"></a>
+<a name="index-double-click"></a>
+<p>Many Hyperbole commands prompt you for arguments.  The standard
+Hyperbole user interface has an extensive core of argument types that
+it recognizes.  Whenever Hyperbole is prompting you for an argument,
+it knows the type that it needs and provides some error checking to
+help you get it right.  More importantly, it allows you to press the
+Action Key within an entity that you want to use as an argument and it
+will grab the appropriate thing and show it to you at the input prompt
+within the minibuffer.  If you press (click with a mouse) the Action
+Key on the same thing again, it accepts the entity as the argument
+and moves on.  Thus, a double click registers a desired argument.
+Double-quoted strings, pathnames, mail messages, Info nodes, dired
+listings, buffers, numbers, completion items and so forth are all
+recognized at appropriate times.  All of the argument types mentioned
+in the documentation for the Emacs Lisp <code>interactive</code> function
+are recognized.  Experiment a little and you will quickly get used to
+this direct selection technique.
 </p>
-<a name="index-ibtypes-kbd_002dkey"></a>
-<a name="index-key-sequence"></a>
-</dd>
-<dt><code>kbd-key</code></dt>
-<dd><p>Executes the command binding or the Hyperbole minibuffer menu action
-for a key sequence delimited by curly braces.  Key sequences should
-be in human readable form, e.g. <kbd>{C-x C-b}</kbd>.  Formats such
-as {^x^b} will not be recognized.
+<a name="index-completion"></a>
+<p>Wherever possible, standard Emacs completion is offered, as described in
+<a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Completion";>Completion</a>
 in <cite>the GNU Emacs Manual</cite>.  Remember to use <kbd>{?}</kbd>
+to see what your possibilities for an argument are.  Once you have a
+list of possible completions on screen, press the Action Key twice on
+any item to enter it as the argument.
 </p>
-<a name="index-ibtypes-dir_002dsummary"></a>
-<a name="index-file_002c-MANIFEST"></a>
-<a name="index-file_002c-DIR"></a>
-</dd>
-<dt><code>dir-summary</code></dt>
-<dd><p>Detects filename buttons in files named &quot;MANIFEST&quot; or 
&quot;DIR&quot;.
-Displays selected files.  Each file name must be at the beginning of the
-line and must be followed by one or more spaces and then another
-non-space, non-parenthesis, non-brace character.
+<hr>
+<a name="Smart-Key-Modifiers"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Key-Debugging" accesskey="n" rel="next">Smart Key 
Debugging</a>, Previous: <a href="#Smart-Key-Argument-Selection" accesskey="p" 
rel="prev">Smart Key Argument Selection</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Key-Modifiers-1"></a>
+<h3 class="section">2.6 Smart Key Modifiers</h3>
+
+<p>For advanced users of Emacs and Hyperbole, there is 
<code>hmouse-mod-mode</code>,
+a global minor mode which turns the Action Mouse Key into a <tt 
class="key">Control</tt>
+modifier key and the Assist Key into a <tt class="key">Meta</tt> modifier key. 
 This
+allows for better keyboard energy balance across hands and is useful for
+reducing carpal tunnel stress.  It may also be used with a <em>chord
+keyboard</em> in one hand and a mouse in the other to point at things while
+simultaneously operating upon them.
 </p>
-<a name="index-ibtypes-text_002dtoc"></a>
-<a name="index-table-of-contents"></a>
-<a name="index-toc-implicit-button-type"></a>
-</dd>
-<dt><code>text-toc</code></dt>
-<dd><p>Jumps to the text file section referenced by a table of contents entry
-at point.  The file name of the current buffer must contain
-<samp>README</samp> and there must be a &lsquo;Table of Contents&rsquo; or 
&lsquo;Contents&rsquo;
-label on a line by itself (it may begin with an asterisk), preceding the
-table of contents.  Each toc entry must begin with some whitespace
-followed by one or more asterisk characters.  Each line which begins a
-new file section must start with one or more asterisk characters at the
-very beginning of the line.
+<a name="index-hmouse_002dmod_002dmode"></a>
+<a name="index-hmouse_002dmod_002dmode-1"></a>
+<a name="index-Smart-Keys-as-modifiers"></a>
+<a name="index-control-key-modifier"></a>
+<a name="index-meta-key-modifier"></a>
+<a name="index-chord-keyboards"></a>
+<p>Use the <code>hmouse-mod-mode</code> global minor mode to enable this 
feature.
+<kbd>{C-u M-x hmouse-mod-mode <span class="key">RET</span>}</kbd> enables it 
and adds
+&lsquo;<samp>HyMod</samp>&rsquo; to the list of modeline minor modes.  
<kbd>{C-u 0 M-x
+hmouse-mod-mode <span class="key">RET</span>}</kbd> disables it and <kbd>{M-x
+hmouse-mod-mode <span class="key">RET</span>}</kbd> toggles it on and off.
 </p>
-<a name="index-ibtypes-cscope"></a>
-<a name="index-C_002fC_002b_002b-call-trees"></a>
-<a name="index-C_002fC_002b_002b-cross_002dreference"></a>
-<a name="index-Cscope"></a>
-</dd>
-<dt><code>cscope</code></dt>
-<dd><p>Jumps to a C/C++ source line associated with a Cscope C analyzer output 
line.
-Requires pre-loading of the cscope.el Lisp library available from the Emacs
-Lisp archives and the commercial cscope program available from AT&amp;T&rsquo;s
-software toolchest.  Otherwise, does nothing.
+<p>When enabled, if the Action Key is held down while alpha characters
+are typed, they are translated into <tt class="key">Control</tt> keys instead. 
 The
+Assist Key translates them into <tt class="key">Meta</tt> keys.  When both 
Smart
+Keys are depressed, <tt class="key">Control-Meta</tt> keys are produced.  The
+commands bound to the characters produced are then run.  For example,
+Action Key + <kbd>{a}</kbd> runs the function for <kbd>{C-a}</kbd>.  If no
+keys are typed while the Smart Keys are down, they operate as
+normally under Hyperbole.
 </p>
-<a name="index-ibtypes-etags"></a>
-<a name="index-etags-entry"></a>
-<a name="index-TAGS-file"></a>
-<a name="index-tag"></a>
-</dd>
-<dt><code>etags</code></dt>
-<dd><p>Jumps to the source line associated with an etags file entry in a TAGS 
buffer.
-If on a tag entry line, jumps to the source line for the tag.  If on a
-pathname line or line preceding it, jumps to the associated file.
+<p>The code for Smart Key modifiers can be found in
+<samp><code>${hyperb:dir}</code>/hmouse-mod.el</samp>.
+</p>
+<hr>
+<a name="Smart-Key-Debugging"></a>
+<div class="header">
+<p>
+Previous: <a href="#Smart-Key-Modifiers" accesskey="p" rel="prev">Smart Key 
Modifiers</a>, Up: <a href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Smart-Key-Debugging-1"></a>
+<h3 class="section">2.7 Smart Key Debugging</h3>
+
+<p>Typically, <kbd>{C-h A}</kbd> and <kbd>{C-u C-h A}</kbd> which show Action 
and
+Assist Key help for the current context, are sufficient for seeing how
+the Smart Keys behave no matter where they are used.
+</p>
+<a name="index-C_002dh-h-c-d"></a>
+<a name="index-Smart-Key-debugging"></a>
+<a name="index-menu-item_002c-Cust_002fDebug_002dToggle"></a>
+<a name="index-debugging-Smart-Keys"></a>
+<a name="index-troubleshooting-Smart-Keys"></a>
+<a name="index-Messages-buffer"></a>
+<a name="index-logging-Smart-Key-behavior"></a>
+<p>However, if a Smart Key ever behaves differently than you think it
+should or if you want to test how the Smart Keys respond in a new
+context, then the Smart Key debugging flag may be of use.  You toggle
+it on and off with <kbd>{C-h h c d}</kbd> (minibuffer menu
+Cust/Debug-Toggle).  Once enabled, this displays a message in the
+minibuffer each time the Action or Assist Key is released, showing
+the context of the press and its associated action, so you can see
+exactly what is happening whenever you use a Smart Key.  These
+messages are all prefaced with &ldquo;(HyDebug)&rdquo; and logged to the
+&ldquo;*Messages*&rdquo; buffer for later viewing.
+</p>
+<a name="index-C_002dh-h-m-c"></a>
+<a name="index-C_002dh-h-m-r"></a>
+<p>If you do find a problem with the Smart Keys and want to report a bug,
+use <kbd>{C-h h m r}</kbd> to compose an email message to the bug-hyperbole
+list.  Hyperbole will automatically include all of the &ldquo;(HyDebug)&rdquo;
+messages from your current emacs session into your email.  Similarly,
+when you compose an email to the hyperbole-users mailing list
+with <kbd>{C-h h m c}</kbd>, these messages are also included.
 </p>
-<a name="index-ibtypes-ctags"></a>
-<a name="index-ctags-entry"></a>
-<a name="index-tags-file"></a>
-</dd>
-<dt><code>ctags</code></dt>
-<dd><p>Jumps to the source line associated with a ctags file entry in any 
buffer.
-Ctags files are used by old editors like vi to lookup identifiers.
-InfoDock and Emacs use the newer, more flexible Etags format.
+
+<hr>
+<a name="Buttons"></a>
+<div class="header">
+<p>
+Next: <a href="#Menus" accesskey="n" rel="next">Menus</a>, Previous: <a 
href="#Smart-Keys" accesskey="p" rel="prev">Smart Keys</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Buttons-1"></a>
+<h2 class="chapter">3 Buttons</h2>
+
+<a name="index-button"></a>
+<p>This chapter explains use of Hyperbole <em>buttons</em>.  There are several
+kinds of Hyperbole buttons: buttons that are created one at a time and
+stored in files (<em>explicit buttons</em>); buttons that can be
+activated by name anytime (<em>global buttons</em>); and buttons defined
+by textual patterns where one definition can create an infinite number
+of buttons (<em>implicit buttons</em>).
 </p>
-<a name="index-ibtypes-id_002dcflow"></a>
-<a name="index-C-call-tree"></a>
-<a name="index-call-tree_002c-C"></a>
-<a name="index-C-flow-graph"></a>
-</dd>
-<dt><code>id-cflow</code></dt>
-<dd><p>Expands or collapses C call trees and jumps to code definitions.
-Requires cross-reference tables built by the external <code>cxref</code>
-program.
+<p>Hyperbole buttons are embedded within textual documents; they may be
+created, modified, moved or deleted.  Each button performs a specific
+action, such as linking to a file or executing a shell command.
 </p>
-<a name="index-ibtypes-rfc_002dtoc"></a>
-<a name="index-Internet-RFC-1"></a>
-<a name="index-Request-For-Comment-1"></a>
-<a name="index-RFC-1"></a>
-<a name="index-table-of-contents-1"></a>
-</dd>
-<dt><code>rfc-toc</code></dt>
-<dd><p>Summarizes contents of an Internet rfc from anywhere within an rfc 
buffer.
-Each line of the summary may be selected to jump to the associated section.
+<a name="index-button_002c-explicit"></a>
+<a name="index-button_002c-global"></a>
+<a name="index-button_002c-implicit"></a>
+<a name="index-button-category"></a>
+<a name="index-explicit-button"></a>
+<a name="index-global-button"></a>
+<a name="index-implicit-button"></a>
+<p>There are three categories of Hyperbole buttons:
+</p><dl compact="compact">
+<dt><em>explicit buttons</em></dt>
+<dd><p>created by Hyperbole, accessible from within a single document;
 </p>
-<a name="index-ibtypes-markdown_002dinternal_002dlink"></a>
-<a name="index-markdown-link"></a>
 </dd>
-<dt><code>markdown-internal-link</code></dt>
-<dd><p>Displays any in-file Markdown link referent.  Pathnames and urls are
-handled elsewhere.
+<dt><em>global buttons</em></dt>
+<dd><p>created by Hyperbole, specific to each user, and accessible anywhere
+within a user&rsquo;s network of documents;
 </p>
-<a name="index-ibtypes-social_002dreference"></a>
-<a name="index-hashtag"></a>
-<a name="index-username"></a>
-<a name="index-social-media"></a>
-<a name="index-social-reference"></a>
-<a name="index-hibtypes_002dsocial_002ddefault_002dservice"></a>
 </dd>
-<dt><code>social-reference</code></dt>
-<dd><p>Displays the web page associated with a social media hashtag or username
-reference at point.  Reference format is:
-</p>
-<div class="smallexample">
-<pre 
class="smallexample">[facebook|instagram|address@hidden&lt;hashtag-or-username&gt;
 or
-[fb|in|address@hidden&lt;hashtag-or-username&gt;
-</pre></div>
+<dt><em>implicit buttons</em></dt>
+<dd><p>created and managed by other programs or embedded within the structure
+of a document, accessible from within a single document.  Hyperbole
+recognizes implicit buttons by contextual patterns given in their type
+specifications (explained later).
+</p></dd>
+</dl>
 
-<p>For example, &lsquo;<samp>address@hidden</samp>&rsquo; displays the home 
page for facebook user
-&lsquo;<samp>someuser</samp>&rsquo; and &lsquo;<samp>in#hashtag</samp>&rsquo; 
displays photos with the hashtag
-&lsquo;<samp>hashtag</samp>&rsquo;.  The first part of the label for a button 
of this type
-is the social media service name.  The service name defaults to the
-value of <code>hibtypes-social-default-service</code> (default value of
-&ldquo;twitter&rdquo;) when not given, so #hashtag would be the same as
-twitter#hashtag.
-</p>
-<a name="index-ibtypes-debbugs_002dgnu_002dmode"></a>
-<a name="index-bug-tracking"></a>
-<a name="index-issue-tracking"></a>
-</dd>
-<dt><code>debbugs-gnu-mode</code></dt>
-<dd><p>Debbugs is a client-server issue tracker used by GNU free software
-projects, including Hyperbole, to manage issues and maintain threads
-of discussion around them.  When on a GNU Debbugs listing entry in
-<code>debbugs-gnu-mode</code>, an Action Key press displays the discussion
-of the selected issue; an Assist Key press pretty prints the status of
-the issue to a window below the listing window.
+<p>Explicit Hyperbole buttons may be embedded within any type of text file.
+Implicit buttons may appear only within document contexts allowed by
+their types, which may limit the kinds of documents or the locations
+within those documents at which such buttons may be found.  All global
+buttons for a user are stored in a single location and are activated by
+entering their names, rather than by direct selection, the means used to
+activate explicit and implicit buttons.
 </p>
-<a name="index-ibtypes-debbugs_002dgnu_002dquery"></a>
-</dd>
-<dt><code>debbugs-gnu-query</code></dt>
-<dd><p>This implicit button type displays the results of a Gnu debbugs query
-based on the string at point and works in most kinds of buffers.  If
-the query includes a single id number, it displays the original message
-submission for that id and allows browsing of the followup discussion.
-The following buffer text formats are accepted (with point prior to
-any attribute):
+<p>To summarize:
 </p>
-<div class="smallexample">
-<pre class="smallexample">#id-number
-bug#id-number, bug# id-number, bug #id-number or bug id-number
-bug?attr1=val1&amp;attr2=val2&amp;attr3=val3
-bug#id-number?attr1=val1&amp;attr2=val2&amp;attr3=val3
+<div class="example">
+<pre class="example">Button Category   Active Within        Activation Means   
   Managed By
+========================================================================
+Explicit          a single document    direct selection      Hyperbole
+Global            any document         entering its name     Hyperbole
+Implicit          a matching context   direct selection      other tools
+
 </pre></div>
 
-<a name="index-file_002c-hib_002ddebbugs_002eel"></a>
-<p>Note that <em>issue</em> or <em>debbugs</em> may be used as well in place
-of <em>bug</em>.  See the documentation at the top of
-the <samp>hib-debbugs.el</samp> file for detailed query format information.
-</p>
-<a name="index-ibtypes-annot_002dbib"></a>
-<a name="index-bibliography"></a>
-<a name="index-reference"></a>
-</dd>
-<dt><code>annot-bib</code></dt>
-<dd><p>Displays annotated bibliography entries defined within the same buffer
-as the reference.  References must be delimited by square brackets, must
-begin with a word constituent character, and must not be in buffers
-whose names begin with a &lsquo; &rsquo; or &lsquo;*&rsquo; character.
+<a name="index-terminal-use"></a>
+<p>A click on a Hyperbole button may activate it or describe its actions,
+depending on which mouse key is used.  Buttons may also be activated
+from a keyboard.  (In fact, virtually all Hyperbole operations,
+including menu usage, may be performed from any standard character
+terminal interface, so you need not be anchored to a workstation all
+day).  See <a href="#Smart-Keys">Smart Keys</a>.  There is also a key that 
shows you how a
+button will behave before you activated it, see <a 
href="#Smart-Key-Operations">Smart Key Operations</a>.
 </p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#Explicit-Buttons" 
accesskey="1">Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Global-Buttons" 
accesskey="2">Global Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Implicit-Buttons" 
accesskey="3">Implicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Button-Files" 
accesskey="4">Button Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Action-Types" 
accesskey="5">Action Types</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Button-Type-Precedence" 
accesskey="6">Button Type Precedence</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Utilizing-Explicit-Buttons" 
accesskey="7">Utilizing Explicit Buttons</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+</table>
 
-<a name="index-ibtypes-function_002din_002dbuffer"></a>
-<a name="index-file_002c-func_002dmenu_002eel"></a>
-<a name="index-function-menu"></a>
-<a name="index-func_002dmenu"></a>
-</dd>
-<dt><code>function-in-buffer</code></dt>
-<dd><p>Returns the function name defined within this buffer that point is
-within or after, else &lsquo;<samp>nil</samp>&rsquo;.  This triggers only when 
the
-func-menu library has been loaded and the current major mode is one
-handled by func-menu.
+<hr>
+<a name="Explicit-Buttons"></a>
+<div class="header">
+<p>
+Next: <a href="#Global-Buttons" accesskey="n" rel="next">Global Buttons</a>, 
Previous: <a href="#Buttons" accesskey="p" rel="prev">Buttons</a>, Up: <a 
href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Explicit-Buttons-1"></a>
+<h3 class="section">3.1 Explicit Buttons</h3>
+
+<a name="index-explicit-button-1"></a>
+<a name="index-button_002c-explicit-1"></a>
+<a name="index-button-label"></a>
+<a name="index-button-name"></a>
+<p>Hyperbole creates and manages <em>explicit buttons</em> which perform
+specific actions when activated (typically through a button press).
+They look like this &lsquo;<samp>&lt;(fake button)&gt;</samp>&rsquo;.  They 
are quickly
+recognizable, yet relatively non-distracting as you scan the text in
+which they are embedded.  The text between the 
&lsquo;<samp>&lt;(</samp>&rsquo; and &lsquo;<samp>)&gt;</samp>&rsquo;
+delimiters is called the <em>button label</em> or <em>button name</em>.
+Spacing between words within a button label is irrelevant to Hyperbole.
+Button labels may wrap across several lines without causing a problem;
+just be sure to select the first line of the button to activate it.
 </p>
-<a name="index-link_002c-pathname-line-and-column"></a>
-<a name="index-line-and-column"></a>
-<a name="index-pathname_002c-line-and-column"></a>
-<a name="index-ibtypes-pathname_002dline_002dand_002dcolumn"></a>
-</dd>
-<dt><code>pathname-line-and-column</code></dt>
-<dd><p>Makes a valid pathname:line-num[:column-num] pattern display the path
-at line-num and optional column-num.  Also works for remote pathnames.
+<p>Explicit buttons may be added to any editable text file; for source
+code files, simply place buttons within comments.  Buttons that you
+use for quick navigation to websites or other things you do often
+should be added to your personal button file.  See <a 
href="#Button-Files">Button Files</a>.
 </p>
-<a name="index-ibtypes-pathname"></a>
-<a name="index-hpath_003aat_002dp"></a>
-<a name="index-hpath_003afind"></a>
-<a name="index-hpath_003asuffixes"></a>
-<a name="index-Tramp"></a>
-<a name="index-Ange_002dftp"></a>
-<a name="index-EFS"></a>
-<a name="index-ftp-1"></a>
-<a name="index-pathname"></a>
-<a name="index-remote-path"></a>
-<a name="index-filename"></a>
-<a name="index-link_002c-pathname"></a>
-</dd>
-<dt><code>pathname</code></dt>
-<dd><p>Makes a valid pathname display the path entry.  Also works for
-delimited and non-delimited remote pathnames, Texinfo <samp></samp> entries,
-and hash-style link references to HTML, Markdown or Emacs outline
-headings.  Emacs Lisp library files (filenames without any directory
-component that end in .el and .elc) are looked up using
-the <code>load-path</code> directory list.
+<a name="index-button_002c-moving"></a>
+<a name="index-moving-buttons"></a>
+<p>Explicit buttons may be freely moved about within the buffer in which
+they are created.  (No present support exists for moving buttons between
+buffers; support the Hyperbole project if you would like to help make
+this happen).  A single button may also appear multiple times within the
+same buffer; simply copy the button label with its delimiters
+to a new location if you need another copy of it.
 </p>
-<p>See the function documentation for <code>hpath:at-p</code> for possible
-delimiters.  See the variable documentation for <code>hpath:suffixes</code> for
-suffixes that are added to or removed from the pathname when searching
-for a valid match.  See the function documentation for <code>hpath:find</code>
-for special file display options.
+<p>For details on how to create, activate, delete or modify explicit
+buttons, see <a href="#Utilizing-Explicit-Buttons">Utilizing Explicit 
Buttons</a>.
+</p>
+<a name="index-link-button"></a>
+<a name="index-referent"></a>
+<p>Each explicit button is assigned an action type that determines the
+actions it performs.  <em>Link action types</em> connect buttons to
+particular types of <em>referents</em>, the targets of their links.  Link
+action type names all begin with <code>link-</code>.  Link action button
+referents are displayed when such buttons are  by
+pressing or clicking upon them.  See <a href="#Action-Types">Action Types</a>, 
for a list of
+standard action types including link types.
 </p>
-<a name="index-ibtypes-org_002dmode"></a>
-<a name="index-browse_002durl_002dbrowser_002dfunction-1"></a>
-<a name="index-org_002dmode"></a>
-<a name="index-Org-mode"></a>
-</dd>
-<dt><code>org-mode</code></dt>
-<dd><p>The Action Key follows any Org mode link at point or cycles through
-views of the outline subtree at point.  In any other context besides
-the end of a line, the Action Key will invoke the Org mode standard
-binding of <kbd>{M-<span class="key">RET</span>}</kbd>, (org-meta-return).  
The Assist Key on
-an Org mode heading, cycles through views of the whole buffer outline
-and on an Org mode link, displays standard Hyperbole help.
+<a name="index-linking_002c-in_002dplace"></a>
+<a name="index-Hyperbole-data-model"></a>
+<p>Hyperbole does not manage referent data; this is left to the
+applications that generate the data.  This means that Hyperbole
+provides in-place linking and does not require reformatting of data to
+integrate with Hyperbole.
 </p>
-<p>The variable, <code>browse-url-browser-function</code>, customizes the url
-browser that is used for urls.  Valid values of this variable
-include <code>browse-url-default-browser</code>
-and <code>browse-url-generic</code>.
+<a name="index-button-data"></a>
+<a name="index-button-attribute"></a>
+<a name="index-file_002c-_002ehypb"></a>
+<p>Hyperbole stores the <em>button data</em> that gives an explicit button its
+behavior, separately from the button label, in a file named
+<samp>.hypb</samp> (<samp>_hypb</samp> under MS Windows) within the same 
directory
+as the file in which the button is created.  Thus, all files in the
+same directory share a common button data file.  Button data is
+comprised of individual <em>button attribute</em> values.  A user never
+sees this data in its raw form but may see a formatted version by
+asking for help on a button.
 </p>
-<a name="index-ibtypes-doc_002did"></a>
-<a name="index-online-library"></a>
-<a name="index-document-identifier"></a>
-</dd>
-<dt><code>doc-id</code></dt>
-<dd><p>Displays an index entry for a site-specific document given its id.
-Ids must be delimited by <code>doc-id-start</code> and <code>doc-id-end</code> 
and
-must match the function given by <code>doc-id-p</code>.  This permits
-creation of catalogued online libraries.  (Note that this implicit
-button type is not installed by default.  You must manually configure
-it and load it from the file, 
<samp><code>${hyperb:dir}</code>/hib-doc-id.el</samp>).
-</p></dd>
-</dl>
 
 <hr>
-<a name="Button-Files"></a>
+<a name="Global-Buttons"></a>
 <div class="header">
 <p>
-Next: <a href="#Action-Types" accesskey="n" rel="next">Action Types</a>, 
Previous: <a href="#Implicit-Buttons" accesskey="p" rel="prev">Implicit 
Buttons</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Implicit-Buttons" accesskey="n" rel="next">Implicit 
Buttons</a>, Previous: <a href="#Explicit-Buttons" accesskey="p" 
rel="prev">Explicit Buttons</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Button-Files-1"></a>
-<h3 class="section">2.4 Button Files</h3>
+<a name="Global-Buttons-1"></a>
+<h3 class="section">3.2 Global Buttons</h3>
 
-<a name="index-button-files"></a>
-<p>It is often convenient to create files filled with buttons as a means
-of navigating distributed information pools or for other purposes.
-These files can also serve as useful roadmaps that guide a user
-through both unfamiliar and highly familiar information spaces.  Files
-that are created specifically for this purpose are
-called <em>Hyperbole button files</em>.
-</p>
-<a name="index-hbmap_003afilename"></a>
-<a name="index-button-file_002c-personal"></a>
-<a name="index-button-file_002c-directory"></a>
-<p>The Hyperbole menu system provides quick access to two types of these
-button files: personal and directory-specific, through the ButFile menu.
-(The variable, <code>hbmap:filename</code>, contains the base name of these
-button files.  Its standard value is <samp>HYPB</samp>.)
+<a name="index-global-button-1"></a>
+<a name="index-button_002c-global-1"></a>
+<a name="index-button-label-1"></a>
+<p>Access to explicit buttons depends upon the information on your screen
+since they are embedded within particular buffers.  Sometimes it is
+useful to activate buttons without regard to the information with which
+you are working.  In such instances, you use <em>global buttons</em>, which
+are buttons that may be activated or otherwise operated upon by entering
+their labels/names when they are prompted for, rather than selecting the
+buttons within a buffer.
 </p>
-<a name="index-dir_002c-_007e_002f_002ehyperb"></a>
-<a name="index-hbmap_003adir_002duser"></a>
-<a name="index-global-button-2"></a>
-<p>A personal button file may serve as a user&rsquo;s own roadmap to frequently
-used resources, like a personal home page.  Selection of the
-ButFile/PersonalFile menu item, <kbd>{C-h h b p}</kbd>, displays this file for
-editing.  The default personal button file is stored within the
-directory given by the <code>hbmap:dir-user</code> variable whose standard
-value is <samp>~/.hyperb</samp>.  The default Hyperbole configuration also
-appends all global buttons to the end of this file, one per line, as
-they are created.  So you can edit or annotate them within the file.
+<p>If you want a permanent link to a file section that you can follow at
+any time, you can use a global button.  Or what about an Emacs keyboard
+macro that you use frequently?  Create an <code>exec-kbd-macro</code> button
+with an easy to type name and then you can activate it whenever the need
+arises.
 </p>
-<p>A directory-specific button file may exist for each file system
-directory.  Such files are useful for explaining the contents of
-directories and pointing readers to particular highlights within the
-directories.  Selection of the ButFile/DirFile menu item, <kbd>{C-h h
-b d}</kbd>, displays the button file for the current directory; this
-provides an easy means of updating this file when working on a file
-within the same directory.  If you want to view some other
-directory-specific button file, simply use the normal Emacs file
-finding commands.
+<a name="index-C_002dh-h-g"></a>
+<a name="index-menu_002c-Gbut"></a>
+<a name="index-menu_002c-Global_002dButton"></a>
+<p>Global buttons are managed with the Hyperbole Gbut/ menu accessed with
+<kbd>{C-h h g}</kbd>.  The Create item, <kbd>{C-h h g c}</kbd>, prompts for a
+global button name, an action type, and the action&rsquo;s associated
+arguments, such as a file to link to.  It then creates the button.  To
+activate the button, use the Act menu item, <kbd>{C-h h g a}</kbd>.  Type
+the button&rsquo;s name and its action will be executed.
 </p>
-<p>One might suggest that quick menu access be provided for group-specific
-and site-specific button files.  Instead, link buttons to such things
-should be placed at the top of your personal button file.  This provides
-a more flexible means of connecting to such resources.
+<p>Global buttons are actually explicit buttons stored at the end of your
+personal button file, see <a href="#Button-Files">Button Files</a>.  You can 
always go into that
+file and activate, edit or annotate these buttons with comments.
 </p>
 <hr>
-<a name="Action-Types"></a>
+<a name="Implicit-Buttons"></a>
 <div class="header">
 <p>
-Next: <a href="#Button-Type-Precedence" accesskey="n" rel="next">Button Type 
Precedence</a>, Previous: <a href="#Button-Files" accesskey="p" 
rel="prev">Button Files</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Button-Files" accesskey="n" rel="next">Button Files</a>, 
Previous: <a href="#Global-Buttons" accesskey="p" rel="prev">Global 
Buttons</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Action-Types-1"></a>
-<h3 class="section">2.5 Action Types</h3>
+<a name="Implicit-Buttons-1"></a>
+<h3 class="section">3.3 Implicit Buttons</h3>
 
-<a name="index-action-type"></a>
-<a name="index-argument_002c-use"></a>
-<a name="index-action"></a>
-<a name="index-button-action"></a>
-<p><em>Action types</em> are special functions that specify Hyperbole button
-behaviors.  Each action type may be used by any category of button:
-global, explicit, or implicit.  The arguments needed by an action type
-are prompted for at button creation time or in the case of an implicit
-button, computed when the button is activated.  During button
-activation, the arguments are fed to the action type&rsquo;s body to achieve
-the desired result.  This body is called the button <em>action</em>.
+<a name="index-button_002c-implicit-1"></a>
+<a name="index-implicit-button-1"></a>
+<p><em>Implicit buttons</em> are virtual buttons recognized within the
+natural structure of a document.  For example, a web URL button that
+displays its link or an email address button that starts a mail
+message to the associated address.  Implicit buttons are identified by
+contextual patterns found within documents.  An <em>Implicit button
+type</em> identifies a pattern or state that when matched triggers
+an <em>action</em> associated with the implicit button type.  The action
+is specified by either a Hyperbole action type (see <a 
href="#Action-Types">Action Types</a>)
+or an Emacs Lisp function.  Implicit button types may use the same
+action types that explicit buttons use.  As an example, a pathname
+implicit button type would match to any existing local filename or
+directory name and its action would be to display the associated file
+or directory, typically in another window.
 </p>
-<p>Hyperbole handles all of this processing transparently.  As a user, all
-you need know is the set of action types that you can work with when
-creating explicit or global buttons.
+<a name="index-file_002c-hibtypes_002eel"></a>
+<a name="index-context"></a>
+<a name="index-boolean-expressions"></a>
+<a name="index-activating-implicit-button"></a>
+<a name="index-menu-item_002c-Ibut_002fAct"></a>
+<a name="index-C_002dh-h-i-a"></a>
+<p>Unlike explicit buttons, implicit buttons have no individual button data
+other than their textual labels.  You use implicit button types which
+include boolean expressions (predicates) that match to both the label
+and the context required of any button of the type.  Each time a Smart
+Key is pressed at a location, Hyperbole evaluates the predicates from
+the list of implicit button types and the first one that evaluates true
+is selected and its associated action is triggered.  The Ibut/Act menu
+item, <kbd>{C-h h i a}</kbd>, also activates any implicit button found at the
+current point.
 </p>
-<a name="index-actypes_002c-list-of"></a>
-<p>The standard action types included with Hyperbole in alphabetical order
-are:
+<p>All of this happens transparently and is easy to use once you try it.
+The Hyperbole Smart Keys offer extensive additional context-sensitive
+point-and-click type behavior beyond implicit button types.  See <a 
href="#Smart-Key-Operations">Smart Key Operations</a>.
+</p>
+<a name="index-ibtypes_002c-list-of"></a>
+<a name="index-implicit-button-types"></a>
+<p>Below, standard implicit button types are listed in the order in which
+Hyperbole tries to match to the types when looking for an implicit
+button; <kbd>{C-h h i t <span class="key">RET</span>}</kbd> provides similar 
information.  See
+the Hyperbole file, <samp>hibtypes.el</samp>, for complete examples of
+implicit button types (where they are listed in reverse in increasing
+order of priority).
 </p>
 <dl compact="compact">
-<dd><a name="index-actypes-annot_002dbib"></a>
+<dd>
+<a name="index-ibtypes-completion"></a>
+<a name="index-completion-1"></a>
 </dd>
-<dt><code>annot-bib</code></dt>
-<dd><p>Follows an internal reference KEY within an annotated bibliography,
-delimiters = [ ].
+<dt><code>completion</code></dt>
+<dd><p>Inserts the completion at point into the minibuffer or the other window.
 </p>
-<a name="index-actypes-completion"></a>
+<a name="index-ibtypes-hyp_002dsource"></a>
+<a name="index-Hyperbole-report"></a>
 </dd>
-<dt><code>completion</code></dt>
-<dd><p>Inserts a completion at point into the minibuffer or a buffer.
-Unless point is at the end of buffer or if a completion has already been 
-inserted, in which case the completions window is deleted.
+<dt><code>hyp-source</code></dt>
+<dd><p>Turns source location entries in Hyperbole reports into buttons that
+jump to the associated location.
 </p>
-<a name="index-actypes-eval_002delisp"></a>
+<a name="index-ibtypes-hyp_002daddress"></a>
+<a name="index-Hyperbole-mail-list"></a>
+</dd>
+<dt><code>hyp-address</code></dt>
+<dd><p>Turns a Hyperbole support/discussion e-mail address into an implicit
+button which inserts Hyperbole environment information.  This is
+useful when sending mail to a Hyperbole discussion mail list.  See
+also the documentation for <code>actypes::hyp-config</code>.
+</p>
+<a name="index-ibtypes-Info_002dnode"></a>
+<a name="index-Info-node"></a>
+</dd>
+<dt><code>Info-node</code></dt>
+<dd><p>Makes &quot;(filename)nodename&quot; buttons display the associated 
Info node.
+Also makes &quot;(filename)itemname&quot; buttons display the associated Info
+index item.
+</p>
+<a name="index-ibtypes-www_002durl"></a>
+<a name="index-URL"></a>
+<a name="index-World_002dwide-Web"></a>
+<a name="index-WWW"></a>
+<a name="index-Action-Key_002c-web-browsing"></a>
+<a name="index-Action-Key_002c-web-browsing-1"></a>
+<a name="index-browse_002durl_002dbrowser_002dfunction"></a>
+</dd>
+<dt><code>www-url</code></dt>
+<dd><p>When not in an Emacs web browser buffer, follows any non-ftp URL (link) 
at point.
+The variable, <code>browse-url-browser-function</code>, may be used to 
customize
+which URL browser is called.  Terse URLs which lack a protocol prefix,
+like www.gnu.org, are also recognized.
+</p>
+<a name="index-ibtypes-gnus_002dpush_002dbutton"></a>
+<a name="index-GNUS-push_002dbuttons"></a>
+<a name="index-hiding-signatures"></a>
+<a name="index-signatures_002c-hiding"></a>
+</dd>
+<dt><code>gnus-push-button</code></dt>
+<dd><p>Activates GNUS-specific article push-buttons, e.g. for hiding
+signatures.  GNUS is a news and mail reader.&quot;
+</p>
+<a name="index-ibtypes-texinfo_002dref"></a>
+<a name="index-Texinfo-cross_002dreference"></a>
+<a name="index-cross_002dreference_002c-Texinfo"></a>
+</dd>
+<dt><code>texinfo-ref</code></dt>
+<dd><p>Displays Texinfo, Info node or help associated with Texinfo node, menu
+item, @xref, @pxref, @ref, @code, @findex, @var or @vindex at point.
+If point is within the braces of a cross-reference, the associated Info node is
+shown.  If point is to the left of the braces but after the @ symbol and
+the reference is to a node within the current Texinfo file, then the
+Texinfo node is shown.
+</p>
+<p>For @code, @findex, @var and @vindex references, the associated 
documentation
+string is displayed.
+</p>
+<a name="index-ibtypes-mail_002daddress"></a>
+<a name="index-e_002dmail-address"></a>
+<a name="index-rolo-address"></a>
+<a name="index-address"></a>
 </dd>
-<dt><code>eval-elisp</code></dt>
-<dd><p>Evaluates a Lisp expression LISP-EXPR.
+<dt><code>mail-address</code></dt>
+<dd><p>If on an e-mail address in a specific buffer type, mail to that address
+in another window. Applies to the rolo match buffer, any buffer
+attached to a file in <code>hyrolo-file-list</code>, or any buffer with 
<samp>mail</samp>
+or <samp>rolo</samp> (case-insensitive) within its name.
 </p>
-<a name="index-actypes-exec_002dkbd_002dmacro"></a>
+<a name="index-ibtypes-patch_002dmsg"></a>
+<a name="index-patch-output"></a>
 </dd>
-<dt><code>exec-kbd-macro</code></dt>
-<dd><p>Executes a KBD-MACRO REPEAT-COUNT times.  KBD-MACRO may be a string of
-editor command characters, a function symbol or nil to use the last
-defined keyboard macro.  Optional REPEAT-COUNT nil means execute once,
-zero means repeat until error.
+<dt><code>patch-msg</code></dt>
+<dd><p>Jumps to the source code associated with output from the 
&lsquo;<samp>patch</samp>&rsquo;
+program.  Patch applies diffs to source code.
 </p>
-<a name="index-actypes-exec_002dshell_002dcmd"></a>
+<a name="index-ibtypes-elisp_002dcompiler_002dmsg"></a>
+<a name="index-byte-compiler-error"></a>
+<a name="index-Emacs-Lisp-compiler-error"></a>
+<a name="index-compiler-error"></a>
 </dd>
-<dt><code>exec-shell-cmd</code></dt>
-<dd><p>Executes a SHELL-CMD string asynchronously.  Optional non-nil second
-argument INTERNAL-CMD inhibits display of the shell command line
-executed.  Optional non-nil third argument KILL-PREV means kill the last
-output to the shell buffer before executing SHELL-CMD.
+<dt><code>elisp-compiler-msg</code></dt>
+<dd><p>Jumps to the source code for a definition associated with a
+byte-compiler error message.  Works when activated anywhere within an
+error line.
 </p>
-<a name="index-actypes-exec_002dwindow_002dcmd"></a>
+<a name="index-ibtypes-debugger_002dsource"></a>
+<a name="index-gdb"></a>
+<a name="index-dbx"></a>
+<a name="index-xdb"></a>
+<a name="index-stack-frame"></a>
+<a name="index-breakpoint"></a>
+<a name="index-source-line"></a>
 </dd>
-<dt><code>exec-window-cmd</code></dt>
-<dd><p>Asynchronously executes an external window-based SHELL-CMD string.
+<dt><code>debugger-source</code></dt>
+<dd><p>Jumps to the source line associated with a debugger stack frame or
+breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
+recognized in any buffer.
 </p>
-<a name="index-actypes-function_002din_002dbuffer"></a>
+<a name="index-ibtypes-grep_002dmsg"></a>
+<a name="index-grep"></a>
+<a name="index-compiler-error-1"></a>
 </dd>
-<dt><code>function-in-buffer</code></dt>
-<dd><p>Displays the definition of function NAME found at POS in the current 
buffer.
+<dt><code>grep-msg</code></dt>
+<dd><p>Jumps to a line associated with grep or compilation error messages.
+Messages are recognized in any buffer.
 </p>
-<a name="index-actypes-hyp_002dconfig"></a>
+<a name="index-ibtypes-klink"></a>
+<a name="index-klink"></a>
+<a name="index-koutline-link"></a>
+<a name="index-kcell-link"></a>
 </dd>
-<dt><code>hyp-config</code></dt>
-<dd><p>Inserts Hyperbole configuration and debugging information at the end
-of the current buffer or within optional OUT-BUF.
+<dt><code>klink</code></dt>
+<dd><p>Follows a link delimited by &lt;&gt; to a koutline cell.
+See the documentation for <code>actypes::link-to-kotl</code> for valid link
+specifiers.
 </p>
-<a name="index-actypes-hyp_002drequest"></a>
+<a name="index-ibtypes-man_002dapropos"></a>
+<a name="index-UNIX-manual"></a>
+<a name="index-man-pages"></a>
+<a name="index-man-apropos"></a>
 </dd>
-<dt><code>hyp-request</code></dt>
-<dd><p>Inserts help for composing a Hyperbole support/discussion message into
-the current buffer or the optional OUT-BUF.
+<dt><code>man-apropos</code></dt>
+<dd><p>Makes man apropos entries (from &lsquo;<samp>man -k</samp>&rsquo;) 
display associated man pages when
+selected.
 </p>
-<a name="index-actypes-hyp_002dsource"></a>
+<a name="index-ibtypes-rfc"></a>
+<a name="index-Internet-RFC"></a>
+<a name="index-Request-For-Comment"></a>
+<a name="index-RFC"></a>
+<a name="index-remote-file"></a>
+<a name="index-ftp"></a>
 </dd>
-<dt><code>hyp-source</code></dt>
-<dd><p>Displays a buffer or file from a line beginning with
-<code>hbut:source-prefix</code>.
+<dt><code>rfc</code></dt>
+<dd><p>Retrieves and displays an Internet rfc referenced at point.  Requires 
remote
+file access, e.g. via the Tramp library, for remote ftp retrievals.  The
+following formats are recognized: RFC822, rfc-822, and RFC 822.  The
+<code>hpath:rfc</code> variable specifies the location from which to retrieve
+RFCs.&quot;
 </p>
-<a name="index-actypes-kbd_002dkey"></a>
+<a name="index-ibtypes-kbd_002dkey"></a>
+<a name="index-key-sequence"></a>
 </dd>
 <dt><code>kbd-key</code></dt>
-<dd><p>Executes the function binding for KEY-SEQUENCE, delimited by {}.
-Returns &lsquo;<samp>t</samp>&rsquo; if a KEY-SEQUENCE has a binding, else 
&lsquo;<samp>nil</samp>&rsquo;.
+<dd><p>Executes the command binding or the Hyperbole minibuffer menu action
+for a key sequence delimited by curly braces.  Key sequences should
+be in human readable form, e.g. <kbd>{C-x C-b}</kbd>.  Formats such
+as {^x^b} will not be recognized.
 </p>
-<a name="index-link-action-types"></a>
-<a name="index-actypes-link_002dto_002dbuffer_002dtmp"></a>
+<a name="index-ibtypes-dir_002dsummary"></a>
+<a name="index-file_002c-MANIFEST"></a>
+<a name="index-file_002c-DIR"></a>
 </dd>
-<dt><code>link-to-buffer-tmp</code></dt>
-<dd><p>Displays a BUFFER.  This type of link generally can
-only be used within a single editor session.  Use <code>link-to-file</code>
-instead for a permanent link.
+<dt><code>dir-summary</code></dt>
+<dd><p>Detects filename buttons in files named &quot;MANIFEST&quot; or 
&quot;DIR&quot;.
+Displays selected files.  Each file name must be at the beginning of the
+line and must be followed by one or more spaces and then another
+non-space, non-parenthesis, non-brace character.
 </p>
-<a name="index-actypes-link_002dto_002ddirectory"></a>
+<a name="index-ibtypes-text_002dtoc"></a>
+<a name="index-table-of-contents"></a>
+<a name="index-toc-implicit-button-type"></a>
 </dd>
-<dt><code>link-to-directory</code></dt>
-<dd><p>Displays a DIRECTORY in Dired mode.
+<dt><code>text-toc</code></dt>
+<dd><p>Jumps to the text file section referenced by a table of contents entry
+at point.  The file name of the current buffer must contain
+<samp>README</samp> and there must be a &lsquo;Table of Contents&rsquo; or 
&lsquo;Contents&rsquo;
+label on a line by itself (it may begin with an asterisk), preceding the
+table of contents.  Each toc entry must begin with some whitespace
+followed by one or more asterisk characters.  Each line which begins a
+new file section must start with one or more asterisk characters at the
+very beginning of the line.
 </p>
-<a name="index-actypes-link_002dto_002ddoc"></a>
+<a name="index-ibtypes-cscope"></a>
+<a name="index-C_002fC_002b_002b-call-trees"></a>
+<a name="index-C_002fC_002b_002b-cross_002dreference"></a>
+<a name="index-Cscope"></a>
 </dd>
-<dt><code>link-to-doc</code></dt>
-<dd><p>Displays an online version of a document given by DOC-ID.  If the online
-version of a document is not found in <code>doc-id-indices</code>, an error is
-signalled.
+<dt><code>cscope</code></dt>
+<dd><p>Jumps to a C/C++ source line associated with a Cscope C analyzer output 
line.
+Requires pre-loading of the cscope.el Lisp library available from the Emacs
+Lisp archives and the commercial cscope program available from AT&amp;T&rsquo;s
+software toolchest.  Otherwise, does nothing.
 </p>
-<a name="index-actypes-link_002dto_002debut"></a>
+<a name="index-ibtypes-etags"></a>
+<a name="index-etags-entry"></a>
+<a name="index-TAGS-file"></a>
+<a name="index-tag"></a>
 </dd>
-<dt><code>link-to-ebut</code></dt>
-<dd><p>Performs an action given by another button, specified by KEY and 
KEY-FILE.
+<dt><code>etags</code></dt>
+<dd><p>Jumps to the source line associated with an etags file entry in a TAGS 
buffer.
+If on a tag entry line, jumps to the source line for the tag.  If on a
+pathname line or line preceding it, jumps to the associated file.
 </p>
-<a name="index-actypes-link_002dto_002delisp_002ddoc"></a>
+<a name="index-ibtypes-ctags"></a>
+<a name="index-ctags-entry"></a>
+<a name="index-tags-file"></a>
 </dd>
-<dt><code>link-to-elisp-doc</code></dt>
-<dd><p>Displays the documentation for FUNC-SYMBOL.
+<dt><code>ctags</code></dt>
+<dd><p>Jumps to the source line associated with a ctags file entry in any 
buffer.
+Ctags files are used by old editors like vi to lookup identifiers.
+Emacs uses the newer, more flexible Etags format.
 </p>
-<a name="index-actypes-link_002dto_002dfile"></a>
+<a name="index-ibtypes-id_002dcflow"></a>
+<a name="index-C-call-tree"></a>
+<a name="index-call-tree_002c-C"></a>
+<a name="index-C-flow-graph"></a>
 </dd>
-<dt><code>link-to-file</code></dt>
-<dd><p>Displays file given by PATH scrolled to optional POINT.  With POINT,
-buffer is displayed with POINT at window top.
+<dt><code>id-cflow</code></dt>
+<dd><p>Expands or collapses C call trees and jumps to code definitions.
+Requires cross-reference tables built by the external <code>cxref</code>
+program.
 </p>
-<a name="index-actypes-link_002dto_002dfile_002dline"></a>
+<a name="index-ibtypes-rfc_002dtoc"></a>
+<a name="index-Internet-RFC-1"></a>
+<a name="index-Request-For-Comment-1"></a>
+<a name="index-RFC-1"></a>
+<a name="index-table-of-contents-1"></a>
 </dd>
-<dt><code>link-to-file-line</code></dt>
-<dd><p>Displays a file given by PATH scrolled to LINE-NUM.
+<dt><code>rfc-toc</code></dt>
+<dd><p>Summarizes contents of an Internet rfc from anywhere within an rfc 
buffer.
+Each line of the summary may be selected to jump to the associated section.
 </p>
-<a name="index-actypes-link_002dto_002dInfo_002dindex_002ditem"></a>
+<a name="index-ibtypes-markdown_002dinternal_002dlink"></a>
+<a name="index-markdown-link"></a>
 </dd>
-<dt><code>link-to-Info-index-item</code></dt>
-<dd><p>Displays an Info index ITEM cross-reference.
-ITEM must be a string of the form (filename)item-name.  During
-button creation, completion for both filename and item-name is
-available.  Filename may be given without the .info suffix.&quot;
+<dt><code>markdown-internal-link</code></dt>
+<dd><p>Displays any in-file Markdown link referent.  Pathnames and urls are
+handled elsewhere.
 </p>
-<a name="index-actypes-link_002dto_002dInfo_002dnode"></a>
+<a name="index-ibtypes-git_002dreference"></a>
+<a name="index-git-reference"></a>
+<a name="index-version-control"></a>
+<a name="index-hibtypes_002dgit_002ddefault_002dproject"></a>
 </dd>
-<dt><code>link-to-Info-node</code></dt>
-<dd><p>Displays an Info NODE.  NODE must be a string of the form
-(filename)nodename.  During button creation, completion for both
-filename and nodename is available.  Filename may be given without the
-.info suffix.
-</p>
-<a name="index-actypes-link_002dto_002dkcell"></a>
-<a name="index-kcell_003aref_002dto_002did"></a>
+<dt><code>git-reference</code></dt>
+<dd><div class="example">
+<pre class="example">Displays the git entity associated with REFERENCE and 
optional PROJECT.
+
+REFERENCE is of the form:
+    &lt;ref-item&gt;
+    /?&lt;project&gt;/&lt;ref-item&gt;
+or  /&lt;project&gt;.
+
+&lt;ref-item&gt; is one of these:
+
+</pre><ul>
+<li> <pre class="example">  one of the words: branches, commits, or tags; the 
associated items are listed;
+
+</pre></li><li> <pre class="example">  one of the words: branch, commit, or 
tag followed by a '/' and item id; the item is shown;
+
+</pre></li><li> <pre class="example">  a commit reference given by a hex 
number, 55a1f0; the commit diff is displayed;
+
+</pre></li><li> <pre class="example">  a branch or tag reference given by an 
alphanumeric name, e.g. hyper20; the
+  files in the branch are listed.
+</pre></li></ul>
+<pre class="example">
+
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
+<var>hibtypes-git-default-project</var>.
+</pre></div>
+
+<a name="index-ibtypes-git_002dcommit_002dreference"></a>
+<a name="index-git-commit-reference"></a>
+<a name="index-version-control-1"></a>
 </dd>
-<dt><code>link-to-kcell</code></dt>
-<dd><p>Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
-top of a window.  See the documentation for <code>(kcell:ref-to-id)</code> for
-valid CELL-REF formats.
-</p>
-<p>If FILE is &lsquo;<samp>nil</samp>&rsquo;, the current buffer is used.  If 
CELL-REF is
-&lsquo;<samp>nil</samp>&rsquo;, the first cell in the view is shown.
+<dt><code>git-commit-reference</code></dt>
+<dd><p>Displays the diff for a git commit reference, e.g. commit a55e21, 
typically produced by git log.
 </p>
-<a name="index-actypes-link_002dto_002dkotl"></a>
+<a name="index-ibtypes-github_002dreference"></a>
+<a name="index-github-reference"></a>
+<a name="index-version-control-2"></a>
+<a name="index-hibtypes_002dgithub_002ddefault_002dproject"></a>
+<a name="index-hibtypes_002dgithub_002ddefault_002duser"></a>
 </dd>
-<dt><code>link-to-kotl</code></dt>
-<dd><p>Displays at the top of a window the referent pointed to by LINK.
-LINK may be of any of the following forms, with or without delimiters:
-</p><div class="example">
-<pre class="example">  &lt; pathname [, cell-ref] &gt;
-  &lt; [-!&amp;] pathname &gt;
-  &lt; @ cell-ref &gt;
+<dt><code>github-reference</code></dt>
+<dd><div class="example">
+<pre class="example">Displays the Github entity associated with REFERENCE and 
optional USER and PROJECT.
+
+REFERENCE is a string of the form:
+    &lt;ref-item&gt;
+    &lt;user&gt;/&lt;project&gt;/&lt;ref-item&gt;
+    &lt;project&gt;/&lt;ref-item&gt;
+or  /&lt;project&gt;.
+
+&lt;ref-item&gt; is one of these:
+
+</pre><ul>
+<li> <pre class="example">  one of the words: branches, commits, issues, 
pulls, or tags; the associated items are listed;
+
+</pre></li><li> <pre class="example">  one of the words: branch, commit, 
issue, pull or tag followed by a '/' and
+  item id; the item is shown;
+
+</pre></li><li> <pre class="example">  an issue reference given by a positive 
integer, e.g. 92 or prefaced with GH-, e.g. GH-92;
+  the issue is displayed;
+
+</pre></li><li> <pre class="example">  a commit reference given by a hex 
number, 55a1f0; the commit diff is displayed;
+
+</pre></li><li> <pre class="example">  a branch or tag reference given by an 
alphanumeric name, e.g. hyper20; the
+  files in the branch are listed.
+</pre></li></ul>
+<pre class="example">
+
+USER defaults to the value of <var>hibtypes-github-default-user</var>.
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
+<var>hibtypes-github-default-project</var>.
 </pre></div>
 
-<p>See the documentation for <code>(kcell:ref-to-id)</code> for valid cell-ref
-formats.
-</p>
-<a name="index-actypes-link_002dto_002dmail"></a>
-</dd>
-<dt><code>link-to-mail</code></dt>
-<dd><p>Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE.  See
-the documentation for the variable <code>hmail:init-function</code> for
-information on how to specify the mail reader to use.
-</p>
-<a name="index-actypes-link_002dto_002dregexp_002dmatch"></a>
+<a name="index-ibtypes-social_002dreference"></a>
+<a name="index-hashtag"></a>
+<a name="index-username"></a>
+<a name="index-social-media"></a>
+<a name="index-social-reference"></a>
+<a name="index-hibtypes_002dsocial_002ddefault_002dservice"></a>
 </dd>
-<dt><code>link-to-regexp-match</code></dt>
-<dd><p>Finds REGEXP&rsquo;s Nth occurrence in SOURCE and displays the location 
at the
-top of the selected window.  SOURCE is a pathname unless optional
-BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
-Returns &lsquo;<samp>t</samp>&rsquo; if found, signals an error if not.
+<dt><code>social-reference</code></dt>
+<dd><p>Displays the web page associated with a social media hashtag or username
+reference at point.  Reference format is:
 </p>
-<a name="index-actypes-link_002dto_002drfc"></a>
-</dd>
-<dt><code>link-to-rfc</code></dt>
-<dd><p>Retrieves and displays an Internet rfc given by RFC-NUM.  RFC-NUM may be
-a string or an integer.  Requires a remote file access library, such as
-Tramp, for ftp file retrievals.
+<div class="smallexample">
+<pre 
class="smallexample">[facebook|instagram|address@hidden&lt;hashtag-or-username&gt;
 or
+[fb|in|address@hidden&lt;hashtag-or-username&gt;
+</pre></div>
+
+<p>For example, &lsquo;<samp>address@hidden</samp>&rsquo; displays the home 
page for facebook user
+&lsquo;<samp>someuser</samp>&rsquo; and &lsquo;<samp>in#hashtag</samp>&rsquo; 
displays photos with the hashtag
+&lsquo;<samp>hashtag</samp>&rsquo;.  The first part of the label for a button 
of this type
+is the social media service name.  The service name defaults to the
+value of <code>hibtypes-social-default-service</code> (default value of
+&ldquo;twitter&rdquo;) when not given, so #hashtag would be the same as
+twitter#hashtag.
 </p>
-<a name="index-actypes-link_002dto_002dstring_002dmatch"></a>
+<a name="index-ibtypes-debbugs_002dgnu_002dmode"></a>
+<a name="index-bug-tracking"></a>
+<a name="index-issue-tracking"></a>
 </dd>
-<dt><code>link-to-string-match</code></dt>
-<dd><p>Finds STRING&rsquo;s Nth occurrence in SOURCE and displays the location 
at the
-top of the selected window.  SOURCE is a pathname unless optional
-BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
-Returns &lsquo;<samp>t</samp>&rsquo; if found, &lsquo;<samp>nil</samp>&rsquo; 
if not.
+<dt><code>debbugs-gnu-mode</code></dt>
+<dd><p>Debbugs is a client-server issue tracker used by GNU free software
+projects, including Hyperbole, to manage issues and maintain threads
+of discussion around them.  When on a GNU Debbugs listing entry in
+<code>debbugs-gnu-mode</code>, an Action Key press displays the discussion
+of the selected issue; an Assist Key press pretty prints the status of
+the issue to a window below the listing window.
 </p>
-<a name="index-actypes-link_002dto_002dtexinfo_002dnode"></a>
+<a name="index-ibtypes-debbugs_002dgnu_002dquery"></a>
 </dd>
-<dt><code>link-to-texinfo-node</code></dt>
-<dd><p>Displays the Texinfo node with NODENAME (a string) from the current 
buffer.
+<dt><code>debbugs-gnu-query</code></dt>
+<dd><p>This implicit button type displays the results of a Gnu debbugs query
+based on the string at point and works in most kinds of buffers.  If
+the query includes a single id number, it displays the original message
+submission for that id and allows browsing of the followup discussion.
+The following buffer text formats are accepted (with point prior to
+any attribute):
 </p>
-<a name="index-actypes-link_002dto_002dweb_002dsearch"></a>
-<a name="index-link_002c-web-search"></a>
-<a name="index-web-search-link"></a>
-</dd>
-<dt><code>link-to-web-search</code></dt>
-<dd><p>Searches web SERVICE-NAME for SEARCH-TERM.  Uses 
<code>hyperbole-web-search-alist</code>
-to match each service to its search url.  Uses 
<code>hyperbole-web-search-browser-function</code>
-and the <code>browse-url</code> package to display search results.
+<div class="smallexample">
+<pre class="smallexample">bug#id-number, bug# id-number, bug #id-number or bug 
id-number
+bug?attr1=val1&amp;attr2=val2&amp;attr3=val3
+bug#id-number?attr1=val1&amp;attr2=val2&amp;attr3=val3
+</pre></div>
+
+<a name="index-file_002c-hib_002ddebbugs_002eel"></a>
+<p>Note that <em>issue</em> or <em>debbugs</em> may be used as well in place
+of <em>bug</em>.  See the documentation at the top of
+the <samp>hib-debbugs.el</samp> file for detailed query format information.
 </p>
-<a name="index-actypes-man_002dshow"></a>
-<a name="index-sm_002dnotify"></a>
+<a name="index-ibtypes-annot_002dbib"></a>
+<a name="index-bibliography"></a>
+<a name="index-reference"></a>
 </dd>
-<dt><code>man-show</code></dt>
-<dd><p>Displays a man page on TOPIC, which may be of the form
-&lsquo;<samp>&lt;command&gt;(&lt;section&gt;</samp>&rsquo;).  If using the 
Superman manual entry
-package, see the documentation for <code>sm-notify</code> to control where the
-man page is displayed.
+<dt><code>annot-bib</code></dt>
+<dd><p>Displays annotated bibliography entries defined within the same buffer
+as the reference.  References must be delimited by square brackets, must
+begin with a word constituent character, and must not be in buffers
+whose names begin with a &lsquo; &rsquo; or &lsquo;*&rsquo; character.
 </p>
-<a name="index-actypes-rfc_002dtoc"></a>
+
+<a name="index-ibtypes-function_002din_002dbuffer"></a>
+<a name="index-file_002c-func_002dmenu_002eel"></a>
+<a name="index-function-menu"></a>
+<a name="index-func_002dmenu"></a>
 </dd>
-<dt><code>rfc-toc</code></dt>
-<dd><p>Computes and displays a summary of an Internet rfc in BUF-NAME.  Assumes
-point has already been moved to the start of the region to summarize.
-Optional OPOINT is the point to return to in BUF-NAME after displaying
-the summary.
+<dt><code>function-in-buffer</code></dt>
+<dd><p>Returns the function name defined within this buffer that point is
+within or after, else &lsquo;<samp>nil</samp>&rsquo;.  This triggers only when 
the
+func-menu library has been loaded and the current major mode is one
+handled by func-menu.
 </p>
-<a name="index-actypes-text_002dtoc"></a>
-<a name="index-table-of-contents-2"></a>
-<a name="index-toc-action-type"></a>
+<a name="index-link_002c-pathname-line-and-column"></a>
+<a name="index-line-and-column"></a>
+<a name="index-pathname_002c-line-and-column"></a>
+<a name="index-ibtypes-pathname_002dline_002dand_002dcolumn"></a>
 </dd>
-<dt><code>text-toc</code></dt>
-<dd><p>Jumps to the text file SECTION referenced by a table of contents entry
-at point.
+<dt><code>pathname-line-and-column</code></dt>
+<dd><p>Makes a valid pathname:line-num[:column-num] pattern display the path
+at line-num and optional column-num.  Also works for remote pathnames.
 </p>
-<a name="index-actypes-www_002durl"></a>
-<a name="index-URL-1"></a>
-<a name="index-World_002dwide-Web-1"></a>
-<a name="index-WWW-1"></a>
-<a name="index-browse_002durl_002dbrowser_002dfunction-2"></a>
+<a name="index-ibtypes-pathname"></a>
+<a name="index-hpath_003aat_002dp"></a>
+<a name="index-hpath_003afind"></a>
+<a name="index-hpath_003asuffixes"></a>
+<a name="index-Tramp"></a>
+<a name="index-Ange_002dftp"></a>
+<a name="index-EFS"></a>
+<a name="index-ftp-1"></a>
+<a name="index-pathname"></a>
+<a name="index-remote-path"></a>
+<a name="index-filename"></a>
+<a name="index-link_002c-pathname"></a>
 </dd>
-<dt><code>www-url</code></dt>
-<dd><p>Follows a link given by a URL.  The variable,
-<code>browse-url-browser-function</code>, customizes the url browser
-that is used.  See its documentation string for details.
-</p></dd>
-</dl>
-
-<a name="index-action-1"></a>
-<a name="index-hui_003aebut_002dprompt_002dfor_002daction"></a>
-<p>Action types create a convenient way of specifying button behavior
-without the need to know how to program.  Expert users who are familiar
-with Emacs Lisp, however, may find that they often want to tailor button
-actions in a variety of ways not easily captured within a type system.
-In such cases, <code>hui:ebut-prompt-for-action</code> should be set to
-&lsquo;<samp>t</samp>&rsquo;.  This will cause Hyperbole to prompt for an 
action to override
-the button&rsquo;s action type at each explicit button creation.  For those 
cases
-where the action type is sufficient, a &lsquo;<samp>nil</samp>&rsquo; value 
should be
-entered for the action.  An action may be any Lisp form that Emacs
-Lisp can evaluate.
-</p>
-<hr>
-<a name="Button-Type-Precedence"></a>
-<div class="header">
-<p>
-Next: <a href="#Utilizing-Explicit-Buttons" accesskey="n" rel="next">Utilizing 
Explicit Buttons</a>, Previous: <a href="#Action-Types" accesskey="p" 
rel="prev">Action Types</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Button-Type-Precedence-1"></a>
-<h3 class="section">2.6 Button Type Precedence</h3>
-
-<a name="index-button-precedence"></a>
-<a name="index-button-label-overlap"></a>
-<p>Explicit buttons always take precedence over implicit buttons.  Thus, if
-a button selection is made which falls within both an explicit and
-implicit button, only the explicit button will be selected.  Explicit
-button labels are not allowed to overlap; Hyperbole&rsquo;s behavior in such
-cases is undefined.
-</p>
-<a name="index-ibtype_002c-evaluation-order"></a>
-<p>If there is no explicit button at point during a selection request,
-then each implicit button type predicate is tested in turn until one
-returns non-nil or all are exhausted.  Since two implicit button types
-may have overlapping <em>domains</em>, those contexts in which their
-predicates are true, only the first matching type is used.  The type
-predicates are tested in <em>reverse</em> order of definition, i.e.
-most recently entered types are tested first, so that personal types
-defined after standard system types take precedence.  It is important
-to keep this order in mind when defining new implicit button types.
-By making match predicates as specific as possible, one can minimize
-any overlapping implicit button domains.
+<dt><code>pathname</code></dt>
+<dd><p>Makes a valid pathname display the path entry.  Also works for
+delimited and non-delimited remote pathnames, Texinfo <samp></samp> entries,
+and hash-style link references to HTML, Markdown or Emacs outline
+headings.  Emacs Lisp library files (filenames without any directory
+component that end in .el and .elc) are looked up using
+the <code>load-path</code> directory list.
 </p>
-<a name="index-type-redefinition"></a>
-<p>Once a type name is defined, its precedence relative to other types
-remains the same even if its body is redefined, as long as its name is
-not changed.  This allows incremental modifications to types without
-any worry of altering their precedences.  See <a 
href="#Creating-Types">Creating Types</a>, for
-information on how to develop or modify types.
+<p>See the function documentation for <code>hpath:at-p</code> for possible
+delimiters.  See the variable documentation for <code>hpath:suffixes</code> for
+suffixes that are added to or removed from the pathname when searching
+for a valid match.  See the function documentation for <code>hpath:find</code>
+for special file display options.
 </p>
-<hr>
-<a name="Utilizing-Explicit-Buttons"></a>
-<div class="header">
-<p>
-Previous: <a href="#Button-Type-Precedence" accesskey="p" rel="prev">Button 
Type Precedence</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Utilizing-Explicit-Buttons-1"></a>
-<h3 class="section">2.7 Utilizing Explicit Buttons</h3>
-
-<p>Explicit buttons are a fundamental building block for creating personal
-or organizational hypertext networks with Hyperbole.  This section
-summarizes the user-level operations available for managing these
-buttons.
+<a name="index-ibtypes-org_002dmode"></a>
+<a name="index-browse_002durl_002dbrowser_002dfunction-1"></a>
+<a name="index-org_002dmode"></a>
+<a name="index-Org-mode"></a>
+</dd>
+<dt><code>org-mode</code></dt>
+<dd><p>The Action Key follows any Org mode link at point or cycles through
+views of the outline subtree at point.  In any other context besides
+the end of a line, the Action Key will invoke the Org mode standard
+binding of <kbd>{M-<span class="key">RET</span>}</kbd>, (org-meta-return).  
The Assist Key on
+an Org mode heading, cycles through views of the whole buffer outline
+and on an Org mode link, displays standard Hyperbole help.
 </p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Creation" 
accesskey="1">Creation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Renaming" 
accesskey="2">Renaming</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Deletion" 
accesskey="3">Deletion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Modification" 
accesskey="4">Modification</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Location" 
accesskey="5">Location</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Buttons-in-Mail" 
accesskey="6">Buttons in Mail</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Buttons-in-News" 
accesskey="7">Buttons in News</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-</table>
-
-<hr>
-<a name="Creation"></a>
-<div class="header">
-<p>
-Next: <a href="#Renaming" accesskey="n" rel="next">Renaming</a>, Previous: <a 
href="#Utilizing-Explicit-Buttons" accesskey="p" rel="prev">Utilizing Explicit 
Buttons</a>, Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" 
rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
-</div>
-<a name="Creation-1"></a>
-<h4 class="subsection">2.7.1 Creation</h4>
-
-<p>Creating explicit buttons is fun and easy.  You can always try them
-out immediately after creating them or can utilize the Assist Key to
-verify what buttons do.  There are two ways to create them: by
-dragging between windows with the Action Mouse Key or by using the
-Hyperbole menus.
+<p>The variable, <code>browse-url-browser-function</code>, customizes the url
+browser that is used for urls.  Valid values of this variable
+include <code>browse-url-default-browser</code>
+and <code>browse-url-generic</code>.
 </p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#By-Dragging" 
accesskey="1">By Dragging</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">Creation Via Action Key Drags
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#By-Menu" accesskey="2">By 
Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Creation Via 
Menus
-</td></tr>
-</table>
+<a name="index-ibtypes-doc_002did"></a>
+<a name="index-online-library"></a>
+<a name="index-document-identifier"></a>
+</dd>
+<dt><code>doc-id</code></dt>
+<dd><p>Displays an index entry for a site-specific document given its id.
+Ids must be delimited by <code>doc-id-start</code> and <code>doc-id-end</code> 
and
+must match the function given by <code>doc-id-p</code>.  This permits
+creation of catalogued online libraries.  (Note that this implicit
+button type is not installed by default.  You must manually configure
+it and load it from the file, 
<samp><code>${hyperb:dir}</code>/hib-doc-id.el</samp>).
+</p></dd>
+</dl>
 
 <hr>
-<a name="By-Dragging"></a>
+<a name="Button-Files"></a>
 <div class="header">
 <p>
-Next: <a href="#By-Menu" accesskey="n" rel="next">By Menu</a>, Previous: <a 
href="#Creation" accesskey="p" rel="prev">Creation</a>, Up: <a href="#Creation" 
accesskey="u" rel="up">Creation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Action-Types" accesskey="n" rel="next">Action Types</a>, 
Previous: <a href="#Implicit-Buttons" accesskey="p" rel="prev">Implicit 
Buttons</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Creation-Via-Action-Key-Drags"></a>
-<h4 class="subsubsection">2.7.1.1 Creation Via Action Key Drags</h4>
+<a name="Button-Files-1"></a>
+<h3 class="section">3.4 Button Files</h3>
 
-<a name="index-explicit-button_002c-creation"></a>
-<a name="index-button_002c-creation"></a>
-<a name="index-link_002c-creation"></a>
-<a name="index-drag"></a>
-<a name="index-Action-Key-drag"></a>
-<a name="index-creating-a-link"></a>
-<a name="index-mouse-drag_002c-link-creation"></a>
-<a name="index-direct-link-creation"></a>
-<p>The most efficient way to create an explicit link button interactively
-is to use the Action Mouse Key to drag from a button source window to
-a window showing its link referent.  More specifically, you should
-split your current Emacs frame into two windows: one which contains
-the point at which you want a button to be inserted and another which
-shows the point to which you want to link.  Depress the Action Mouse
-Key at the source point for the button (anywhere but on a paired
-delimiter such as double quotes or parentheses).  Then drag to the
-other window and release the Action Mouse Key at the start point of
-the link referent.  The process becomes quite simple with a little
-practice. (See <a href="#By-Menu">Creation Via Menus</a>, for a more detailed
-explanation of the explicit button creation process).
+<a name="index-button-files"></a>
+<p>It is often convenient to create files filled with buttons as a means
+of navigating distributed information pools or for other purposes.
+These files can also serve as useful roadmaps that guide a user
+through both unfamiliar and highly familiar information spaces.  Files
+that are created specifically for this purpose are
+called <em>Hyperbole button files</em>.
 </p>
-<p>If a region was selected prior to the start of the drag, it is used as
-the button label, otherwise, you are prompted for the label.  Then
-Hyperbole uses the link referent context to determine the type of link
-to make.  If there are a few different types of links which are
-applicable from the context, you will be prompted with a list of the
-types.  Simply use the Action Key or the first letter of the link type
-to select one of the type names and to finish the link creation.
-Hyperbole will then insert explicit button delimiters around the
-button label and will display a message in the minibuffer indicating
-the button label, its action/link type, and any arguments, notably the
-thing to which it links.
+<a name="index-hbmap_003afilename"></a>
+<a name="index-button-file_002c-personal"></a>
+<a name="index-button-file_002c-directory"></a>
+<p>The Hyperbole menu system provides quick access to two types of these
+button files: personal and directory-specific, through the ButFile menu.
+(The variable, <code>hbmap:filename</code>, contains the base name of these
+button files.  Its standard value is <samp>HYPB</samp>.)
 </p>
-<p>The following table shows the type of link that will be created based
-upon the referent context in which the Action Key is released.
+<a name="index-dir_002c-_007e_002f_002ehyperb"></a>
+<a name="index-hbmap_003adir_002duser"></a>
+<a name="index-global-button-2"></a>
+<p>A personal button file may serve as a user&rsquo;s own roadmap to frequently
+used resources, like a personal home page.  Selection of the
+ButFile/PersonalFile menu item, <kbd>{C-h h b p}</kbd>, displays this file for
+editing.  The default personal button file is stored within the
+directory given by the <code>hbmap:dir-user</code> variable whose standard
+value is <samp>~/.hyperb</samp>.  The default Hyperbole configuration also
+appends all global buttons to the end of this file, one per line, as
+they are created.  So you can edit or annotate them within the file.
 </p>
-<div class="format">
-<div class="example">
-<pre class="example">Referent Context         Link Type
-----------------------------------------------------
-Explicit Button          link-to-ebut
-Info Index Item          link-to-Info-index-item
-Info Node                link-to-Info-node
-Mail Reader Message      link-to-mail
-Directory Name           link-to-directory
-File Name                link-to-file
-Koutline Cell            link-to-kcell
-Outline Heading          link-to-string-match
-Buffer attached to File  link-to-file
-Buffer without File      link-to-buffer-tmp
-</pre></div>
-</div>
-
-<a name="index-M_002do"></a>
-<a name="index-C_002du-M_002do"></a>
-<a name="index-C_002dx-o"></a>
-<a name="index-hkey_002doperate"></a>
-<a name="index-Action-Key-drag-emulation"></a>
-<a name="index-keyboard-drag-emulation"></a>
-<p>If you run Emacs under a window system and there is no prior key
-binding on <kbd>{M-o}</kbd> when you load Hyperbole, then you can emulate
-an Action Key drag from the keyboard by typing <kbd>{M-o}</kbd>, the
-<code>hkey-operate</code> command, at the button source location, moving
-to the link destination, e.g. with <kbd>{C-x o}</kbd>, and then typing
-<kbd>{M-o}</kbd> again.  This simulates a depress and then release of the
-Action Key.  <kbd>{C-u M-o}</kbd> emulates drags of the Assist Key.
-This will not work when Hyperbole is run from a dumb terminal Emacs
-session since drag actions are not supported without a window system.
+<p>A directory-specific button file may exist for each file system
+directory.  Such files are useful for explaining the contents of
+directories and pointing readers to particular highlights within the
+directories.  Selection of the ButFile/DirFile menu item, <kbd>{C-h h
+b d}</kbd>, displays the button file for the current directory; this
+provides an easy means of updating this file when working on a file
+within the same directory.  If you want to view some other
+directory-specific button file, simply use the normal Emacs file
+finding commands.
+</p>
+<p>One might suggest that quick menu access be provided for group-specific
+and site-specific button files.  Instead, link buttons to such things
+should be placed at the top of your personal button file.  This provides
+a more flexible means of connecting to such resources.
 </p>
 <hr>
-<a name="By-Menu"></a>
+<a name="Action-Types"></a>
 <div class="header">
 <p>
-Previous: <a href="#By-Dragging" accesskey="p" rel="prev">By Dragging</a>, Up: 
<a href="#Creation" accesskey="u" rel="up">Creation</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Button-Type-Precedence" accesskey="n" rel="next">Button Type 
Precedence</a>, Previous: <a href="#Button-Files" accesskey="p" 
rel="prev">Button Files</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Creation-Via-Menus"></a>
-<h4 class="subsubsection">2.7.1.2 Creation Via Menus</h4>
+<a name="Action-Types-1"></a>
+<h3 class="section">3.5 Action Types</h3>
 
-<p>You may instead use the Hyperbole menus to create explicit buttons.
-First, mark a short region of text in any fashion allowed by Emacs
-and then select the Hyperbole menu item sequence, Ebut/Create.  You will
-be prompted for the button&rsquo;s label with the marked region as the
-default.  If you accept the default and enter the rest of the
-information you are prompted for, the button will be created within the
-current buffer and Hyperbole will surround the marked region with
-explicit button delimiters to indicate success.
+<a name="index-action-type"></a>
+<a name="index-argument_002c-use"></a>
+<a name="index-action"></a>
+<a name="index-button-action"></a>
+<p><em>Action types</em> are special functions that specify Hyperbole button
+behaviors.  Each action type may be used by any category of button:
+global, explicit, or implicit.  The arguments needed by an action type
+are prompted for at button creation time or in the case of an implicit
+button, computed when the button is activated.  During button
+activation, the arguments are fed to the action type&rsquo;s body to achieve
+the desired result.  This body is called the button <em>action</em>.
 </p>
-<p>If you do not mark a region before invoking the button create command,
-you will be prompted for both a label and a target buffer for the button
-and the delimited label text will be inserted into the target buffer
-after a successful button creation.
+<p>Hyperbole handles all of this processing transparently.  As a user, all
+you need know is the set of action types that you can work with when
+creating explicit or global buttons.
 </p>
-<p>After Hyperbole has the button label and its target buffer, it will
-prompt you for an action type for the button.  Use the <kbd>{?}</kbd>
-completion list key to see the available types.  The type selected
-determines any following values for which you are prompted.
+<a name="index-actypes_002c-list-of"></a>
+<p>The standard action types included with Hyperbole in alphabetical order
+are:
 </p>
-<a name="index-button-instance"></a>
-<a name="index-instance-number"></a>
-<p>If a previous button with the same label exists in the same buffer,
-Hyperbole will add an <em>instance number</em> to the label when it adds
-the delimiters so that the name is unique.  Thus, you don&rsquo;t have to
-worry about accidental button name conflicts.  If you want the same
-button to appear in multiple places within the buffer, just enter the
-label again and delimit it yourself or copy and paste the button with
-its delimiters.  Hyperbole will interpret all occurrences of the same
-delimited label within a buffer as the same button.
+<dl compact="compact">
+<dd><a name="index-actypes-annot_002dbib"></a>
+</dd>
+<dt><code>annot-bib</code></dt>
+<dd><p>Follows an internal reference KEY within an annotated bibliography,
+delimiters = [ ].
 </p>
-<a name="index-link_002c-creation-1"></a>
-<p>If you create link buttons using the Hyperbole menus, the best
-technique is to place on screen both the source buffer for the button
-and the buffer to which it will link.  Mark the region of text to use
-as your button label, invoke the button create command from the menu,
-choose an action type which begins with <code>link-to-</code> and then use
-the direct selection techniques mentioned in <a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a>, to 
select the link referent.
+<a name="index-actypes-completion"></a>
+</dd>
+<dt><code>completion</code></dt>
+<dd><p>Inserts a completion at point into the minibuffer or a buffer.
+Unless point is at the end of buffer or if a completion has already been 
+inserted, in which case the completions window is deleted.
 </p>
-
-<hr>
-<a name="Renaming"></a>
-<div class="header">
-<p>
-Next: <a href="#Deletion" accesskey="n" rel="next">Deletion</a>, Previous: <a 
href="#Creation" accesskey="p" rel="prev">Creation</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Renaming-1"></a>
-<h4 class="subsection">2.7.2 Renaming</h4>
-
-<a name="index-explicit-button_002c-renaming"></a>
-<a name="index-button_002c-renaming"></a>
-<p>Once an explicit button has been created, its label text must be
-treated specially.  Any inter-word spacing within the label may be
-freely changed, as may happen when a paragraph is refilled, but a
-special command must be invoked to rename it.
+<a name="index-actypes-eval_002delisp"></a>
+</dd>
+<dt><code>eval-elisp</code></dt>
+<dd><p>Evaluates a Lisp expression LISP-EXPR.
+</p>
+<a name="index-actypes-exec_002dkbd_002dmacro"></a>
+</dd>
+<dt><code>exec-kbd-macro</code></dt>
+<dd><p>Executes a KBD-MACRO REPEAT-COUNT times.  KBD-MACRO may be a string of
+editor command characters, a function symbol or nil to use the last
+defined keyboard macro.  Optional REPEAT-COUNT nil means execute once,
+zero means repeat until error.
+</p>
+<a name="index-actypes-exec_002dshell_002dcmd"></a>
+</dd>
+<dt><code>exec-shell-cmd</code></dt>
+<dd><p>Executes a SHELL-CMD string asynchronously.  Optional non-nil second
+argument INTERNAL-CMD inhibits display of the shell command line
+executed.  Optional non-nil third argument KILL-PREV means kill the last
+output to the shell buffer before executing SHELL-CMD.
+</p>
+<a name="index-actypes-exec_002dwindow_002dcmd"></a>
+</dd>
+<dt><code>exec-window-cmd</code></dt>
+<dd><p>Asynchronously executes an external window-based SHELL-CMD string.
+</p>
+<a name="index-actypes-function_002din_002dbuffer"></a>
+</dd>
+<dt><code>function-in-buffer</code></dt>
+<dd><p>Displays the definition of function NAME found at POS in the current 
buffer.
+</p>
+<a name="index-actypes-hyp_002dconfig"></a>
+</dd>
+<dt><code>hyp-config</code></dt>
+<dd><p>Inserts Hyperbole configuration and debugging information at the end
+of the current buffer or within optional OUT-BUF.
+</p>
+<a name="index-actypes-hyp_002drequest"></a>
+</dd>
+<dt><code>hyp-request</code></dt>
+<dd><p>Inserts help for composing a Hyperbole support/discussion message into
+the current buffer or the optional OUT-BUF.
+</p>
+<a name="index-actypes-hyp_002dsource"></a>
+</dd>
+<dt><code>hyp-source</code></dt>
+<dd><p>Displays a buffer or file from a line beginning with
+<code>hbut:source-prefix</code>.
+</p>
+<a name="index-actypes-kbd_002dkey"></a>
+</dd>
+<dt><code>kbd-key</code></dt>
+<dd><p>Executes the function binding for KEY-SEQUENCE, delimited by {}.
+Returns &lsquo;<samp>t</samp>&rsquo; if a KEY-SEQUENCE has a binding, else 
&lsquo;<samp>nil</samp>&rsquo;.
 </p>
-<p>The rename command operates in two different ways.  If point is within
-a button label when it is invoked, it will tell you to edit the button
-label and then to invoke the rename command again after the edit.  The
-second invocation will actually rename the button.  If instead the
-command is originally invoked outside of any explicit button, it will
-prompt for the button label to replace and the label to replace it
-with and then will perform the renaming.  All occurrences of the same
-button in the buffer will be renamed.
+<a name="index-link-action-types"></a>
+<a name="index-actypes-link_002dto_002dbuffer_002dtmp"></a>
+</dd>
+<dt><code>link-to-buffer-tmp</code></dt>
+<dd><p>Displays a BUFFER.  This type of link generally can
+only be used within a single editor session.  Use <code>link-to-file</code>
+instead for a permanent link.
 </p>
-<a name="index-file_002c-_002eemacs"></a>
-<a name="index-file_002c-hyperbole_002eel"></a>
-<a name="index-C_002dc-C_002dr"></a>
-<a name="index-hui_003aebut_002drename"></a>
-<p>The rename command may be invoked from the Hyperbole menu via
-Ebut/Rename.  A faster method is to use a key bound to the
-<code>hui:ebut-rename</code> command.  Hyperbole typically binds this to
-<kbd>{C-c C-r}</kbd>.  <kbd>{C-h w hui:ebut-rename <span 
class="key">RET</span>}</kbd> will show
-what if any key runs it.  If no key binding has been established or if
-you prefer one of your own, simply bind it within your <samp>~/.emacs</samp>
-file: <code>(global-set-key &quot;\C-c\C-r&quot; 'hui:ebut-rename)</code>.
+<a name="index-actypes-link_002dto_002ddirectory"></a>
+</dd>
+<dt><code>link-to-directory</code></dt>
+<dd><p>Displays a DIRECTORY in Dired mode.
 </p>
-
-<hr>
-<a name="Deletion"></a>
-<div class="header">
-<p>
-Next: <a href="#Modification" accesskey="n" rel="next">Modification</a>, 
Previous: <a href="#Renaming" accesskey="p" rel="prev">Renaming</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Deletion-1"></a>
-<h4 class="subsection">2.7.3 Deletion</h4>
-
-<a name="index-explicit-button_002c-deleting"></a>
-<a name="index-button_002c-deleting"></a>
-<p>Ebut/Delete works similarly to the Rename command but deletes the
-selected button.  The button&rsquo;s delimiters are removed to confirm the
-deletion.  If the delete command is invoked with a prefix argument, then
-both the button label and the delimiters are removed as confirmation.
+<a name="index-actypes-link_002dto_002ddoc"></a>
+</dd>
+<dt><code>link-to-doc</code></dt>
+<dd><p>Displays an online version of a document given by DOC-ID.  If the online
+version of a document is not found in <code>doc-id-indices</code>, an error is
+signalled.
 </p>
-<a name="index-hui_003aebut_002ddelete_002dconfirm_002dp"></a>
-<p>Presently there is no way to recover a deleted button; it must
-be recreated.  Therefore, the <code>hui:ebut-delete-confirm-p</code> variable
-is true by default, causing Hyperbole to require confirmation before
-interactively deleting explicit buttons.  Set it to 
&lsquo;<samp>nil</samp>&rsquo; if you
-prefer no confirmation.
+<a name="index-actypes-link_002dto_002debut"></a>
+</dd>
+<dt><code>link-to-ebut</code></dt>
+<dd><p>Performs an action given by another button, specified by KEY and 
KEY-FILE.
 </p>
-<hr>
-<a name="Modification"></a>
-<div class="header">
-<p>
-Next: <a href="#Location" accesskey="n" rel="next">Location</a>, Previous: <a 
href="#Deletion" accesskey="p" rel="prev">Deletion</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Modification-1"></a>
-<h4 class="subsection">2.7.4 Modification</h4>
-
-<a name="index-explicit-button_002c-modifying"></a>
-<a name="index-button_002c-modifying"></a>
-<a name="index-Smart-Mouse-Key-drag"></a>
-<a name="index-button_002c-attributes"></a>
-<p>Ebut/Modify prompts you with each of the elements from the button&rsquo;s
-attributes list and allows you to modify each in turn.  Ebut/Edit does
-the exact same thing and is there for people who prefer that term.
+<a name="index-actypes-link_002dto_002delisp_002ddoc"></a>
+</dd>
+<dt><code>link-to-elisp-doc</code></dt>
+<dd><p>Displays the documentation for FUNC-SYMBOL.
 </p>
-<p>There is a quicker way to modify explicit link buttons, however.  Simply
-drag with the Action Mouse Key from within the button label to a link
-destination in a different window, just as you would when creating a new
-button with a mouse drag.  Remember that drags may also be emulated from
-the keyboard.  See <a href="#Creation">Creation</a>.
+<a name="index-actypes-link_002dto_002dfile"></a>
+</dd>
+<dt><code>link-to-file</code></dt>
+<dd><p>Displays file given by PATH scrolled to optional POINT.  With POINT,
+buffer is displayed with POINT at window top.
 </p>
-<hr>
-<a name="Location"></a>
-<div class="header">
-<p>
-Next: <a href="#Buttons-in-Mail" accesskey="n" rel="next">Buttons in Mail</a>, 
Previous: <a href="#Modification" accesskey="p" rel="prev">Modification</a>, 
Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing 
Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Location-1"></a>
-<h4 class="subsection">2.7.5 Location</h4>
-
-<a name="index-explicit-button_002c-summarizing"></a>
-<a name="index-button_002c-summarizing"></a>
-<a name="index-button_002c-help"></a>
-<p>The Ebut/Help menu may be used to summarize either a single explicit
-button or all such buttons within a buffer.  The buttons summarized may
-then be activated directly from the summary.
+<a name="index-actypes-link_002dto_002dfile_002dline"></a>
+</dd>
+<dt><code>link-to-file-line</code></dt>
+<dd><p>Displays a file given by PATH scrolled to LINE-NUM.
 </p>
-<p>Ebut/Help/BufferButs summarizes the explicit buttons in the order in
-which they appear in the buffer.  Ebut/Help/CurrentBut summarizes only
-the button at point.  Ebut/Help/OrderedButs summarizes the buttons in
-alphabetical order.  All of these summary commands eliminate duplicate
-occurrences of buttons from their help displays.
+<a name="index-actypes-link_002dto_002dInfo_002dindex_002ditem"></a>
+</dd>
+<dt><code>link-to-Info-index-item</code></dt>
+<dd><p>Displays an Info index ITEM cross-reference.
+ITEM must be a string of the form (filename)item-name.  During
+button creation, completion for both filename and item-name is
+available.  Filename may be given without the .info suffix.&quot;
 </p>
-<a name="index-explicit-button_002c-searching"></a>
-<a name="index-button_002c-searching"></a>
-<p>Ebut/Search prompts for a search pattern and searches across all the
-locations in which you have previously created explicit buttons.  It
-asks you whether to match to any part of a button label or to whole
-labels only.  It then displays a list of button matches with a single
-line of surrounding context from their sources.  Any button in the match
-list may be activated as usual.  An Action Key press on the surrounding
-context jumps to the associated source line.  A press on the filename
-preceding the matches jumps to the file without selecting a particular
-line.
+<a name="index-actypes-link_002dto_002dInfo_002dnode"></a>
+</dd>
+<dt><code>link-to-Info-node</code></dt>
+<dd><p>Displays an Info NODE.  NODE must be a string of the form
+(filename)nodename.  During button creation, completion for both
+filename and nodename is available.  Filename may be given without the
+.info suffix.
 </p>
-<p>There are presently no user-level facilities for globally locating
-buttons created by others or for searching on particular button
-attributes.
+<a name="index-actypes-link_002dto_002dkcell"></a>
+<a name="index-kcell_003aref_002dto_002did"></a>
+</dd>
+<dt><code>link-to-kcell</code></dt>
+<dd><p>Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
+top of a window.  See the documentation for <code>(kcell:ref-to-id)</code> for
+valid CELL-REF formats.
 </p>
-<hr>
-<a name="Buttons-in-Mail"></a>
-<div class="header">
-<p>
-Next: <a href="#Buttons-in-News" accesskey="n" rel="next">Buttons in News</a>, 
Previous: <a href="#Location" accesskey="p" rel="prev">Location</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
-</div>
-<a name="Buttons-in-Mail-1"></a>
-<h4 class="subsection">2.7.6 Buttons in Mail</h4>
+<p>If FILE is &lsquo;<samp>nil</samp>&rsquo;, the current buffer is used.  If 
CELL-REF is
+&lsquo;<samp>nil</samp>&rsquo;, the first cell in the view is shown.
+</p>
+<a name="index-actypes-link_002dto_002dkotl"></a>
+</dd>
+<dt><code>link-to-kotl</code></dt>
+<dd><p>Displays at the top of a window the referent pointed to by LINK.
+LINK may be of any of the following forms, with or without delimiters:
+</p><div class="example">
+<pre class="example">  &lt; pathname [, cell-ref] &gt;
+  &lt; [-!&amp;] pathname &gt;
+  &lt; @ cell-ref &gt;
+</pre></div>
 
-<a name="index-C_002dx-m"></a>
-<a name="index-mail"></a>
-<a name="index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts"></a>
-<p>Hyperbole supports embedding buttons within electronic mail messages
-composed in Emacs or InfoDock.  An enhanced mail reader may then be used
-to activate the buttons within messages just like any other buttons.
-Because this involves complex changes to mail support functions, this
-feature is disabled by default.  Use the Cust/Msg-Toggle-Ebuts
-minibuffer menu item to enable it.
+<p>See the documentation for <code>(kcell:ref-to-id)</code> for valid cell-ref
+formats.
 </p>
-<a name="index-button_002c-mailing"></a>
-<a name="index-button_002c-posting"></a>
-<a name="index-mailing-buttons"></a>
-<a name="index-posting-buttons"></a>
-<a name="index-mail-reader"></a>
-<a name="index-mailer-initialization"></a>
-<a name="index-Rmail"></a>
-<a name="index-VM"></a>
-<a name="index-MH_002de"></a>
-<a name="index-Gnus"></a>
-<a name="index-USENET"></a>
-<a name="index-news"></a>
-<a name="index-file_002c-hmail_002eel"></a>
-<p>Hyperbole automatically supports the following mail readers: Rmail
-(see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Rmail";>Reading
 Mail with Rmail</a> in <cite>the GNU Emacs Manual</cite>), VM
-(see <a href="vm.html#Introduction">Introduction</a> in <cite>the VM 
Manual</cite>) and MH-e.  Button inclusion
-and activation within USENET news articles is also supported in the
-same fashion via the Gnus news reader if available at your site
-(see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/gnus.html#Top";>The 
Gnus Newsreader</a> in <cite>the Gnus Manual</cite>).
-(The <samp>hmail.el</samp> file defines a generalized interface that can be
-used to hook in other mail or news readers if the necessary interface
-functions are written.)
+<a name="index-actypes-link_002dto_002dmail"></a>
+</dd>
+<dt><code>link-to-mail</code></dt>
+<dd><p>Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE.  See
+the documentation for the variable <code>hmail:init-function</code> for
+information on how to specify the mail reader to use.
 </p>
-<a name="index-mail_002dyank_002doriginal"></a>
-<a name="index-C_002dc-C_002dy"></a>
-<a name="index-mail-inclusion"></a>
-<p>All explicit buttons to be mailed must be created within the outgoing
-message buffer. There is no present support for including text from
-other buffers or files which contain explicit buttons, except for the
-ability to yank the contents of a message being replied to, together
-with all of its buttons, via the <code>(mail-yank-original)</code> command
-bound to <kbd>{C-c C-y}</kbd>.  From a user&rsquo;s perspective, buttons are
-created in precisely the same way as in any other buffer.  They also
-appear just like any other buttons to both the message sender and the
-reader who uses the Hyperbole enhanced readers.  Button operation may be
-tested any time before a message is sent.  A person who does not use
-Hyperbole enhanced mail readers can still send messages with embedded
-buttons since mail composing is independent of any mail reader
-choice.
+<a name="index-actypes-link_002dto_002dregexp_002dmatch"></a>
+</dd>
+<dt><code>link-to-regexp-match</code></dt>
+<dd><p>Finds REGEXP&rsquo;s Nth occurrence in SOURCE and displays the location 
at the
+top of the selected window.  SOURCE is a pathname unless optional
+BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
+Returns &lsquo;<samp>t</samp>&rsquo; if found, signals an error if not.
 </p>
-<p>Hyperbole buttons embedded within received mail messages behave as do
-any other buttons.  The mail does not contain any of the action type
-definitions used by the buttons, so the receiver must have these or
-she will receive an error when she activates the buttons.  Buttons
-which appear in message <em>Subject</em> lines are copied to summary
-buffers whenever such summaries are generated.  Thus, they may be
-activated from either the message or the summary buffers.
+<a name="index-actypes-link_002dto_002drfc"></a>
+</dd>
+<dt><code>link-to-rfc</code></dt>
+<dd><p>Retrieves and displays an Internet rfc given by RFC-NUM.  RFC-NUM may be
+a string or an integer.  Requires a remote file access library, such as
+Tramp, for ftp file retrievals.
 </p>
-<p>Nothing bad will happen if a mail message with explicit buttons is sent
-to a non-Hyperbole user.  The user will simply see the text
-of the message followed by a series of lines of button data at its end.
-Hyperbole mail users never see this data in its raw form.
+<a name="index-actypes-link_002dto_002dstring_002dmatch"></a>
+</dd>
+<dt><code>link-to-string-match</code></dt>
+<dd><p>Finds STRING&rsquo;s Nth occurrence in SOURCE and displays the location 
at the
+top of the selected window.  SOURCE is a pathname unless optional
+BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
+Returns &lsquo;<samp>t</samp>&rsquo; if found, &lsquo;<samp>nil</samp>&rsquo; 
if not.
+</p>
+<a name="index-actypes-link_002dto_002dtexinfo_002dnode"></a>
+</dd>
+<dt><code>link-to-texinfo-node</code></dt>
+<dd><p>Displays the Texinfo node with NODENAME (a string) from the current 
buffer.
 </p>
-<a name="index-smail_003acomment"></a>
-<a name="index-mail-comment"></a>
-<a name="index-Hyperbole-mail-comment"></a>
-<p>In order to alert readers of your mail messages that you can handle
-Hyperbole mail buttons, you can set the variable, <code>smail:comment</code>,
-to an expression that automatically inserts a comment into each
-outgoing message to announce this fact.  See its documentation for
-technical details.  By default, no comment is added.  To have a
-comment line added to your outgoing message, add the following to
-to your <samp>~/.emacs</samp> file before the point at which you load
-Hyperbole.
+<a name="index-actypes-link_002dto_002dweb_002dsearch"></a>
+<a name="index-link_002c-web-search"></a>
+<a name="index-web-search-link"></a>
+</dd>
+<dt><code>link-to-web-search</code></dt>
+<dd><p>Searches web SERVICE-NAME for SEARCH-TERM.  Uses 
<code>hyperbole-web-search-alist</code>
+to match each service to its search url.  Uses 
<code>hyperbole-web-search-browser-function</code>
+and the <code>browse-url</code> package to display search results.
 </p>
-<div class="smalllisp">
-<pre class="smalllisp">(setq smail:comment
- (format &quot;Comments: GNU Hyperbole mail buttons accepted, v%s.\n&quot;
-          hyperb:version))
-</pre></div>
-
-<p>This will produce the following line in outgoing messages:
+<a name="index-actypes-man_002dshow"></a>
+<a name="index-sm_002dnotify"></a>
+</dd>
+<dt><code>man-show</code></dt>
+<dd><p>Displays a man page on TOPIC, which may be of the form
+&lsquo;<samp>&lt;command&gt;(&lt;section&gt;</samp>&rsquo;).  If using the 
Superman manual entry
+package, see the documentation for <code>sm-notify</code> to control where the
+man page is displayed.
 </p>
-<div class="example">
-<pre class="example">Comments: GNU Hyperbole mail buttons accepted, vX.XX.
-</pre></div>
-
-<a name="index-file_002c-_002eemacs-1"></a>
-<p>where the X&rsquo;s indicate your Hyperbole version number.  You can cut
-this out of particular messages before you send them when need be.
+<a name="index-actypes-rfc_002dtoc"></a>
+</dd>
+<dt><code>rfc-toc</code></dt>
+<dd><p>Computes and displays a summary of an Internet rfc in BUF-NAME.  Assumes
+point has already been moved to the start of the region to summarize.
+Optional OPOINT is the point to return to in BUF-NAME after displaying
+the summary.
 </p>
-<a name="index-actype_002c-link_002dto_002dmail"></a>
-<p>A final mail-related facility provided by Hyperbole is the ability to
-save a pointer to a received mail message by creating an explicit button
-with a <code>link-to-mail</code> action type.  When prompted for the mail
-message to link to, if you press the Action Key within the message, the
-appropriate link parameters will be copied to the argument prompt, as
-described in <a href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a>.
+<a name="index-actypes-text_002dtoc"></a>
+<a name="index-table-of-contents-2"></a>
+<a name="index-toc-action-type"></a>
+</dd>
+<dt><code>text-toc</code></dt>
+<dd><p>Jumps to the text file SECTION referenced by a table of contents entry
+at point.
 </p>
+<a name="index-actypes-www_002durl"></a>
+<a name="index-URL-1"></a>
+<a name="index-World_002dwide-Web-1"></a>
+<a name="index-WWW-1"></a>
+<a name="index-browse_002durl_002dbrowser_002dfunction-2"></a>
+</dd>
+<dt><code>www-url</code></dt>
+<dd><p>Follows a link given by a URL.  The variable,
+<code>browse-url-browser-function</code>, customizes the url browser
+that is used.  See its documentation string for details.
+</p></dd>
+</dl>
 
+<a name="index-action-1"></a>
+<a name="index-hui_003aebut_002dprompt_002dfor_002daction"></a>
+<p>Action types create a convenient way of specifying button behavior
+without the need to know how to program.  Expert users who are familiar
+with Emacs Lisp, however, may find that they often want to tailor button
+actions in a variety of ways not easily captured within a type system.
+In such cases, <code>hui:ebut-prompt-for-action</code> should be set to
+&lsquo;<samp>t</samp>&rsquo;.  This will cause Hyperbole to prompt for an 
action to override
+the button&rsquo;s action type at each explicit button creation.  For those 
cases
+where the action type is sufficient, a &lsquo;<samp>nil</samp>&rsquo; value 
should be
+entered for the action.  An action may be any Lisp form that Emacs
+Lisp can evaluate.
+</p>
 <hr>
-<a name="Buttons-in-News"></a>
+<a name="Button-Type-Precedence"></a>
 <div class="header">
 <p>
-Previous: <a href="#Buttons-in-Mail" accesskey="p" rel="prev">Buttons in 
Mail</a>, Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" 
rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Utilizing-Explicit-Buttons" accesskey="n" rel="next">Utilizing 
Explicit Buttons</a>, Previous: <a href="#Action-Types" accesskey="p" 
rel="prev">Action Types</a>, Up: <a href="#Buttons" accesskey="u" 
rel="up">Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Buttons-in-News-1"></a>
-<h4 class="subsection">2.7.7 Buttons in News</h4>
+<a name="Button-Type-Precedence-1"></a>
+<h3 class="section">3.6 Button Type Precedence</h3>
 
-<a name="index-button_002c-posting-1"></a>
-<a name="index-news-reader_002fposter"></a>
-<a name="index-posting-news"></a>
-<a name="index-Gnus-1"></a>
-<a name="index-USENET-1"></a>
-<a name="index-file_002c-hyperbole_002eel-1"></a>
-<a name="index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts-1"></a>
-<p>Explicit buttons may be embedded within outgoing USENET news articles
-and may be activated from within the Gnus news reader.  Because this
-involves complex changes to news support functions, this feature is
-disabled by default.  Use the Cust/Msg-Toggle-Ebuts minibuffer menu
-item to enable it (enabling it for mail also enables it for news and
-vice versa).
-</p>
-<p>Once enabled, all Hyperbole support should work just as it does when
-reading or sending mail.  See <a href="#Buttons-in-Mail">Buttons in Mail</a>.  
When reading news,
-buttons which appear in message <em>Subject</em> lines may be activated
-within the Gnus subject buffer as well as the article buffer.  When
-posting news, the *post-news* buffer is used for outgoing news
-articles rather than a mail-related buffer.
+<a name="index-button-precedence"></a>
+<a name="index-button-label-overlap"></a>
+<p>Explicit buttons always take precedence over implicit buttons.  Thus, if
+a button selection is made which falls within both an explicit and
+implicit button, only the explicit button will be selected.  Explicit
+button labels are not allowed to overlap; Hyperbole&rsquo;s behavior in such
+cases is undefined.
 </p>
-<p>Remember that the articles you post do not contain the action type
-definitions used by the buttons, so the receiver must have these or she
-will receive an error when she activates the buttons.  You should also
-keep in mind that most USENET readers will not be using Hyperbole, so if
-they receive a news article containing explicit buttons, they will
-wonder what the button data at the end of the message is.  You should
-therefore limit distribution of such messages.  For example, if most
-people at your site read news with Gnus and use Hyperbole, it would be
-reasonable to embed buttons in postings to local newsgroups.
+<a name="index-ibtype_002c-evaluation-order"></a>
+<p>If there is no explicit button at point during a selection request,
+then each implicit button type predicate is tested in turn until one
+returns non-nil or all are exhausted.  Since two implicit button types
+may have overlapping <em>domains</em>, those contexts in which their
+predicates are true, only the first matching type is used.  The type
+predicates are tested in <em>reverse</em> order of definition, i.e.
+most recently entered types are tested first, so that personal types
+defined after standard system types take precedence.  It is important
+to keep this order in mind when defining new implicit button types.
+By making match predicates as specific as possible, one can minimize
+any overlapping implicit button domains.
 </p>
-<a name="index-news-comment"></a>
-<p>In order to alert readers of your postings that they may send you
-personal replies with embedded Hyperbole buttons, the system inserts
-into news postings the same comment that is included within mail
-messages, if enabled.  See <a href="#Buttons-in-Mail">Buttons in Mail</a>, for 
details and an
-explanation of how to turn this feature on.
+<a name="index-type-redefinition"></a>
+<p>Once a type name is defined, its precedence relative to other types
+remains the same even if its body is redefined, as long as its name is
+not changed.  This allows incremental modifications to types without
+any worry of altering their precedences.  See <a 
href="#Creating-Types">Creating Types</a>, for
+information on how to develop or modify types.
 </p>
-
 <hr>
-<a name="Smart-Keys"></a>
+<a name="Utilizing-Explicit-Buttons"></a>
 <div class="header">
 <p>
-Next: <a href="#Menus" accesskey="n" rel="next">Menus</a>, Previous: <a 
href="#Buttons" accesskey="p" rel="prev">Buttons</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Previous: <a href="#Button-Type-Precedence" accesskey="p" rel="prev">Button 
Type Precedence</a>, Up: <a href="#Buttons" accesskey="u" rel="up">Buttons</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Keys-1"></a>
-<h2 class="chapter">3 Smart Keys</h2>
+<a name="Utilizing-Explicit-Buttons-1"></a>
+<h3 class="section">3.7 Utilizing Explicit Buttons</h3>
 
-<a name="index-Smart-Key"></a>
-<a name="index-mouse-support"></a>
-<a name="index-Action-Key"></a>
-<a name="index-Assist-Key"></a>
-<a name="index-middle-mouse-key"></a>
-<a name="index-hmouse_002dmiddle_002dflag"></a>
-<a name="index-Action-Key-1"></a>
-<a name="index-Assist-Key-1"></a>
-<p>Hyperbole offers two special <em>Smart Keys</em>, the Action Key and the
-Assist Key, that perform an extensive array of context-sensitive
-operations across emacs usage.  In many popular modes, they allow you
-to perform common, sometimes complex operations without having to a
-different key for each operation.  Just press a Smart Key and the
-right thing happens.  This chapter explains typical uses of the Smart
-Keys.  See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for 
complete descriptions of their
-behavior in all contexts.
+<p>Explicit buttons are a fundamental building block for creating personal
+or organizational hypertext networks with Hyperbole.  This section
+summarizes the user-level operations available for managing these
+buttons.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Bindings" 
accesskey="1">Smart Key Bindings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Creation" 
accesskey="1">Creation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Operations" 
accesskey="2">Smart Key Operations</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Renaming" 
accesskey="2">Renaming</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modeline" 
accesskey="3">Smart Key Modeline</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Deletion" 
accesskey="3">Deletion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Thing-Selection" 
accesskey="4">Smart Key Thing Selection</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Modification" 
accesskey="4">Modification</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-Argument-Selection" accesskey="5">Smart Key Argument 
Selection</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Location" 
accesskey="5">Location</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Modifiers" 
accesskey="6">Smart Key Modifiers</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Buttons-in-Mail" 
accesskey="6">Buttons in Mail</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-Debugging" 
accesskey="7">Smart Key Debugging</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Buttons-in-News" 
accesskey="7">Buttons in News</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="Smart-Key-Bindings"></a>
+<a name="Creation"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Operations" accesskey="n" rel="next">Smart Key 
Operations</a>, Previous: <a href="#Smart-Keys" accesskey="p" rel="prev">Smart 
Keys</a>, Up: <a href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Renaming" accesskey="n" rel="next">Renaming</a>, Previous: <a 
href="#Utilizing-Explicit-Buttons" accesskey="p" rel="prev">Utilizing Explicit 
Buttons</a>, Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" 
rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Bindings-1"></a>
-<h3 class="section">3.1 Smart Key Bindings</h3>
-
-<a name="index-C_002du-M_002dRET"></a>
-<a name="index-M_002dRET"></a>
-<p>From the keyboard, <kbd>{M-<span class="key">RET</span>}</kbd> is the 
Action Key and <kbd>{C-u
-M-<span class="key">RET</span>}</kbd> is the Assist Key.  These keys allow 
context-sensitive
-operation from any keyboard.
-</p>
-
-<a name="index-shift_002dmiddle-mouse-key"></a>
-<a name="index-shift_002dleft-mouse-key"></a>
-<a name="index-shift_002dright-mouse-key"></a>
-<a name="index-middle-mouse-key-1"></a>
-<a name="index-hmouse_002dmiddle_002dflag-1"></a>
-<p>From the mouse, the <em>Action Key</em> is bound to your shift-middle
-mouse key (or shift-left on a 2-button mouse).  The <em>Assist Key</em>
-is bound to your shift-right mouse key, assuming Hyperbole is run
-under an external window system.  (InfoDock users or those who set the
-variable, <code>hmouse-middle-flag</code>, to &lsquo;<samp>t</samp>&rsquo; 
before loading
-Hyperbole, may also use the middle mouse key as the Action Key).
-</p>
-<a name="index-hmouse_002dadd_002dunshifted_002dkeys"></a>
-<a name="index-unshifted-mouse-bindings"></a>
-<a name="index-unshifted-mouse-keys"></a>
-<a name="index-mouse-keys_002c-unshifted"></a>
-<a name="index-smart-keys_002c-unshifted"></a>
-<p>If you want the middle mouse key as the Action Key and the right mouse
-key as the Assist Key for ease of use,  then within your personal
-<samp>~/.emacs</samp> file, add:
-  <code>(add-hook 'hyperbole-init-hook 'hmouse-add-unshifted-keys)</code>.
-</p>
-<a name="index-key-binding_002c-smart-keys"></a>
-<a name="index-smart-key-commands"></a>
-<a name="index-smart-key-assignments"></a>
-<a name="index-action_002dkey"></a>
-<a name="index-assist_002dkey"></a>
-<a name="index-action_002dmouse_002dkey"></a>
-<a name="index-assist_002dmouse_002dkey"></a>
-<p>If you prefer other key assignments, simply bind the commands
-<code>action-key</code> and <code>assist-key</code> to keyboard keys.
-<code>hkey-either</code> may be used instead if you prefer a single
-key binding for both commands; a prefix argument, such as <kbd>{C-u}</kbd>,
-then invokes <code>assist-key</code>.  You may also bind 
<code>action-mouse-key</code>
-and <code>assist-mouse-key</code> to other mouse keys, if you like, though
-you won&rsquo;t be able to execute drag actions with such key bindings.
-</p>
-<p>Mouse configuration of the Smart Keys is automatic for GNU Emacs under
-Mac OS X, the X Window System and MS Windows, as well as for XEmacs
-and InfoDock under the X window system, assuming your emacs program
-has been built with support for any of these window systems.
-</p>
-<a name="index-file_002c-_002eemacs-2"></a>
-<a name="index-hmouse_002dtoggle_002dbindings"></a>
-<a name="index-mouse-key-toggle"></a>
-<a name="index-Smart-Mouse-Key-toggle"></a>
-<a name="index-C_002dc-t"></a>
-<p>If you ever want to restore the mouse bindings that existed before
-Hyperbole was loaded, use the <code>hmouse-toggle-bindings</code> command.
-It switches between the Hyperbole mouse key bindings and those set
-prior to loading Hyperbole and then back again if invoked once more.
-There is no default key binding for this command; use <kbd>{M-x
-hmouse-toggle-bindings <span class="key">RET</span>}</kbd>.  Alternatively, 
you may select a
-key and bind it as part of any setting of <code>hyperbole-init-hook</code>
-within your personal <samp>~/.emacs</samp> file.  For example, <code>(add-hook
-'hyperbole-init-hook (lambda () (global-set-key &quot;\C-ct&quot;
-'hmouse-toggle-bindings)))</code>.
-</p>
-<a name="index-Paste-Key"></a>
-<a name="index-mouse-paste"></a>
-<a name="index-InfoDock-Action-Key"></a>
-<a name="index-InfoDock-Paste-Key"></a>
-<p>Under InfoDock, the middle mouse key is normally used as the Action Key
-and the meta-middle mouse key is used as the Paste Key.  If you prefer
-that the middle mouse key be used as the Paste Key, then you will want to
-toggle the mouse bindings.  InfoDock includes a built-in way to do this
-via its Options/Mouse/Mouse-Paste-on-Middle-Key menu item.  (Keep in
-mind though that the Action Key will paste any active region within the
-editor when the Action Key is clicked; it will not paste selections from
-other applications).
+<a name="Creation-1"></a>
+<h4 class="subsection">3.7.1 Creation</h4>
+
+<p>Creating explicit buttons is fun and easy.  You can always try them
+out immediately after creating them or can utilize the Assist Key to
+verify what buttons do.  There are two ways to create them: by
+dragging between windows with the Action Mouse Key or by using the
+Hyperbole menus.
 </p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#By-Dragging" 
accesskey="1">By Dragging</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">Creation Via Action Key Drags
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#By-Menu" accesskey="2">By 
Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Creation Via 
Menus
+</td></tr>
+</table>
 
 <hr>
-<a name="Smart-Key-Operations"></a>
+<a name="By-Dragging"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Modeline" accesskey="n" rel="next">Smart Key 
Modeline</a>, Previous: <a href="#Smart-Key-Bindings" accesskey="p" 
rel="prev">Smart Key Bindings</a>, Up: <a href="#Smart-Keys" accesskey="u" 
rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#By-Menu" accesskey="n" rel="next">By Menu</a>, Previous: <a 
href="#Creation" accesskey="p" rel="prev">Creation</a>, Up: <a href="#Creation" 
accesskey="u" rel="up">Creation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Operations-1"></a>
-<h3 class="section">3.2 Smart Key Operations</h3>
+<a name="Creation-Via-Action-Key-Drags"></a>
+<h4 class="subsubsection">3.7.1.1 Creation Via Action Key Drags</h4>
 
-<a name="index-button-activation"></a>
-<a name="index-activation"></a>
-<a name="index-button-help"></a>
-<p>The Action Key generally selects entities, creates links and
-activates buttons.  The Assist Key generally provides help,
-such as reporting on a button&rsquo;s attributes, or serves a complementary
-function to whatever the Action Key does within a context.
+<a name="index-explicit-button_002c-creation"></a>
+<a name="index-button_002c-creation"></a>
+<a name="index-link_002c-creation"></a>
+<a name="index-drag"></a>
+<a name="index-Action-Key-drag"></a>
+<a name="index-creating-a-link"></a>
+<a name="index-mouse-drag_002c-link-creation"></a>
+<a name="index-direct-link-creation"></a>
+<p>The most efficient way to create an explicit link button interactively
+is to use the Action Mouse Key to drag from a non-read-only button
+source window to a window showing its desired link referent.  More
+specifically, you should split your current Emacs frame into two
+windows: one which contains the point at which you want a button to be
+inserted and another which shows the point to which you want to link.
+Depress the Action Mouse Key at the source point for the button
+(anywhere but on a paired delimiter such as double quotes or
+parentheses).  Then drag to the other window and release the Action
+Mouse Key at the start point of the link referent.  The process
+becomes quite simple with a little practice. (See <a href="#By-Menu">Creation
+Via Menus</a>, for a more detailed explanation of the explicit button
+creation process).
 </p>
-<a name="index-Smart-Key-operation"></a>
-<a name="index-menu-item_002c-Doc_002fSmartKeys"></a>
-<a name="index-Smart-Key-summary"></a>
-<a name="index-modeline_002c-Smart-Keys"></a>
-<p>The Hyperbole Doc/SmartKeys menu entry displays a summary of what the
-Smart Keys do in all of their different contexts.  Alternatively, a
-click of the Assist Mouse Key in the right corner of a window
-modeline (within the rightmost 3 characters) toggles between
-displaying this summary and hiding it.  Reference this summary
-whenever you need it.
+<p>If a region was selected prior to the start of the drag, it is used as
+the button label, otherwise, you are prompted for the label.  Then
+Hyperbole uses the link referent context to determine the type of link
+to make.  If there are a few different types of links which are
+applicable from the context, you will be prompted with a list of the
+types.  Simply use the Action Key or the first letter of the link type
+to select one of the type names and to finish the link creation.
+Hyperbole will then insert explicit button delimiters around the
+button label and will display a message in the minibuffer indicating
+the button label, its action/link type, and any arguments, notably the
+thing to which it links.
 </p>
-<p>The following table is the same summary.  Much of the browsing power
-of Hyperbole comes from the use of the Smart Keys, so spend some time
-practicing how to use them.  Study what modeline clicks and window
-drag actions do as these will give you a lot of power without much
-effort.  This table may appear daunting at first, but as you practice
-and notice that the Smart Keys do just a few context-sensitive things
-per editor mode, you will find it easy to just press or point and
-click and let Hyperbole do the right thing in each context.
+<p>The following table shows the type of link that will be created based
+upon the referent context in which the Action Key is released.
 </p>
 <div class="format">
-<div class="smallexample">
-<pre 
class="smallexample">========================================================================================
-                                              Smart Keys
-Context                         Action Key                 Assist Key
-========================================================================================
-Hyperbole
-  On a minibuffer menu item     Activates item             Item help
-  On an explicit button         Activates button           Button help
-  Reading argument
-    1st press at an arg value   Value copied to minibuffer &lt;- same
-    2nd press at an arg value   Value used as argument     &lt;- same
-    In minibuffer               Accepts minibuffer arg     Completion help
-  On an implicit button         Activates button           Button help
-  Within a koutline cell        Collapses and expands      Shows tree props
-  Left of a koutline cell       Creates a klink            Moves a tree
-  HyRolo Match Buffer           Edits entries and mails to e-mail addresses
-
-Mouse or Keyboard Display Control
-  Line end, not end of buffer
-    smart-scroll-proportional
-      = t   (default)           Makes curr line top line   Bottom line
-      = nil                     Scrolls up a windowful     Scrolls down
-  End of Any Help buffer        Restores screen to the previous state
-  Read-only View Mode           Scrolls up a windowful     Scrolls wind down
-
-Mouse-only Control
-  Drag from thing start or end  Yanks thing at release     Kills thing and 
yanks
-    A thing is a delimited                                 at release
-    expression, such as a
-    string, list or markup
-    language tag pair
-  Drag from shared window side
-    or from left of scroll bar  Resizes window width       &lt;- same
-
-  Modeline press+wind release   Resizes window height      &lt;- same
-  Click in modeline
-    Left modeline edge          Buries current buffer      Unburies bottom 
buffer
-    Right modeline edge         Info manual browser        Smart Key summary
-    Other blank area            Action Key modeline hook   Assist Key modeline 
hook
-                                  Show/Hide Buffer Menu      Popup Jump &amp; 
Manage Menu
-
-  Drag between windows          Creates/modifies a link    Swaps wind buffers
-  Drag in window, region active Error, not allowed         Error, not allowed
-  Horizontal drag in a window   Splits window below        Deletes window
-  Vertical drag in a window     Splits window side-by-side Deletes window
-  Diagonal drag in a window     Saves wconfig              Restores wconfig 
from ring
-  Active region exists          Yanks sexp at release      Kills &amp; yanks 
sexp at release
-
-Hyperbole Key Press/Click in Special Modes
-  Emacs Push Button             Activates button           Button help
-  Thing Begin or End            Mark thing region          Mark &amp; kill 
thing region
-  Page Directory Listing        Jumps to page              &lt;- same
-  Imenu Programming Identifier  Jumps to in-buffer def     Prompts for 
identifier to jump to
-  C,C++,Objective-C,Java Modes  Jumps to id/include def    Jumps to next def
-  Assembly Language Mode        Jumps to id/include def    Jumps to next def
-  Java Cross-reference Tag      Jumps to identifier def    Jumps to next def
-  JavaScript and Python Modes   Jumps to identifier def    Jumps to next def
-  Any Lisp or Fortran Mode      Jumps to identifier def    Jumps to next def
-  Emacs Lisp Compiler Error     Jumps to def with error    &lt;- same
-  Other Compiler Error          Jumps to src error line    &lt;- same
-  Grep or Occur Match           Jumps to match source line &lt;- same
-  Multi-buffer Occur Match      Jumps to match source line &lt;- same
-  Etags `TAGS' file entry       Jumps to source line       Button help
-  Ctags file entry              Jumps to source line       Button help
-  Texinfo Cross-reference
-    Before opening brace        Jumps to Texinfo referent  Button help
-    Within braces               Jumps to Info referent     Button help
-    Menu Item or node hdr       Jumps to Texinfo referent  Button help
-    Include file                Jumps to Texinfo referent  Button help
-    code/var reference          Displays doc for referent  Button help
-  Org Mode                      Follows links and cycles outline views
-  Outline Major/Minor Modes     Collapses, expands, and moves outline entries
-  Man Apropos                   Displays man page entry    &lt;- same
-  Man Pages                     Follows cross refs, file refs and C code refs
-  I/Buffer Menu                 Saves, deletes and displays buffers
-
-Emacs Info Reader
-  Menu Entry or Cross Ref       To referent                &lt;- same
-  Up, Next or Prev Header       To referent                To prior node
-  File entry of Header          To top node                To (DIR) node
-  End of current node           To next node               To previous node
-  Anywhere else                 Scrolls up a windowful     Scrolls wind down
-
-Subsystems
-  Calendar                      Scrolls or shows appts     Scrolls/marks date
-  GNU Debbugs Tracker           Displays issue discussion  Displays issue 
status
-  Dired Mode                    Views and deletes files from dir listing
-  GNUS News Reader              Toggles group subscriptions, gets new news,
-                                  and browses articles
-  Mail Reader and Summaries     Browses, deletes and expunges messages
-  OO-Browser                    Browses object classes and elements
-  Tar Mode                      Views and edits files from tar archive files
-
-Any other context (defaults)    Invalid context error      Invalid context 
error
-========================================================================================
+<div class="example">
+<pre class="example">Referent Context         Link Type
+----------------------------------------------------
+Explicit Button          link-to-ebut
+Info Index Item          link-to-Info-index-item
+Info Node                link-to-Info-node
+Mail Reader Message      link-to-mail
+Directory Name           link-to-directory
+File Name                link-to-file
+Koutline Cell            link-to-kcell
+Outline Heading          link-to-string-match
+Buffer attached to File  link-to-file
+Buffer without File      link-to-buffer-tmp
 </pre></div>
 </div>
 
-<p>See <a href="#Smart-Key-Reference">Smart Key Reference</a>, for extensive 
reference documentation on the
-Smart Keys.
+<a name="index-M_002do"></a>
+<a name="index-C_002du-M_002do"></a>
+<a name="index-C_002dx-o"></a>
+<a name="index-hkey_002doperate"></a>
+<a name="index-Action-Key-drag-emulation"></a>
+<a name="index-keyboard-drag-emulation"></a>
+<p>If you run Emacs under a window system and there is no prior key
+binding on <kbd>{M-o}</kbd> when you load Hyperbole, then you can emulate
+an Action Key drag from the keyboard by typing <kbd>{M-o}</kbd>, the
+<code>hkey-operate</code> command, at the button source location, moving
+to the link destination, e.g. with <kbd>{C-x o}</kbd>, and then typing
+<kbd>{M-o}</kbd> again.  This simulates a depress and then release of the
+Action Key.  <kbd>{C-u M-o}</kbd> emulates drags of the Assist Key.
+This will not work when Hyperbole is run from a dumb terminal Emacs
+session since drag actions are not supported without a window system.
 </p>
-<a name="index-action_002dkey_002ddefault_002dfunction"></a>
-<a name="index-assist_002dkey_002ddefault_002dfunction"></a>
-<a name="index-Smart-Key_002c-default-context"></a>
-<a name="index-default-Smart-Key-context"></a>
-<p>Note how the last line in the table explains that the default behavior of
-the Smart Keys in an unknown context is to report an error.  You can change
-these behaviors by setting two variables.  See the documentation
-for the variables <code>action-key-default-function</code> and
-<code>assist-key-default-function</code> for information on how to customize
-the behavior of the Smart Keys within default contexts.
+<hr>
+<a name="By-Menu"></a>
+<div class="header">
+<p>
+Previous: <a href="#By-Dragging" accesskey="p" rel="prev">By Dragging</a>, Up: 
<a href="#Creation" accesskey="u" rel="up">Creation</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Creation-Via-Menus"></a>
+<h4 class="subsubsection">3.7.1.2 Creation Via Menus</h4>
+
+<p>You may instead use the Hyperbole menus to create explicit buttons.
+First, mark a short region of text in any fashion allowed by Emacs
+and then select the Hyperbole menu item sequence, Ebut/Create.  You will
+be prompted for the button&rsquo;s label with the marked region as the
+default.  If you accept the default and enter the rest of the
+information you are prompted for, the button will be created within the
+current buffer and Hyperbole will surround the marked region with
+explicit button delimiters to indicate success.
 </p>
-<a name="index-Smart-Key-help"></a>
-<a name="index-help_002c-Smart-Key"></a>
-<a name="index-context_002dsensitive-help"></a>
-<p>When you use a mouse and you want to find out what either of the Smart
-Keys does within a context, depress the one you want to check on and
-hold it down, then press the other and release as you please.  A help
-buffer will pop up explaining the actions that will be performed in that
-context, if any.  A press of either Smart Key at the end of that
-help buffer will restore your display to its configuration prior to
-invoking help.
+<p>If you do not mark a region before invoking the button create command,
+you will be prompted for both a label and a target buffer for the button
+and the delimited label text will be inserted into the target buffer
+after a successful button creation.
 </p>
-<a name="index-C_002dh-A"></a>
-<a name="index-C_002du-C_002dh-A"></a>
-<p>On the keyboard, <kbd>{C-h A}</kbd> displays this same context-sensitive
-help for the Action Key while <kbd>{C-u C-h A}</kbd> displays the help for
-the Assist Key.  Note that <kbd>{C-h a}</kbd> performs a function unrelated
-to Hyperbole, so you must press the shift key when you type
-the <tt class="key">A</tt> character.
+<p>After Hyperbole has the button label and its target buffer, it will
+prompt you for an action type for the button.  Use the <kbd>{?}</kbd>
+completion list key to see the available types.  The type selected
+determines any following values for which you are prompted.
+</p>
+<a name="index-button-instance"></a>
+<a name="index-instance-number"></a>
+<p>If a previous button with the same label exists in the same buffer,
+Hyperbole will add an <em>instance number</em> to the label when it adds
+the delimiters so that the name is unique.  Thus, you don&rsquo;t have to
+worry about accidental button name conflicts.  If you want the same
+button to appear in multiple places within the buffer, just enter the
+label again and delimit it yourself or copy and paste the button with
+its delimiters.  Hyperbole will interpret all occurrences of the same
+delimited label within a buffer as the same button.
+</p>
+<a name="index-link_002c-creation-1"></a>
+<p>If you create link buttons using the Hyperbole menus, the best
+technique is to place on screen both the source buffer for the button
+and the buffer to which it will link.  Mark the region of text to use
+as your button label, invoke the button create command from the menu,
+choose an action type which begins with <code>link-to-</code> and then use
+the direct selection techniques mentioned in <a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a>, to 
select the link referent.
 </p>
+
 <hr>
-<a name="Smart-Key-Modeline"></a>
+<a name="Renaming"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Thing-Selection" accesskey="n" rel="next">Smart Key 
Thing Selection</a>, Previous: <a href="#Smart-Key-Operations" accesskey="p" 
rel="prev">Smart Key Operations</a>, Up: <a href="#Smart-Keys" accesskey="u" 
rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Deletion" accesskey="n" rel="next">Deletion</a>, Previous: <a 
href="#Creation" accesskey="p" rel="prev">Creation</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Modeline-1"></a>
-<h3 class="section">3.3 Smart Key Modeline</h3>
+<a name="Renaming-1"></a>
+<h4 class="subsection">3.7.2 Renaming</h4>
 
-<p>Smart Key clicks on a window&rsquo;s modeline offer many powerful browsing
-features including user manual browsing, as well as window, buffer
-and frame selection.
-</p>
-<a name="index-Info-browser"></a>
-<a name="index-modeline-click-and-drag"></a>
-<a name="index-modeline_002c-Info-Browser"></a>
-<p>A click of the Action Mouse Key in the right corner of a window
-modeline (within the rightmost 3 characters) displays or hides the
-GNU Info Manual Browser, giving you quick point and click access to
-an amazing wealth of documentation, since the Action Key also browses
-through these manuals and follows their hyperlinked cross-references.
-A click of the Assist Key in the same location displays or hides the
-Smart Key summary, as noted earlier.
-</p>
-<a name="index-buffer-menu"></a>
-<a name="index-modeline_002c-buffer-menu"></a>
-<a name="index-jump-menu"></a>
-<a name="index-modeline_002c-jump-menu"></a>
-<p>An Action Mouse Key click in a blank area of a window modeline (away
-from left and right edges) toggles between displaying and hiding a
-list of all buffers.  Once displayed, each buffer is selectable with
-the Action Key as well.  A click in the same location of the Assist
-Key displays a quick access menu of display-oriented commands.  You
-can jump to buffers categorized by major mode, jump to windows by
-buffer name, or to frames by name.  Manage your windows and frames
-quickly with this menu as well.  As always with Hyperbole, just try
-it and you&rsquo;ll begin to wonder how you lived without it before.
-</p>
-<a name="index-action_002dkey_002dmodeline_002dfunction"></a>
-<a name="index-assist_002dkey_002dmodeline_002dfunction"></a>
-<a name="index-action_002dkey_002dmodeline"></a>
-<a name="index-assist_002dkey_002dmodeline"></a>
-<a name="index-hmouse_002dcontext_002dmenu"></a>
-<a name="index-hmouse_002dcontext_002dibuffer_002dmenu"></a>
-<a name="index-ibuffer-menu"></a>
-<p>Hyperbole modeline mouse click actions are controlled by the two functions,
-<code>action-key-modeline</code> and <code>assist-key-modeline</code>.  If you 
know
-a little Emacs Lisp you can change these to do whatever you like.
-When a Smart Key press is on a blank part of a modeline but not at
-the left or right, the function given by one of these two variables
-is executed: <code>action-key-modeline-function</code> or
-<code>assist-key-modeline-function</code>.  By default, the Action Key toggles
-between displaying and hiding the buffer menu.  If you like the more
-advanced features of <code>Ibuffer Mode</code>, you can change the buffer menu
-to use that with the following in your Emacs initialization file:
-<code>(setq action-key-modeline-function #'hmouse-context-ibuffer-menu)</code>.
-To set it back to the default use:
-<code>(setq action-key-modeline-function #'hmouse-context-menu)</code>.
+<a name="index-explicit-button_002c-renaming"></a>
+<a name="index-button_002c-renaming"></a>
+<p>Once an explicit button has been created, its label text must be
+treated specially.  Any inter-word spacing within the label may be
+freely changed, as may happen when a paragraph is refilled, but a
+special command must be invoked to rename it.
 </p>
-<a name="index-dired_002djump"></a>
-<a name="index-hui_002dmenu_002dscreen_002dcommands"></a>
-<a name="index-directory-editor"></a>
-<a name="index-dired"></a>
-<a name="index-modeline_002c-screen-command-menu"></a>
-<p>The default <code>assist-key-modeline-function</code> is to pop up a menu of
-convenient screen commands that lets you select buffers grouped by
-major mode, use HyControl, or jump to specific windows, window
-configurations or frames.  If you would prefer it runs the directory
-editor <code>dired</code> on the directory associated with the window of the
-modeline press, use this: <code>(setq assist-key-modeline-function 
#'dired-jump)</code>.
-To set it back to the default use:
-<code>(setq assist-key-modeline-function #'hui-menu-screen-commands)</code>.
+<p>The rename command operates in two different ways.  If point is within
+a button label when it is invoked, it will tell you to edit the button
+label and then to invoke the rename command again after the edit.  The
+second invocation will actually rename the button.  If instead the
+command is originally invoked outside of any explicit button, it will
+prompt for the button label to replace and the label to replace it
+with and then will perform the renaming.  All occurrences of the same
+button in the buffer will be renamed.
 </p>
-<p>These variables may also be changed permanently with the Emacs
-interactive customization interface.  Use <kbd>{M-x customize-variable
-<span class="key">RET</span> assist-key-modeline-function <span 
class="key">RET</span>}</kbd>.  In the Assist
-Modeline Function text field that appears, change the value
-to <code>dired-jump</code>.  Then press the &ldquo;Apply and Save&rdquo; 
button.
+<a name="index-file_002c-_002eemacs-1"></a>
+<a name="index-file_002c-hyperbole_002eel"></a>
+<a name="index-C_002dc-C_002dr"></a>
+<a name="index-hui_003aebut_002drename"></a>
+<p>The rename command may be invoked from the Hyperbole menu via
+Ebut/Rename.  A faster method is to use a key bound to the
+<code>hui:ebut-rename</code> command.  Hyperbole typically binds this to
+<kbd>{C-c C-r}</kbd>.  <kbd>{C-h w hui:ebut-rename <span 
class="key">RET</span>}</kbd> will show
+what if any key runs it.  If no key binding has been established or if
+you prefer one of your own, simply bind it within your <samp>~/.emacs</samp>
+file: <code>(global-set-key &quot;\C-c\C-r&quot; 'hui:ebut-rename)</code>.
 </p>
+
 <hr>
-<a name="Smart-Key-Thing-Selection"></a>
+<a name="Deletion"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Argument-Selection" accesskey="n" rel="next">Smart 
Key Argument Selection</a>, Previous: <a href="#Smart-Key-Modeline" 
accesskey="p" rel="prev">Smart Key Modeline</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Modification" accesskey="n" rel="next">Modification</a>, 
Previous: <a href="#Renaming" accesskey="p" rel="prev">Renaming</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Thing-Selection-1"></a>
-<h3 class="section">3.4 Smart Key Thing Selection</h3>
+<a name="Deletion-1"></a>
+<h4 class="subsection">3.7.3 Deletion</h4>
 
-<a name="index-sexp-selection"></a>
-<a name="index-code-block-selection"></a>
-<a name="index-selection"></a>
-<a name="index-smart-selection"></a>
-<a name="index-smart-marking"></a>
-<a name="index-region-selection"></a>
-<a name="index-things"></a>
-<a name="index-delimited-things"></a>
-<p>Hyperbole has some radically cool ways to select regions of structured
-text or source code and to copy or move them between buffers with a
-single mouse drag or two key presses.  A great deal of smarts are
-built-in so that it does the right thing most of the time; many other
-attempts at similar behavior such as thing.el fail to deal with many
-file format complexities.
-</p>
-<p>We use the term <em>things</em> to refer to structured entities that
-Hyperbole can select.  These include: delimited pairs of (), {}, &lt;&gt;,
-[] and quote marks, source code functions, source code comments and
-matching tag pairs in HTML and SGML modes.  <em>Delimited things</em> are
-those things that contain a selectable delimiter such as an opening
-parenthesis.
-</p>
-<a name="index-HTML-tag-pair"></a>
-<a name="index-SGML-tag-pair"></a>
-<p>The best way to mark a delimited thing is to move your cursor to the
-starting delimiter of the thing and then press the Action Key.  Typically,
-you will see the thing highlight.  You can then operate upon it as you
-would any Emacs region.  In many cases, you can do the same thing upon
-the closing delimiter but this is not as reliable.  An Action Key
-press on the start of an HTML or SGML tag pair marks the entire region
-span of the pair.  If you use the Assist Key instead, it will mark and
-kill (delete) the thing.
-</p>
-<a name="index-drag_002c-with-region"></a>
-<a name="index-kill-region"></a>
-<a name="index-yank-region"></a>
-<a name="index-cut-region"></a>
-<a name="index-copy-region"></a>
-<a name="index-paste-region"></a>
-<p>Even better are Smart Mouse Key drags which let you copy or move
-delimited things in one operation without even highlighting them.  To
-copy, simply drag with the Action Key from a thing&rsquo;s opening delimiter
-and release somewhere outside of the thing, either within the same
-window or within another window.  The thing will be copied to the
-point of release.  If you want to move a thing, simply perform the
-same drag but with the Assist Mouse Key.  Ensure that you do not move
-any explicit buttons from one buffer to another as that does not
-presently work.
-</p>
-<p>Try out some of these operations in HTML or source code files to see
-how they can speed your editing.
+<a name="index-explicit-button_002c-deleting"></a>
+<a name="index-button_002c-deleting"></a>
+<p>Ebut/Delete works similarly to the Rename command but deletes the
+selected button.  The button&rsquo;s delimiters are removed to confirm the
+deletion.  If the delete command is invoked with a prefix argument, then
+both the button label and the delimiters are removed as confirmation.
 </p>
-<p>Hyperbole also binds two convenience keys for working with things.
+<a name="index-hui_003aebut_002ddelete_002dconfirm_002dp"></a>
+<p>Presently there is no way to recover a deleted button; it must
+be recreated.  Therefore, the <code>hui:ebut-delete-confirm-p</code> variable
+is true by default, causing Hyperbole to require confirmation before
+interactively deleting explicit buttons.  Set it to 
&lsquo;<samp>nil</samp>&rsquo; if you
+prefer no confirmation.
 </p>
-<a name="index-C_002dc-RET"></a>
-<a name="index-hui_002dselect_002dthing"></a>
-<a name="index-hui_002dselect_002dthing_002dwith_002dmouse"></a>
-<p>The first such key is <kbd>{C-c <span class="key">RET</span>}</kbd> 
<code>hui-select-thing</code>
-which selects bigger and bigger syntactic regions with each successive
-use.  Double or triple clicks of the Selection Key (left mouse key) do
-the same thing.  The first press selects a region based upon the
-character at point.  For example, with point over an opening or
-closing grouping character, such as { or }, the whole grouping is
-selected, e.g. a C function.  When on an _ or - within a programming
-language identifier name, the whole name is selected.  The type of
-selection is displayed in the minibuffer as feedback.  When using a
-language in which indentation determines nesting level like Python, a
-double click on the first alpha character of a line, such as an if
-statement, selects the whole statement.  Use <kbd>{C-g}</kbd> to unmark the
-region when done.  Use, <code>hui-select-thing-with-mouse</code> if you want
-to bind this to a different mouse key to use single clicks instead of
-double clicks.
+<hr>
+<a name="Modification"></a>
+<div class="header">
+<p>
+Next: <a href="#Location" accesskey="n" rel="next">Location</a>, Previous: <a 
href="#Deletion" accesskey="p" rel="prev">Deletion</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<a name="Modification-1"></a>
+<h4 class="subsection">3.7.4 Modification</h4>
+
+<a name="index-explicit-button_002c-modifying"></a>
+<a name="index-button_002c-modifying"></a>
+<a name="index-Smart-Mouse-Key-drag"></a>
+<a name="index-button_002c-attributes"></a>
+<p>Ebut/Modify prompts you with each of the elements from the button&rsquo;s
+attributes list and allows you to modify each in turn.  Ebut/Edit does
+the exact same thing and is there for people who prefer that term.
 </p>
-<a name="index-C_002dc-_002e"></a>
-<a name="index-hui_002dselect_002dgoto_002dmatching_002dtag"></a>
-<p>The second convenience key is bound only in HTML/web mode.  <kbd>{C-c
-.}</kbd> <code>hui-select-goto-matching-tag</code> jumps between the opening 
and
-closing tag of a pair.  It moves point to the start of the tag paired
-with the closest tag that point is within or which it precedes.  A
-second press moves point to the matching tag of the pair, allowing you
-to quickly jump back and forth between opening and closing tags.
+<p>There is a quicker way to modify explicit link buttons, however.  Simply
+drag with the Action Mouse Key from within the button label to a link
+destination in a different window, just as you would when creating a new
+button with a mouse drag.  Remember that drags may also be emulated from
+the keyboard.  See <a href="#Creation">Creation</a>.
 </p>
 <hr>
-<a name="Smart-Key-Argument-Selection"></a>
+<a name="Location"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Modifiers" accesskey="n" rel="next">Smart Key 
Modifiers</a>, Previous: <a href="#Smart-Key-Thing-Selection" accesskey="p" 
rel="prev">Smart Key Thing Selection</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Buttons-in-Mail" accesskey="n" rel="next">Buttons in Mail</a>, 
Previous: <a href="#Modification" accesskey="p" rel="prev">Modification</a>, 
Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing 
Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Argument-Selection-1"></a>
-<h3 class="section">3.5 Smart Key Argument Selection</h3>
+<a name="Location-1"></a>
+<h4 class="subsection">3.7.5 Location</h4>
 
-<a name="index-Hyperbole-help"></a>
-<p>A prime design criterion of Hyperbole&rsquo;s user interface is that you
-should be able to see what an operation will do before using it.  The
-Assist Key typically shows you what a button or minibuffer menu item
-will do before you activate it.  Hyperbole also displays the result of
-directly selecting an argument value with the Action Key, to provide
-feedback as to whether the correct item has been selected.  A second
-press/click is necessary before an argument is accepted and processed.
+<a name="index-explicit-button_002c-summarizing"></a>
+<a name="index-button_002c-summarizing"></a>
+<a name="index-button_002c-help"></a>
+<p>The Ebut/Help menu may be used to summarize either a single explicit
+button or all such buttons within a buffer.  The buttons summarized may
+then be activated directly from the summary.
 </p>
-<a name="index-argument-entry"></a>
-<a name="index-direct-selection"></a>
-<a name="index-double-click"></a>
-<p>Many Hyperbole commands prompt you for arguments.  The standard
-Hyperbole user interface has an extensive core of argument types that
-it recognizes.  Whenever Hyperbole is prompting you for an argument,
-it knows the type that it needs and provides some error checking to
-help you get it right.  More importantly, it allows you to press the
-Action Key within an entity that you want to use as an argument and it
-will grab the appropriate thing and show it to you at the input prompt
-within the minibuffer.  If you press (click with a mouse) the Action
-Key on the same thing again, it accepts the entity as the argument
-and moves on.  Thus, a double click registers a desired argument.
-Double-quoted strings, pathnames, mail messages, Info nodes, dired
-listings, buffers, numbers, completion items and so forth are all
-recognized at appropriate times.  All of the argument types mentioned
-in the documentation for the Emacs Lisp <code>interactive</code> function
-are recognized.  Experiment a little and you will quickly get used to
-this direct selection technique.
+<p>Ebut/Help/BufferButs summarizes the explicit buttons in the order in
+which they appear in the buffer.  Ebut/Help/CurrentBut summarizes only
+the button at point.  Ebut/Help/OrderedButs summarizes the buttons in
+alphabetical order.  All of these summary commands eliminate duplicate
+occurrences of buttons from their help displays.
+</p>
+<a name="index-explicit-button_002c-searching"></a>
+<a name="index-button_002c-searching"></a>
+<p>Ebut/Search prompts for a search pattern and searches across all the
+locations in which you have previously created explicit buttons.  It
+asks you whether to match to any part of a button label or to whole
+labels only.  It then displays a list of button matches with a single
+line of surrounding context from their sources.  Any button in the match
+list may be activated as usual.  An Action Key press on the surrounding
+context jumps to the associated source line.  A press on the filename
+preceding the matches jumps to the file without selecting a particular
+line.
 </p>
-<a name="index-completion-1"></a>
-<p>Wherever possible, standard Emacs completion is offered, as described in
-<a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Completion";>Completion</a>
 in <cite>the GNU Emacs Manual</cite>.  Remember to use <kbd>{?}</kbd>
-to see what your possibilities for an argument are.  Once you have a
-list of possible completions on screen, press the Action Key twice on
-any item to enter it as the argument.
+<p>There are presently no user-level facilities for globally locating
+buttons created by others or for searching on particular button
+attributes.
 </p>
 <hr>
-<a name="Smart-Key-Modifiers"></a>
+<a name="Buttons-in-Mail"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-Debugging" accesskey="n" rel="next">Smart Key 
Debugging</a>, Previous: <a href="#Smart-Key-Argument-Selection" accesskey="p" 
rel="prev">Smart Key Argument Selection</a>, Up: <a href="#Smart-Keys" 
accesskey="u" rel="up">Smart Keys</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Buttons-in-News" accesskey="n" rel="next">Buttons in News</a>, 
Previous: <a href="#Location" accesskey="p" rel="prev">Location</a>, Up: <a 
href="#Utilizing-Explicit-Buttons" accesskey="u" rel="up">Utilizing Explicit 
Buttons</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Modifiers-1"></a>
-<h3 class="section">3.6 Smart Key Modifiers</h3>
+<a name="Buttons-in-Mail-1"></a>
+<h4 class="subsection">3.7.6 Buttons in Mail</h4>
 
-<p>For advanced users of Emacs and Hyperbole, there is 
<code>hmouse-mod-mode</code>,
-a global minor mode which turns the Action Mouse Key into a <tt 
class="key">Control</tt>
-modifier key and the Assist Key into a <tt class="key">Meta</tt> modifier key. 
 This
-allows for better keyboard energy balance across hands and is useful for
-reducing carpal tunnel stress.  It may also be used with a <em>chord
-keyboard</em> in one hand and a mouse in the other to point at things while
-simultaneously operating upon them.
+<a name="index-C_002dx-m"></a>
+<a name="index-mail"></a>
+<a name="index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts"></a>
+<p>Hyperbole supports embedding buttons within electronic mail messages
+composed in Emacs.  An enhanced mail reader may then be used to
+activate the buttons within messages just like any other buttons.
+Because this involves complex changes to mail support functions, this
+feature is disabled by default.  Use the Cust/Msg-Toggle-Ebuts
+minibuffer menu item to enable it.
 </p>
-<a name="index-hmouse_002dmod_002dmode"></a>
-<a name="index-hmouse_002dmod_002dmode-1"></a>
-<a name="index-Smart-Keys-as-modifiers"></a>
-<a name="index-control-key-modifier"></a>
-<a name="index-meta-key-modifier"></a>
-<a name="index-chord-keyboards"></a>
-<p>Use the <code>hmouse-mod-mode</code> global minor mode to enable this 
feature.
-<kbd>{C-u M-x hmouse-mod-mode <span class="key">RET</span>}</kbd> enables it 
and adds
-&lsquo;<samp>HyMod</samp>&rsquo; to the list of modeline minor modes.  
<kbd>{C-u 0 M-x
-hmouse-mod-mode <span class="key">RET</span>}</kbd> disables it and <kbd>{M-x
-hmouse-mod-mode <span class="key">RET</span>}</kbd> toggles it on and off.
+<a name="index-button_002c-mailing"></a>
+<a name="index-button_002c-posting"></a>
+<a name="index-mailing-buttons"></a>
+<a name="index-posting-buttons"></a>
+<a name="index-mail-reader"></a>
+<a name="index-mailer-initialization"></a>
+<a name="index-Rmail"></a>
+<a name="index-VM"></a>
+<a name="index-MH_002de"></a>
+<a name="index-Gnus"></a>
+<a name="index-USENET"></a>
+<a name="index-news"></a>
+<a name="index-file_002c-hmail_002eel"></a>
+<p>Hyperbole automatically supports the following mail readers: Rmail
+(see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Rmail";>Reading
 Mail with Rmail</a> in <cite>the GNU Emacs Manual</cite>), VM
+(see <a href="vm.html#Introduction">Introduction</a> in <cite>the VM 
Manual</cite>) and MH-e.  Button inclusion
+and activation within USENET news articles is also supported in the
+same fashion via the Gnus news reader if available at your site
+(see <a 
href="http://www.gnu.org/software/emacs/manual/html_mono/gnus.html#Top";>The 
Gnus Newsreader</a> in <cite>the Gnus Manual</cite>).
+(The <samp>hmail.el</samp> file defines a generalized interface that can be
+used to hook in other mail or news readers if the necessary interface
+functions are written.)
 </p>
-<p>When enabled, if the Action Key is held down while alpha characters
-are typed, they are translated into <tt class="key">Control</tt> keys instead. 
 The
-Assist Key translates them into <tt class="key">Meta</tt> keys.  When both 
Smart
-Keys are depressed, <tt class="key">Control-Meta</tt> keys are produced.  The
-commands bound to the characters produced are then run.  For example,
-Action Key + <kbd>{a}</kbd> runs the function for <kbd>{C-a}</kbd>.  If no
-keys are typed while the Smart Keys are down, they operate as
-normally under Hyperbole.
+<a name="index-mail_002dyank_002doriginal"></a>
+<a name="index-C_002dc-C_002dy"></a>
+<a name="index-mail-inclusion"></a>
+<p>All explicit buttons to be mailed must be created within the outgoing
+message buffer. There is no present support for including text from
+other buffers or files which contain explicit buttons, except for the
+ability to yank the contents of a message being replied to, together
+with all of its buttons, via the <code>(mail-yank-original)</code> command
+bound to <kbd>{C-c C-y}</kbd>.  From a user&rsquo;s perspective, buttons are
+created in precisely the same way as in any other buffer.  They also
+appear just like any other buttons to both the message sender and the
+reader who uses the Hyperbole enhanced readers.  Button operation may be
+tested any time before a message is sent.  A person who does not use
+Hyperbole enhanced mail readers can still send messages with embedded
+buttons since mail composing is independent of any mail reader
+choice.
 </p>
-<p>The code for Smart Key modifiers can be found in
-<samp><code>${hyperb:dir}</code>/hmouse-mod.el</samp>.
+<p>Hyperbole buttons embedded within received mail messages behave as do
+any other buttons.  The mail does not contain any of the action type
+definitions used by the buttons, so the receiver must have these or
+she will receive an error when she activates the buttons.  Buttons
+which appear in message <em>Subject</em> lines are copied to summary
+buffers whenever such summaries are generated.  Thus, they may be
+activated from either the message or the summary buffers.
+</p>
+<p>Nothing bad will happen if a mail message with explicit buttons is sent
+to a non-Hyperbole user.  The user will simply see the text
+of the message followed by a series of lines of button data at its end.
+Hyperbole mail users never see this data in its raw form.
+</p>
+<a name="index-smail_003acomment"></a>
+<a name="index-mail-comment"></a>
+<a name="index-Hyperbole-mail-comment"></a>
+<p>In order to alert readers of your mail messages that you can handle
+Hyperbole mail buttons, you can set the variable, <code>smail:comment</code>,
+to an expression that automatically inserts a comment into each
+outgoing message to announce this fact.  See its documentation for
+technical details.  By default, no comment is added.  To have a
+comment line added to your outgoing message, add the following to
+to your <samp>~/.emacs</samp> file before the point at which you load
+Hyperbole.
+</p>
+<div class="smalllisp">
+<pre class="smalllisp">(setq smail:comment
+ (format &quot;Comments: GNU Hyperbole mail buttons accepted, v%s.\n&quot;
+          hyperb:version))
+</pre></div>
+
+<p>This will produce the following line in outgoing messages:
+</p>
+<div class="example">
+<pre class="example">Comments: GNU Hyperbole mail buttons accepted, vX.XX.
+</pre></div>
+
+<a name="index-file_002c-_002eemacs-2"></a>
+<p>where the X&rsquo;s indicate your Hyperbole version number.  You can cut
+this out of particular messages before you send them when need be.
+</p>
+<a name="index-actype_002c-link_002dto_002dmail"></a>
+<p>A final mail-related facility provided by Hyperbole is the ability to
+save a pointer to a received mail message by creating an explicit button
+with a <code>link-to-mail</code> action type.  When prompted for the mail
+message to link to, if you press the Action Key within the message, the
+appropriate link parameters will be copied to the argument prompt, as
+described in <a href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a>.
 </p>
+
 <hr>
-<a name="Smart-Key-Debugging"></a>
+<a name="Buttons-in-News"></a>
 <div class="header">
 <p>
-Previous: <a href="#Smart-Key-Modifiers" accesskey="p" rel="prev">Smart Key 
Modifiers</a>, Up: <a href="#Smart-Keys" accesskey="u" rel="up">Smart Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Previous: <a href="#Buttons-in-Mail" accesskey="p" rel="prev">Buttons in 
Mail</a>, Up: <a href="#Utilizing-Explicit-Buttons" accesskey="u" 
rel="up">Utilizing Explicit Buttons</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-Debugging-1"></a>
-<h3 class="section">3.7 Smart Key Debugging</h3>
+<a name="Buttons-in-News-1"></a>
+<h4 class="subsection">3.7.7 Buttons in News</h4>
 
-<p>Typically, <kbd>{C-h A}</kbd> and <kbd>{C-u C-h A}</kbd> which show Action 
and
-Assist Key help for the current context, are sufficient for seeing how
-the Smart Keys behave no matter where they are used.
+<a name="index-button_002c-posting-1"></a>
+<a name="index-news-reader_002fposter"></a>
+<a name="index-posting-news"></a>
+<a name="index-Gnus-1"></a>
+<a name="index-USENET-1"></a>
+<a name="index-file_002c-hyperbole_002eel-1"></a>
+<a name="index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts-1"></a>
+<p>Explicit buttons may be embedded within outgoing USENET news articles
+and may be activated from within the Gnus news reader.  Because this
+involves complex changes to news support functions, this feature is
+disabled by default.  Use the Cust/Msg-Toggle-Ebuts minibuffer menu
+item to enable it (enabling it for mail also enables it for news and
+vice versa).
 </p>
-<a name="index-C_002dh-h-c-d"></a>
-<a name="index-Smart-Key-debugging"></a>
-<a name="index-menu-item_002c-Cust_002fDebug_002dToggle"></a>
-<a name="index-debugging-Smart-Keys"></a>
-<a name="index-troubleshooting-Smart-Keys"></a>
-<a name="index-Messages-buffer"></a>
-<a name="index-logging-Smart-Key-behavior"></a>
-<p>However, if a Smart Key ever behaves differently than you think it
-should or if you want to test how the Smart Keys respond in a new
-context, then the Smart Key debugging flag may be of use.  You toggle
-it on and off with <kbd>{C-h h c d}</kbd> (minibuffer menu
-Cust/Debug-Toggle).  Once enabled, this displays a message in the
-minibuffer each time the Action or Assist Key is released, showing
-the context of the press and its associated action, so you can see
-exactly what is happening whenever you use a Smart Key.  These
-messages are all prefaced with &ldquo;(HyDebug)&rdquo; and logged to the
-&ldquo;*Messages*&rdquo; buffer for later viewing.
+<p>Once enabled, all Hyperbole support should work just as it does when
+reading or sending mail.  See <a href="#Buttons-in-Mail">Buttons in Mail</a>.  
When reading news,
+buttons which appear in message <em>Subject</em> lines may be activated
+within the Gnus subject buffer as well as the article buffer.  When
+posting news, the *post-news* buffer is used for outgoing news
+articles rather than a mail-related buffer.
 </p>
-<a name="index-C_002dh-h-m-c"></a>
-<a name="index-C_002dh-h-m-r"></a>
-<p>If you do find a problem with the Smart Keys and want to report a bug,
-use <kbd>{C-h h m r}</kbd> to compose an email message to the bug-hyperbole
-list.  Hyperbole will automatically include all of the &ldquo;(HyDebug)&rdquo;
-messages from your current emacs session into your email.  Similarly,
-when you compose an email to the hyperbole-users mailing list
-with <kbd>{C-h h m c}</kbd>, these messages are also included.
+<p>Remember that the articles you post do not contain the action type
+definitions used by the buttons, so the receiver must have these or she
+will receive an error when she activates the buttons.  You should also
+keep in mind that most USENET readers will not be using Hyperbole, so if
+they receive a news article containing explicit buttons, they will
+wonder what the button data at the end of the message is.  You should
+therefore limit distribution of such messages.  For example, if most
+people at your site read news with Gnus and use Hyperbole, it would be
+reasonable to embed buttons in postings to local newsgroups.
+</p>
+<a name="index-news-comment"></a>
+<p>In order to alert readers of your postings that they may send you
+personal replies with embedded Hyperbole buttons, the system inserts
+into news postings the same comment that is included within mail
+messages, if enabled.  See <a href="#Buttons-in-Mail">Buttons in Mail</a>, for 
details and an
+explanation of how to turn this feature on.
 </p>
 
+
 <hr>
 <a name="Menus"></a>
 <div class="header">
 <p>
-Next: <a href="#HyControl" accesskey="n" rel="next">HyControl</a>, Previous: 
<a href="#Smart-Keys" accesskey="p" rel="prev">Smart Keys</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#HyControl" accesskey="n" rel="next">HyControl</a>, Previous: 
<a href="#Buttons" accesskey="p" rel="prev">Buttons</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Menus-1"></a>
 <h2 class="chapter">4 Menus</h2>
 
-<a name="index-InfoDock"></a>
-<a name="index-XEmacs-1"></a>
 <a name="index-Emacs-1"></a>
 <a name="index-menu-use"></a>
 <a name="index-menubar_002c-Hyperbole-menu"></a>
 <a name="index-menu-item_002c-Remove_002dThis_002dMenu"></a>
 <a name="index-removing-Hyperbole-menu"></a>
-<p>Under InfoDock, XEmacs, and Emacs, pulldown and popup menus are
-available to invoke Hyperbole commands, including those from the rolo
-and the outliner.  These menus operate like any other application menus
-and are fairly self-explanatory.  Use the <code>Remove-This-Menu</code>
-command on the Hyperbole menubar menu to get rid of the menu if you do
-not need it.  Invoking Hyperbole from the keyboard, as explained below,
-will add the menu back to the menubar.
+<p>Pulldown and popup menus are available to invoke Hyperbole commands,
+including those from the HyRolo and the Koutliner.  These menus operate
+like any other application menus and are fairly self-explanatory.  Use
+the <code>Remove-This-Menu</code> command on the Hyperbole menubar menu to
+get rid of the menu if you do not need it.  Invoking Hyperbole from
+the keyboard, as explained below, will add the menu back to the
+menubar.
 </p>
 <div class="float"><a name="image_003aHyperbole-Menu"></a>
 
@@ -3487,6 +3616,22 @@ and frame submodes.
 <dt><kbd>{0-9}</kbd></dt>
 <dd><p>Multiply the argument by 10 and add the digit pressed.
 </p>
+<a name="index-screen_002c-a"></a>
+<a name="index-a"></a>
+</dd>
+<dt><kbd>{a}</kbd></dt>
+<dd><p>Cycle though common width adjustments of a frame, such as 25% and 50%.
+Widths are given in screen percentages by the list
+<var>hycontrol-frame-widths</var> and typically go from widest to narrowest.
+</p>
+<a name="index-screen_002c-A"></a>
+<a name="index-A"></a>
+</dd>
+<dt><kbd>{A}</kbd></dt>
+<dd><p>Cycle though common height adjustments of a frame, such as 33.3% and
+75%.  Heights are given in screen percentages by the list
+<var>hycontrol-frame-heights</var> and typically go from tallest to shortest.
+</p>
 <a name="index-screen_002c-h"></a>
 <a name="index-h"></a>
 </dd>
@@ -3555,20 +3700,10 @@ screen size.
 <a name="index-c"></a>
 </dd>
 <dt><kbd>{c}</kbd></dt>
-<dd><p>In FRAME mode, with each press, cycle the selected frame&rsquo;s 
position
-clockwise through the middle of edges and corners of the screen.  With
-an argument of 0, reset the cycle position to the upper left corner.
-Respects the pixel edge offsets returned by 
<code>hycontrol-get-screen-offsets</code>.
-</p>
-<a name="index-screen_002c-keypad-number"></a>
-<a name="index-keypad-number"></a>
-</dd>
-<dt><kbd>{keypad number}</kbd></dt>
-<dd><p>In FRAME mode, move the frame directly to the screen edge position given
-by the numeric keypad layout.  For example, 3 moves the frame to the
-bottom right corner and 8 moves it to the middle of the top edge.
-Keypad numeric keys do not adjust the argument.  Respects the pixel edge
-offsets returned by <code>hycontrol-get-screen-offsets</code>.
+<dd><p>With each press, cycle the selected frame&rsquo;s position clockwise 
through
+the middle of edges and corners of the screen.  With an argument of 0,
+reset the cycle position to the upper left corner.  Respects the pixel
+edge offsets returned by <code>hycontrol-get-screen-offsets</code>.
 </p>
 <a name="index-screen_002c-d"></a>
 <a name="index-d"></a>
@@ -3582,6 +3717,12 @@ offsets returned by 
<code>hycontrol-get-screen-offsets</code>.
 <dd><p>Prompt for confirmation and then delete non-selected windows or frames
 based on mode.
 </p>
+<a name="index-screen_002c-l"></a>
+<a name="index-l"></a>
+</dd>
+<dt><kbd>{l}</kbd></dt>
+<dd><p>In FRAME mode, lower the selected frame below all other Emacs session 
frames.
+</p>
 <a name="index-screen_002c-o"></a>
 <a name="index-o"></a>
 </dd>
@@ -3593,6 +3734,29 @@ based on mode.
 <dt><kbd>{O}</kbd></dt>
 <dd><p>Select the next visible frame.
 </p>
+<a name="index-screen_002c-keypad-number"></a>
+<a name="index-keypad-number"></a>
+</dd>
+<dt><kbd>{keypad number}</kbd></dt>
+<dd><p>In FRAME mode, move the frame directly to the screen edge position given
+by the numeric keypad layout.  For example, 3 moves the frame to the
+bottom right corner and 8 moves it to the middle of the top edge.
+Keypad numeric keys do not adjust the argument.  Respects the pixel edge
+offsets returned by <code>hycontrol-get-screen-offsets</code>.
+</p>
+<a name="index-screen_002c-p"></a>
+<a name="index-p"></a>
+</dd>
+<dt><kbd>{p}</kbd></dt>
+<dd><p>Display a virtual numeric keypad for emulating a keypad on keyboards 
without one.
+Each digit key operates just as a numeric keypad key would.
+</p>
+<a name="index-screen_002c-r"></a>
+<a name="index-r"></a>
+</dd>
+<dt><kbd>{r}</kbd></dt>
+<dd><p>In FRAME mode, raise the selected frame above all other Emacs session 
frames.
+</p>
 <a name="index-hycontrol_002dframe_002doffset"></a>
 <a name="index-screen_002c-_005b"></a>
 <a name="index-_005b"></a>
@@ -3627,8 +3791,14 @@ based on mode.
 <a name="index-f"></a>
 </dd>
 <dt><kbd>{f}</kbd></dt>
-<dd><p>In WINDOW mode, delete the selected window and redisplay its buffer in a
-new frame.
+<dd><p>Clone the selected window to a new similarly sized frame.
+<a name="index-screen_002c-F"></a>
+<a name="index-F"></a>
+</p></dd>
+<dt><kbd>{F}</kbd></dt>
+<dd><p>Clone the selected window to a new similarly sized frame.  Delete the
+original window unless there is only one window in the source frame or
+if <var>hycontrol-keep-window-flag</var> is non-nil.
 </p>
 <a name="index-screen_002c-i"></a>
 <a name="index-screen_002c-j"></a>
@@ -3646,18 +3816,20 @@ new frame.
 <dd><a name="index-m"></a>
 </dd>
 <dt><kbd>{m}</kbd></dt>
-<dd><p>In Frame mode, expand the selected frame to the associated screen edge
-based on key layout.  i=top, j=left, k=right and m=bottom screen edge.
-Respects the pixel edge offsets returned by
+<dd><p>Expand the selected frame to the respective screen edge based on U.S.
+keyboard key layout.  i=top, j=left, k=right and m=bottom screen edge.
+If already at the edge, adjusts the perpendicular dimension to ARG percent
+of the screen (50% by default if ARG is 1 or nil) but keep it at the screen
+edge.  Respects the pixel edge offsets returned by
 <code>hycontrol-get-screen-offsets</code>.
 </p>
 <a name="index-screen_002c-_003d"></a>
 <a name="index-_003d"></a>
 </dd>
 <dt><kbd>{=}</kbd></dt>
-<dd><p>Make the current frame&rsquo;s windows or all frames approximately the 
same
-size based on mode.  In FRAME mode, all visible frames are set to the
-size of the selected frame.
+<dd><p>After confirmation, in WINDOW mode, make the current frame&rsquo;s 
windows
+approximately the same size.  In FRAME mode, make all visible frames
+the size of the selected frame.
 </p>
 <a name="index-screen_002c-_002d"></a>
 <a name="index-_002d"></a>
@@ -3695,7 +3867,7 @@ selected window.
 <dt><kbd>{~}</kbd></dt>
 <dd><p>Swap two buffers between the selected window or frame and one other.
 In WINDOW mode, there must be precisely two windows in the selected
-frame.  In FRAME mode, the second frame mush have a single window.
+frame.  In FRAME mode, the second frame must have a single window.
 </p>
 <a name="index-zoom_002dfrm_002eel"></a>
 <a name="index-zooming"></a>
@@ -3799,16 +3971,6 @@ See <a href="#Autonumbering">Autonumbering</a>.
 <p>Cells also store their time of creation and the user who created the
 cell.  User-defined attributes may also be added to cells.  See <a 
href="#Cell-Attributes">Cell Attributes</a>.
 </p>
-<a name="index-menu_002c-Outline"></a>
-<p>The outliner works under GNU Emacs, XEmacs or under InfoDock.  You can tell
-whether you are running a version of Emacs which supports the outliner by
-pressing <kbd>{C-h h}</kbd> to display the Hyperbole menu (<kbd>{q}</kbd> will
-quit).  If you see a &lsquo;<samp>Kotl/</samp>&rsquo; entry in the menu, then 
the outliner is
-available.  Otherwise, the outliner does not work with your version of
-Emacs, so this section of the manual will not be of interest to you.  (The
-same is true of the Hyperbole/Outline pulldown menu; if it appears, the
-outliner is available for use.)
-</p>
 <a name="index-file_002c-EXAMPLE_002ekotl"></a>
 <a name="index-menu_002c-Outline_002fExample"></a>
 <a name="index-C_002dh-h-k-e"></a>
@@ -3875,7 +4037,7 @@ a number of major outliner commands:
 <a name="index-kotl_002dmode_003ashow_002dtree"></a>
 <a name="index-kotl_002dmode_003atop_002dcells"></a>
 <a name="index-kvspec_003aactivate"></a>
-<a name="index-menu_002c-Outline-1"></a>
+<a name="index-menu_002c-Outline"></a>
 <div class="example">
 <pre class="example">Menu Item    Command                    Description
 ====================================================================
@@ -4380,8 +4542,8 @@ paragraphs.
 cell so that its lines wrap within the current margin settings.
 <kbd>{C-c M-q}</kbd> or <kbd>{C-c M-j}</kbd> refills all paragraphs within a
 cell.  <kbd>{C-M-q}</kbd> or <kbd>{C-M-j}</kbd> refills all cells within a 
tree.
-See your InfoDock, XEmacs, or GNU Emacs manual for information on how
-to set the left and right margins.
+See the GNU Emacs manual for information on how to set the left and
+right margins.
 </p>
 <a name="index-kotl_002dmode_003arefill_002dflag"></a>
 <a name="index-refilling"></a>
@@ -5029,26 +5191,26 @@ manually activated whenever their records are retrieved.
 tool.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Concepts" 
accesskey="1">Rolo Concepts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Concepts" 
accesskey="1">HyRolo Concepts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Menu" 
accesskey="2">Rolo Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Menu" 
accesskey="2">HyRolo Menu</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Searching" 
accesskey="3">Rolo Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Searching" 
accesskey="3">HyRolo Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Keys" 
accesskey="4">Rolo Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Keys" 
accesskey="4">HyRolo Keys</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Rolo-Settings" 
accesskey="5">Rolo Settings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#HyRolo-Settings" 
accesskey="5">HyRolo Settings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="Rolo-Concepts"></a>
+<a name="HyRolo-Concepts"></a>
 <div class="header">
 <p>
-Next: <a href="#Rolo-Menu" accesskey="n" rel="next">Rolo Menu</a>, Previous: 
<a href="#HyRolo" accesskey="p" rel="prev">HyRolo</a>, Up: <a href="#HyRolo" 
accesskey="u" rel="up">HyRolo</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#HyRolo-Menu" accesskey="n" rel="next">HyRolo Menu</a>, 
Previous: <a href="#HyRolo" accesskey="p" rel="prev">HyRolo</a>, Up: <a 
href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Concepts-1"></a>
-<h3 class="section">7.1 Rolo Concepts</h3>
+<a name="HyRolo-Concepts-1"></a>
+<h3 class="section">7.1 HyRolo Concepts</h3>
 
 <a name="index-rolo-file"></a>
 <a name="index-rolo-entry"></a>
@@ -5109,12 +5271,12 @@ Searching for Manager turns up all Staffer entries.
 </p>
 
 <hr>
-<a name="Rolo-Menu"></a>
+<a name="HyRolo-Menu"></a>
 <div class="header">
 <p>
-Next: <a href="#Rolo-Searching" accesskey="n" rel="next">Rolo Searching</a>, 
Previous: <a href="#Rolo-Concepts" accesskey="p" rel="prev">Rolo Concepts</a>, 
Up: <a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#HyRolo-Searching" accesskey="n" rel="next">HyRolo 
Searching</a>, Previous: <a href="#HyRolo-Concepts" accesskey="p" 
rel="prev">HyRolo Concepts</a>, Up: <a href="#HyRolo" accesskey="u" 
rel="up">HyRolo</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Menu-1"></a>
+<a name="Rolo-Menu"></a>
 <h3 class="section">7.2 Rolo Menu</h3>
 
 <p>The Rolo submenu of the Hyperbole menu offers a full set of commands
@@ -5123,9 +5285,10 @@ so.
 </p>
 <div class="float"><a name="image_003aRolo-Menu"></a>
 
-<div align="center"><img src="im/menu-rolo.png" alt="Rolo Menu">
-</div><div class="float-caption"><p><strong>Image 7.1: </strong>Rolo 
Menu</p></div></div>
+<div align="center"><img src="im/menu-rolo.png" alt="HyRolo Menu">
+</div><div class="float-caption"><p><strong>Image 7.1: </strong>HyRolo 
Menu</p></div></div>
 <a name="index-rolo-menu"></a>
+<a name="index-HyRolo-menu"></a>
 <p>The Rolo/ menu entry on the Hyperbole minibuffer menu provides the same
 set of commands as the menubar menu, with more concise labels.
 The Rolo/ menu offers the following commands:
@@ -5145,13 +5308,13 @@ The Rolo/ menu offers the following commands:
 <div class="example">
 <pre class="example">Menu Item       Command                 Description
 =====================================================================
-Add             hyrolo-add              Adds a rolo entry
+Add             hyrolo-add              Adds a hyrolo entry
 Display         hyrolo-display-matches  Displays last matches again
-Edit            hyrolo-edit             Edits an existing rolo entry
-Info                                    Displays a rolo manual entry
-Kill            hyrolo-kill             Deletes a rolo entry
+Edit            hyrolo-edit             Edits an existing hyrolo entry
+Info                                    Displays a hyrolo manual entry
+Kill            hyrolo-kill             Deletes a hyrolo entry
 Mail            hyrolo-mail             Mails to an address at point
-Order           hyrolo-sort             Sorts all rolo levels
+Order           hyrolo-sort             Sorts all hyrolo levels
 RegexFind       hyrolo-grep             Finds all entries containing
                                           a regular expression
 StringFind      hyrolo-fgrep            Finds all entries containing
@@ -5160,7 +5323,7 @@ StringFind      hyrolo-fgrep            Finds all entries 
containing
 WordFind        hyrolo-word             Finds all entries containing
                                           a string of whole words
 Yank            hyrolo-yank             Inserts the first matching
-                                          rolo entry at point
+                                          hyrolo entry at point
 =====================================================================
 </pre></div>
 
@@ -5170,8 +5333,8 @@ The search is terminated whenever that number of matches 
is found.
 </p>
 <p>For any of the above commands that prompt for a name such as Edit or
 Add (not the Find commands), you may use the form parent/child to
-locate a child entry below a specific parent.  Hence, for a rolo which
-looked like so:
+locate a child entry below a specific parent.  Hence, for a HyRolo which
+looks like so:
 </p>
 <div class="example">
 <pre class="example">*    Company
@@ -5179,10 +5342,10 @@ looked like so:
 ***      Staffer
 </pre></div>
 
-<p>you could refer to the Staffer entry with the following hierarchical
+<p>you can refer to the Staffer entry with the following hierarchical
 notation, Company/Manager/Staffer.  This hierarchical
 notation is not used in search expressions since they search the
-entire rolo anyway.  Thus, &quot;Staffer&quot; as a search pattern will find 
an entry
+entire HyRolo anyway.  Thus, &quot;Staffer&quot; as a search pattern will find 
an entry
 containing &quot;Staffer&quot; at any level in a hierarchy, like so:
 </p>
 <div class="example">
@@ -5190,20 +5353,20 @@ containing &quot;Staffer&quot; at any level in a 
hierarchy, like so:
 </pre></div>
 
 <hr>
-<a name="Rolo-Searching"></a>
+<a name="HyRolo-Searching"></a>
 <div class="header">
 <p>
-Next: <a href="#Rolo-Keys" accesskey="n" rel="next">Rolo Keys</a>, Previous: 
<a href="#Rolo-Menu" accesskey="p" rel="prev">Rolo Menu</a>, Up: <a 
href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#HyRolo-Keys" accesskey="n" rel="next">HyRolo Keys</a>, 
Previous: <a href="#HyRolo-Menu" accesskey="p" rel="prev">HyRolo Menu</a>, Up: 
<a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Searching-1"></a>
-<h3 class="section">7.3 Rolo Searching</h3>
+<a name="HyRolo-Searching-1"></a>
+<h3 class="section">7.3 HyRolo Searching</h3>
 
 <a name="index-rolo-searching"></a>
 <a name="index-searching_002c-rolo"></a>
 <a name="index-menu-item_002c-RegexFind"></a>
 <a name="index-menu-item_002c-WordFind"></a>
 <a name="index-menu-item_002c-StringFind"></a>
-<p>See <a href="#Rolo-Menu">Rolo Menu</a>, for the list of rolo search 
commands.  In this
+<p>See <a href="#HyRolo-Menu">HyRolo Menu</a>, for the list of HyRolo search 
commands.  In this
 section, the menu item names from the minibuffer menu are used to
 refer to each command.
 </p>
@@ -5257,13 +5420,13 @@ you should contact.
 
 
 <hr>
-<a name="Rolo-Keys"></a>
+<a name="HyRolo-Keys"></a>
 <div class="header">
 <p>
-Next: <a href="#Rolo-Settings" accesskey="n" rel="next">Rolo Settings</a>, 
Previous: <a href="#Rolo-Searching" accesskey="p" rel="prev">Rolo 
Searching</a>, Up: <a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#HyRolo-Settings" accesskey="n" rel="next">HyRolo Settings</a>, 
Previous: <a href="#HyRolo-Searching" accesskey="p" rel="prev">HyRolo 
Searching</a>, Up: <a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Keys-1"></a>
-<h3 class="section">7.4 Rolo Keys</h3>
+<a name="HyRolo-Keys-1"></a>
+<h3 class="section">7.4 HyRolo Keys</h3>
 
 <a name="index-hyrolo-menu"></a>
 <a name="index-rolo-keys"></a>
@@ -5349,7 +5512,7 @@ to expand all entries in the buffer.
 <dt><kbd>{n}</kbd></dt>
 <dd><p>Move to the next entry at any level.
 <a name="index-rolo_002c-p"></a>
-<a name="index-p"></a>
+<a name="index-p-1"></a>
 </p></dd>
 <dt><kbd>{p}</kbd></dt>
 <dd><p>Move to the previous entry at any level.
@@ -5409,13 +5572,13 @@ rolo match buffer, use <kbd>{q}</kbd> to quit.  This 
will restore your
 current frame to its state prior to the rolo search.
 </p>
 <hr>
-<a name="Rolo-Settings"></a>
+<a name="HyRolo-Settings"></a>
 <div class="header">
 <p>
-Previous: <a href="#Rolo-Keys" accesskey="p" rel="prev">Rolo Keys</a>, Up: <a 
href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Previous: <a href="#HyRolo-Keys" accesskey="p" rel="prev">HyRolo Keys</a>, Up: 
<a href="#HyRolo" accesskey="u" rel="up">HyRolo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<a name="Rolo-Settings-1"></a>
-<h3 class="section">7.5 Rolo Settings</h3>
+<a name="HyRolo-Settings-1"></a>
+<h3 class="section">7.5 HyRolo Settings</h3>
 
 <a name="index-hyrolo_002dfile_002dlist"></a>
 <a name="index-rolo_002c-personal"></a>
@@ -5431,7 +5594,7 @@ command on the rolo menu adds entries.
 </p>
 <p>Hyperbole releases earlier than 4.17 used a different file name for the
 personal rolo.  If such a file exists, you will be prompted to rename
-it whenever the Rolo system is loaded.
+it whenever the HyRolo system is loaded.
 </p>
 <a name="index-BBDB"></a>
 <a name="index-Big-Brother-DataBase"></a>
@@ -5464,7 +5627,7 @@ the face which highlights search matches.
 <dt><code>hyrolo-kill-buffers-after-use</code>
 <a name="index-hyrolo_002dkill_002dbuffers_002dafter_002duse"></a>
 </dt>
-<dd><p>Rolo file buffers are left around after they are searched, on the
+<dd><p>HyRolo file buffers are left around after they are searched, on the
 assumption that another search is likely to follow within this emacs
 session.  You may wish to change this behavior with the following
 setting: <code>(setq hyrolo-kill-buffers-after-use t)</code>.
@@ -6557,18 +6720,7 @@ to documents created and managed by tools other than 
Hyperbole, for
 example, programming documentation.  <b>Ibtype</b> is a synonym for
 implicit button type.  See also <b>system encapsulation</b>.
 </p>
-<a name="index-InfoDock-1"></a>
-</dd>
-<dt><b>InfoDock</b></dt>
-<dd><p>InfoDock is an integrated productivity toolset for software engineers
-and knowledge workers.  It is presently built atop XEmacs and is no
-longer maintained.  An older version from 1999 may be found at
-infodock.sf.net.  InfoDock has all the power of emacs, but with an
-easier to use and more comprehensive menu-based user interface.  Most
-objections people raise to using emacs have already been addressed in
-InfoDock.  InfoDock was meant for people who wanted a complete,
-pre-customized environment in one package.
-</p>
+
 </dd>
 <dt><b>Instance Number</b></dt>
 <dd><p>A colon prefaced number appended to the label of a newly created button
@@ -6961,7 +7113,7 @@ in future Emacs sessions.
 <p>Use Cust/All-Options <kbd>{C-h h c a}</kbd> to display an expandable tree of
 customizable Hyperbole options.  Hyperbole&rsquo;s customizations are
 further grouped into several sub-categories, one for the Koutliner,
-one for the Rolo, etc.  You can select either an entire category or a
+one for the HyRolo, etc.  You can select either an entire category or a
 specfic option and they will appear in another window for editing.
 Simply follow the instructions on screen and then press the &ldquo;Apply
 and Save&rdquo; button to make any changes permanent.
@@ -7230,21 +7382,20 @@ Previous: <a href="#Link-Variable-Substitution" 
accesskey="p" rel="prev">Link Va
 </div>
 <a name="Configuring-Button-Colors"></a>
 <h4 class="subsection">B.3.7 Configuring Button Colors</h4>
-<a name="index-XEmacs-support"></a>
 <a name="index-Emacs-support"></a>
 <a name="index-button-highlighting-1"></a>
 <a name="index-button-flashing"></a>
 <a name="index-file_002c-hui_002dep_002a_002eel"></a>
 <a name="index-file_002c-hsettings_002eel"></a>
 <a name="index-hproperty_003acycle_002dbut_002dcolor"></a>
-<p>When Hyperbole is run under a window system together with InfoDock,
-Emacs, or XEmacs, it automatically highlights any explicit buttons in
-a buffer and makes them flash when selected.  The main setting you may
-want change is the selection of a color (or style) for button
-highlighting and button flashing.  See the <samp>hui-*-b*.el</samp> files for
-lists of potential colors and the code which supports this behavior.  A
-call to <code>(hproperty:cycle-but-color)</code> in the 
<samp>hsettings.el</samp>
-file changes the color used to highlight and flash explicit buttons.
+<p>When Hyperbole is run under a window system, it automatically
+highlights any explicit buttons in a buffer and makes them flash when
+selected.  The main setting you may want change is the selection of a
+color (or style) for button highlighting and button flashing.  See
+the <samp>hui-*-b*.el</samp> files for lists of potential colors and the
+code which supports this behavior.  A call
+to <code>(hproperty:cycle-but-color)</code> in the <samp>hsettings.el</samp> 
file
+changes the color used to highlight and flash explicit buttons.
 </p>
 <a name="index-button-emphasis"></a>
 <a name="index-hproperty_003abut_002demphasize_002dp"></a>
@@ -8284,28 +8435,35 @@ Next: <a 
href="#Smart-Mouse-_002d-Drags-between-Windows" accesskey="n" rel="next
 <div class="format">
 <pre class="format">If depressed within a window mode line:
   ACTION KEY
-     (1) clicked on the left edge of a window&rsquo;s modeline, the 
window&rsquo;s
-         buffer is buried (placed at the bottom of the buffer list);
+     (1) clicked on the first blank character of a window&rsquo;s modeline,
+         the window&rsquo;s buffer is buried (placed at the bottom of the
+         buffer list);
      (2) clicked on the right edge of a window&rsquo;s modeline, the Info
          buffer is displayed, or if it is already displayed and the
          modeline clicked upon belongs to a window displaying Info,
          the Info buffer is hidden;
-     (3) clicked anywhere within the middle of a window&rsquo;s modeline,
+     (3) clicked on the buffer id of a window&rsquo;s modeline, dired is run
+         on the current directory, replacing the window&rsquo;s buffer;
+         successive clicks walk up the directory tree
+     (4) clicked anywhere within the middle of a window&rsquo;s modeline,
          the function given by &lsquo;action-key-modeline-function&rsquo; is 
called;
-     (4) dragged vertically from a modeline to within a window, the
+     (5) dragged vertically from a modeline to within a window, the
          modeline is moved to the point of the drag release, thereby
          resizing its window and potentially its vertically neighboring
          windows.
   ASSIST KEY
-     (1) clicked on the left edge of a window&rsquo;s modeline, the bottom
-         buffer in the buffer list is unburied and placed in the window;
+     (1) clicked on the first blank character of a window&rsquo;s modeline,
+         the bottom buffer in the buffer list is unburied and placed in
+         the window;
      (2) clicked on the right edge of a window&rsquo;s modeline, the summary
          of Smart Key behavior is displayed, or if it is already
          displayed and the modeline clicked upon belongs to a window
          displaying the summary, the summary buffer is hidden;
-     (3) clicked anywhere within the middle of a window&rsquo;s modeline,
+     (3) clicked on the buffer id of a window&rsquo;s modeline, the next
+         buffer in sequence is displayed in the window
+     (4) clicked anywhere within the middle of a window&rsquo;s modeline,
          the function given by &lsquo;assist-key-modeline-function&rsquo; is 
called;
-     (4) dragged vertically from a modeline to within a window, the
+     (5) dragged vertically from a modeline to within a window, the
          modeline is moved to the point of the drag release, thereby
          resizing its window and potentially its vertically neighboring
          windows.
@@ -8489,7 +8647,7 @@ Previous: <a href="#Smart-Mouse-Keys" accesskey="p" 
rel="prev">Smart Mouse Keys<
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW 
URLs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Rolo-Match-Buffers">Smart Key - Rolo Match 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku 
Game</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -8660,26 +8818,34 @@ Next: <a href="#Smart-Key-_002d-Hyperbole-Buttons" 
accesskey="n" rel="next">Smar
 <a name="Smart-Key-_002d-Dired-Mode-1"></a>
 <h4 class="subsection">E.2.7 Smart Key - Dired Mode</h4>
 <a name="index-click_002c-dired"></a>
+<a name="index-drag_002c-dired"></a>
 <a name="index-dired-browsing"></a>
+<a name="index-DisplayHere-mode"></a>
 <div class="format">
 <pre class="format">If pressed within a dired-mode (directory editor) buffer:
   ACTION KEY
      (1) within an entry line, the selected file/directory is displayed
-         for editing in the other window;
-     (2) on the first line of the buffer, if any deletes are to be
-         performed, they are executed after user verification; otherwise,
-         nothing is done;
-     (3) on or after the last line in the buffer, this dired invocation
-         is quit.
+         for editing, normally in another window but if an entry has been 
dragged
+         for display in another window, then this entry is displayed in the 
current
+         window (DisplayHere minor mode is shown in the mode-line; use 
<kbd>{g}</kbd> to
+         disable it)
+     (2) on the first line of the buffer:
+         (a) within the leading whitespace, then if any deletes are to be
+             performed, they are executed after user verification; otherwise,
+             nothing is done;
+         (b) otherwise, dired is run in another window on the ancestor 
directory
+             of the current directory path up through the location of point;
+             if point is before the first character, then the / root directory
+             is used.
+     (3) on or after the last line in the buffer or at the end of the first 
line,
+         this dired invocation is quit.
   ASSIST KEY
-     (1) on a ~ character, all backup files in the directory are marked
-         for deletion;
-     (2) on a # character, all auto-save files in the directory are
-         marked for deletion;
-     (3) anywhere else within an entry line, the current entry is marked
-         for deletion;
-     (4) on or after the last line in the buffer, all delete marks on
-         all entries are undone.
+     (1) on a ~ character, all backup files in the directory are marked for 
deletion;
+     (2) on a # character, all auto-save files in the directory are marked for
+         deletion;
+     (3) anywhere else within an entry line, the current entry is marked for 
deletion;
+     (4) on or after the last line in the buffer or at the end of the first 
line,
+         all delete marks on all entries are undone.
 </pre></div>
 
 <hr>
@@ -9518,7 +9684,7 @@ containing its pathname:
 <a name="Smart-Key-_002d-WWW-URLs"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-_002d-Rolo-Match-Buffers" accesskey="n" 
rel="next">Smart Key - Rolo Match Buffers</a>, Previous: <a 
href="#Smart-Key-_002d-Man-Pages" accesskey="p" rel="prev">Smart Key - Man 
Pages</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-_002d-HyRolo-Match-Buffers" accesskey="n" 
rel="next">Smart Key - HyRolo Match Buffers</a>, Previous: <a 
href="#Smart-Key-_002d-Man-Pages" accesskey="p" rel="prev">Smart Key - Man 
Pages</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart 
Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-WWW-URLs-1"></a>
 <h4 class="subsection">E.2.35 Smart Key - WWW URLs</h4>
@@ -9535,17 +9701,17 @@ Next: <a href="#Smart-Key-_002d-Rolo-Match-Buffers" 
accesskey="n" rel="next">Sma
 </pre></div>
 
 <hr>
-<a name="Smart-Key-_002d-Rolo-Match-Buffers"></a>
+<a name="Smart-Key-_002d-HyRolo-Match-Buffers"></a>
 <div class="header">
 <p>
 Next: <a href="#Smart-Key-_002d-Gomoku-Game" accesskey="n" rel="next">Smart 
Key - Gomoku Game</a>, Previous: <a href="#Smart-Key-_002d-WWW-URLs" 
accesskey="p" rel="prev">Smart Key - WWW URLs</a>, Up: <a 
href="#Smart-Keyboard-Keys" accesskey="u" rel="up">Smart Keyboard Keys</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<a name="Smart-Key-_002d-Rolo-Match-Buffers-1"></a>
-<h4 class="subsection">E.2.36 Smart Key - Rolo Match Buffers</h4>
+<a name="Smart-Key-_002d-HyRolo-Match-Buffers-1"></a>
+<h4 class="subsection">E.2.36 Smart Key - HyRolo Match Buffers</h4>
 <a name="index-click_002c-hyrolo-matches"></a>
 <a name="index-hyrolo-matches"></a>
 <div class="format">
-<pre class="format">If pressed within an entry in the Rolo search results 
buffer:
+<pre class="format">If pressed within an entry in the HyRolo search results 
buffer:
   ACTION KEY or ASSIST KEY
      The entry is edited in the other window.
 </pre></div>
@@ -9554,7 +9720,7 @@ Next: <a href="#Smart-Key-_002d-Gomoku-Game" 
accesskey="n" rel="next">Smart Key
 <a name="Smart-Key-_002d-Gomoku-Game"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-_002d-The-OO_002dBrowser" accesskey="n" 
rel="next">Smart Key - The OO-Browser</a>, Previous: <a 
href="#Smart-Key-_002d-Rolo-Match-Buffers" accesskey="p" rel="prev">Smart Key - 
Rolo Match Buffers</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+Next: <a href="#Smart-Key-_002d-The-OO_002dBrowser" accesskey="n" 
rel="next">Smart Key - The OO-Browser</a>, Previous: <a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers" accesskey="p" rel="prev">Smart Key 
- HyRolo Match Buffers</a>, Up: <a href="#Smart-Keyboard-Keys" accesskey="u" 
rel="up">Smart Keyboard Keys</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
 <a name="Smart-Key-_002d-Gomoku-Game-1"></a>
 <h4 class="subsection">E.2.37 Smart Key - Gomoku Game</h4>
@@ -9761,9 +9927,10 @@ Next: <a href="#Future-Work" accesskey="n" 
rel="next">Future Work</a>, Previous:
 people have canceled meditation trips to the Far East after
 discovering that pressing the Action Key in random contexts serves a
 similar purpose much more cheaply.  We have not seen anyone&rsquo;s mind
-turn to jelly but with the thinking Hyperbole saves you, you might
+turn to jelly but with the cognition Hyperbole saves you, you might
 just grow a second one.  Eventually, you will be at peace and will
-understand that there is no adequate description of Hyperbole.
+understand that there is no adequate description of Hyperbole.  Just
+let it flow through you.
 </p>
 <p>Ok, joking aside, now that we have your attention, here are some
 serious questions and answers.
@@ -9895,7 +10062,7 @@ in mind, however.
 <dl compact="compact">
 <dt>Button Copying, Killing, and Yanking</dt>
 <dd><p>There is as yet no means of transferring explicit buttons among
-buffers. We realize this is a critical need.  Users should be able to
+buffers. We realize this is an important need.  Users should be able to
 manipulate text with embedded buttons in ordinary ways.  With this
 feature, Hyperbole would store the button attributes as text
 properties within the buffers so that if a button is copied, its
@@ -9910,6 +10077,16 @@ view of a Koutline and to move around in it, for ease 
of study.
 Switching between view and edit modes will also be simple.
 </p>
 </dd>
+<dt>Direct Manipulation</dt>
+<dd><p>Hyperbole is designed to let you rapidly navigate and manipulate
+large, distributed information spaces.  Being able to directly
+manipulate entities in these spaces will accelerate understanding and
+production of new information.  Already Hyperbole lets you drag
+buffers, windows, files, and directories and place them where you
+like.  But there is much more that can be done to allow for
+higher-level browsing and information organization.
+</p>
+</dd>
 <dt>Trails</dt>
 <dd><p>Trails are an extension to the basic history mechanism presently offered
 by Hyperbole.  Trails will allow a user to capture, edit and store a
@@ -10212,14 +10389,14 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-_002b"><code>+</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_symbol-5">,</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002c-or-_003e"><code>, or 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002c-or-_003e"><code>, or 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_symbol-6">-</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_002d"><code>-</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_symbol-7">.</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_002e"><code>.</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002e-or-_003c"><code>. or 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002e-or-_003c"><code>. or 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_symbol-8">0</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-0_002d9"><code>0-9</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyControl">HyControl</a></td></tr>
@@ -10237,6 +10414,8 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-_007e"><code>~</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-A">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-a"><code>a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-A"><code>A</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Key-1"><code>Action 
Key</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-cell-argument-1"><code>Action Key, cell 
argument</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-hide-or-show-cell-1"><code>Action Key, hide or 
show cell</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
@@ -10247,7 +10426,7 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-B">B</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-b"><code>b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-b-1"><code>b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-b-1"><code>b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-C">C</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-c"><code>c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10357,18 +10536,19 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><th><a name="Key-Index_ky_letter-D">D</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-d"><code>d</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-D"><code>D</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-DEL"><code><span 
class="key">DEL</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-DEL"><code><span 
class="key">DEL</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-down"><code>down</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-F">F</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-f"><code>f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-f-1"><code>f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-F"><code>F</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-f-1"><code>f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-H">H</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-h"><code>h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-H"><code>H</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-HyControl_002c-see-screen"><code>HyControl, see 
screen</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-HyRolo_002c-see-rolo"><code>HyRolo, see 
rolo</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-HyRolo_002c-see-rolo"><code>HyRolo, see 
rolo</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-I">I</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-i"><code>i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10381,6 +10561,7 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-keypad-number"><code>keypad 
number</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-L">L</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-l"><code>l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-left"><code>left</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-M">M</a></th><td></td><td></td></tr>
@@ -10402,47 +10583,49 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-N">N</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-n"><code>n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-n-1"><code>n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-n-1"><code>n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-O">O</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-o"><code>o</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-O"><code>O</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-P">P</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-p"><code>p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-p"><code>p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-p-1"><code>p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-Q">Q</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-q"><code>q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-q-1"><code>q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-r"><code>r</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-right"><code>right</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-_002c"><code>rolo, 
,</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-_002e"><code>rolo, 
.</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-_003c"><code>rolo, 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-_003e"><code>rolo, 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-a"><code>rolo, 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-b"><code>rolo, 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-C_002dr"><code>rolo, 
C-r</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-C_002ds"><code>rolo, 
C-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-DEL"><code>rolo, <span 
class="key">DEL</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-e"><code>rolo, 
e</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-f"><code>rolo, 
f</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-h"><code>rolo, 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-l"><code>rolo, 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-M_002ds"><code>rolo, 
M-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-M_002dTAB"><code>rolo, 
M-<span class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-n"><code>rolo, 
n</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-o"><code>rolo, 
o</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-p"><code>rolo, 
p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-q"><code>rolo, 
q</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-r"><code>rolo, 
r</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-s"><code>rolo, 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-SHIFT_002dTAB"><code>rolo, <span 
class="key">SHIFT</span>-<span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-SPC"><code>rolo, <span 
class="key">SPC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-t"><code>rolo, 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-TAB"><code>rolo, <span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-u"><code>rolo, 
u</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-_002c"><code>rolo, 
,</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-_002e"><code>rolo, 
.</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-_003c"><code>rolo, 
&lt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-_003e"><code>rolo, 
&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-a"><code>rolo, 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-b"><code>rolo, 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-C_002dr"><code>rolo, 
C-r</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-C_002ds"><code>rolo, 
C-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-DEL"><code>rolo, <span 
class="key">DEL</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-e"><code>rolo, 
e</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-f"><code>rolo, 
f</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-h"><code>rolo, 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-l"><code>rolo, 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-M_002ds"><code>rolo, 
M-s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-M_002dTAB"><code>rolo, 
M-<span class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-n"><code>rolo, 
n</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-o"><code>rolo, 
o</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-p"><code>rolo, 
p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-q"><code>rolo, 
q</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-r"><code>rolo, 
r</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-s"><code>rolo, 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-SHIFT_002dTAB"><code>rolo, <span 
class="key">SHIFT</span>-<span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-SPC"><code>rolo, <span 
class="key">SPC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-t"><code>rolo, 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-TAB"><code>rolo, <span 
class="key">TAB</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-u"><code>rolo, 
u</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-S">S</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-s"><code>s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10454,6 +10637,8 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-screen_002c-_002e"><code>screen, 
.</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-screen_002c-0_002d9"><code>screen, 
0-9</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-_003d"><code>screen, 
=</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-a"><code>screen, 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-A"><code>screen, 
A</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-b"><code>screen, 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-c"><code>screen, 
c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-screen_002c-C_002dc-_005c"><code>screen, C-c 
\</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10463,18 +10648,22 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-screen_002c-D"><code>screen, 
D</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-down"><code>screen, 
down</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-f"><code>screen, 
f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-F"><code>screen, 
F</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-h"><code>screen, 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-H"><code>screen, 
H</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-i"><code>screen, 
i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-j"><code>screen, 
j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-k"><code>screen, 
k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-screen_002c-keypad-number"><code>screen, keypad 
number</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-l"><code>screen, 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-left"><code>screen, 
left</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-m"><code>screen, 
m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-n"><code>screen, 
n</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-o"><code>screen, 
o</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-O"><code>screen, 
O</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-p"><code>screen, 
p</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-q"><code>screen, 
q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-r"><code>screen, 
r</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-right"><code>screen, 
right</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-s"><code>screen, 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-t"><code>screen, 
t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10491,7 +10680,7 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-shift_002dleft-mouse-key"><code>shift-left mouse 
key</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-shift_002dmiddle-mouse-key"><code>shift-middle mouse 
key</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-shift_002dright-mouse-key"><code>shift-right mouse 
key</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SPC"><code><span 
class="key">SPC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-SPC"><code><span 
class="key">SPC</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-T">T</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-t"><code>t</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10500,7 +10689,7 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-U">U</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-u"><code>u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-u-1"><code>u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-u-1"><code>u</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-up"><code>up</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-W">W</a></th><td></td><td></td></tr>
@@ -10635,8 +10824,8 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002ddefault_002dfunction-1">action-key-default-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002deol_002dfunction">action-key-eol-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dminibuffer_002dfunction">action-key-minibuffer-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Minibuffer-Menu-Activation">Minibuffer Menu 
Activation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline"><code>action-key-modeline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline_002dfunction">action-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline"><code>action-key-modeline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline_002dfunction">action-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dkey_002dmodeline_002dfunction-1">action-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Modeline-Clicks-and-Drags">Modeline Clicks and 
Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dmouse_002dkey"><code>action-mouse-key</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-actype_003acreate"><code>actype:create</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Action-Type-Creation">Action Type Creation</a></td></tr>
@@ -10680,8 +10869,8 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002ddefault_002dfunction-1">assist-key-default-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002deol_002dfunction">assist-key-eol-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dminibuffer_002dfunction">assist-key-minibuffer-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Minibuffer-Menu-Activation">Minibuffer Menu 
Activation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline"><code>assist-key-modeline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline_002dfunction">assist-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline"><code>assist-key-modeline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline_002dfunction">assist-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dkey_002dmodeline_002dfunction-1">assist-key-modeline-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Modeline-Clicks-and-Drags">Modeline Clicks and 
Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-assist_002dmouse_002dkey"><code>assist-mouse-key</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
@@ -10708,7 +10897,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-defact"><code>defact</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Action-Type-Creation">Action Type Creation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-defib"><code>defib</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Implicit-Button-Types">Implicit Button 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-dir_002c-_007e_002f_002ehyperb">dir, 
~/.hyperb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Files">Button Files</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-dired_002djump"><code>dired-jump</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dired_002djump"><code>dired-jump</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-E">E</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ebut_002dcreate_002dhook">ebut-create-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
@@ -10722,9 +10911,9 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-eval_002dlast_002dsexp"><code>eval-last-sexp</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-F">F</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Renaming">Renaming</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-1">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-2">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-1">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Renaming">Renaming</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-2">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-3">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-_002eemacs-4">file, 
.emacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-_002ehypb">file, 
.hypb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
@@ -10775,6 +10964,9 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hbut_003alabel_002dto_002dkey">hbut:label-to-key</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Button-Label-Normalization">Button Label 
Normalization</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dbegin_002dload_002dhook">hibtypes-begin-load-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dend_002dload_002dhook">hibtypes-end-load-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dgit_002ddefault_002dproject">hibtypes-git-default-project</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dgithub_002ddefault_002dproject">hibtypes-github-default-project</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dgithub_002ddefault_002duser">hibtypes-github-default-user</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hibtypes_002dsocial_002ddefault_002dservice">hibtypes-social-default-service</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002dalist">hkey-alist</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002dalways_002ddisplay_002dmenu">hkey-always-display-menu</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Smart-Menus">Smart Key - Smart 
Menus</a></td></tr>
@@ -10787,8 +10979,8 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hmail_003areader">hmail:reader</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-_002d-Email-Composers">Smart Key - Email 
Composers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dadd_002dunshifted_002dkeys"><code>hmouse-add-unshifted-keys</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dalist">hmouse-alist</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dcontext_002dibuffer_002dmenu"><code>hmouse-context-ibuffer-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dcontext_002dmenu"><code>hmouse-context-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dcontext_002dibuffer_002dmenu"><code>hmouse-context-ibuffer-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hmouse_002dcontext_002dmenu"><code>hmouse-context-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dget_002dbindings"><code>hmouse-get-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dget_002dbindings-1"><code>hmouse-get-bindings</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Questions-and-Answers">Questions and 
Answers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hmouse_002dmiddle_002dflag">hmouse-middle-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Keys">Smart Keys</a></td></tr>
@@ -10817,7 +11009,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hproperty_003acycle_002dbut_002dcolor"><code>hproperty:cycle-but-color</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-htype_002dcreate_002dhook">htype-create-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-htype_002ddelete_002dhook">htype-delete-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hui_002dmenu_002dscreen_002dcommands"><code>hui-menu-screen-commands</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hui_002dmenu_002dscreen_002dcommands"><code>hui-menu-screen-commands</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Modeline-Clicks">Smart Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_002dselect_002dgoto_002dmatching_002dtag"><code>hui-select-goto-matching-tag</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_002dselect_002dthing"><code>hui-select-thing</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_002dselect_002dthing_002dwith_002dmouse"><code>hui-select-thing-with-mouse</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a></td></tr>
@@ -10837,30 +11029,30 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dpopup_002dmenu"><code>hyperbole-popup-menu</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default 
Context</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dweb_002dsearch_002dalist">hyperbole-web-search-alist</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Web-Search-Engines">Web Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dweb_002dsearch_002dbrowser_002dfunction">hyperbole-web-search-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd"><code>hyrolo-add</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd_002dhook">hyrolo-add-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd"><code>hyrolo-add</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd_002dhook">hyrolo-add-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dadd_002dhook-1">hyrolo-add-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dformat_002dfunction">hyrolo-display-format-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dformat_002dfunction">hyrolo-display-format-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dhook">hyrolo-display-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dmatches"><code>hyrolo-display-matches</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit"><code>hyrolo-edit</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit_002dhook">hyrolo-edit-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002ddisplay_002dmatches"><code>hyrolo-display-matches</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit"><code>hyrolo-edit</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit_002dhook">hyrolo-edit-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dedit_002dhook-1">hyrolo-edit-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002demail_002dformat">hyrolo-email-format</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dentry_002dregexp">hyrolo-entry-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfgrep"><code>hyrolo-fgrep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfile_002dlist">hyrolo-file-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgrep"><code>hyrolo-grep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dhdr_002dregexp">hyrolo-hdr-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dhighlight_002dface">hyrolo-highlight-face</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dkill"><code>hyrolo-kill</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dkill_002dbuffers_002dafter_002duse">hyrolo-kill-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dmail_002dto"><code>hyrolo-mail-to</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002demail_002dformat">hyrolo-email-format</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dentry_002dregexp">hyrolo-entry-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfgrep"><code>hyrolo-fgrep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfile_002dlist">hyrolo-file-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgrep"><code>hyrolo-grep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dhdr_002dregexp">hyrolo-hdr-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dhighlight_002dface">hyrolo-highlight-face</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dkill"><code>hyrolo-kill</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dkill_002dbuffers_002dafter_002duse">hyrolo-kill-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dmail_002dto"><code>hyrolo-mail-to</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dmode_002dhook">hyrolo-mode-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsave_002dbuffers_002dafter_002duse">hyrolo-save-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Settings">Rolo Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsort"><code>hyrolo-sort</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dword"><code>hyrolo-word</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dyank"><code>hyrolo-yank</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsave_002dbuffers_002dafter_002duse">hyrolo-save-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsort"><code>hyrolo-sort</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dword"><code>hyrolo-word</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dyank"><code>hyrolo-yank</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dyank_002dreformat_002dfunction">hyrolo-yank-reformat-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hywconfig_002dadd_002dby_002dname"><code>hywconfig-add-by-name</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Window-Configurations">Window 
Configurations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hywconfig_002ddelete_002dby_002dname"><code>hywconfig-delete-by-name</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Window-Configurations">Window 
Configurations</a></td></tr>
@@ -10888,6 +11080,9 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-elisp_002dcompiler_002dmsg"><code>ibtypes 
elisp-compiler-msg</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ibtypes-etags"><code>ibtypes 
etags</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-function_002din_002dbuffer"><code>ibtypes 
function-in-buffer</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-ibtypes-git_002dcommit_002dreference"><code>ibtypes 
git-commit-reference</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-ibtypes-git_002dreference"><code>ibtypes 
git-reference</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-ibtypes-github_002dreference"><code>ibtypes 
github-reference</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-gnus_002dpush_002dbutton"><code>ibtypes 
gnus-push-button</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-grep_002dmsg"><code>ibtypes 
grep-msg</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-hyp_002daddress"><code>ibtypes 
hyp-address</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11247,18 +11442,20 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-autonumber-1">autonumber</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-B">B</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-BBDB">BBDB</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Settings">Rolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-BBDB">BBDB</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-bibliography">bibliography</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Big-Brother-DataBase">Big 
Brother DataBase</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Settings">Rolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Big-Brother-DataBase">Big 
Brother DataBase</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-blank-lines_002c-toggle">blank 
lines, toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-boolean-expressions">boolean 
expressions</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-breakpoint">breakpoint</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-browsing-URLs">browsing 
URLs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-browsing-URLs-in-find_002dfile">browsing URLs in 
find-file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-buffer-menu">buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer-id">buffer 
id</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-buffer-menu">buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-buffer-menu-1">buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-buffer-menu-2">buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Buffer-Menus">Smart Key - Buffer Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-bug-tracking">bug 
tracking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-bury-buffer">bury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-burying">burying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-button">button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-button-action">button 
action</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
@@ -11352,7 +11549,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-click_002c-dired">click, 
dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Dired-Mode">Smart Key - Dired Mode</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-end-of-line">click, 
end of line</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-Gnus">click, 
Gnus</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-GNUS-Newsreader">Smart Key - GNUS 
Newsreader</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-click_002c-hyrolo-matches">click, hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Rolo-Match-Buffers">Smart Key - Rolo Match 
Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-click_002c-hyrolo-matches">click, hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-ibuffer-menu">click, 
ibuffer menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Buffer-Menus">Smart Key - Buffer Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-Info">click, 
Info</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Info-Manuals">Smart Key - Info Manuals</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-click_002c-tar">click, 
tar</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Tar-File-Mode">Smart Key - Tar File Mode</a></td></tr>
@@ -11365,8 +11562,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-comment-1">comment</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-compiler-error">compiler 
error</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-compiler-error-1">compiler 
error</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-completion">completion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-completion-1">completion</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-Argument-Selection">Smart Key Argument 
Selection</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-completion">completion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-completion-1">completion</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-completion-2">completion</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-_002d-Argument-Completion">Smart Key - 
Argument Completion</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-configuration">configuration</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Customization">Customization</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-context">context</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11389,16 +11586,16 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-customization">customization</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Customization">Customization</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-customization-1">customization</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Customization">Customization</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-customize">customize</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-additions">customize, rolo 
additions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-datestamps">customize, rolo 
datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-edits">customize, rolo 
edits</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-additions">customize, rolo 
additions</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-datestamps">customize, rolo 
datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-customize_002c-rolo-edits">customize, rolo 
edits</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-customizing-web-search-menu">customizing web search 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Web-Search-Engines">Web 
Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cut-region">cut 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cutoff-lines">cutoff 
lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-D">D</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-database">database</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-RDB-Mode">Smart Key - RDB Mode</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-datestamps">datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-datestamps">datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-dbx">dbx</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-debugging-Smart-Keys">debugging 
Smart Keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-default-label-type">default 
label type</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
@@ -11412,14 +11609,16 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-digital-signature">digital 
signature</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-direct-link-creation">direct 
link creation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#By-Dragging">By Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-direct-selection">direct 
selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-directory-editor">directory 
editor</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-dired">dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-directory-editor">directory 
editor</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dired">dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dired-1">dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-dired-browsing">dired 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Dired-Mode">Smart Key - Dired Mode</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-disable-global-key-bindings">disable global key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-disable-Hyperbole">disable 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-disable-local-key-override">disable local key 
override</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-display">display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-display-function">display 
function</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-DisplayHere-mode">DisplayHere 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Dired-Mode">Smart Key - Dired Mode</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-distributed-collaboration">distributed 
collaboration</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner-History">Koutliner History</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-document-identifier">document 
identifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-double-click">double 
click</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Argument-Selection">Smart Key Argument Selection</a></td></tr>
@@ -11427,11 +11626,14 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-drag-1">drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-drag-2">drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-diagonal">drag, 
diagonal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-dired">drag, 
dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Dired-Mode">Smart Key - Dired Mode</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-horizontal">drag, 
horizontal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-side-edge">drag, side 
edge</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Side_002dby_002dSide-Window-Resizing">Side-by-Side Window 
Resizing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-vertical">drag, 
vertical</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-with-region">drag, 
with region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-with-region-1">drag, 
with region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dragging-items_002c-buffer-menu">dragging items, buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-dragging-items_002c-dired">dragging items, 
dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-E">E</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-e_002dmail-address">e-mail 
address</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11493,6 +11695,9 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><th><a name="Concept-Index_cp_letter-G">G</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-game_002c-gomoku">game, 
gomoku</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku Game</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-gdb">gdb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-git-commit-reference">git commit 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-git-reference">git 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-github-reference">github 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-global-button">global 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons">Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-global-button-1">global 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Buttons">Global Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-global-button-2">global 
button</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Button-Files">Button 
Files</a></td></tr>
@@ -11551,9 +11756,10 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-hypertext-1">hypertext</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hypertext-2">hypertext</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-HyRolo">HyRolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo">HyRolo</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyrolo-commands">hyrolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Menu">Rolo 
Menu</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyrolo-matches">hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Rolo-Match-Buffers">Smart Key - Rolo Match 
Buffers</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyrolo-menu">hyrolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-hyrolo-commands">hyrolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-hyrolo-matches">hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-HyRolo-menu">HyRolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-hyrolo-menu">hyrolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hywconfig-commands">hywconfig 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Window-Configurations">Window Configurations</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-I">I</a></th><td></td><td></td></tr>
@@ -11565,7 +11771,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-ibtype_002c-predicate">ibtype, 
predicate</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ibtype_002c-return-val">ibtype, 
return val</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ibtypes_002c-list-of">ibtypes, 
list of</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ibuffer-menu">ibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-ibuffer-menu">ibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ibuffer-menu-1">ibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Buffer-Menus">Smart Key - Buffer Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-idea-structuring">idea 
structuring</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner-History">Koutliner History</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-idstamp">idstamp</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
@@ -11580,15 +11786,10 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-importing">importing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-importing-a-file">importing a 
file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-inactive-minibuffer">inactive 
minibuffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Info-browser">Info 
browser</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Info-browser">Info 
browser</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Info-browsing">Info 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Info-Manuals">Smart Key - Info Manuals</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Info-manual">Info 
manual</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invocation">Invocation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Info-node">Info 
node</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-InfoDock">InfoDock</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-InfoDock-1">InfoDock</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-InfoDock-Action-Key">InfoDock 
Action Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-InfoDock-Paste-Key">InfoDock 
Paste Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-InfoDock_002c-obtaining">InfoDock, 
obtaining</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Top">Top</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-initialization-file">initialization 
file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-inserting-tabs">inserting 
tabs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-insertion">insertion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
@@ -11611,7 +11812,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-issue-tracking">issue 
tracking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-J">J</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-jump-menu">jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-jump-menu">jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-jump-menu-1">jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-K">K</a></th><td></td><td></td></tr>
@@ -11681,7 +11882,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-listing-attributes">listing 
attributes</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-locate-files">locate 
files</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-logging-Smart-Key-behavior">logging Smart Key 
behavior</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-logical-rolo-searches">logical 
rolo searches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-logical-rolo-searches">logical 
rolo searches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-M">M</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mail-address">mail 
address</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
@@ -11721,14 +11922,14 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-LocateFiles">menu 
item, LocateFiles</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu-item_002c-MatchFileBuffers">menu item, 
MatchFileBuffers</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-OccurHere">menu 
item, OccurHere</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu-item_002c-RegexFind">menu 
item, RegexFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu-item_002c-RegexFind">menu 
item, RegexFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu-item_002c-Remove_002dThis_002dMenu">menu item, 
Remove-This-Menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-RemoveLines">menu 
item, RemoveLines</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-item_002c-SaveLines">menu 
item, SaveLines</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu-item_002c-StringFind">menu 
item, StringFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu-item_002c-StringFind">menu 
item, StringFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu-item_002c-Toggle_002dIsearch_002dInvisible">menu item, 
Toggle-Isearch-Invisible</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invisible-Text-Searches">Invisible Text Searches</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu-item_002c-WindowsControl">menu item, 
WindowsControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu-item_002c-WordFind">menu 
item, WordFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu-item_002c-WordFind">menu 
item, WordFind</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-prefix">menu 
prefix</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu-use">menu 
use</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Butfile">menu, 
Butfile</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
@@ -11756,13 +11957,12 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Koutline">menu, 
Koutline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Mail_002dLists">menu, 
Mail-Lists</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Msg">menu, 
Msg</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu_002c-Outline">menu, 
Outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu_002c-Outline-1">menu, 
Outline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Menu-Commands">Menu 
Commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Outline">menu, 
Outline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Menu-Commands">Menu 
Commands</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-menu_002c-Outline_002fExample">menu, 
Outline/Example</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Outliner">menu, 
Outliner</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Rolo">menu, 
Rolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Screen">menu, 
Screen</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-menu_002c-Toggle_002dRolo_002dDates">menu, 
Toggle-Rolo-Dates</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-menu_002c-Toggle_002dRolo_002dDates">menu, 
Toggle-Rolo-Dates</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-top_002dlevel">menu, 
top-level</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-top_002dlevel-1">menu, 
top-level</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-menu_002c-Types">menu, 
Types</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
@@ -11783,13 +11983,20 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-minibuffer_002c-buffer-menu">minibuffer, buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-minibuffer_002c-default-actions">minibuffer, default 
actions</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-minibuffer_002c-jump-menu">minibuffer, jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline-click-and-drag">modeline click and 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline-click-and-drag">modeline click and 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-modeline-depress">modeline 
depress</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Modeline-Clicks-and-Drags">Modeline Clicks and Drags</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-buffer-menu">modeline, buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-Info-Browser">modeline, Info 
Browser</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-jump-menu">modeline, jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-screen-command-menu">modeline, screen command 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-buffer-id">modeline, buffer 
id</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-buffer-menu">modeline, buffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-bury-buffer">modeline, bury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-modeline_002c-dired">modeline, 
dired</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-Info-Browser">modeline, Info 
Browser</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-jump-menu">modeline, jump 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-leftmost-character">modeline, leftmost 
character</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-next-buffer">modeline, next 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-prev-buffer">modeline, prev 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-screen-command-menu">modeline, screen command 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-modeline_002c-Smart-Keys">modeline, Smart 
Keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-modeline_002c-unbury-buffer">modeline, unbury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-modeline_002c-view-spec">modeline, view 
spec</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-mouse">mouse</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse-bindings">mouse 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
@@ -11797,7 +12004,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-mouse-key-bindings">mouse key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Questions-and-Answers">Questions and Answers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse-key-toggle">mouse key 
toggle</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse-keys_002c-unshifted">mouse 
keys, unshifted</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mouse-paste">mouse 
paste</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse-support">mouse 
support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse_002c-moving-trees">mouse, 
moving trees</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-moving-buttons">moving 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
@@ -11859,7 +12065,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-P">P</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-paragraph_002c-filling">paragraph, 
filling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Paste-Key">Paste 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-paste-region">paste 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-pasting-a-region">pasting a 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-pasting-a-region-1">pasting a 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-between-Windows">Smart Mouse - Drags between 
Windows</a></td></tr>
@@ -11899,26 +12104,26 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-Rmail">Rmail</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Rolo">Rolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo">HyRolo</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-rolo-address">rolo 
address</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-commands">rolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Menu">Rolo 
Menu</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-entry">rolo 
entry</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Concepts">Rolo 
Concepts</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-file">rolo 
file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Concepts">Rolo 
Concepts</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-keys">rolo 
keys</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-menu">rolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Menu">Rolo 
Menu</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo-searching">rolo 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Searching">Rolo Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-commands">rolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-entry">rolo 
entry</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Concepts">HyRolo Concepts</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-file">rolo 
file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Concepts">HyRolo 
Concepts</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-keys">rolo 
keys</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-menu">rolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo-searching">rolo 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-rolo_002c-buttons-in">rolo, 
buttons in</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo">HyRolo</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-datestamps">rolo, 
datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-editing">rolo, 
editing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-extending-a-match">rolo, extending a 
match</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-finding-matches">rolo, 
finding matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-highlighting-matches">rolo, highlighting 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-highlighting-matches-1">rolo, highlighting 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Settings">Rolo 
Settings</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-interactive-searching">rolo, interactive 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-locating-a-name">rolo, 
locating a name</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Rolo-Keys">Rolo Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-moving-through-matches">rolo, moving through 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-moving-to-entries">rolo, moving to 
entries</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-outlining">rolo, 
outlining</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-personal">rolo, 
personal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Settings">Rolo 
Settings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rolo_002c-quitting">rolo, 
quitting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Keys">Rolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-datestamps">rolo, 
datestamps</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-editing">rolo, 
editing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-extending-a-match">rolo, extending a 
match</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-finding-matches">rolo, 
finding matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-highlighting-matches">rolo, highlighting 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-highlighting-matches-1">rolo, highlighting 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-interactive-searching">rolo, interactive 
searching</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-locating-a-name">rolo, 
locating a name</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-moving-through-matches">rolo, moving through 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-rolo_002c-moving-to-entries">rolo, moving to 
entries</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-outlining">rolo, 
outlining</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-personal">rolo, 
personal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-rolo_002c-quitting">rolo, 
quitting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-root-cell">root 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Outlines">Creating Outlines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-root-cell-1">root 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
@@ -11934,7 +12139,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-search-engines-menu">search 
engines menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Web-Search-Engines">Web Search Engines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-searching-the-web">searching the 
web</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-searching-the-web-1">searching 
the web</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-searching_002c-rolo">searching, 
rolo</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rolo-Searching">Rolo 
Searching</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-searching_002c-rolo">searching, 
rolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-selection">selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-selection_002c-menu-items">selection, menu 
items</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-set">set</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
@@ -12031,6 +12236,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-type-redefinition-1">type 
redefinition</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-U">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-unbury-buffer">unbury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Modeline-Clicks">Smart Key Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-unburying">unburying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-UNIX-manual">UNIX 
manual</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-unshifted-mouse-bindings">unshifted mouse 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
@@ -12049,6 +12255,9 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-variables">variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-vector">vector</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-vector-1">vector</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-version-control">version 
control</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-version-control-1">version 
control</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-version-control-2">version 
control</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-version-description">version 
description</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Suggestion-or-Bug-Reporting">Suggestion or Bug Reporting</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-vertical-drag">vertical 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-_002d-Drags-within-a-Window">Smart Mouse - Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-view">view</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Viewing">Viewing</a></td></tr>
@@ -12090,9 +12299,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-X">X</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-xdb">xdb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-XEmacs">XEmacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-XEmacs-1">XEmacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-XEmacs-support">XEmacs 
support</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-Y">Y</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-yank-region">yank 
region</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index e89e7ab..4b91ea6 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index ea03aa3..11551f4 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index e023b5e..7ca6399 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -151,8 +151,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 6.0.2d
-Printed October 6, 2017.
+Edition 6.0.2e
+Printed October 19, 2017.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -161,7 +161,7 @@ Printed October 6, 2017.
 </PRE>
 
 <CENTER>
-  <DT><B>Screenshot of the Hyperbole Koutliner, Demonstration and 
Rolo</B></DT><BR><BR>
+  <DT><B>Screenshot of the Hyperbole Koutliner, Demonstration and 
HyRolo</B></DT><BR><BR>
   <IMG NAME="Hyperbole Screenshot" SRC="im/hyperbole-cv.png"><BR>
 </CENTER>
 @end html
@@ -176,7 +176,7 @@ Printed October 6, 2017.
 
 @center The Everyday Hypertextual Information Manager
 
address@hidden Edition 6.0.2d, October 6, 2017.
address@hidden Edition 6.0.2e, October 19, 2017.
 
 @sp 2
 @noindent
@@ -209,7 +209,6 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 @end ifinfo
 
 @cindex credits
address@hidden InfoDock, obtaining
 @cindex Hyperbole, obtaining
 @cindex anonymous ftp
 GNU Hyperbole was designed and written by Bob Weiner.
@@ -244,8 +243,8 @@ years.  The Koutliner is dedicated to my lovely wife, Kathy.
 
 @menu
 * Introduction::
-* Buttons::
 * Smart Keys::
+* Buttons::
 * Menus::
 * HyControl::
 * Koutliner::
@@ -275,6 +274,16 @@ Introduction
 * Hyperbole Overview::
 * Mail Lists::
 
+Smart Keys
+
+* Smart Key Bindings::
+* Smart Key Operations::
+* Smart Key Modeline Clicks::
+* Smart Key Thing Selection::
+* Smart Key Argument Selection::
+* Smart Key Modifiers::
+* Smart Key Debugging::
+
 Buttons
 
 * Explicit Buttons::
@@ -300,16 +309,6 @@ Creation
 * By Dragging::                 Creation Via Action Key Drags
 * By Menu::                     Creation Via Menus
 
-Smart Keys
-
-* Smart Key Bindings::
-* Smart Key Operations::
-* Smart Key Modeline::
-* Smart Key Thing Selection::
-* Smart Key Argument Selection::
-* Smart Key Modifiers::
-* Smart Key Debugging::
-
 Koutliner
 
 * Menu Commands::
@@ -340,11 +339,11 @@ Viewing
 
 HyRolo
 
-* Rolo Concepts::
-* Rolo Menu::
-* Rolo Searching::
-* Rolo Keys::
-* Rolo Settings::
+* HyRolo Concepts::
+* HyRolo Menu::
+* HyRolo Searching::
+* HyRolo Keys::
+* HyRolo Settings::
 
 Developing with Hyperbole
 
@@ -432,7 +431,7 @@ Smart Keyboard Keys
 * Smart Key - Tar File Mode::
 * Smart Key - Man Pages::
 * Smart Key - WWW URLs::
-* Smart Key - Rolo Match Buffers::
+* Smart Key - HyRolo Match Buffers::
 * Smart Key - Gomoku Game::
 * Smart Key - The OO-Browser::
 * Smart Key - Default Context::
@@ -440,11 +439,11 @@ Smart Keyboard Keys
 @end detailmenu
 @end menu
 
address@hidden Introduction, Buttons, Top, Top
address@hidden Introduction, Smart Keys, Top, Top
 @chapter Introduction
 
 This edition of the GNU Hyperbole Manual is for use with any version
-6.0.2d or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+6.0.2e or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
 or higher.  It will trigger an error if your Emacs is older.
 
 This chapter summarizes the structure of the rest of the manual,
@@ -487,8 +486,6 @@ commonly asked questions are answered in this manual.  
@xref{Questions
 and Answers}.  @xref{References}, if you are interested in classic
 articles on hypertext.
 
address@hidden, for an overview of Hyperbole buttons and how to use them.
-
 @xref{Smart Keys}, for an explanation of the innovative, context-sensitive
 mouse and keyboard Action and Assist Keys offered by Hyperbole.
 @xref{Smart Key Reference}, for a complete reference on what the Action
@@ -501,6 +498,8 @@ provides a number of overlapping interaction methods that 
support
 differing work styles and hardware limitations.  In such instances,
 you need learn only one technique that suits you.
 
address@hidden, for an overview of Hyperbole buttons and how to use them.
+
 @xref{Menus}, for summaries of Hyperbole menu commands and how to use
 the minibuffer-based menus that work on dumb terminals, PCs or workstations.
 
@@ -568,7 +567,6 @@ Hyperbole and start moving further, faster.
 @cindex hypertext
 @cindex Emacs Lisp
 @cindex Emacs
address@hidden XEmacs
 GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
 an efficient and programmable hypertextual information management
 system.  It is intended for everyday work on any GNU Emacs platform.
@@ -744,1781 +742,1910 @@ There is a separate mail list to report problems or 
bugs with
 Hyperbole, <bug-hyperbole@@gnu.org>.  For more details,
 @pxref{Suggestion or Bug Reporting}.
 
address@hidden Buttons, Smart Keys, Introduction, Top
address@hidden Buttons
address@hidden Smart Keys, Buttons, Introduction, Top
address@hidden Smart Keys
 
address@hidden button
-This chapter explains use of Hyperbole @emph{buttons}.  There are several
-kinds of Hyperbole buttons: buttons that are created one at a time and
-stored in files (@dfn{explicit buttons}); buttons that can be
-activated by name anytime (@dfn{global buttons}); and buttons defined
-by textual patterns where one definition can create an infinite number
-of buttons (@dfn{implicit buttons}).
address@hidden Smart Key
address@hidden mouse support
address@hidden Action Key
address@hidden Assist Key
address@hidden middle mouse key
address@hidden hmouse-middle-flag
address@hidden Action Key
address@hidden Assist Key
+Hyperbole offers two special @dfn{Smart Keys}, the Action Key and the
+Assist Key, that perform an extensive array of context-sensitive
+operations across emacs usage.  In many popular modes, they allow you
+to perform common, sometimes complex operations without having to use a
+different key for each operation.  Just press a Smart Key and the
+right thing happens.  This chapter explains typical uses of the Smart
+Keys.  @xref{Smart Key Reference}, for complete descriptions of their
+behavior in all contexts.
 
-Hyperbole buttons are embedded within textual documents; they may be
-created, modified, moved or deleted.  Each button performs a specific
-action, such as linking to a file or executing a shell command.
address@hidden
+* Smart Key Bindings::
+* Smart Key Operations::
+* Smart Key Modeline Clicks::
+* Smart Key Thing Selection::
+* Smart Key Argument Selection::
+* Smart Key Modifiers::
+* Smart Key Debugging::
address@hidden menu
 
address@hidden button, explicit
address@hidden button, global
address@hidden button, implicit
address@hidden button category
address@hidden explicit button
address@hidden global button
address@hidden implicit button
address@hidden
-There are three categories of Hyperbole buttons:
address@hidden @dfn
address@hidden explicit buttons
-created by Hyperbole, accessible from within a single document;
address@hidden Smart Key Bindings, Smart Key Operations, Smart Keys, Smart Keys
address@hidden   Smart Key Bindings
 
address@hidden global buttons
-created by Hyperbole, specific to each user, and accessible anywhere
-within a user's network of documents;
address@hidden C-u address@hidden
address@hidden address@hidden
+From the keyboard, @address@hidden is the Action Key and @bkbd{C-u
address@hidden is the Assist Key.  These keys allow context-sensitive
+operation from any keyboard.
 
address@hidden implicit buttons
-created and managed by other programs or embedded within the structure
-of a document, accessible from within a single document.  Hyperbole
-recognizes implicit buttons by contextual patterns given in their type
-specifications (explained later).
address@hidden table
address@hidden Removed the following in Hyperbole 6.00 since it was not 
consistent
address@hidden across all read-only modes and the standard bindings are easy
address@hidden enough to use.
address@hidden
address@hidden In many read-only modes like Dired (the directory editor and file
address@hidden manager) and Rmail (the mail reader), @address@hidden@} also 
functions as
address@hidden the Action Key and @bkbd{C-u @key{RET}} functions as the Assist 
Key.
 
-Explicit Hyperbole buttons may be embedded within any type of text file.
-Implicit buttons may appear only within document contexts allowed by
-their types, which may limit the kinds of documents or the locations
-within those documents at which such buttons may be found.  All global
-buttons for a user are stored in a single location and are activated by
-entering their names, rather than by direct selection, the means used to
-activate explicit and implicit buttons.
address@hidden shift-middle mouse key
address@hidden shift-left mouse key
address@hidden shift-right mouse key
address@hidden middle mouse key
address@hidden hmouse-middle-flag
+From the mouse, the @dfn{Action Key} is bound to your shift-middle
+mouse key (or shift-left on a 2-button mouse).  The @dfn{Assist Key}
+is bound to your shift-right mouse key, assuming Hyperbole is run
+under an external window system.
 
address@hidden
-To summarize:
address@hidden hmouse-add-unshifted-keys
address@hidden unshifted mouse bindings
address@hidden unshifted mouse keys
address@hidden mouse keys, unshifted
address@hidden smart keys, unshifted
+Users or those who set the variable, @code{hmouse-middle-flag},
+to @samp{t} before loading Hyperbole, may also use the middle mouse
+key as the Action Key).  If you want both the middle mouse key as the
+Action Key and the right mouse key as the Assist Key for ease of use,
+then within your personal @file{~/.emacs} file, add:
+  @code{(add-hook 'hyperbole-init-hook 'hmouse-add-unshifted-smart-keys)}
+and then restart Emacs.
 
address@hidden
-Button Category   Active Within        Activation Means      Managed By
-========================================================================
-Explicit          a single document    direct selection      Hyperbole
-Global            any document         entering its name     Hyperbole
-Implicit          a matching context   direct selection      other tools
address@hidden key binding, smart keys
address@hidden smart key commands
address@hidden smart key assignments
address@hidden action-key
address@hidden assist-key
address@hidden action-mouse-key
address@hidden assist-mouse-key
+If you prefer other key assignments, simply bind the commands
address@hidden and @code{assist-key} to keyboard keys.
address@hidden may be used instead if you prefer a single
+key binding for both commands; a prefix argument, such as @bkbd{C-u},
+then invokes @code{assist-key}.  You may also bind @code{action-mouse-key}
+and @code{assist-mouse-key} to other mouse keys, if you like, though
+you won't be able to execute drag actions with such key bindings.
 
address@hidden example
+Mouse configuration of the Smart Keys is automatic for GNU Emacs under
+Mac OS X, the X Window System and MS Windows assuming your emacs program
+has been built with support for any of these window systems.
 
address@hidden terminal use
-A click on a Hyperbole button may activate it or describe its actions,
-depending on which mouse key is used.  Buttons may also be activated
-from a keyboard.  (In fact, virtually all Hyperbole operations,
-including menu usage, may be performed from any standard character
-terminal interface, so you need not be anchored to a workstation all
-day).  @xref{Smart Keys}.  There is also a key that shows you how a
-button will behave before you activated it, @pxref{Smart Key
-Operations}.
address@hidden file, .emacs
address@hidden hmouse-toggle-bindings
address@hidden mouse key toggle
address@hidden Smart Mouse Key toggle
address@hidden C-c t
+If you ever want to restore the mouse bindings that existed before
+Hyperbole was loaded, use the @code{hmouse-toggle-bindings} command.
+It switches between the Hyperbole mouse key bindings and those set
+prior to loading Hyperbole and then back again if invoked once more.
+There is no default key binding for this command; use @bkbd{M-x
+hmouse-toggle-bindings @key{RET}}.  Alternatively, you may select a
+key and bind it as part of any setting of @code{hyperbole-init-hook}
+within your personal @file{~/.emacs} file.  For example, @code{(add-hook
+'hyperbole-init-hook (lambda () (global-set-key "\C-ct"
+'hmouse-toggle-bindings)))}.
 
address@hidden
-* Explicit Buttons::
-* Global Buttons::
-* Implicit Buttons::
-* Button Files::
-* Action Types::
-* Button Type Precedence::
-* Utilizing Explicit Buttons::
address@hidden menu
address@hidden @cindex Paste Key
address@hidden @cindex mouse paste
address@hidden @cindex InfoDock Action Key
address@hidden @cindex InfoDock Paste Key
address@hidden Under InfoDock, the middle mouse key is normally used as the 
Action Key
address@hidden and the meta-middle mouse key is used as the Paste Key.  If you 
prefer
address@hidden that the middle mouse key be used as the Paste Key, then you 
will want to
address@hidden toggle the mouse bindings.  InfoDock includes a built-in way to 
do this
address@hidden via its Options/Mouse/Mouse-Paste-on-Middle-Key menu item.  
(Keep in
address@hidden mind though that the Action Key will paste any active region 
within the
address@hidden editor when the Action Key is clicked; it will not paste 
selections from
address@hidden other applications).
+
address@hidden Smart Key Operations, Smart Key Modeline Clicks, Smart Key 
Bindings, Smart Keys
address@hidden   Smart Key Operations
 
address@hidden Explicit Buttons, Global Buttons, Buttons, Buttons
address@hidden   Explicit Buttons
address@hidden button activation
address@hidden activation
address@hidden button help
+The Action Key generally selects entities, creates links and
+activates buttons.  The Assist Key generally provides help,
+such as reporting on a button's attributes, or serves a complementary
+function to whatever the Action Key does within a context.
 
address@hidden explicit button
address@hidden button, explicit
address@hidden button label
address@hidden button name
-Hyperbole creates and manages @dfn{explicit buttons} which perform
-specific actions when activated (typically through a button press).
-They look like this @samp{<(fake button)>}.  They are quickly
-recognizable, yet relatively non-distracting as you scan the text in
-which they are embedded.  The text between the @samp{<(} and @samp{)>}
-delimiters is called the @dfn{button label} or @dfn{button name}.
-Spacing between words within a button label is irrelevant to Hyperbole.
-Button labels may wrap across several lines without causing a problem;
-just be sure to select the first line of the button to activate it.
address@hidden Smart Key operation
address@hidden menu item, Doc/SmartKeys
address@hidden Smart Key summary
address@hidden modeline, Smart Keys
+The Hyperbole Doc/SmartKeys menu entry displays a summary of what the
+Smart Keys do in all of their different contexts.  Alternatively, a
+click of the Assist Mouse Key in the right corner of a window
+modeline (within the rightmost 3 characters) toggles between
+displaying this summary and hiding it.  Reference this summary
+whenever you need it.
 
-Explicit buttons may be added to any editable text file; for source
-code files, simply place buttons within comments.  Buttons that you
-use for quick navigation to websites or other things you do often
-should be added to your personal button file.  @xref{Button Files}.
+The following table is the same summary.  Much of the browsing power
+of Hyperbole comes from the use of the Smart Keys, so spend some time
+practicing how to use them.  Study what modeline clicks and window
+drag actions do as these will give you a lot of power without much
+effort.  This table may appear daunting at first, but as you practice
+and notice that the Smart Keys do just a few context-sensitive things
+per editor mode, you will find it easy to just press or point and
+click and let Hyperbole do the right thing in each context.
 
address@hidden button, moving
address@hidden moving buttons
-Explicit buttons may be freely moved about within the buffer in which
-they are created.  (No present support exists for moving buttons between
-buffers; support the Hyperbole project if you would like to help make
-this happen).  A single button may also appear multiple times within the
-same buffer; simply copy the button label with its delimiters
-to a new location if you need another copy of it.
address@hidden
address@hidden
address@hidden hkey-help.txt
address@hidden smallexample
address@hidden format
 
-For details on how to create, activate, delete or modify explicit
-buttons, @pxref{Utilizing Explicit Buttons}.
address@hidden
address@hidden Key Reference}, for extensive reference documentation on the
+Smart Keys.
 
address@hidden link button
address@hidden referent
-Each explicit button is assigned an action type that determines the
-actions it performs.  @dfn{Link action types} connect buttons to
-particular types of @dfn{referents}, the targets of their links.  Link
-action type names all begin with @code{link-}.  Link action button
-referents are displayed when such buttons are  by
-pressing or clicking upon them.  @xref{Action Types}, for a list of
-standard action types including link types.
address@hidden action-key-default-function
address@hidden assist-key-default-function
address@hidden Smart Key, default context
address@hidden default Smart Key context
+Note how the last line in the table explains that the default behavior of
+the Smart Keys in an unknown context is to report an error.  You can change
+these behaviors by setting two variables.  See the documentation
+for the variables @code{action-key-default-function} and
address@hidden for information on how to customize
+the behavior of the Smart Keys within default contexts.
 
address@hidden linking, in-place
address@hidden Hyperbole data model
-Hyperbole does not manage referent data; this is left to the
-applications that generate the data.  This means that Hyperbole
-provides in-place linking and does not require reformatting of data to
-integrate with Hyperbole.
address@hidden Smart Key help
address@hidden help, Smart Key
address@hidden context-sensitive help
+When you use a mouse and you want to find out what either of the Smart
+Keys does within a context, depress the one you want to check on and
+hold it down, then press the other and release as you please.  A help
+buffer will pop up explaining the actions that will be performed in that
+context, if any.  A press of either Smart Key at the end of that
+help buffer will restore your display to its configuration prior to
+invoking help.
 
address@hidden button data
address@hidden button attribute
address@hidden file, .hypb
-Hyperbole stores the @dfn{button data} that gives an explicit button its
-behavior, separately from the button label, in a file named
address@hidden (@file{_hypb} under MS Windows) within the same directory
-as the file in which the button is created.  Thus, all files in the
-same directory share a common button data file.  Button data is
-comprised of individual @dfn{button attribute} values.  A user never
-sees this data in its raw form but may see a formatted version by
-asking for help on a button.
address@hidden C-h A
address@hidden C-u C-h A
+On the keyboard, @bkbd{C-h A} displays this same context-sensitive
+help for the Action Key while @bkbd{C-u C-h A} displays the help for
+the Assist Key.  Note that @bkbd{C-h a} performs a function unrelated
+to Hyperbole, so you must press the shift key when you type
+the @key{A} character.
 
address@hidden Smart Key Modeline Clicks, Smart Key Thing Selection, Smart Key 
Operations, Smart Keys
address@hidden   Smart Key Modeline Clicks
 
address@hidden Global Buttons, Implicit Buttons, Explicit Buttons, Buttons
address@hidden   Global Buttons
+Smart Key clicks on a window's modeline offer many powerful browsing
+features including directory editing (dired), user manual browsing, and
+window, buffer and frame selection.  Generally, only Hyperbole-specific
+modeline actions are discussed herein.
+
+-- Leftmost Character
+
address@hidden bury buffer
address@hidden unbury buffer
address@hidden modeline, bury buffer
address@hidden modeline, unbury buffer
address@hidden modeline, leftmost character
+Action Key clicks on the first (usually blank) character of the
+modeline bury the current buffer in the buffer list and display the
+next buffer in the list.  Assist Key clicks do the reverse and unbury
+the bottom buffer.
+
address@hidden modeline, next buffer
address@hidden modeline, prev buffer
+A similar effect can be achieved with the standard Emacs mouse 1 and 3 buttons
+on the Buffer Id element of modeline which cycle through previous and next
+buffers respectively.  This may be easier to use since you can click anywhere
+on the buffer identifier.
+
+-- Buffer Id Element
 
address@hidden global button
address@hidden button, global
address@hidden button label
-Access to explicit buttons depends upon the information on your screen
-since they are embedded within particular buffers.  Sometimes it is
-useful to activate buttons without regard to the information with which
-you are working.  In such instances, you use @dfn{global buttons}, which
-are buttons that may be activated or otherwise operated upon by entering
-their labels/names when they are prompted for, rather than selecting the
-buttons within a buffer.
address@hidden dired
address@hidden modeline, dired
address@hidden buffer id
address@hidden modeline, buffer id
address@hidden dragging items, dired
+On the left part of the modeline is the buffer identification,
+generally the name of the buffer in use.  An Action Key click on that
+switches the window to edit the buffer's directory using dired.
+Action Key clicks on directory items display them in other windows.
+An Action Key drag from an item to another window displays the item in
+that window.  An Action Key click on the first line directory path,
+specifically on any ancestor part of the path, starts another dired
+session on the ancestor directory.  Click at the end of 
+
+-- Large Blank Area
 
-If you want a permanent link to a file section that you can follow at
-any time, you can use a global button.  Or what about an Emacs keyboard
-macro that you use frequently?  Create an @code{exec-kbd-macro} button
-with an easy to type name and then you can activate it whenever the need
-arises.
address@hidden buffer menu
address@hidden modeline, buffer menu
address@hidden jump menu
address@hidden modeline, jump menu
address@hidden dragging items, buffer menu
+An Action Mouse Key click in a blank area of a window modeline (away
+from left and right edges) toggles between displaying and hiding a
+list of all buffers.  Once displayed, an Action Key click on a buffer
+item will display it in another window.  You can drag items to specific
+windows for display as well.
 
address@hidden C-h h g
address@hidden menu, Gbut
address@hidden menu, Global-Button
-Global buttons are managed with the Hyperbole Gbut/ menu accessed with
address@hidden h g}.  The Create item, @bkbd{C-h h g c}, prompts for a
-global button name, an action type, and the action's associated
-arguments, such as a file to link to.  It then creates the button.  To
-activate the button, use the Act menu item, @bkbd{C-h h g a}.  Type
-the button's name and its action will be executed.
+An Assist Key click in the blank area of the modeline displays a quick
+access menu of display-oriented commands.  You can jump to buffers
+categorized by major mode, jump to windows by buffer name, or to
+frames by name.  Manage your windows and frames quickly with this menu
+as well.  As always with Hyperbole, just try it and you'll begin to
+wonder how you lived without it before.
 
-Global buttons are actually explicit buttons stored at the end of your
-personal button file, @pxref{Button Files}.  You can always go into that
-file and activate, edit or annotate these buttons with comments.
+-- Right Corner
 
address@hidden Implicit Buttons, Button Files, Global Buttons, Buttons
address@hidden   Implicit Buttons
address@hidden Info browser
address@hidden modeline click and drag
address@hidden modeline, Info Browser
+A click of the Action Mouse Key in the right corner of a window
+modeline (within the rightmost 3 characters) displays or hides the
+GNU Info Manual Browser, giving you quick point and click access to
+an amazing wealth of documentation, since the Action Key also browses
+through these manuals and follows their hyperlinked cross-references.
+A click of the Assist Key in the same location displays or hides the
+Smart Key summary, as noted earlier.
 
address@hidden button, implicit
address@hidden implicit button
address@hidden buttons} are virtual buttons recognized within the
-natural structure of a document.  For example, a web URL button that
-displays its link or an email address button that starts a mail
-message to the associated address.  Implicit buttons are identified by
-contextual patterns found within documents.  An @dfn{Implicit button
-type} identifies a pattern or state that when matched triggers
-an @emph{action} associated with the implicit button type.  The action
-is specified by either a Hyperbole action type (@pxref{Action Types})
-or an Emacs Lisp function.  Implicit button types may use the same
-action types that explicit buttons use.  As an example, a pathname
-implicit button type would match to any existing local filename or
-directory name and its action would be to display the associated file
-or directory, typically in another window.
+-- Customizable Variables
 
address@hidden file, hibtypes.el
address@hidden context
address@hidden boolean expressions
address@hidden activating implicit button
address@hidden menu item, Ibut/Act
address@hidden C-h h i a
-Unlike explicit buttons, implicit buttons have no individual button data
-other than their textual labels.  You use implicit button types which
-include boolean expressions (predicates) that match to both the label
-and the context required of any button of the type.  Each time a Smart
-Key is pressed at a location, Hyperbole evaluates the predicates from
-the list of implicit button types and the first one that evaluates true
-is selected and its associated action is triggered.  The Ibut/Act menu
-item, @bkbd{C-h h i a}, also activates any implicit button found at the
-current point.
address@hidden action-key-modeline-function
address@hidden assist-key-modeline-function
address@hidden action-key-modeline
address@hidden assist-key-modeline
address@hidden hmouse-context-menu
address@hidden hmouse-context-ibuffer-menu
address@hidden ibuffer menu
+Hyperbole modeline mouse click actions are controlled by the two functions,
address@hidden and @code{assist-key-modeline}.  If you know
+a little Emacs Lisp you can change these to do whatever you like.
+When a Smart Key press is on a blank part of a modeline but not at
+the left or right, the function given by one of these two variables
+is executed: @code{action-key-modeline-function} or
address@hidden  By default, the Action Key toggles
+between displaying and hiding the buffer menu.  If you like the more
+advanced features of @code{Ibuffer Mode}, you can change the buffer menu
+to use that with the following in your Emacs initialization file:
address@hidden(setq action-key-modeline-function 
#'hmouse-context-ibuffer-menu)}.
+To set it back to the default use:
address@hidden(setq action-key-modeline-function #'hmouse-context-menu)}.
 
-All of this happens transparently and is easy to use once you try it.
-The Hyperbole Smart Keys offer extensive additional context-sensitive
-point-and-click type behavior beyond implicit button types.  @xref{Smart
-Key Operations}.
address@hidden dired-jump
address@hidden hui-menu-screen-commands
address@hidden directory editor
address@hidden dired
address@hidden modeline, screen command menu
+The default @code{assist-key-modeline-function} is to pop up a menu of
+convenient screen commands that lets you select buffers grouped by
+major mode, use HyControl, or jump to specific windows, window
+configurations or frames.  If you would prefer it runs the directory
+editor @code{dired} on the directory associated with the window of the
+modeline press, use this: @code{(setq assist-key-modeline-function 
#'dired-jump)}.
+To set it back to the default use:
address@hidden(setq assist-key-modeline-function #'hui-menu-screen-commands)}.
 
address@hidden ibtypes, list of
address@hidden implicit button types
-Below, standard implicit button types are listed in the order in which
-Hyperbole tries to match to the types when looking for an implicit
-button; @bkbd{C-h h i t @key{RET}} provides similar information.  See
-the Hyperbole file, @file{hibtypes.el}, for complete examples of
-implicit button types.
+These variables may also be changed permanently with the Emacs
+interactive customization interface.  Use @bkbd{M-x customize-variable
address@hidden assist-key-modeline-function @key{RET}}.  In the Assist
+Modeline Function text field that appears, change the value
+to @code{dired-jump}.  Then press the ``Apply and Save'' button.
 
address@hidden @code
address@hidden Smart Key Thing Selection, Smart Key Argument Selection, Smart 
Key Modeline Clicks, Smart Keys
address@hidden   Smart Key Thing Selection
 
address@hidden ibtypes completion
address@hidden completion
address@hidden completion
-Inserts the completion at point into the minibuffer or the other window.
address@hidden sexp selection
address@hidden code block selection
address@hidden selection
address@hidden smart selection
address@hidden smart marking
address@hidden region selection
address@hidden things
address@hidden delimited things
+Hyperbole has some radically cool ways to select regions of structured
+text or source code and to copy or move them between buffers with a
+single mouse drag or two key presses.  A great deal of smarts are
+built-in so that it does the right thing most of the time; many other
+attempts at similar behavior such as thing.el fail to deal with many
+file format complexities.
 
address@hidden ibtypes hyp-source
address@hidden Hyperbole report
address@hidden hyp-source
-Turns source location entries in Hyperbole reports into buttons that
-jump to the associated location.
+We use the term @dfn{things} to refer to structured entities that
+Hyperbole can select.  These include: delimited pairs of (), @address@hidden, 
<>,
+[] and quote marks, source code functions, source code comments and
+matching tag pairs in HTML and SGML modes.  @dfn{Delimited things} are
+those things that contain a selectable delimiter such as an opening
+parenthesis.
 
address@hidden ibtypes hyp-address
address@hidden Hyperbole mail list
address@hidden hyp-address
-Turns a Hyperbole support/discussion e-mail address into an implicit
-button which inserts Hyperbole environment information.  This is
-useful when sending mail to a Hyperbole discussion mail list.  See
-also the documentation for @code{actypes::hyp-config}.
address@hidden HTML tag pair
address@hidden SGML tag pair
+The best way to mark a delimited thing is to move your cursor to the
+starting delimiter of the thing and then press the Action Key.  Typically,
+you will see the thing highlight.  You can then operate upon it as you
+would any Emacs region.  In many cases, you can do the same thing upon
+the closing delimiter but this is not as reliable.  An Action Key
+press on the start of an HTML or SGML tag pair marks the entire region
+span of the pair.  If you use the Assist Key instead, it will mark and
+kill (delete) the thing.
 
address@hidden ibtypes Info-node
address@hidden Info node
address@hidden Info-node
-Makes "(filename)nodename" buttons display the associated Info node.
-Also makes "(filename)itemname" buttons display the associated Info
-index item.
address@hidden drag, with region
address@hidden kill region
address@hidden yank region
address@hidden cut region
address@hidden copy region
address@hidden paste region
+Even better are Smart Mouse Key drags which let you copy or move
+delimited things in one operation without even highlighting them.  To
+copy, simply drag with the Action Key from a thing's opening delimiter
+and release somewhere outside of the thing, either within the same
+window or within another window.  The thing will be copied to the
+point of release.  If you want to move a thing, simply perform the
+same drag but with the Assist Mouse Key.  Ensure that you do not move
+any explicit buttons from one buffer to another as that does not
+presently work.
 
address@hidden ibtypes www-url
address@hidden URL
address@hidden World-wide Web
address@hidden WWW
address@hidden Action Key, web browsing
address@hidden Action Key, web browsing
address@hidden browse-url-browser-function
address@hidden www-url
-When not in an Emacs web browser buffer, follows any non-ftp URL (link) at 
point.
-The variable, @code{browse-url-browser-function}, may be used to customize
-which URL browser is called.  Terse URLs which lack a protocol prefix,
-like www.gnu.org, are also recognized.
+Try out some of these operations in HTML or source code files to see
+how they can speed your editing.
 
address@hidden ibtypes gnus-push-button
address@hidden GNUS push-buttons
address@hidden hiding signatures
address@hidden signatures, hiding
address@hidden gnus-push-button
-Activates GNUS-specific article push-buttons, e.g. for hiding
-signatures.  GNUS is a news and mail reader."
address@hidden
+Hyperbole also binds two convenience keys for working with things.
 
address@hidden ibtypes texinfo-ref
address@hidden Texinfo cross-reference
address@hidden cross-reference, Texinfo
address@hidden texinfo-ref
-Displays Texinfo, Info node or help associated with Texinfo node, menu
-item, @@xref, @@pxref, @@ref, @@code, @@findex, @@var or @@vindex at point.
-If point is within the braces of a cross-reference, the associated Info node is
-shown.  If point is to the left of the braces but after the @@ symbol and
-the reference is to a node within the current Texinfo file, then the
-Texinfo node is shown.
-
-For @@code, @@findex, @@var and @@vindex references, the associated 
documentation
-string is displayed.
-
address@hidden ibtypes mail-address
address@hidden e-mail address
address@hidden rolo address
address@hidden address
address@hidden mail-address
-If on an e-mail address in a specific buffer type, mail to that address
-in another window. Applies to the rolo match buffer, any buffer
-attached to a file in @code{hyrolo-file-list}, or any buffer with @file{mail}
-or @file{rolo} (case-insensitive) within its name.
address@hidden C-c @key{RET}
address@hidden hui-select-thing
address@hidden hui-select-thing-with-mouse
+The first such key is @bkbd{C-c @key{RET}} @code{hui-select-thing}
+which selects bigger and bigger syntactic regions with each successive
+use.  Double or triple clicks of the Selection Key (left mouse key) do
+the same thing.  The first press selects a region based upon the
+character at point.  For example, with point over an opening or
+closing grouping character, such as @{ or @}, the whole grouping is
+selected, e.g. a C function.  When on an _ or - within a programming
+language identifier name, the whole name is selected.  The type of
+selection is displayed in the minibuffer as feedback.  When using a
+language in which indentation determines nesting level like Python, a
+double click on the first alpha character of a line, such as an if
+statement, selects the whole statement.  Use @bkbd{C-g} to unmark the
+region when done.  Use, @code{hui-select-thing-with-mouse} if you want
+to bind this to a different mouse key to use single clicks instead of
+double clicks.
 
address@hidden ibtypes patch-msg
address@hidden patch output
address@hidden patch-msg
-Jumps to the source code associated with output from the @samp{patch}
-program.  Patch applies diffs to source code.
address@hidden C-c .
address@hidden hui-select-goto-matching-tag
+The second convenience key is bound only in HTML/web mode.  @bkbd{C-c
+.} @code{hui-select-goto-matching-tag} jumps between the opening and
+closing tag of a pair.  It moves point to the start of the tag paired
+with the closest tag that point is within or which it precedes.  A
+second press moves point to the matching tag of the pair, allowing you
+to quickly jump back and forth between opening and closing tags.
 
address@hidden ibtypes elisp-compiler-msg
address@hidden byte compiler error
address@hidden Emacs Lisp compiler error
address@hidden compiler error
address@hidden elisp-compiler-msg
-Jumps to the source code for a definition associated with a
-byte-compiler error message.  Works when activated anywhere within an
-error line.
address@hidden Smart Key Argument Selection, Smart Key Modifiers, Smart Key 
Thing Selection, Smart Keys
address@hidden   Smart Key Argument Selection
 
address@hidden ibtypes debugger-source
address@hidden gdb
address@hidden dbx
address@hidden xdb
address@hidden stack frame
address@hidden breakpoint
address@hidden source line
address@hidden debugger-source
-Jumps to the source line associated with a debugger stack frame or
-breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
-recognized in any buffer.
address@hidden Hyperbole help
+A prime design criterion of Hyperbole's user interface is that you
+should be able to see what an operation will do before using it.  The
+Assist Key typically shows you what a button or minibuffer menu item
+will do before you activate it.  Hyperbole also displays the result of
+directly selecting an argument value with the Action Key, to provide
+feedback as to whether the correct item has been selected.  A second
+press/click is necessary before an argument is accepted and processed.
 
address@hidden ibtypes grep-msg
address@hidden grep
address@hidden compiler error
address@hidden grep-msg
-Jumps to a line associated with grep or compilation error messages.
-Messages are recognized in any buffer.
address@hidden argument entry
address@hidden direct selection
address@hidden double click
+Many Hyperbole commands prompt you for arguments.  The standard
+Hyperbole user interface has an extensive core of argument types that
+it recognizes.  Whenever Hyperbole is prompting you for an argument,
+it knows the type that it needs and provides some error checking to
+help you get it right.  More importantly, it allows you to press the
+Action Key within an entity that you want to use as an argument and it
+will grab the appropriate thing and show it to you at the input prompt
+within the minibuffer.  If you press (click with a mouse) the Action
+Key on the same thing again, it accepts the entity as the argument
+and moves on.  Thus, a double click registers a desired argument.
+Double-quoted strings, pathnames, mail messages, Info nodes, dired
+listings, buffers, numbers, completion items and so forth are all
+recognized at appropriate times.  All of the argument types mentioned
+in the documentation for the Emacs Lisp @code{interactive} function
+are recognized.  Experiment a little and you will quickly get used to
+this direct selection technique.
 
address@hidden ibtypes klink
address@hidden klink
address@hidden koutline link
address@hidden kcell link
address@hidden klink
-Follows a link delimited by <> to a koutline cell.
-See the documentation for @code{actypes::link-to-kotl} for valid link
-specifiers.
address@hidden completion
+Wherever possible, standard Emacs completion is offered, as described in
address@hidden,,,emacs,the GNU Emacs Manual}.  Remember to use @bkbd{?}
+to see what your possibilities for an argument are.  Once you have a
+list of possible completions on screen, press the Action Key twice on
+any item to enter it as the argument.
 
address@hidden ibtypes man-apropos
address@hidden UNIX manual
address@hidden man pages
address@hidden man apropos
address@hidden man-apropos
-Makes man apropos entries (from @samp{man -k}) display associated man pages 
when
-selected.
address@hidden Smart Key Modifiers, Smart Key Debugging, Smart Key Argument 
Selection, Smart Keys
address@hidden   Smart Key Modifiers
 
address@hidden ibtypes rfc
address@hidden Internet RFC
address@hidden Request For Comment
address@hidden RFC
address@hidden remote file
address@hidden ftp
address@hidden rfc
-Retrieves and displays an Internet rfc referenced at point.  Requires remote
-file access, e.g. via the Tramp library, for remote ftp retrievals.  The
-following formats are recognized: RFC822, rfc-822, and RFC 822.  The
address@hidden:rfc} variable specifies the location from which to retrieve
-RFCs."
+For advanced users of Emacs and Hyperbole, there is @code{hmouse-mod-mode},
+a global minor mode which turns the Action Mouse Key into a @key{Control}
+modifier key and the Assist Key into a @key{Meta} modifier key.  This
+allows for better keyboard energy balance across hands and is useful for
+reducing carpal tunnel stress.  It may also be used with a @dfn{chord
+keyboard} in one hand and a mouse in the other to point at things while
+simultaneously operating upon them.
 
address@hidden ibtypes kbd-key
address@hidden key sequence
address@hidden kbd-key
-Executes the command binding or the Hyperbole minibuffer menu action
-for a key sequence delimited by curly braces.  Key sequences should
-be in human readable form, e.g.@: @bkbd{C-x C-b}.  Formats such
-as @address@hidden will not be recognized.
address@hidden hmouse-mod-mode
address@hidden hmouse-mod-mode
address@hidden Smart Keys as modifiers
address@hidden control key modifier
address@hidden meta key modifier
address@hidden chord keyboards
+Use the @code{hmouse-mod-mode} global minor mode to enable this feature.
address@hidden M-x hmouse-mod-mode @key{RET}} enables it and adds
address@hidden to the list of modeline minor modes.  @bkbd{C-u 0 M-x
+hmouse-mod-mode @key{RET}} disables it and @bkbd{M-x
+hmouse-mod-mode @key{RET}} toggles it on and off.
 
address@hidden ibtypes dir-summary
address@hidden file, MANIFEST
address@hidden file, DIR
address@hidden dir-summary
-Detects filename buttons in files named "MANIFEST" or "DIR".
-Displays selected files.  Each file name must be at the beginning of the
-line and must be followed by one or more spaces and then another
-non-space, non-parenthesis, non-brace character.
+When enabled, if the Action Key is held down while alpha characters
+are typed, they are translated into @key{Control} keys instead.  The
+Assist Key translates them into @key{Meta} keys.  When both Smart
+Keys are depressed, @key{Control-Meta} keys are produced.  The
+commands bound to the characters produced are then run.  For example,
+Action Key + @bkbd{a} runs the function for @bkbd{C-a}.  If no
+keys are typed while the Smart Keys are down, they operate as
+normally under Hyperbole.
 
address@hidden ibtypes text-toc
address@hidden table of contents
address@hidden toc implicit button type
address@hidden text-toc
-Jumps to the text file section referenced by a table of contents entry
-at point.  The file name of the current buffer must contain
address@hidden and there must be a `Table of Contents' or `Contents'
-label on a line by itself (it may begin with an asterisk), preceding the
-table of contents.  Each toc entry must begin with some whitespace
-followed by one or more asterisk characters.  Each line which begins a
-new file section must start with one or more asterisk characters at the
-very beginning of the line.
+The code for Smart Key modifiers can be found in
address@hidden@address@hidden:address@hidden/hmouse-mod.el}.
 
address@hidden ibtypes cscope
address@hidden C/C++ call trees
address@hidden C/C++ cross-reference
address@hidden Cscope
address@hidden cscope
-Jumps to a C/C++ source line associated with a Cscope C analyzer output line.
-Requires pre-loading of the cscope.el Lisp library available from the Emacs
-Lisp archives and the commercial cscope program available from AT&T's
-software toolchest.  Otherwise, does nothing.
address@hidden Smart Key Debugging,  , Smart Key Modifiers, Smart Keys
address@hidden   Smart Key Debugging
 
address@hidden ibtypes etags
address@hidden etags entry
address@hidden TAGS file
address@hidden tag
address@hidden etags
-Jumps to the source line associated with an etags file entry in a TAGS buffer.
-If on a tag entry line, jumps to the source line for the tag.  If on a
-pathname line or line preceding it, jumps to the associated file.
+Typically, @bkbd{C-h A} and @bkbd{C-u C-h A} which show Action and
+Assist Key help for the current context, are sufficient for seeing how
+the Smart Keys behave no matter where they are used.
 
address@hidden ibtypes ctags
address@hidden ctags entry
address@hidden tags file
address@hidden ctags
-Jumps to the source line associated with a ctags file entry in any buffer.
-Ctags files are used by old editors like vi to lookup identifiers.
-InfoDock and Emacs use the newer, more flexible Etags format.
address@hidden C-h h c d
address@hidden Smart Key debugging
address@hidden menu item, Cust/Debug-Toggle
address@hidden debugging Smart Keys
address@hidden troubleshooting Smart Keys
address@hidden Messages buffer
address@hidden logging Smart Key behavior
+However, if a Smart Key ever behaves differently than you think it
+should or if you want to test how the Smart Keys respond in a new
+context, then the Smart Key debugging flag may be of use.  You toggle
+it on and off with @bkbd{C-h h c d} (minibuffer menu
+Cust/Debug-Toggle).  Once enabled, this displays a message in the
+minibuffer each time the Action or Assist Key is released, showing
+the context of the press and its associated action, so you can see
+exactly what is happening whenever you use a Smart Key.  These
+messages are all prefaced with ``(HyDebug)'' and logged to the
+``*Messages*'' buffer for later viewing.
 
address@hidden ibtypes id-cflow
address@hidden C call tree
address@hidden call tree, C
address@hidden C flow graph
address@hidden id-cflow
-Expands or collapses C call trees and jumps to code definitions.
-Requires cross-reference tables built by the external @code{cxref}
-program.
address@hidden C-h h m c
address@hidden C-h h m r
+If you do find a problem with the Smart Keys and want to report a bug,
+use @bkbd{C-h h m r} to compose an email message to the bug-hyperbole
+list.  Hyperbole will automatically include all of the ``(HyDebug)''
+messages from your current emacs session into your email.  Similarly,
+when you compose an email to the hyperbole-users mailing list
+with @bkbd{C-h h m c}, these messages are also included.
 
address@hidden ibtypes rfc-toc
address@hidden Internet RFC
address@hidden Request For Comment
address@hidden RFC
address@hidden table of contents
address@hidden rfc-toc
-Summarizes contents of an Internet rfc from anywhere within an rfc buffer.
-Each line of the summary may be selected to jump to the associated section.
 
address@hidden ibtypes markdown-internal-link
address@hidden markdown link
address@hidden markdown-internal-link
-Displays any in-file Markdown link referent.  Pathnames and urls are
-handled elsewhere.
address@hidden Buttons, Menus, Smart Keys, Top
address@hidden Buttons
 
address@hidden ibtypes social-reference
address@hidden hashtag
address@hidden username
address@hidden social media
address@hidden social reference
address@hidden hibtypes-social-default-service
address@hidden social-reference
-Displays the web page associated with a social media hashtag or username
-reference at point.  Reference format is:
address@hidden button
+This chapter explains use of Hyperbole @emph{buttons}.  There are several
+kinds of Hyperbole buttons: buttons that are created one at a time and
+stored in files (@dfn{explicit buttons}); buttons that can be
+activated by name anytime (@dfn{global buttons}); and buttons defined
+by textual patterns where one definition can create an infinite number
+of buttons (@dfn{implicit buttons}).
 
address@hidden
-[facebook|instagram|twitter]?[#@@]<hashtag-or-username> or
-[fb|in|tw]?[#@@]<hashtag-or-username>
address@hidden smallexample
+Hyperbole buttons are embedded within textual documents; they may be
+created, modified, moved or deleted.  Each button performs a specific
+action, such as linking to a file or executing a shell command.
 
address@hidden button, explicit
address@hidden button, global
address@hidden button, implicit
address@hidden button category
address@hidden explicit button
address@hidden global button
address@hidden implicit button
 @noindent
-For example, @samp{fb@@someuser} displays the home page for facebook user
address@hidden and @samp{in#hashtag} displays photos with the hashtag
address@hidden  The first part of the label for a button of this type
-is the social media service name.  The service name defaults to the
-value of @code{hibtypes-social-default-service} (default value of
-``twitter'') when not given, so #hashtag would be the same as
-twitter#hashtag.
+There are three categories of Hyperbole buttons:
address@hidden @dfn
address@hidden explicit buttons
+created by Hyperbole, accessible from within a single document;
 
address@hidden ibtypes debbugs-gnu-mode
address@hidden bug tracking
address@hidden issue tracking
address@hidden debbugs-gnu-mode
-Debbugs is a client-server issue tracker used by GNU free software
-projects, including Hyperbole, to manage issues and maintain threads
-of discussion around them.  When on a GNU Debbugs listing entry in
address@hidden, an Action Key press displays the discussion
-of the selected issue; an Assist Key press pretty prints the status of
-the issue to a window below the listing window.
address@hidden global buttons
+created by Hyperbole, specific to each user, and accessible anywhere
+within a user's network of documents;
 
address@hidden ibtypes debbugs-gnu-query
address@hidden debbugs-gnu-query
-This implicit button type displays the results of a Gnu debbugs query
-based on the string at point and works in most kinds of buffers.  If
-the query includes a single id number, it displays the original message
-submission for that id and allows browsing of the followup discussion.
-The following buffer text formats are accepted (with point prior to
-any attribute):
address@hidden implicit buttons
+created and managed by other programs or embedded within the structure
+of a document, accessible from within a single document.  Hyperbole
+recognizes implicit buttons by contextual patterns given in their type
+specifications (explained later).
address@hidden table
 
address@hidden
-#id-number
-bug#id-number, bug# id-number, bug #id-number or bug id-number
-bug?attr1=val1&attr2=val2&attr3=val3
-bug#id-number?attr1=val1&attr2=val2&attr3=val3
address@hidden smallexample
+Explicit Hyperbole buttons may be embedded within any type of text file.
+Implicit buttons may appear only within document contexts allowed by
+their types, which may limit the kinds of documents or the locations
+within those documents at which such buttons may be found.  All global
+buttons for a user are stored in a single location and are activated by
+entering their names, rather than by direct selection, the means used to
+activate explicit and implicit buttons.
 
address@hidden file, hib-debbugs.el
 @noindent
-Note that @emph{issue} or @emph{debbugs} may be used as well in place
-of @emph{bug}.  See the documentation at the top of
-the @file{hib-debbugs.el} file for detailed query format information.
+To summarize:
 
address@hidden ibtypes annot-bib
address@hidden bibliography
address@hidden reference
address@hidden annot-bib
-Displays annotated bibliography entries defined within the same buffer
-as the reference.  References must be delimited by square brackets, must
-begin with a word constituent character, and must not be in buffers
-whose names begin with a ` ' or `*' character.
address@hidden
+Button Category   Active Within        Activation Means      Managed By
+========================================================================
+Explicit          a single document    direct selection      Hyperbole
+Global            any document         entering its name     Hyperbole
+Implicit          a matching context   direct selection      other tools
 
address@hidden Handled instead by @xref{Smart Key - Identifier Menu Mode}.
address@hidden @findex ibtypes imenu-item
address@hidden @vindex file, imenu.el
address@hidden @cindex identifier menu
address@hidden @cindex imenu
address@hidden @item imenu-item
address@hidden Displays the in-buffer definition of an identifier that point is 
within or after, else nil.
address@hidden This triggers only when imenu has already been used to generate 
an in-buffer item index.
address@hidden example
 
address@hidden ibtypes function-in-buffer
address@hidden file, func-menu.el
address@hidden function menu
address@hidden func-menu
address@hidden function-in-buffer
-Returns the function name defined within this buffer that point is
-within or after, else @samp{nil}.  This triggers only when the
-func-menu library has been loaded and the current major mode is one
-handled by func-menu.
address@hidden terminal use
+A click on a Hyperbole button may activate it or describe its actions,
+depending on which mouse key is used.  Buttons may also be activated
+from a keyboard.  (In fact, virtually all Hyperbole operations,
+including menu usage, may be performed from any standard character
+terminal interface, so you need not be anchored to a workstation all
+day).  @xref{Smart Keys}.  There is also a key that shows you how a
+button will behave before you activated it, @pxref{Smart Key
+Operations}.
 
address@hidden link, pathname line and column
address@hidden line and column
address@hidden pathname, line and column
address@hidden ibtypes pathname-line-and-column
address@hidden pathname-line-and-column
-Makes a valid pathname:line-num[:column-num] pattern display the path
-at line-num and optional column-num.  Also works for remote pathnames.
address@hidden
+* Explicit Buttons::
+* Global Buttons::
+* Implicit Buttons::
+* Button Files::
+* Action Types::
+* Button Type Precedence::
+* Utilizing Explicit Buttons::
address@hidden menu
 
address@hidden ibtypes pathname
address@hidden hpath:at-p
address@hidden hpath:find
address@hidden hpath:suffixes
address@hidden Tramp
address@hidden Ange-ftp
address@hidden EFS
address@hidden ftp
address@hidden pathname
address@hidden remote path
address@hidden filename
address@hidden link, pathname
address@hidden pathname
-Makes a valid pathname display the path entry.  Also works for
-delimited and non-delimited remote pathnames, Texinfo @file{} entries,
-and hash-style link references to HTML, Markdown or Emacs outline
-headings.  Emacs Lisp library files (filenames without any directory
-component that end in .el and .elc) are looked up using
-the @code{load-path} directory list.
address@hidden Explicit Buttons, Global Buttons, Buttons, Buttons
address@hidden   Explicit Buttons
 
address@hidden
-See the function documentation for @code{hpath:at-p} for possible
-delimiters.  See the variable documentation for @code{hpath:suffixes} for
-suffixes that are added to or removed from the pathname when searching
-for a valid match.  See the function documentation for @code{hpath:find}
-for special file display options.
address@hidden explicit button
address@hidden button, explicit
address@hidden button label
address@hidden button name
+Hyperbole creates and manages @dfn{explicit buttons} which perform
+specific actions when activated (typically through a button press).
+They look like this @samp{<(fake button)>}.  They are quickly
+recognizable, yet relatively non-distracting as you scan the text in
+which they are embedded.  The text between the @samp{<(} and @samp{)>}
+delimiters is called the @dfn{button label} or @dfn{button name}.
+Spacing between words within a button label is irrelevant to Hyperbole.
+Button labels may wrap across several lines without causing a problem;
+just be sure to select the first line of the button to activate it.
 
address@hidden ibtypes org-mode
address@hidden browse-url-browser-function
address@hidden org-mode
address@hidden Org mode
address@hidden org-mode
-The Action Key follows any Org mode link at point or cycles through
-views of the outline subtree at point.  In any other context besides
-the end of a line, the Action Key will invoke the Org mode standard
-binding of @address@hidden, (org-meta-return).  The Assist Key on
-an Org mode heading, cycles through views of the whole buffer outline
-and on an Org mode link, displays standard Hyperbole help.
+Explicit buttons may be added to any editable text file; for source
+code files, simply place buttons within comments.  Buttons that you
+use for quick navigation to websites or other things you do often
+should be added to your personal button file.  @xref{Button Files}.
+
address@hidden button, moving
address@hidden moving buttons
+Explicit buttons may be freely moved about within the buffer in which
+they are created.  (No present support exists for moving buttons between
+buffers; support the Hyperbole project if you would like to help make
+this happen).  A single button may also appear multiple times within the
+same buffer; simply copy the button label with its delimiters
+to a new location if you need another copy of it.
 
-The variable, @code{browse-url-browser-function}, customizes the url
-browser that is used for urls.  Valid values of this variable
-include @code{browse-url-default-browser}
-and @code{browse-url-generic}.
+For details on how to create, activate, delete or modify explicit
+buttons, @pxref{Utilizing Explicit Buttons}.
 
address@hidden ibtypes doc-id
address@hidden online library
address@hidden document identifier
address@hidden doc-id
-Displays an index entry for a site-specific document given its id.
-Ids must be delimited by @code{doc-id-start} and @code{doc-id-end} and
-must match the function given by @code{doc-id-p}.  This permits
-creation of catalogued online libraries.  (Note that this implicit
-button type is not installed by default.  You must manually configure
-it and load it from the file, 
@address@hidden@{hyperb:address@hidden/hib-doc-id.el}).
address@hidden table
address@hidden link button
address@hidden referent
+Each explicit button is assigned an action type that determines the
+actions it performs.  @dfn{Link action types} connect buttons to
+particular types of @dfn{referents}, the targets of their links.  Link
+action type names all begin with @code{link-}.  Link action button
+referents are displayed when such buttons are  by
+pressing or clicking upon them.  @xref{Action Types}, for a list of
+standard action types including link types.
 
address@hidden Button Files, Action Types, Implicit Buttons, Buttons
address@hidden   Button Files
address@hidden linking, in-place
address@hidden Hyperbole data model
+Hyperbole does not manage referent data; this is left to the
+applications that generate the data.  This means that Hyperbole
+provides in-place linking and does not require reformatting of data to
+integrate with Hyperbole.
 
address@hidden button files
-It is often convenient to create files filled with buttons as a means
-of navigating distributed information pools or for other purposes.
-These files can also serve as useful roadmaps that guide a user
-through both unfamiliar and highly familiar information spaces.  Files
-that are created specifically for this purpose are
-called @dfn{Hyperbole button files}.
address@hidden button data
address@hidden button attribute
address@hidden file, .hypb
+Hyperbole stores the @dfn{button data} that gives an explicit button its
+behavior, separately from the button label, in a file named
address@hidden (@file{_hypb} under MS Windows) within the same directory
+as the file in which the button is created.  Thus, all files in the
+same directory share a common button data file.  Button data is
+comprised of individual @dfn{button attribute} values.  A user never
+sees this data in its raw form but may see a formatted version by
+asking for help on a button.
 
address@hidden hbmap:filename
address@hidden button file, personal
address@hidden button file, directory
-The Hyperbole menu system provides quick access to two types of these
-button files: personal and directory-specific, through the ButFile menu.
-(The variable, @code{hbmap:filename}, contains the base name of these
-button files.  Its standard value is @file{HYPB}.)
 
address@hidden dir, ~/.hyperb
address@hidden hbmap:dir-user
address@hidden Global Buttons, Implicit Buttons, Explicit Buttons, Buttons
address@hidden   Global Buttons
+
 @cindex global button
-A personal button file may serve as a user's own roadmap to frequently
-used resources, like a personal home page.  Selection of the
-ButFile/PersonalFile menu item, @bkbd{C-h h b p}, displays this file for
-editing.  The default personal button file is stored within the
-directory given by the @code{hbmap:dir-user} variable whose standard
-value is @file{~/.hyperb}.  The default Hyperbole configuration also
-appends all global buttons to the end of this file, one per line, as
-they are created.  So you can edit or annotate them within the file.
address@hidden button, global
address@hidden button label
+Access to explicit buttons depends upon the information on your screen
+since they are embedded within particular buffers.  Sometimes it is
+useful to activate buttons without regard to the information with which
+you are working.  In such instances, you use @dfn{global buttons}, which
+are buttons that may be activated or otherwise operated upon by entering
+their labels/names when they are prompted for, rather than selecting the
+buttons within a buffer.
 
-A directory-specific button file may exist for each file system
-directory.  Such files are useful for explaining the contents of
-directories and pointing readers to particular highlights within the
-directories.  Selection of the ButFile/DirFile menu item, @bkbd{C-h h
-b d}, displays the button file for the current directory; this
-provides an easy means of updating this file when working on a file
-within the same directory.  If you want to view some other
-directory-specific button file, simply use the normal Emacs file
-finding commands.
+If you want a permanent link to a file section that you can follow at
+any time, you can use a global button.  Or what about an Emacs keyboard
+macro that you use frequently?  Create an @code{exec-kbd-macro} button
+with an easy to type name and then you can activate it whenever the need
+arises.
 
-One might suggest that quick menu access be provided for group-specific
-and site-specific button files.  Instead, link buttons to such things
-should be placed at the top of your personal button file.  This provides
-a more flexible means of connecting to such resources.
address@hidden C-h h g
address@hidden menu, Gbut
address@hidden menu, Global-Button
+Global buttons are managed with the Hyperbole Gbut/ menu accessed with
address@hidden h g}.  The Create item, @bkbd{C-h h g c}, prompts for a
+global button name, an action type, and the action's associated
+arguments, such as a file to link to.  It then creates the button.  To
+activate the button, use the Act menu item, @bkbd{C-h h g a}.  Type
+the button's name and its action will be executed.
 
address@hidden Action Types, Button Type Precedence, Button Files, Buttons
address@hidden   Action Types
+Global buttons are actually explicit buttons stored at the end of your
+personal button file, @pxref{Button Files}.  You can always go into that
+file and activate, edit or annotate these buttons with comments.
 
address@hidden action type
address@hidden argument, use
address@hidden action
address@hidden button action
address@hidden types} are special functions that specify Hyperbole button
-behaviors.  Each action type may be used by any category of button:
-global, explicit, or implicit.  The arguments needed by an action type
-are prompted for at button creation time or in the case of an implicit
-button, computed when the button is activated.  During button
-activation, the arguments are fed to the action type's body to achieve
-the desired result.  This body is called the button @dfn{action}.
address@hidden Implicit Buttons, Button Files, Global Buttons, Buttons
address@hidden   Implicit Buttons
 
-Hyperbole handles all of this processing transparently.  As a user, all
-you need know is the set of action types that you can work with when
-creating explicit or global buttons.
address@hidden button, implicit
address@hidden implicit button
address@hidden buttons} are virtual buttons recognized within the
+natural structure of a document.  For example, a web URL button that
+displays its link or an email address button that starts a mail
+message to the associated address.  Implicit buttons are identified by
+contextual patterns found within documents.  An @dfn{Implicit button
+type} identifies a pattern or state that when matched triggers
+an @emph{action} associated with the implicit button type.  The action
+is specified by either a Hyperbole action type (@pxref{Action Types})
+or an Emacs Lisp function.  Implicit button types may use the same
+action types that explicit buttons use.  As an example, a pathname
+implicit button type would match to any existing local filename or
+directory name and its action would be to display the associated file
+or directory, typically in another window.
 
address@hidden actypes, list of
address@hidden
-The standard action types included with Hyperbole in alphabetical order
-are:
address@hidden file, hibtypes.el
address@hidden context
address@hidden boolean expressions
address@hidden activating implicit button
address@hidden menu item, Ibut/Act
address@hidden C-h h i a
+Unlike explicit buttons, implicit buttons have no individual button data
+other than their textual labels.  You use implicit button types which
+include boolean expressions (predicates) that match to both the label
+and the context required of any button of the type.  Each time a Smart
+Key is pressed at a location, Hyperbole evaluates the predicates from
+the list of implicit button types and the first one that evaluates true
+is selected and its associated action is triggered.  The Ibut/Act menu
+item, @bkbd{C-h h i a}, also activates any implicit button found at the
+current point.
+
+All of this happens transparently and is easy to use once you try it.
+The Hyperbole Smart Keys offer extensive additional context-sensitive
+point-and-click type behavior beyond implicit button types.  @xref{Smart
+Key Operations}.
+
address@hidden ibtypes, list of
address@hidden implicit button types
+Below, standard implicit button types are listed in the order in which
+Hyperbole tries to match to the types when looking for an implicit
+button; @bkbd{C-h h i t @key{RET}} provides similar information.  See
+the Hyperbole file, @file{hibtypes.el}, for complete examples of
+implicit button types (where they are listed in reverse in increasing
+order of priority).
 
 @table @code
address@hidden actypes annot-bib
address@hidden annot-bib
-Follows an internal reference KEY within an annotated bibliography,
-delimiters = [ ].
 
address@hidden actypes completion
address@hidden ibtypes completion
address@hidden completion
 @item completion
-Inserts a completion at point into the minibuffer or a buffer.
-Unless point is at the end of buffer or if a completion has already been 
-inserted, in which case the completions window is deleted.
+Inserts the completion at point into the minibuffer or the other window.
 
address@hidden actypes eval-elisp
address@hidden eval-elisp
-Evaluates a Lisp expression LISP-EXPR.
address@hidden ibtypes hyp-source
address@hidden Hyperbole report
address@hidden hyp-source
+Turns source location entries in Hyperbole reports into buttons that
+jump to the associated location.
 
address@hidden actypes exec-kbd-macro
address@hidden exec-kbd-macro
-Executes a KBD-MACRO REPEAT-COUNT times.  KBD-MACRO may be a string of
-editor command characters, a function symbol or nil to use the last
-defined keyboard macro.  Optional REPEAT-COUNT nil means execute once,
-zero means repeat until error.
address@hidden ibtypes hyp-address
address@hidden Hyperbole mail list
address@hidden hyp-address
+Turns a Hyperbole support/discussion e-mail address into an implicit
+button which inserts Hyperbole environment information.  This is
+useful when sending mail to a Hyperbole discussion mail list.  See
+also the documentation for @code{actypes::hyp-config}.
 
address@hidden actypes exec-shell-cmd
address@hidden exec-shell-cmd
-Executes a SHELL-CMD string asynchronously.  Optional non-nil second
-argument INTERNAL-CMD inhibits display of the shell command line
-executed.  Optional non-nil third argument KILL-PREV means kill the last
-output to the shell buffer before executing SHELL-CMD.
address@hidden ibtypes Info-node
address@hidden Info node
address@hidden Info-node
+Makes "(filename)nodename" buttons display the associated Info node.
+Also makes "(filename)itemname" buttons display the associated Info
+index item.
+
address@hidden ibtypes www-url
address@hidden URL
address@hidden World-wide Web
address@hidden WWW
address@hidden Action Key, web browsing
address@hidden Action Key, web browsing
address@hidden browse-url-browser-function
address@hidden www-url
+When not in an Emacs web browser buffer, follows any non-ftp URL (link) at 
point.
+The variable, @code{browse-url-browser-function}, may be used to customize
+which URL browser is called.  Terse URLs which lack a protocol prefix,
+like www.gnu.org, are also recognized.
+
address@hidden ibtypes gnus-push-button
address@hidden GNUS push-buttons
address@hidden hiding signatures
address@hidden signatures, hiding
address@hidden gnus-push-button
+Activates GNUS-specific article push-buttons, e.g. for hiding
+signatures.  GNUS is a news and mail reader."
+
address@hidden ibtypes texinfo-ref
address@hidden Texinfo cross-reference
address@hidden cross-reference, Texinfo
address@hidden texinfo-ref
+Displays Texinfo, Info node or help associated with Texinfo node, menu
+item, @@xref, @@pxref, @@ref, @@code, @@findex, @@var or @@vindex at point.
+If point is within the braces of a cross-reference, the associated Info node is
+shown.  If point is to the left of the braces but after the @@ symbol and
+the reference is to a node within the current Texinfo file, then the
+Texinfo node is shown.
 
address@hidden actypes exec-window-cmd
address@hidden exec-window-cmd
-Asynchronously executes an external window-based SHELL-CMD string.
+For @@code, @@findex, @@var and @@vindex references, the associated 
documentation
+string is displayed.
 
address@hidden actypes function-in-buffer
address@hidden function-in-buffer
-Displays the definition of function NAME found at POS in the current buffer.
address@hidden ibtypes mail-address
address@hidden e-mail address
address@hidden rolo address
address@hidden address
address@hidden mail-address
+If on an e-mail address in a specific buffer type, mail to that address
+in another window. Applies to the rolo match buffer, any buffer
+attached to a file in @code{hyrolo-file-list}, or any buffer with @file{mail}
+or @file{rolo} (case-insensitive) within its name.
 
address@hidden actypes hyp-config
address@hidden hyp-config
-Inserts Hyperbole configuration and debugging information at the end
-of the current buffer or within optional OUT-BUF.
address@hidden ibtypes patch-msg
address@hidden patch output
address@hidden patch-msg
+Jumps to the source code associated with output from the @samp{patch}
+program.  Patch applies diffs to source code.
 
address@hidden actypes hyp-request
address@hidden hyp-request
-Inserts help for composing a Hyperbole support/discussion message into
-the current buffer or the optional OUT-BUF.
address@hidden ibtypes elisp-compiler-msg
address@hidden byte compiler error
address@hidden Emacs Lisp compiler error
address@hidden compiler error
address@hidden elisp-compiler-msg
+Jumps to the source code for a definition associated with a
+byte-compiler error message.  Works when activated anywhere within an
+error line.
 
address@hidden actypes hyp-source
address@hidden hyp-source
-Displays a buffer or file from a line beginning with
address@hidden:source-prefix}.
address@hidden ibtypes debugger-source
address@hidden gdb
address@hidden dbx
address@hidden xdb
address@hidden stack frame
address@hidden breakpoint
address@hidden source line
address@hidden debugger-source
+Jumps to the source line associated with a debugger stack frame or
+breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
+recognized in any buffer.
 
address@hidden actypes kbd-key
address@hidden kbd-key
-Executes the function binding for KEY-SEQUENCE, delimited by @address@hidden
-Returns @samp{t} if a KEY-SEQUENCE has a binding, else @samp{nil}.
address@hidden ibtypes grep-msg
address@hidden grep
address@hidden compiler error
address@hidden grep-msg
+Jumps to a line associated with grep or compilation error messages.
+Messages are recognized in any buffer.
 
address@hidden link action types
address@hidden actypes link-to-buffer-tmp
address@hidden link-to-buffer-tmp
-Displays a BUFFER.  This type of link generally can
-only be used within a single editor session.  Use @code{link-to-file}
-instead for a permanent link.
address@hidden ibtypes klink
address@hidden klink
address@hidden koutline link
address@hidden kcell link
address@hidden klink
+Follows a link delimited by <> to a koutline cell.
+See the documentation for @code{actypes::link-to-kotl} for valid link
+specifiers.
 
address@hidden actypes link-to-directory
address@hidden link-to-directory
-Displays a DIRECTORY in Dired mode.
address@hidden ibtypes man-apropos
address@hidden UNIX manual
address@hidden man pages
address@hidden man apropos
address@hidden man-apropos
+Makes man apropos entries (from @samp{man -k}) display associated man pages 
when
+selected.
 
address@hidden actypes link-to-doc
address@hidden link-to-doc
-Displays an online version of a document given by DOC-ID.  If the online
-version of a document is not found in @code{doc-id-indices}, an error is
-signalled.
address@hidden ibtypes rfc
address@hidden Internet RFC
address@hidden Request For Comment
address@hidden RFC
address@hidden remote file
address@hidden ftp
address@hidden rfc
+Retrieves and displays an Internet rfc referenced at point.  Requires remote
+file access, e.g. via the Tramp library, for remote ftp retrievals.  The
+following formats are recognized: RFC822, rfc-822, and RFC 822.  The
address@hidden:rfc} variable specifies the location from which to retrieve
+RFCs."
 
address@hidden actypes link-to-ebut
address@hidden link-to-ebut
-Performs an action given by another button, specified by KEY and KEY-FILE.
address@hidden ibtypes kbd-key
address@hidden key sequence
address@hidden kbd-key
+Executes the command binding or the Hyperbole minibuffer menu action
+for a key sequence delimited by curly braces.  Key sequences should
+be in human readable form, e.g.@: @bkbd{C-x C-b}.  Formats such
+as @address@hidden will not be recognized.
 
address@hidden actypes link-to-elisp-doc
address@hidden link-to-elisp-doc
-Displays the documentation for FUNC-SYMBOL.
address@hidden ibtypes dir-summary
address@hidden file, MANIFEST
address@hidden file, DIR
address@hidden dir-summary
+Detects filename buttons in files named "MANIFEST" or "DIR".
+Displays selected files.  Each file name must be at the beginning of the
+line and must be followed by one or more spaces and then another
+non-space, non-parenthesis, non-brace character.
 
address@hidden actypes link-to-file
address@hidden link-to-file
-Displays file given by PATH scrolled to optional POINT.  With POINT,
-buffer is displayed with POINT at window top.
address@hidden ibtypes text-toc
address@hidden table of contents
address@hidden toc implicit button type
address@hidden text-toc
+Jumps to the text file section referenced by a table of contents entry
+at point.  The file name of the current buffer must contain
address@hidden and there must be a `Table of Contents' or `Contents'
+label on a line by itself (it may begin with an asterisk), preceding the
+table of contents.  Each toc entry must begin with some whitespace
+followed by one or more asterisk characters.  Each line which begins a
+new file section must start with one or more asterisk characters at the
+very beginning of the line.
 
address@hidden actypes link-to-file-line
address@hidden link-to-file-line
-Displays a file given by PATH scrolled to LINE-NUM.
address@hidden ibtypes cscope
address@hidden C/C++ call trees
address@hidden C/C++ cross-reference
address@hidden Cscope
address@hidden cscope
+Jumps to a C/C++ source line associated with a Cscope C analyzer output line.
+Requires pre-loading of the cscope.el Lisp library available from the Emacs
+Lisp archives and the commercial cscope program available from AT&T's
+software toolchest.  Otherwise, does nothing.
 
address@hidden actypes link-to-Info-index-item
address@hidden link-to-Info-index-item
-Displays an Info index ITEM cross-reference.
-ITEM must be a string of the form (filename)item-name.  During
-button creation, completion for both filename and item-name is
-available.  Filename may be given without the .info suffix."
address@hidden ibtypes etags
address@hidden etags entry
address@hidden TAGS file
address@hidden tag
address@hidden etags
+Jumps to the source line associated with an etags file entry in a TAGS buffer.
+If on a tag entry line, jumps to the source line for the tag.  If on a
+pathname line or line preceding it, jumps to the associated file.
 
address@hidden actypes link-to-Info-node
address@hidden link-to-Info-node
-Displays an Info NODE.  NODE must be a string of the form
-(filename)nodename.  During button creation, completion for both
-filename and nodename is available.  Filename may be given without the
-.info suffix.
address@hidden ibtypes ctags
address@hidden ctags entry
address@hidden tags file
address@hidden ctags
+Jumps to the source line associated with a ctags file entry in any buffer.
+Ctags files are used by old editors like vi to lookup identifiers.
+Emacs uses the newer, more flexible Etags format.
 
address@hidden actypes link-to-kcell
address@hidden kcell:ref-to-id
address@hidden link-to-kcell
-Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
-top of a window.  See the documentation for @code{(kcell:ref-to-id)} for
-valid CELL-REF formats.
address@hidden ibtypes id-cflow
address@hidden C call tree
address@hidden call tree, C
address@hidden C flow graph
address@hidden id-cflow
+Expands or collapses C call trees and jumps to code definitions.
+Requires cross-reference tables built by the external @code{cxref}
+program.
 
address@hidden
-If FILE is @samp{nil}, the current buffer is used.  If CELL-REF is
address@hidden, the first cell in the view is shown.
address@hidden ibtypes rfc-toc
address@hidden Internet RFC
address@hidden Request For Comment
address@hidden RFC
address@hidden table of contents
address@hidden rfc-toc
+Summarizes contents of an Internet rfc from anywhere within an rfc buffer.
+Each line of the summary may be selected to jump to the associated section.
 
address@hidden actypes link-to-kotl
address@hidden link-to-kotl
-Displays at the top of a window the referent pointed to by LINK.
-LINK may be of any of the following forms, with or without delimiters:
address@hidden ibtypes markdown-internal-link
address@hidden markdown link
address@hidden markdown-internal-link
+Displays any in-file Markdown link referent.  Pathnames and urls are
+handled elsewhere.
+
address@hidden ibtypes git-reference
address@hidden git reference
address@hidden version control
address@hidden hibtypes-git-default-project
address@hidden git-reference
 @example
-  < pathname [, cell-ref] >
-  < [-!&] pathname >
-  < @@ cell-ref >
address@hidden example
+Displays the git entity associated with REFERENCE and optional PROJECT.
 
address@hidden
-See the documentation for @code{(kcell:ref-to-id)} for valid cell-ref
-formats.
+REFERENCE is of the form:
+    <ref-item>
+    /?<project>/<ref-item>
+or  /<project>.
 
address@hidden actypes link-to-mail
address@hidden link-to-mail
-Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE.  See
-the documentation for the variable @code{hmail:init-function} for
-information on how to specify the mail reader to use.
+<ref-item> is one of these:
 
address@hidden actypes link-to-regexp-match
address@hidden link-to-regexp-match
-Finds REGEXP's Nth occurrence in SOURCE and displays the location at the
-top of the selected window.  SOURCE is a pathname unless optional
-BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
-Returns @samp{t} if found, signals an error if not.
address@hidden @bullet
address@hidden
+  one of the words: branches, commits, or tags; the associated items are 
listed;
 
address@hidden actypes link-to-rfc
address@hidden link-to-rfc
-Retrieves and displays an Internet rfc given by RFC-NUM.  RFC-NUM may be
-a string or an integer.  Requires a remote file access library, such as
-Tramp, for ftp file retrievals.
address@hidden
+  one of the words: branch, commit, or tag followed by a '/' and item id; the 
item is shown;
 
address@hidden actypes link-to-string-match
address@hidden link-to-string-match
-Finds STRING's Nth occurrence in SOURCE and displays the location at the
-top of the selected window.  SOURCE is a pathname unless optional
-BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
-Returns @samp{t} if found, @samp{nil} if not.
address@hidden
+  a commit reference given by a hex number, 55a1f0; the commit diff is 
displayed;
 
address@hidden actypes link-to-texinfo-node
address@hidden link-to-texinfo-node
-Displays the Texinfo node with NODENAME (a string) from the current buffer.
address@hidden
+  a branch or tag reference given by an alphanumeric name, e.g. hyper20; the
+  files in the branch are listed.
address@hidden itemize
+
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
address@hidden
address@hidden example
 
address@hidden actypes link-to-web-search
address@hidden link, web search
address@hidden web search link
address@hidden link-to-web-search
-Searches web SERVICE-NAME for SEARCH-TERM.  Uses 
@code{hyperbole-web-search-alist}
-to match each service to its search url.  Uses 
@code{hyperbole-web-search-browser-function}
-and the @code{browse-url} package to display search results.
address@hidden ibtypes git-commit-reference
address@hidden git commit reference
address@hidden version control
address@hidden git-commit-reference
+Displays the diff for a git commit reference, e.g. commit a55e21, typically 
produced by git log.
+
address@hidden ibtypes github-reference
address@hidden github reference
address@hidden version control
address@hidden hibtypes-github-default-project
address@hidden hibtypes-github-default-user
address@hidden github-reference
address@hidden
+Displays the Github entity associated with REFERENCE and optional USER and 
PROJECT.
 
address@hidden actypes man-show
address@hidden sm-notify
address@hidden man-show
-Displays a man page on TOPIC, which may be of the form
address@hidden<command>(<section>}).  If using the Superman manual entry
-package, see the documentation for @code{sm-notify} to control where the
-man page is displayed.
+REFERENCE is a string of the form:
+    <ref-item>
+    <user>/<project>/<ref-item>
+    <project>/<ref-item>
+or  /<project>.
 
address@hidden actypes rfc-toc
address@hidden rfc-toc
-Computes and displays a summary of an Internet rfc in BUF-NAME.  Assumes
-point has already been moved to the start of the region to summarize.
-Optional OPOINT is the point to return to in BUF-NAME after displaying
-the summary.
+<ref-item> is one of these:
 
address@hidden actypes text-toc
address@hidden table of contents
address@hidden toc action type
address@hidden text-toc
-Jumps to the text file SECTION referenced by a table of contents entry
-at point.
address@hidden @bullet
address@hidden
+  one of the words: branches, commits, issues, pulls, or tags; the associated 
items are listed;
 
address@hidden actypes www-url
address@hidden URL
address@hidden World-wide Web
address@hidden WWW
address@hidden browse-url-browser-function
address@hidden www-url
-Follows a link given by a URL.  The variable,
address@hidden, customizes the url browser
-that is used.  See its documentation string for details.
address@hidden table
address@hidden
+  one of the words: branch, commit, issue, pull or tag followed by a '/' and
+  item id; the item is shown;
 
address@hidden action
address@hidden hui:ebut-prompt-for-action
-Action types create a convenient way of specifying button behavior
-without the need to know how to program.  Expert users who are familiar
-with Emacs Lisp, however, may find that they often want to tailor button
-actions in a variety of ways not easily captured within a type system.
-In such cases, @code{hui:ebut-prompt-for-action} should be set to
address@hidden  This will cause Hyperbole to prompt for an action to override
-the button's action type at each explicit button creation.  For those cases
-where the action type is sufficient, a @samp{nil} value should be
-entered for the action.  An action may be any Lisp form that Emacs
-Lisp can evaluate.
address@hidden
+  an issue reference given by a positive integer, e.g. 92 or prefaced with 
GH-, e.g. GH-92;
+  the issue is displayed;
 
address@hidden Button Type Precedence, Utilizing Explicit Buttons, Action 
Types, Buttons
address@hidden   Button Type Precedence
address@hidden
+  a commit reference given by a hex number, 55a1f0; the commit diff is 
displayed;
 
address@hidden button precedence
address@hidden button label overlap
-Explicit buttons always take precedence over implicit buttons.  Thus, if
-a button selection is made which falls within both an explicit and
-implicit button, only the explicit button will be selected.  Explicit
-button labels are not allowed to overlap; Hyperbole's behavior in such
-cases is undefined.
address@hidden
+  a branch or tag reference given by an alphanumeric name, e.g. hyper20; the
+  files in the branch are listed.
address@hidden itemize
 
address@hidden ibtype, evaluation order
-If there is no explicit button at point during a selection request,
-then each implicit button type predicate is tested in turn until one
-returns non-nil or all are exhausted.  Since two implicit button types
-may have overlapping @dfn{domains}, those contexts in which their
-predicates are true, only the first matching type is used.  The type
-predicates are tested in @emph{reverse} order of definition, i.e.@:
-most recently entered types are tested first, so that personal types
-defined after standard system types take precedence.  It is important
-to keep this order in mind when defining new implicit button types.
-By making match predicates as specific as possible, one can minimize
-any overlapping implicit button domains.
+USER defaults to the value of @var{hibtypes-github-default-user}.
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
address@hidden
address@hidden example
 
address@hidden type redefinition
-Once a type name is defined, its precedence relative to other types
-remains the same even if its body is redefined, as long as its name is
-not changed.  This allows incremental modifications to types without
-any worry of altering their precedences.  @xref{Creating Types}, for
-information on how to develop or modify types.
address@hidden ibtypes social-reference
address@hidden hashtag
address@hidden username
address@hidden social media
address@hidden social reference
address@hidden hibtypes-social-default-service
address@hidden social-reference
+Displays the web page associated with a social media hashtag or username
+reference at point.  Reference format is:
 
address@hidden Utilizing Explicit Buttons,  , Button Type Precedence, Buttons
address@hidden   Utilizing Explicit Buttons
address@hidden
+[facebook|instagram|twitter]?[#@@]<hashtag-or-username> or
+[fb|in|tw]?[#@@]<hashtag-or-username>
address@hidden smallexample
 
-Explicit buttons are a fundamental building block for creating personal
-or organizational hypertext networks with Hyperbole.  This section
-summarizes the user-level operations available for managing these
-buttons.
address@hidden
+For example, @samp{fb@@someuser} displays the home page for facebook user
address@hidden and @samp{in#hashtag} displays photos with the hashtag
address@hidden  The first part of the label for a button of this type
+is the social media service name.  The service name defaults to the
+value of @code{hibtypes-social-default-service} (default value of
+``twitter'') when not given, so #hashtag would be the same as
+twitter#hashtag.
 
address@hidden
-* Creation::
-* Renaming::
-* Deletion::
-* Modification::
-* Location::
-* Buttons in Mail::
-* Buttons in News::
address@hidden menu
address@hidden ibtypes debbugs-gnu-mode
address@hidden bug tracking
address@hidden issue tracking
address@hidden debbugs-gnu-mode
+Debbugs is a client-server issue tracker used by GNU free software
+projects, including Hyperbole, to manage issues and maintain threads
+of discussion around them.  When on a GNU Debbugs listing entry in
address@hidden, an Action Key press displays the discussion
+of the selected issue; an Assist Key press pretty prints the status of
+the issue to a window below the listing window.
 
address@hidden Creation, Renaming, Utilizing Explicit Buttons, Utilizing 
Explicit Buttons
address@hidden  Creation
address@hidden ibtypes debbugs-gnu-query
address@hidden debbugs-gnu-query
+This implicit button type displays the results of a Gnu debbugs query
+based on the string at point and works in most kinds of buffers.  If
+the query includes a single id number, it displays the original message
+submission for that id and allows browsing of the followup discussion.
+The following buffer text formats are accepted (with point prior to
+any attribute):
 
-Creating explicit buttons is fun and easy.  You can always try them
-out immediately after creating them or can utilize the Assist Key to
-verify what buttons do.  There are two ways to create them: by
-dragging between windows with the Action Mouse Key or by using the
-Hyperbole menus.
address@hidden
+bug#id-number, bug# id-number, bug #id-number or bug id-number
+bug?attr1=val1&attr2=val2&attr3=val3
+bug#id-number?attr1=val1&attr2=val2&attr3=val3
address@hidden smallexample
 
address@hidden
-* By Dragging::                 Creation Via Action Key Drags
-* By Menu::                     Creation Via Menus
address@hidden menu
address@hidden file, hib-debbugs.el
address@hidden
+Note that @emph{issue} or @emph{debbugs} may be used as well in place
+of @emph{bug}.  See the documentation at the top of
+the @file{hib-debbugs.el} file for detailed query format information.
 
address@hidden By Dragging, By Menu, Creation, Creation
address@hidden Creation Via Action Key Drags
address@hidden ibtypes annot-bib
address@hidden bibliography
address@hidden reference
address@hidden annot-bib
+Displays annotated bibliography entries defined within the same buffer
+as the reference.  References must be delimited by square brackets, must
+begin with a word constituent character, and must not be in buffers
+whose names begin with a ` ' or `*' character.
 
address@hidden explicit button, creation
address@hidden button, creation
address@hidden link, creation
address@hidden drag
address@hidden Action Key drag
address@hidden creating a link
address@hidden mouse drag, link creation
address@hidden direct link creation
-The most efficient way to create an explicit link button interactively
-is to use the Action Mouse Key to drag from a button source window to
-a window showing its link referent.  More specifically, you should
-split your current Emacs frame into two windows: one which contains
-the point at which you want a button to be inserted and another which
-shows the point to which you want to link.  Depress the Action Mouse
-Key at the source point for the button (anywhere but on a paired
-delimiter such as double quotes or parentheses).  Then drag to the
-other window and release the Action Mouse Key at the start point of
-the link referent.  The process becomes quite simple with a little
-practice. (@xref{By Menu, Creation Via Menus}, for a more detailed
-explanation of the explicit button creation process).
address@hidden Handled instead by @xref{Smart Key - Identifier Menu Mode}.
address@hidden @findex ibtypes imenu-item
address@hidden @vindex file, imenu.el
address@hidden @cindex identifier menu
address@hidden @cindex imenu
address@hidden @item imenu-item
address@hidden Displays the in-buffer definition of an identifier that point is 
within or after, else nil.
address@hidden This triggers only when imenu has already been used to generate 
an in-buffer item index.
 
-If a region was selected prior to the start of the drag, it is used as
-the button label, otherwise, you are prompted for the label.  Then
-Hyperbole uses the link referent context to determine the type of link
-to make.  If there are a few different types of links which are
-applicable from the context, you will be prompted with a list of the
-types.  Simply use the Action Key or the first letter of the link type
-to select one of the type names and to finish the link creation.
-Hyperbole will then insert explicit button delimiters around the
-button label and will display a message in the minibuffer indicating
-the button label, its action/link type, and any arguments, notably the
-thing to which it links.
address@hidden ibtypes function-in-buffer
address@hidden file, func-menu.el
address@hidden function menu
address@hidden func-menu
address@hidden function-in-buffer
+Returns the function name defined within this buffer that point is
+within or after, else @samp{nil}.  This triggers only when the
+func-menu library has been loaded and the current major mode is one
+handled by func-menu.
 
-The following table shows the type of link that will be created based
-upon the referent context in which the Action Key is released.
address@hidden link, pathname line and column
address@hidden line and column
address@hidden pathname, line and column
address@hidden ibtypes pathname-line-and-column
address@hidden pathname-line-and-column
+Makes a valid pathname:line-num[:column-num] pattern display the path
+at line-num and optional column-num.  Also works for remote pathnames.
 
address@hidden
address@hidden
-Referent Context         Link Type
-----------------------------------------------------
-Explicit Button          link-to-ebut
-Info Index Item          link-to-Info-index-item
-Info Node                link-to-Info-node
-Mail Reader Message      link-to-mail
-Directory Name           link-to-directory
-File Name                link-to-file
-Koutline Cell            link-to-kcell
-Outline Heading          link-to-string-match
-Buffer attached to File  link-to-file
-Buffer without File      link-to-buffer-tmp
address@hidden example
address@hidden format
address@hidden ibtypes pathname
address@hidden hpath:at-p
address@hidden hpath:find
address@hidden hpath:suffixes
address@hidden Tramp
address@hidden Ange-ftp
address@hidden EFS
address@hidden ftp
address@hidden pathname
address@hidden remote path
address@hidden filename
address@hidden link, pathname
address@hidden pathname
+Makes a valid pathname display the path entry.  Also works for
+delimited and non-delimited remote pathnames, Texinfo @file{} entries,
+and hash-style link references to HTML, Markdown or Emacs outline
+headings.  Emacs Lisp library files (filenames without any directory
+component that end in .el and .elc) are looked up using
+the @code{load-path} directory list.
+
address@hidden
+See the function documentation for @code{hpath:at-p} for possible
+delimiters.  See the variable documentation for @code{hpath:suffixes} for
+suffixes that are added to or removed from the pathname when searching
+for a valid match.  See the function documentation for @code{hpath:find}
+for special file display options.
 
address@hidden M-o
address@hidden C-u M-o
address@hidden C-x o
address@hidden hkey-operate
address@hidden Action Key drag emulation
address@hidden keyboard drag emulation
-If you run Emacs under a window system and there is no prior key
-binding on @bkbd{M-o} when you load Hyperbole, then you can emulate
-an Action Key drag from the keyboard by typing @bkbd{M-o}, the
address@hidden command, at the button source location, moving
-to the link destination, e.g.@: with @bkbd{C-x o}, and then typing
address@hidden again.  This simulates a depress and then release of the
-Action Key.  @bkbd{C-u M-o} emulates drags of the Assist Key.
-This will not work when Hyperbole is run from a dumb terminal Emacs
-session since drag actions are not supported without a window system.
address@hidden ibtypes org-mode
address@hidden browse-url-browser-function
address@hidden org-mode
address@hidden Org mode
address@hidden org-mode
+The Action Key follows any Org mode link at point or cycles through
+views of the outline subtree at point.  In any other context besides
+the end of a line, the Action Key will invoke the Org mode standard
+binding of @address@hidden, (org-meta-return).  The Assist Key on
+an Org mode heading, cycles through views of the whole buffer outline
+and on an Org mode link, displays standard Hyperbole help.
 
address@hidden By Menu,  , By Dragging, Creation
address@hidden Creation Via Menus
+The variable, @code{browse-url-browser-function}, customizes the url
+browser that is used for urls.  Valid values of this variable
+include @code{browse-url-default-browser}
+and @code{browse-url-generic}.
 
-You may instead use the Hyperbole menus to create explicit buttons.
-First, mark a short region of text in any fashion allowed by Emacs
-and then select the Hyperbole menu item sequence, Ebut/Create.  You will
-be prompted for the button's label with the marked region as the
-default.  If you accept the default and enter the rest of the
-information you are prompted for, the button will be created within the
-current buffer and Hyperbole will surround the marked region with
-explicit button delimiters to indicate success.
address@hidden ibtypes doc-id
address@hidden online library
address@hidden document identifier
address@hidden doc-id
+Displays an index entry for a site-specific document given its id.
+Ids must be delimited by @code{doc-id-start} and @code{doc-id-end} and
+must match the function given by @code{doc-id-p}.  This permits
+creation of catalogued online libraries.  (Note that this implicit
+button type is not installed by default.  You must manually configure
+it and load it from the file, 
@address@hidden@{hyperb:address@hidden/hib-doc-id.el}).
address@hidden table
 
-If you do not mark a region before invoking the button create command,
-you will be prompted for both a label and a target buffer for the button
-and the delimited label text will be inserted into the target buffer
-after a successful button creation.
address@hidden Button Files, Action Types, Implicit Buttons, Buttons
address@hidden   Button Files
 
-After Hyperbole has the button label and its target buffer, it will
-prompt you for an action type for the button.  Use the @bkbd{?}
-completion list key to see the available types.  The type selected
-determines any following values for which you are prompted.
address@hidden button files
+It is often convenient to create files filled with buttons as a means
+of navigating distributed information pools or for other purposes.
+These files can also serve as useful roadmaps that guide a user
+through both unfamiliar and highly familiar information spaces.  Files
+that are created specifically for this purpose are
+called @dfn{Hyperbole button files}.
 
address@hidden button instance
address@hidden instance number
-If a previous button with the same label exists in the same buffer,
-Hyperbole will add an @dfn{instance number} to the label when it adds
-the delimiters so that the name is unique.  Thus, you don't have to
-worry about accidental button name conflicts.  If you want the same
-button to appear in multiple places within the buffer, just enter the
-label again and delimit it yourself or copy and paste the button with
-its delimiters.  Hyperbole will interpret all occurrences of the same
-delimited label within a buffer as the same button.
address@hidden hbmap:filename
address@hidden button file, personal
address@hidden button file, directory
+The Hyperbole menu system provides quick access to two types of these
+button files: personal and directory-specific, through the ButFile menu.
+(The variable, @code{hbmap:filename}, contains the base name of these
+button files.  Its standard value is @file{HYPB}.)
 
address@hidden link, creation
-If you create link buttons using the Hyperbole menus, the best
-technique is to place on screen both the source buffer for the button
-and the buffer to which it will link.  Mark the region of text to use
-as your button label, invoke the button create command from the menu,
-choose an action type which begins with @code{link-to-} and then use
-the direct selection techniques mentioned in @ref{Smart Key Argument
-Selection}, to select the link referent.
address@hidden dir, ~/.hyperb
address@hidden hbmap:dir-user
address@hidden global button
+A personal button file may serve as a user's own roadmap to frequently
+used resources, like a personal home page.  Selection of the
+ButFile/PersonalFile menu item, @bkbd{C-h h b p}, displays this file for
+editing.  The default personal button file is stored within the
+directory given by the @code{hbmap:dir-user} variable whose standard
+value is @file{~/.hyperb}.  The default Hyperbole configuration also
+appends all global buttons to the end of this file, one per line, as
+they are created.  So you can edit or annotate them within the file.
 
+A directory-specific button file may exist for each file system
+directory.  Such files are useful for explaining the contents of
+directories and pointing readers to particular highlights within the
+directories.  Selection of the ButFile/DirFile menu item, @bkbd{C-h h
+b d}, displays the button file for the current directory; this
+provides an easy means of updating this file when working on a file
+within the same directory.  If you want to view some other
+directory-specific button file, simply use the normal Emacs file
+finding commands.
 
address@hidden Renaming, Deletion, Creation, Utilizing Explicit Buttons
address@hidden  Renaming
+One might suggest that quick menu access be provided for group-specific
+and site-specific button files.  Instead, link buttons to such things
+should be placed at the top of your personal button file.  This provides
+a more flexible means of connecting to such resources.
 
address@hidden explicit button, renaming
address@hidden button, renaming
-Once an explicit button has been created, its label text must be
-treated specially.  Any inter-word spacing within the label may be
-freely changed, as may happen when a paragraph is refilled, but a
-special command must be invoked to rename it.
address@hidden Action Types, Button Type Precedence, Button Files, Buttons
address@hidden   Action Types
 
-The rename command operates in two different ways.  If point is within
-a button label when it is invoked, it will tell you to edit the button
-label and then to invoke the rename command again after the edit.  The
-second invocation will actually rename the button.  If instead the
-command is originally invoked outside of any explicit button, it will
-prompt for the button label to replace and the label to replace it
-with and then will perform the renaming.  All occurrences of the same
-button in the buffer will be renamed.
address@hidden action type
address@hidden argument, use
address@hidden action
address@hidden button action
address@hidden types} are special functions that specify Hyperbole button
+behaviors.  Each action type may be used by any category of button:
+global, explicit, or implicit.  The arguments needed by an action type
+are prompted for at button creation time or in the case of an implicit
+button, computed when the button is activated.  During button
+activation, the arguments are fed to the action type's body to achieve
+the desired result.  This body is called the button @dfn{action}.
 
address@hidden file, .emacs
address@hidden file, hyperbole.el
address@hidden C-c C-r
address@hidden hui:ebut-rename
-The rename command may be invoked from the Hyperbole menu via
-Ebut/Rename.  A faster method is to use a key bound to the
address@hidden:ebut-rename} command.  Hyperbole typically binds this to
address@hidden C-r}.  @bkbd{C-h w hui:ebut-rename @key{RET}} will show
-what if any key runs it.  If no key binding has been established or if
-you prefer one of your own, simply bind it within your @file{~/.emacs}
-file: @code{(global-set-key "\C-c\C-r" 'hui:ebut-rename)}.
+Hyperbole handles all of this processing transparently.  As a user, all
+you need know is the set of action types that you can work with when
+creating explicit or global buttons.
 
address@hidden actypes, list of
address@hidden
+The standard action types included with Hyperbole in alphabetical order
+are:
 
address@hidden Deletion, Modification, Renaming, Utilizing Explicit Buttons
address@hidden  Deletion
address@hidden @code
address@hidden actypes annot-bib
address@hidden annot-bib
+Follows an internal reference KEY within an annotated bibliography,
+delimiters = [ ].
 
address@hidden explicit button, deleting
address@hidden button, deleting
-Ebut/Delete works similarly to the Rename command but deletes the
-selected button.  The button's delimiters are removed to confirm the
-deletion.  If the delete command is invoked with a prefix argument, then
-both the button label and the delimiters are removed as confirmation.
address@hidden actypes completion
address@hidden completion
+Inserts a completion at point into the minibuffer or a buffer.
+Unless point is at the end of buffer or if a completion has already been 
+inserted, in which case the completions window is deleted.
 
address@hidden hui:ebut-delete-confirm-p
-Presently there is no way to recover a deleted button; it must
-be recreated.  Therefore, the @code{hui:ebut-delete-confirm-p} variable
-is true by default, causing Hyperbole to require confirmation before
-interactively deleting explicit buttons.  Set it to @samp{nil} if you
-prefer no confirmation.
address@hidden actypes eval-elisp
address@hidden eval-elisp
+Evaluates a Lisp expression LISP-EXPR.
 
address@hidden Modification, Location, Deletion, Utilizing Explicit Buttons
address@hidden  Modification
address@hidden actypes exec-kbd-macro
address@hidden exec-kbd-macro
+Executes a KBD-MACRO REPEAT-COUNT times.  KBD-MACRO may be a string of
+editor command characters, a function symbol or nil to use the last
+defined keyboard macro.  Optional REPEAT-COUNT nil means execute once,
+zero means repeat until error.
 
address@hidden explicit button, modifying
address@hidden button, modifying
address@hidden Smart Mouse Key drag
address@hidden button, attributes
-Ebut/Modify prompts you with each of the elements from the button's
-attributes list and allows you to modify each in turn.  Ebut/Edit does
-the exact same thing and is there for people who prefer that term.
address@hidden actypes exec-shell-cmd
address@hidden exec-shell-cmd
+Executes a SHELL-CMD string asynchronously.  Optional non-nil second
+argument INTERNAL-CMD inhibits display of the shell command line
+executed.  Optional non-nil third argument KILL-PREV means kill the last
+output to the shell buffer before executing SHELL-CMD.
 
-There is a quicker way to modify explicit link buttons, however.  Simply
-drag with the Action Mouse Key from within the button label to a link
-destination in a different window, just as you would when creating a new
-button with a mouse drag.  Remember that drags may also be emulated from
-the keyboard.  @xref{Creation}.
address@hidden actypes exec-window-cmd
address@hidden exec-window-cmd
+Asynchronously executes an external window-based SHELL-CMD string.
 
address@hidden Location, Buttons in Mail, Modification, Utilizing Explicit 
Buttons
address@hidden  Location
address@hidden actypes function-in-buffer
address@hidden function-in-buffer
+Displays the definition of function NAME found at POS in the current buffer.
 
address@hidden explicit button, summarizing
address@hidden button, summarizing
address@hidden button, help
-The Ebut/Help menu may be used to summarize either a single explicit
-button or all such buttons within a buffer.  The buttons summarized may
-then be activated directly from the summary.
address@hidden actypes hyp-config
address@hidden hyp-config
+Inserts Hyperbole configuration and debugging information at the end
+of the current buffer or within optional OUT-BUF.
 
-Ebut/Help/BufferButs summarizes the explicit buttons in the order in
-which they appear in the buffer.  Ebut/Help/CurrentBut summarizes only
-the button at point.  Ebut/Help/OrderedButs summarizes the buttons in
-alphabetical order.  All of these summary commands eliminate duplicate
-occurrences of buttons from their help displays.
address@hidden actypes hyp-request
address@hidden hyp-request
+Inserts help for composing a Hyperbole support/discussion message into
+the current buffer or the optional OUT-BUF.
+
address@hidden actypes hyp-source
address@hidden hyp-source
+Displays a buffer or file from a line beginning with
address@hidden:source-prefix}.
+
address@hidden actypes kbd-key
address@hidden kbd-key
+Executes the function binding for KEY-SEQUENCE, delimited by @address@hidden
+Returns @samp{t} if a KEY-SEQUENCE has a binding, else @samp{nil}.
 
address@hidden explicit button, searching
address@hidden button, searching
-Ebut/Search prompts for a search pattern and searches across all the
-locations in which you have previously created explicit buttons.  It
-asks you whether to match to any part of a button label or to whole
-labels only.  It then displays a list of button matches with a single
-line of surrounding context from their sources.  Any button in the match
-list may be activated as usual.  An Action Key press on the surrounding
-context jumps to the associated source line.  A press on the filename
-preceding the matches jumps to the file without selecting a particular
-line.
address@hidden link action types
address@hidden actypes link-to-buffer-tmp
address@hidden link-to-buffer-tmp
+Displays a BUFFER.  This type of link generally can
+only be used within a single editor session.  Use @code{link-to-file}
+instead for a permanent link.
 
-There are presently no user-level facilities for globally locating
-buttons created by others or for searching on particular button
-attributes.
address@hidden actypes link-to-directory
address@hidden link-to-directory
+Displays a DIRECTORY in Dired mode.
 
address@hidden Buttons in Mail, Buttons in News, Location, Utilizing Explicit 
Buttons
address@hidden  Buttons in Mail
address@hidden actypes link-to-doc
address@hidden link-to-doc
+Displays an online version of a document given by DOC-ID.  If the online
+version of a document is not found in @code{doc-id-indices}, an error is
+signalled.
 
address@hidden C-x m
address@hidden mail
address@hidden menu item, Cust/Msg-Toggle-Ebuts
-Hyperbole supports embedding buttons within electronic mail messages
-composed in Emacs or InfoDock.  An enhanced mail reader may then be used
-to activate the buttons within messages just like any other buttons.
-Because this involves complex changes to mail support functions, this
-feature is disabled by default.  Use the Cust/Msg-Toggle-Ebuts
-minibuffer menu item to enable it.
address@hidden actypes link-to-ebut
address@hidden link-to-ebut
+Performs an action given by another button, specified by KEY and KEY-FILE.
 
address@hidden button, mailing
address@hidden button, posting
address@hidden mailing buttons
address@hidden posting buttons
address@hidden mail reader
address@hidden mailer initialization
address@hidden Rmail
address@hidden VM
address@hidden MH-e
address@hidden Gnus
address@hidden USENET
address@hidden news
address@hidden file, hmail.el
-Hyperbole automatically supports the following mail readers: Rmail
-(@pxref{Rmail,,Reading Mail with Rmail,emacs, the GNU Emacs Manual}), VM
-(@pxref{Introduction,,,vm, the VM Manual}) and MH-e.  Button inclusion
-and activation within USENET news articles is also supported in the
-same fashion via the Gnus news reader if available at your site
-(@pxref{Top,,The Gnus Newsreader,gnus, the Gnus Manual}).
-(The @file{hmail.el} file defines a generalized interface that can be
-used to hook in other mail or news readers if the necessary interface
-functions are written.)
address@hidden actypes link-to-elisp-doc
address@hidden link-to-elisp-doc
+Displays the documentation for FUNC-SYMBOL.
 
address@hidden mail-yank-original
address@hidden C-c C-y
address@hidden mail inclusion
-All explicit buttons to be mailed must be created within the outgoing
-message buffer. There is no present support for including text from
-other buffers or files which contain explicit buttons, except for the
-ability to yank the contents of a message being replied to, together
-with all of its buttons, via the @code{(mail-yank-original)} command
-bound to @bkbd{C-c C-y}.  From a user's perspective, buttons are
-created in precisely the same way as in any other buffer.  They also
-appear just like any other buttons to both the message sender and the
-reader who uses the Hyperbole enhanced readers.  Button operation may be
-tested any time before a message is sent.  A person who does not use
-Hyperbole enhanced mail readers can still send messages with embedded
-buttons since mail composing is independent of any mail reader
-choice.
address@hidden actypes link-to-file
address@hidden link-to-file
+Displays file given by PATH scrolled to optional POINT.  With POINT,
+buffer is displayed with POINT at window top.
 
-Hyperbole buttons embedded within received mail messages behave as do
-any other buttons.  The mail does not contain any of the action type
-definitions used by the buttons, so the receiver must have these or
-she will receive an error when she activates the buttons.  Buttons
-which appear in message @emph{Subject} lines are copied to summary
-buffers whenever such summaries are generated.  Thus, they may be
-activated from either the message or the summary buffers.
address@hidden actypes link-to-file-line
address@hidden link-to-file-line
+Displays a file given by PATH scrolled to LINE-NUM.
 
-Nothing bad will happen if a mail message with explicit buttons is sent
-to a non-Hyperbole user.  The user will simply see the text
-of the message followed by a series of lines of button data at its end.
-Hyperbole mail users never see this data in its raw form.
address@hidden actypes link-to-Info-index-item
address@hidden link-to-Info-index-item
+Displays an Info index ITEM cross-reference.
+ITEM must be a string of the form (filename)item-name.  During
+button creation, completion for both filename and item-name is
+available.  Filename may be given without the .info suffix."
 
address@hidden smail:comment
address@hidden mail comment
address@hidden Hyperbole mail comment
-In order to alert readers of your mail messages that you can handle
-Hyperbole mail buttons, you can set the variable, @code{smail:comment},
-to an expression that automatically inserts a comment into each
-outgoing message to announce this fact.  See its documentation for
-technical details.  By default, no comment is added.  To have a
-comment line added to your outgoing message, add the following to
-to your @file{~/.emacs} file before the point at which you load
-Hyperbole.
address@hidden actypes link-to-Info-node
address@hidden link-to-Info-node
+Displays an Info NODE.  NODE must be a string of the form
+(filename)nodename.  During button creation, completion for both
+filename and nodename is available.  Filename may be given without the
+.info suffix.
 
address@hidden
-(setq smail:comment
- (format "Comments: GNU Hyperbole mail buttons accepted, v%s.\n"
-          hyperb:version))
address@hidden smalllisp
address@hidden actypes link-to-kcell
address@hidden kcell:ref-to-id
address@hidden link-to-kcell
+Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
+top of a window.  See the documentation for @code{(kcell:ref-to-id)} for
+valid CELL-REF formats.
 
 @noindent
-This will produce the following line in outgoing messages:
+If FILE is @samp{nil}, the current buffer is used.  If CELL-REF is
address@hidden, the first cell in the view is shown.
 
address@hidden actypes link-to-kotl
address@hidden link-to-kotl
+Displays at the top of a window the referent pointed to by LINK.
+LINK may be of any of the following forms, with or without delimiters:
 @example
-Comments: GNU Hyperbole mail buttons accepted, vX.XX.
+  < pathname [, cell-ref] >
+  < [-!&] pathname >
+  < @@ cell-ref >
 @end example
 
address@hidden file, .emacs
 @noindent
-where the X's indicate your Hyperbole version number.  You can cut
-this out of particular messages before you send them when need be.
+See the documentation for @code{(kcell:ref-to-id)} for valid cell-ref
+formats.
 
address@hidden actype, link-to-mail
-A final mail-related facility provided by Hyperbole is the ability to
-save a pointer to a received mail message by creating an explicit button
-with a @code{link-to-mail} action type.  When prompted for the mail
-message to link to, if you press the Action Key within the message, the
-appropriate link parameters will be copied to the argument prompt, as
-described in @ref{Smart Key Argument Selection}.
address@hidden actypes link-to-mail
address@hidden link-to-mail
+Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE.  See
+the documentation for the variable @code{hmail:init-function} for
+information on how to specify the mail reader to use.
 
address@hidden actypes link-to-regexp-match
address@hidden link-to-regexp-match
+Finds REGEXP's Nth occurrence in SOURCE and displays the location at the
+top of the selected window.  SOURCE is a pathname unless optional
+BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
+Returns @samp{t} if found, signals an error if not.
 
address@hidden Buttons in News,  , Buttons in Mail, Utilizing Explicit Buttons
address@hidden  Buttons in News
address@hidden actypes link-to-rfc
address@hidden link-to-rfc
+Retrieves and displays an Internet rfc given by RFC-NUM.  RFC-NUM may be
+a string or an integer.  Requires a remote file access library, such as
+Tramp, for ftp file retrievals.
 
address@hidden button, posting
address@hidden news reader/poster
address@hidden posting news
address@hidden Gnus
address@hidden USENET
address@hidden file, hyperbole.el
address@hidden menu item, Cust/Msg-Toggle-Ebuts
-Explicit buttons may be embedded within outgoing USENET news articles
-and may be activated from within the Gnus news reader.  Because this
-involves complex changes to news support functions, this feature is
-disabled by default.  Use the Cust/Msg-Toggle-Ebuts minibuffer menu
-item to enable it (enabling it for mail also enables it for news and
-vice versa).
address@hidden actypes link-to-string-match
address@hidden link-to-string-match
+Finds STRING's Nth occurrence in SOURCE and displays the location at the
+top of the selected window.  SOURCE is a pathname unless optional
+BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
+Returns @samp{t} if found, @samp{nil} if not.
+
address@hidden actypes link-to-texinfo-node
address@hidden link-to-texinfo-node
+Displays the Texinfo node with NODENAME (a string) from the current buffer.
+
address@hidden actypes link-to-web-search
address@hidden link, web search
address@hidden web search link
address@hidden link-to-web-search
+Searches web SERVICE-NAME for SEARCH-TERM.  Uses 
@code{hyperbole-web-search-alist}
+to match each service to its search url.  Uses 
@code{hyperbole-web-search-browser-function}
+and the @code{browse-url} package to display search results.
+
address@hidden actypes man-show
address@hidden sm-notify
address@hidden man-show
+Displays a man page on TOPIC, which may be of the form
address@hidden<command>(<section>}).  If using the Superman manual entry
+package, see the documentation for @code{sm-notify} to control where the
+man page is displayed.
+
address@hidden actypes rfc-toc
address@hidden rfc-toc
+Computes and displays a summary of an Internet rfc in BUF-NAME.  Assumes
+point has already been moved to the start of the region to summarize.
+Optional OPOINT is the point to return to in BUF-NAME after displaying
+the summary.
+
address@hidden actypes text-toc
address@hidden table of contents
address@hidden toc action type
address@hidden text-toc
+Jumps to the text file SECTION referenced by a table of contents entry
+at point.
+
address@hidden actypes www-url
address@hidden URL
address@hidden World-wide Web
address@hidden WWW
address@hidden browse-url-browser-function
address@hidden www-url
+Follows a link given by a URL.  The variable,
address@hidden, customizes the url browser
+that is used.  See its documentation string for details.
address@hidden table
+
address@hidden action
address@hidden hui:ebut-prompt-for-action
+Action types create a convenient way of specifying button behavior
+without the need to know how to program.  Expert users who are familiar
+with Emacs Lisp, however, may find that they often want to tailor button
+actions in a variety of ways not easily captured within a type system.
+In such cases, @code{hui:ebut-prompt-for-action} should be set to
address@hidden  This will cause Hyperbole to prompt for an action to override
+the button's action type at each explicit button creation.  For those cases
+where the action type is sufficient, a @samp{nil} value should be
+entered for the action.  An action may be any Lisp form that Emacs
+Lisp can evaluate.
+
address@hidden Button Type Precedence, Utilizing Explicit Buttons, Action 
Types, Buttons
address@hidden   Button Type Precedence
+
address@hidden button precedence
address@hidden button label overlap
+Explicit buttons always take precedence over implicit buttons.  Thus, if
+a button selection is made which falls within both an explicit and
+implicit button, only the explicit button will be selected.  Explicit
+button labels are not allowed to overlap; Hyperbole's behavior in such
+cases is undefined.
 
-Once enabled, all Hyperbole support should work just as it does when
-reading or sending mail.  @xref{Buttons in Mail}.  When reading news,
-buttons which appear in message @emph{Subject} lines may be activated
-within the Gnus subject buffer as well as the article buffer.  When
-posting news, the *post-news* buffer is used for outgoing news
-articles rather than a mail-related buffer.
address@hidden ibtype, evaluation order
+If there is no explicit button at point during a selection request,
+then each implicit button type predicate is tested in turn until one
+returns non-nil or all are exhausted.  Since two implicit button types
+may have overlapping @dfn{domains}, those contexts in which their
+predicates are true, only the first matching type is used.  The type
+predicates are tested in @emph{reverse} order of definition, i.e.@:
+most recently entered types are tested first, so that personal types
+defined after standard system types take precedence.  It is important
+to keep this order in mind when defining new implicit button types.
+By making match predicates as specific as possible, one can minimize
+any overlapping implicit button domains.
 
-Remember that the articles you post do not contain the action type
-definitions used by the buttons, so the receiver must have these or she
-will receive an error when she activates the buttons.  You should also
-keep in mind that most USENET readers will not be using Hyperbole, so if
-they receive a news article containing explicit buttons, they will
-wonder what the button data at the end of the message is.  You should
-therefore limit distribution of such messages.  For example, if most
-people at your site read news with Gnus and use Hyperbole, it would be
-reasonable to embed buttons in postings to local newsgroups.
address@hidden type redefinition
+Once a type name is defined, its precedence relative to other types
+remains the same even if its body is redefined, as long as its name is
+not changed.  This allows incremental modifications to types without
+any worry of altering their precedences.  @xref{Creating Types}, for
+information on how to develop or modify types.
 
address@hidden news comment
-In order to alert readers of your postings that they may send you
-personal replies with embedded Hyperbole buttons, the system inserts
-into news postings the same comment that is included within mail
-messages, if enabled.  @xref{Buttons in Mail}, for details and an
-explanation of how to turn this feature on.
address@hidden Utilizing Explicit Buttons,  , Button Type Precedence, Buttons
address@hidden   Utilizing Explicit Buttons
 
+Explicit buttons are a fundamental building block for creating personal
+or organizational hypertext networks with Hyperbole.  This section
+summarizes the user-level operations available for managing these
+buttons.
 
address@hidden Smart Keys, Menus, Buttons, Top
address@hidden Smart Keys
address@hidden
+* Creation::
+* Renaming::
+* Deletion::
+* Modification::
+* Location::
+* Buttons in Mail::
+* Buttons in News::
address@hidden menu
 
address@hidden Smart Key
address@hidden mouse support
address@hidden Action Key
address@hidden Assist Key
address@hidden middle mouse key
address@hidden hmouse-middle-flag
address@hidden Action Key
address@hidden Assist Key
-Hyperbole offers two special @dfn{Smart Keys}, the Action Key and the
-Assist Key, that perform an extensive array of context-sensitive
-operations across emacs usage.  In many popular modes, they allow you
-to perform common, sometimes complex operations without having to a
-different key for each operation.  Just press a Smart Key and the
-right thing happens.  This chapter explains typical uses of the Smart
-Keys.  @xref{Smart Key Reference}, for complete descriptions of their
-behavior in all contexts.
address@hidden Creation, Renaming, Utilizing Explicit Buttons, Utilizing 
Explicit Buttons
address@hidden  Creation
+
+Creating explicit buttons is fun and easy.  You can always try them
+out immediately after creating them or can utilize the Assist Key to
+verify what buttons do.  There are two ways to create them: by
+dragging between windows with the Action Mouse Key or by using the
+Hyperbole menus.
 
 @menu
-* Smart Key Bindings::
-* Smart Key Operations::
-* Smart Key Modeline::
-* Smart Key Thing Selection::
-* Smart Key Argument Selection::
-* Smart Key Modifiers::
-* Smart Key Debugging::
+* By Dragging::                 Creation Via Action Key Drags
+* By Menu::                     Creation Via Menus
 @end menu
 
address@hidden Smart Key Bindings, Smart Key Operations, Smart Keys, Smart Keys
address@hidden   Smart Key Bindings
address@hidden By Dragging, By Menu, Creation, Creation
address@hidden Creation Via Action Key Drags
 
address@hidden C-u address@hidden
address@hidden address@hidden
-From the keyboard, @address@hidden is the Action Key and @bkbd{C-u
address@hidden is the Assist Key.  These keys allow context-sensitive
-operation from any keyboard.
address@hidden explicit button, creation
address@hidden button, creation
address@hidden link, creation
address@hidden drag
address@hidden Action Key drag
address@hidden creating a link
address@hidden mouse drag, link creation
address@hidden direct link creation
+The most efficient way to create an explicit link button interactively
+is to use the Action Mouse Key to drag from a non-read-only button
+source window to a window showing its desired link referent.  More
+specifically, you should split your current Emacs frame into two
+windows: one which contains the point at which you want a button to be
+inserted and another which shows the point to which you want to link.
+Depress the Action Mouse Key at the source point for the button
+(anywhere but on a paired delimiter such as double quotes or
+parentheses).  Then drag to the other window and release the Action
+Mouse Key at the start point of the link referent.  The process
+becomes quite simple with a little practice. (@xref{By Menu, Creation
+Via Menus}, for a more detailed explanation of the explicit button
+creation process).
 
address@hidden Removed the following in Hyperbole 6.00 since it was not 
consistent
address@hidden across all read-only modes and the standard bindings are easy
address@hidden enough to use.
address@hidden
address@hidden In many read-only modes like Dired (the directory editor and file
address@hidden manager) and Rmail (the mail reader), @address@hidden@} also 
functions as
address@hidden the Action Key and @bkbd{C-u @key{RET}} functions as the Assist 
Key.
+If a region was selected prior to the start of the drag, it is used as
+the button label, otherwise, you are prompted for the label.  Then
+Hyperbole uses the link referent context to determine the type of link
+to make.  If there are a few different types of links which are
+applicable from the context, you will be prompted with a list of the
+types.  Simply use the Action Key or the first letter of the link type
+to select one of the type names and to finish the link creation.
+Hyperbole will then insert explicit button delimiters around the
+button label and will display a message in the minibuffer indicating
+the button label, its action/link type, and any arguments, notably the
+thing to which it links.
 
address@hidden shift-middle mouse key
address@hidden shift-left mouse key
address@hidden shift-right mouse key
address@hidden middle mouse key
address@hidden hmouse-middle-flag
-From the mouse, the @dfn{Action Key} is bound to your shift-middle
-mouse key (or shift-left on a 2-button mouse).  The @dfn{Assist Key}
-is bound to your shift-right mouse key, assuming Hyperbole is run
-under an external window system.  (InfoDock users or those who set the
-variable, @code{hmouse-middle-flag}, to @samp{t} before loading
-Hyperbole, may also use the middle mouse key as the Action Key).
+The following table shows the type of link that will be created based
+upon the referent context in which the Action Key is released.
 
address@hidden hmouse-add-unshifted-keys
address@hidden unshifted mouse bindings
address@hidden unshifted mouse keys
address@hidden mouse keys, unshifted
address@hidden smart keys, unshifted
-If you want the middle mouse key as the Action Key and the right mouse
-key as the Assist Key for ease of use,  then within your personal
address@hidden/.emacs} file, add:
-  @code{(add-hook 'hyperbole-init-hook 'hmouse-add-unshifted-keys)}.
address@hidden
address@hidden
+Referent Context         Link Type
+----------------------------------------------------
+Explicit Button          link-to-ebut
+Info Index Item          link-to-Info-index-item
+Info Node                link-to-Info-node
+Mail Reader Message      link-to-mail
+Directory Name           link-to-directory
+File Name                link-to-file
+Koutline Cell            link-to-kcell
+Outline Heading          link-to-string-match
+Buffer attached to File  link-to-file
+Buffer without File      link-to-buffer-tmp
address@hidden example
address@hidden format
 
address@hidden key binding, smart keys
address@hidden smart key commands
address@hidden smart key assignments
address@hidden action-key
address@hidden assist-key
address@hidden action-mouse-key
address@hidden assist-mouse-key
-If you prefer other key assignments, simply bind the commands
address@hidden and @code{assist-key} to keyboard keys.
address@hidden may be used instead if you prefer a single
-key binding for both commands; a prefix argument, such as @bkbd{C-u},
-then invokes @code{assist-key}.  You may also bind @code{action-mouse-key}
-and @code{assist-mouse-key} to other mouse keys, if you like, though
-you won't be able to execute drag actions with such key bindings.
address@hidden M-o
address@hidden C-u M-o
address@hidden C-x o
address@hidden hkey-operate
address@hidden Action Key drag emulation
address@hidden keyboard drag emulation
+If you run Emacs under a window system and there is no prior key
+binding on @bkbd{M-o} when you load Hyperbole, then you can emulate
+an Action Key drag from the keyboard by typing @bkbd{M-o}, the
address@hidden command, at the button source location, moving
+to the link destination, e.g.@: with @bkbd{C-x o}, and then typing
address@hidden again.  This simulates a depress and then release of the
+Action Key.  @bkbd{C-u M-o} emulates drags of the Assist Key.
+This will not work when Hyperbole is run from a dumb terminal Emacs
+session since drag actions are not supported without a window system.
 
-Mouse configuration of the Smart Keys is automatic for GNU Emacs under
-Mac OS X, the X Window System and MS Windows, as well as for XEmacs
-and InfoDock under the X window system, assuming your emacs program
-has been built with support for any of these window systems.
address@hidden By Menu,  , By Dragging, Creation
address@hidden Creation Via Menus
 
address@hidden file, .emacs
address@hidden hmouse-toggle-bindings
address@hidden mouse key toggle
address@hidden Smart Mouse Key toggle
address@hidden C-c t
-If you ever want to restore the mouse bindings that existed before
-Hyperbole was loaded, use the @code{hmouse-toggle-bindings} command.
-It switches between the Hyperbole mouse key bindings and those set
-prior to loading Hyperbole and then back again if invoked once more.
-There is no default key binding for this command; use @bkbd{M-x
-hmouse-toggle-bindings @key{RET}}.  Alternatively, you may select a
-key and bind it as part of any setting of @code{hyperbole-init-hook}
-within your personal @file{~/.emacs} file.  For example, @code{(add-hook
-'hyperbole-init-hook (lambda () (global-set-key "\C-ct"
-'hmouse-toggle-bindings)))}.
+You may instead use the Hyperbole menus to create explicit buttons.
+First, mark a short region of text in any fashion allowed by Emacs
+and then select the Hyperbole menu item sequence, Ebut/Create.  You will
+be prompted for the button's label with the marked region as the
+default.  If you accept the default and enter the rest of the
+information you are prompted for, the button will be created within the
+current buffer and Hyperbole will surround the marked region with
+explicit button delimiters to indicate success.
 
address@hidden Paste Key
address@hidden mouse paste
address@hidden InfoDock Action Key
address@hidden InfoDock Paste Key
-Under InfoDock, the middle mouse key is normally used as the Action Key
-and the meta-middle mouse key is used as the Paste Key.  If you prefer
-that the middle mouse key be used as the Paste Key, then you will want to
-toggle the mouse bindings.  InfoDock includes a built-in way to do this
-via its Options/Mouse/Mouse-Paste-on-Middle-Key menu item.  (Keep in
-mind though that the Action Key will paste any active region within the
-editor when the Action Key is clicked; it will not paste selections from
-other applications).
-
-
address@hidden Smart Key Operations, Smart Key Modeline, Smart Key Bindings, 
Smart Keys
address@hidden   Smart Key Operations
+If you do not mark a region before invoking the button create command,
+you will be prompted for both a label and a target buffer for the button
+and the delimited label text will be inserted into the target buffer
+after a successful button creation.
 
address@hidden button activation
address@hidden activation
address@hidden button help
-The Action Key generally selects entities, creates links and
-activates buttons.  The Assist Key generally provides help,
-such as reporting on a button's attributes, or serves a complementary
-function to whatever the Action Key does within a context.
+After Hyperbole has the button label and its target buffer, it will
+prompt you for an action type for the button.  Use the @bkbd{?}
+completion list key to see the available types.  The type selected
+determines any following values for which you are prompted.
 
address@hidden Smart Key operation
address@hidden menu item, Doc/SmartKeys
address@hidden Smart Key summary
address@hidden modeline, Smart Keys
-The Hyperbole Doc/SmartKeys menu entry displays a summary of what the
-Smart Keys do in all of their different contexts.  Alternatively, a
-click of the Assist Mouse Key in the right corner of a window
-modeline (within the rightmost 3 characters) toggles between
-displaying this summary and hiding it.  Reference this summary
-whenever you need it.
address@hidden button instance
address@hidden instance number
+If a previous button with the same label exists in the same buffer,
+Hyperbole will add an @dfn{instance number} to the label when it adds
+the delimiters so that the name is unique.  Thus, you don't have to
+worry about accidental button name conflicts.  If you want the same
+button to appear in multiple places within the buffer, just enter the
+label again and delimit it yourself or copy and paste the button with
+its delimiters.  Hyperbole will interpret all occurrences of the same
+delimited label within a buffer as the same button.
+
address@hidden link, creation
+If you create link buttons using the Hyperbole menus, the best
+technique is to place on screen both the source buffer for the button
+and the buffer to which it will link.  Mark the region of text to use
+as your button label, invoke the button create command from the menu,
+choose an action type which begins with @code{link-to-} and then use
+the direct selection techniques mentioned in @ref{Smart Key Argument
+Selection}, to select the link referent.
 
-The following table is the same summary.  Much of the browsing power
-of Hyperbole comes from the use of the Smart Keys, so spend some time
-practicing how to use them.  Study what modeline clicks and window
-drag actions do as these will give you a lot of power without much
-effort.  This table may appear daunting at first, but as you practice
-and notice that the Smart Keys do just a few context-sensitive things
-per editor mode, you will find it easy to just press or point and
-click and let Hyperbole do the right thing in each context.
 
address@hidden
address@hidden
address@hidden hkey-help.txt
address@hidden smallexample
address@hidden format
address@hidden Renaming, Deletion, Creation, Utilizing Explicit Buttons
address@hidden  Renaming
 
address@hidden
address@hidden Key Reference}, for extensive reference documentation on the
-Smart Keys.
address@hidden explicit button, renaming
address@hidden button, renaming
+Once an explicit button has been created, its label text must be
+treated specially.  Any inter-word spacing within the label may be
+freely changed, as may happen when a paragraph is refilled, but a
+special command must be invoked to rename it.
 
address@hidden action-key-default-function
address@hidden assist-key-default-function
address@hidden Smart Key, default context
address@hidden default Smart Key context
-Note how the last line in the table explains that the default behavior of
-the Smart Keys in an unknown context is to report an error.  You can change
-these behaviors by setting two variables.  See the documentation
-for the variables @code{action-key-default-function} and
address@hidden for information on how to customize
-the behavior of the Smart Keys within default contexts.
+The rename command operates in two different ways.  If point is within
+a button label when it is invoked, it will tell you to edit the button
+label and then to invoke the rename command again after the edit.  The
+second invocation will actually rename the button.  If instead the
+command is originally invoked outside of any explicit button, it will
+prompt for the button label to replace and the label to replace it
+with and then will perform the renaming.  All occurrences of the same
+button in the buffer will be renamed.
 
address@hidden Smart Key help
address@hidden help, Smart Key
address@hidden context-sensitive help
-When you use a mouse and you want to find out what either of the Smart
-Keys does within a context, depress the one you want to check on and
-hold it down, then press the other and release as you please.  A help
-buffer will pop up explaining the actions that will be performed in that
-context, if any.  A press of either Smart Key at the end of that
-help buffer will restore your display to its configuration prior to
-invoking help.
address@hidden file, .emacs
address@hidden file, hyperbole.el
address@hidden C-c C-r
address@hidden hui:ebut-rename
+The rename command may be invoked from the Hyperbole menu via
+Ebut/Rename.  A faster method is to use a key bound to the
address@hidden:ebut-rename} command.  Hyperbole typically binds this to
address@hidden C-r}.  @bkbd{C-h w hui:ebut-rename @key{RET}} will show
+what if any key runs it.  If no key binding has been established or if
+you prefer one of your own, simply bind it within your @file{~/.emacs}
+file: @code{(global-set-key "\C-c\C-r" 'hui:ebut-rename)}.
 
address@hidden C-h A
address@hidden C-u C-h A
-On the keyboard, @bkbd{C-h A} displays this same context-sensitive
-help for the Action Key while @bkbd{C-u C-h A} displays the help for
-the Assist Key.  Note that @bkbd{C-h a} performs a function unrelated
-to Hyperbole, so you must press the shift key when you type
-the @key{A} character.
 
address@hidden Smart Key Modeline, Smart Key Thing Selection, Smart Key 
Operations, Smart Keys
address@hidden   Smart Key Modeline
address@hidden Deletion, Modification, Renaming, Utilizing Explicit Buttons
address@hidden  Deletion
 
-Smart Key clicks on a window's modeline offer many powerful browsing
-features including user manual browsing, as well as window, buffer
-and frame selection.
address@hidden explicit button, deleting
address@hidden button, deleting
+Ebut/Delete works similarly to the Rename command but deletes the
+selected button.  The button's delimiters are removed to confirm the
+deletion.  If the delete command is invoked with a prefix argument, then
+both the button label and the delimiters are removed as confirmation.
 
address@hidden Info browser
address@hidden modeline click and drag
address@hidden modeline, Info Browser
-A click of the Action Mouse Key in the right corner of a window
-modeline (within the rightmost 3 characters) displays or hides the
-GNU Info Manual Browser, giving you quick point and click access to
-an amazing wealth of documentation, since the Action Key also browses
-through these manuals and follows their hyperlinked cross-references.
-A click of the Assist Key in the same location displays or hides the
-Smart Key summary, as noted earlier.
address@hidden hui:ebut-delete-confirm-p
+Presently there is no way to recover a deleted button; it must
+be recreated.  Therefore, the @code{hui:ebut-delete-confirm-p} variable
+is true by default, causing Hyperbole to require confirmation before
+interactively deleting explicit buttons.  Set it to @samp{nil} if you
+prefer no confirmation.
 
address@hidden buffer menu
address@hidden modeline, buffer menu
address@hidden jump menu
address@hidden modeline, jump menu
-An Action Mouse Key click in a blank area of a window modeline (away
-from left and right edges) toggles between displaying and hiding a
-list of all buffers.  Once displayed, each buffer is selectable with
-the Action Key as well.  A click in the same location of the Assist
-Key displays a quick access menu of display-oriented commands.  You
-can jump to buffers categorized by major mode, jump to windows by
-buffer name, or to frames by name.  Manage your windows and frames
-quickly with this menu as well.  As always with Hyperbole, just try
-it and you'll begin to wonder how you lived without it before.
address@hidden Modification, Location, Deletion, Utilizing Explicit Buttons
address@hidden  Modification
 
address@hidden action-key-modeline-function
address@hidden assist-key-modeline-function
address@hidden action-key-modeline
address@hidden assist-key-modeline
address@hidden hmouse-context-menu
address@hidden hmouse-context-ibuffer-menu
address@hidden ibuffer menu
-Hyperbole modeline mouse click actions are controlled by the two functions,
address@hidden and @code{assist-key-modeline}.  If you know
-a little Emacs Lisp you can change these to do whatever you like.
-When a Smart Key press is on a blank part of a modeline but not at
-the left or right, the function given by one of these two variables
-is executed: @code{action-key-modeline-function} or
address@hidden  By default, the Action Key toggles
-between displaying and hiding the buffer menu.  If you like the more
-advanced features of @code{Ibuffer Mode}, you can change the buffer menu
-to use that with the following in your Emacs initialization file:
address@hidden(setq action-key-modeline-function 
#'hmouse-context-ibuffer-menu)}.
-To set it back to the default use:
address@hidden(setq action-key-modeline-function #'hmouse-context-menu)}.
address@hidden explicit button, modifying
address@hidden button, modifying
address@hidden Smart Mouse Key drag
address@hidden button, attributes
+Ebut/Modify prompts you with each of the elements from the button's
+attributes list and allows you to modify each in turn.  Ebut/Edit does
+the exact same thing and is there for people who prefer that term.
 
address@hidden dired-jump
address@hidden hui-menu-screen-commands
address@hidden directory editor
address@hidden dired
address@hidden modeline, screen command menu
-The default @code{assist-key-modeline-function} is to pop up a menu of
-convenient screen commands that lets you select buffers grouped by
-major mode, use HyControl, or jump to specific windows, window
-configurations or frames.  If you would prefer it runs the directory
-editor @code{dired} on the directory associated with the window of the
-modeline press, use this: @code{(setq assist-key-modeline-function 
#'dired-jump)}.
-To set it back to the default use:
address@hidden(setq assist-key-modeline-function #'hui-menu-screen-commands)}.
+There is a quicker way to modify explicit link buttons, however.  Simply
+drag with the Action Mouse Key from within the button label to a link
+destination in a different window, just as you would when creating a new
+button with a mouse drag.  Remember that drags may also be emulated from
+the keyboard.  @xref{Creation}.
 
-These variables may also be changed permanently with the Emacs
-interactive customization interface.  Use @bkbd{M-x customize-variable
address@hidden assist-key-modeline-function @key{RET}}.  In the Assist
-Modeline Function text field that appears, change the value
-to @code{dired-jump}.  Then press the ``Apply and Save'' button.
address@hidden Location, Buttons in Mail, Modification, Utilizing Explicit 
Buttons
address@hidden  Location
 
address@hidden Smart Key Thing Selection, Smart Key Argument Selection, Smart 
Key Modeline, Smart Keys
address@hidden   Smart Key Thing Selection
address@hidden explicit button, summarizing
address@hidden button, summarizing
address@hidden button, help
+The Ebut/Help menu may be used to summarize either a single explicit
+button or all such buttons within a buffer.  The buttons summarized may
+then be activated directly from the summary.
 
address@hidden sexp selection
address@hidden code block selection
address@hidden selection
address@hidden smart selection
address@hidden smart marking
address@hidden region selection
address@hidden things
address@hidden delimited things
-Hyperbole has some radically cool ways to select regions of structured
-text or source code and to copy or move them between buffers with a
-single mouse drag or two key presses.  A great deal of smarts are
-built-in so that it does the right thing most of the time; many other
-attempts at similar behavior such as thing.el fail to deal with many
-file format complexities.
+Ebut/Help/BufferButs summarizes the explicit buttons in the order in
+which they appear in the buffer.  Ebut/Help/CurrentBut summarizes only
+the button at point.  Ebut/Help/OrderedButs summarizes the buttons in
+alphabetical order.  All of these summary commands eliminate duplicate
+occurrences of buttons from their help displays.
 
-We use the term @dfn{things} to refer to structured entities that
-Hyperbole can select.  These include: delimited pairs of (), @address@hidden, 
<>,
-[] and quote marks, source code functions, source code comments and
-matching tag pairs in HTML and SGML modes.  @dfn{Delimited things} are
-those things that contain a selectable delimiter such as an opening
-parenthesis.
address@hidden explicit button, searching
address@hidden button, searching
+Ebut/Search prompts for a search pattern and searches across all the
+locations in which you have previously created explicit buttons.  It
+asks you whether to match to any part of a button label or to whole
+labels only.  It then displays a list of button matches with a single
+line of surrounding context from their sources.  Any button in the match
+list may be activated as usual.  An Action Key press on the surrounding
+context jumps to the associated source line.  A press on the filename
+preceding the matches jumps to the file without selecting a particular
+line.
 
address@hidden HTML tag pair
address@hidden SGML tag pair
-The best way to mark a delimited thing is to move your cursor to the
-starting delimiter of the thing and then press the Action Key.  Typically,
-you will see the thing highlight.  You can then operate upon it as you
-would any Emacs region.  In many cases, you can do the same thing upon
-the closing delimiter but this is not as reliable.  An Action Key
-press on the start of an HTML or SGML tag pair marks the entire region
-span of the pair.  If you use the Assist Key instead, it will mark and
-kill (delete) the thing.
+There are presently no user-level facilities for globally locating
+buttons created by others or for searching on particular button
+attributes.
 
address@hidden drag, with region
address@hidden kill region
address@hidden yank region
address@hidden cut region
address@hidden copy region
address@hidden paste region
-Even better are Smart Mouse Key drags which let you copy or move
-delimited things in one operation without even highlighting them.  To
-copy, simply drag with the Action Key from a thing's opening delimiter
-and release somewhere outside of the thing, either within the same
-window or within another window.  The thing will be copied to the
-point of release.  If you want to move a thing, simply perform the
-same drag but with the Assist Mouse Key.  Ensure that you do not move
-any explicit buttons from one buffer to another as that does not
-presently work.
address@hidden Buttons in Mail, Buttons in News, Location, Utilizing Explicit 
Buttons
address@hidden  Buttons in Mail
 
-Try out some of these operations in HTML or source code files to see
-how they can speed your editing.
address@hidden C-x m
address@hidden mail
address@hidden menu item, Cust/Msg-Toggle-Ebuts
+Hyperbole supports embedding buttons within electronic mail messages
+composed in Emacs.  An enhanced mail reader may then be used to
+activate the buttons within messages just like any other buttons.
+Because this involves complex changes to mail support functions, this
+feature is disabled by default.  Use the Cust/Msg-Toggle-Ebuts
+minibuffer menu item to enable it.
+
address@hidden button, mailing
address@hidden button, posting
address@hidden mailing buttons
address@hidden posting buttons
address@hidden mail reader
address@hidden mailer initialization
address@hidden Rmail
address@hidden VM
address@hidden MH-e
address@hidden Gnus
address@hidden USENET
address@hidden news
address@hidden file, hmail.el
+Hyperbole automatically supports the following mail readers: Rmail
+(@pxref{Rmail,,Reading Mail with Rmail,emacs, the GNU Emacs Manual}), VM
+(@pxref{Introduction,,,vm, the VM Manual}) and MH-e.  Button inclusion
+and activation within USENET news articles is also supported in the
+same fashion via the Gnus news reader if available at your site
+(@pxref{Top,,The Gnus Newsreader,gnus, the Gnus Manual}).
+(The @file{hmail.el} file defines a generalized interface that can be
+used to hook in other mail or news readers if the necessary interface
+functions are written.)
 
address@hidden
-Hyperbole also binds two convenience keys for working with things.
address@hidden mail-yank-original
address@hidden C-c C-y
address@hidden mail inclusion
+All explicit buttons to be mailed must be created within the outgoing
+message buffer. There is no present support for including text from
+other buffers or files which contain explicit buttons, except for the
+ability to yank the contents of a message being replied to, together
+with all of its buttons, via the @code{(mail-yank-original)} command
+bound to @bkbd{C-c C-y}.  From a user's perspective, buttons are
+created in precisely the same way as in any other buffer.  They also
+appear just like any other buttons to both the message sender and the
+reader who uses the Hyperbole enhanced readers.  Button operation may be
+tested any time before a message is sent.  A person who does not use
+Hyperbole enhanced mail readers can still send messages with embedded
+buttons since mail composing is independent of any mail reader
+choice.
 
address@hidden C-c @key{RET}
address@hidden hui-select-thing
address@hidden hui-select-thing-with-mouse
-The first such key is @bkbd{C-c @key{RET}} @code{hui-select-thing}
-which selects bigger and bigger syntactic regions with each successive
-use.  Double or triple clicks of the Selection Key (left mouse key) do
-the same thing.  The first press selects a region based upon the
-character at point.  For example, with point over an opening or
-closing grouping character, such as @{ or @}, the whole grouping is
-selected, e.g. a C function.  When on an _ or - within a programming
-language identifier name, the whole name is selected.  The type of
-selection is displayed in the minibuffer as feedback.  When using a
-language in which indentation determines nesting level like Python, a
-double click on the first alpha character of a line, such as an if
-statement, selects the whole statement.  Use @bkbd{C-g} to unmark the
-region when done.  Use, @code{hui-select-thing-with-mouse} if you want
-to bind this to a different mouse key to use single clicks instead of
-double clicks.
+Hyperbole buttons embedded within received mail messages behave as do
+any other buttons.  The mail does not contain any of the action type
+definitions used by the buttons, so the receiver must have these or
+she will receive an error when she activates the buttons.  Buttons
+which appear in message @emph{Subject} lines are copied to summary
+buffers whenever such summaries are generated.  Thus, they may be
+activated from either the message or the summary buffers.
 
address@hidden C-c .
address@hidden hui-select-goto-matching-tag
-The second convenience key is bound only in HTML/web mode.  @bkbd{C-c
-.} @code{hui-select-goto-matching-tag} jumps between the opening and
-closing tag of a pair.  It moves point to the start of the tag paired
-with the closest tag that point is within or which it precedes.  A
-second press moves point to the matching tag of the pair, allowing you
-to quickly jump back and forth between opening and closing tags.
+Nothing bad will happen if a mail message with explicit buttons is sent
+to a non-Hyperbole user.  The user will simply see the text
+of the message followed by a series of lines of button data at its end.
+Hyperbole mail users never see this data in its raw form.
 
address@hidden Smart Key Argument Selection, Smart Key Modifiers, Smart Key 
Thing Selection, Smart Keys
address@hidden   Smart Key Argument Selection
address@hidden smail:comment
address@hidden mail comment
address@hidden Hyperbole mail comment
+In order to alert readers of your mail messages that you can handle
+Hyperbole mail buttons, you can set the variable, @code{smail:comment},
+to an expression that automatically inserts a comment into each
+outgoing message to announce this fact.  See its documentation for
+technical details.  By default, no comment is added.  To have a
+comment line added to your outgoing message, add the following to
+to your @file{~/.emacs} file before the point at which you load
+Hyperbole.
 
address@hidden Hyperbole help
-A prime design criterion of Hyperbole's user interface is that you
-should be able to see what an operation will do before using it.  The
-Assist Key typically shows you what a button or minibuffer menu item
-will do before you activate it.  Hyperbole also displays the result of
-directly selecting an argument value with the Action Key, to provide
-feedback as to whether the correct item has been selected.  A second
-press/click is necessary before an argument is accepted and processed.
address@hidden
+(setq smail:comment
+ (format "Comments: GNU Hyperbole mail buttons accepted, v%s.\n"
+          hyperb:version))
address@hidden smalllisp
 
address@hidden argument entry
address@hidden direct selection
address@hidden double click
-Many Hyperbole commands prompt you for arguments.  The standard
-Hyperbole user interface has an extensive core of argument types that
-it recognizes.  Whenever Hyperbole is prompting you for an argument,
-it knows the type that it needs and provides some error checking to
-help you get it right.  More importantly, it allows you to press the
-Action Key within an entity that you want to use as an argument and it
-will grab the appropriate thing and show it to you at the input prompt
-within the minibuffer.  If you press (click with a mouse) the Action
-Key on the same thing again, it accepts the entity as the argument
-and moves on.  Thus, a double click registers a desired argument.
-Double-quoted strings, pathnames, mail messages, Info nodes, dired
-listings, buffers, numbers, completion items and so forth are all
-recognized at appropriate times.  All of the argument types mentioned
-in the documentation for the Emacs Lisp @code{interactive} function
-are recognized.  Experiment a little and you will quickly get used to
-this direct selection technique.
address@hidden
+This will produce the following line in outgoing messages:
 
address@hidden completion
-Wherever possible, standard Emacs completion is offered, as described in
address@hidden,,,emacs,the GNU Emacs Manual}.  Remember to use @bkbd{?}
-to see what your possibilities for an argument are.  Once you have a
-list of possible completions on screen, press the Action Key twice on
-any item to enter it as the argument.
address@hidden
+Comments: GNU Hyperbole mail buttons accepted, vX.XX.
address@hidden example
 
address@hidden Smart Key Modifiers, Smart Key Debugging, Smart Key Argument 
Selection, Smart Keys
address@hidden   Smart Key Modifiers
address@hidden file, .emacs
address@hidden
+where the X's indicate your Hyperbole version number.  You can cut
+this out of particular messages before you send them when need be.
 
-For advanced users of Emacs and Hyperbole, there is @code{hmouse-mod-mode},
-a global minor mode which turns the Action Mouse Key into a @key{Control}
-modifier key and the Assist Key into a @key{Meta} modifier key.  This
-allows for better keyboard energy balance across hands and is useful for
-reducing carpal tunnel stress.  It may also be used with a @dfn{chord
-keyboard} in one hand and a mouse in the other to point at things while
-simultaneously operating upon them.
address@hidden actype, link-to-mail
+A final mail-related facility provided by Hyperbole is the ability to
+save a pointer to a received mail message by creating an explicit button
+with a @code{link-to-mail} action type.  When prompted for the mail
+message to link to, if you press the Action Key within the message, the
+appropriate link parameters will be copied to the argument prompt, as
+described in @ref{Smart Key Argument Selection}.
 
address@hidden hmouse-mod-mode
address@hidden hmouse-mod-mode
address@hidden Smart Keys as modifiers
address@hidden control key modifier
address@hidden meta key modifier
address@hidden chord keyboards
-Use the @code{hmouse-mod-mode} global minor mode to enable this feature.
address@hidden M-x hmouse-mod-mode @key{RET}} enables it and adds
address@hidden to the list of modeline minor modes.  @bkbd{C-u 0 M-x
-hmouse-mod-mode @key{RET}} disables it and @bkbd{M-x
-hmouse-mod-mode @key{RET}} toggles it on and off.
 
-When enabled, if the Action Key is held down while alpha characters
-are typed, they are translated into @key{Control} keys instead.  The
-Assist Key translates them into @key{Meta} keys.  When both Smart
-Keys are depressed, @key{Control-Meta} keys are produced.  The
-commands bound to the characters produced are then run.  For example,
-Action Key + @bkbd{a} runs the function for @bkbd{C-a}.  If no
-keys are typed while the Smart Keys are down, they operate as
-normally under Hyperbole.
address@hidden Buttons in News,  , Buttons in Mail, Utilizing Explicit Buttons
address@hidden  Buttons in News
 
-The code for Smart Key modifiers can be found in
address@hidden@address@hidden:address@hidden/hmouse-mod.el}.
address@hidden button, posting
address@hidden news reader/poster
address@hidden posting news
address@hidden Gnus
address@hidden USENET
address@hidden file, hyperbole.el
address@hidden menu item, Cust/Msg-Toggle-Ebuts
+Explicit buttons may be embedded within outgoing USENET news articles
+and may be activated from within the Gnus news reader.  Because this
+involves complex changes to news support functions, this feature is
+disabled by default.  Use the Cust/Msg-Toggle-Ebuts minibuffer menu
+item to enable it (enabling it for mail also enables it for news and
+vice versa).
 
address@hidden Smart Key Debugging,  , Smart Key Modifiers, Smart Keys
address@hidden   Smart Key Debugging
+Once enabled, all Hyperbole support should work just as it does when
+reading or sending mail.  @xref{Buttons in Mail}.  When reading news,
+buttons which appear in message @emph{Subject} lines may be activated
+within the Gnus subject buffer as well as the article buffer.  When
+posting news, the *post-news* buffer is used for outgoing news
+articles rather than a mail-related buffer.
 
-Typically, @bkbd{C-h A} and @bkbd{C-u C-h A} which show Action and
-Assist Key help for the current context, are sufficient for seeing how
-the Smart Keys behave no matter where they are used.
+Remember that the articles you post do not contain the action type
+definitions used by the buttons, so the receiver must have these or she
+will receive an error when she activates the buttons.  You should also
+keep in mind that most USENET readers will not be using Hyperbole, so if
+they receive a news article containing explicit buttons, they will
+wonder what the button data at the end of the message is.  You should
+therefore limit distribution of such messages.  For example, if most
+people at your site read news with Gnus and use Hyperbole, it would be
+reasonable to embed buttons in postings to local newsgroups.
 
address@hidden C-h h c d
address@hidden Smart Key debugging
address@hidden menu item, Cust/Debug-Toggle
address@hidden debugging Smart Keys
address@hidden troubleshooting Smart Keys
address@hidden Messages buffer
address@hidden logging Smart Key behavior
-However, if a Smart Key ever behaves differently than you think it
-should or if you want to test how the Smart Keys respond in a new
-context, then the Smart Key debugging flag may be of use.  You toggle
-it on and off with @bkbd{C-h h c d} (minibuffer menu
-Cust/Debug-Toggle).  Once enabled, this displays a message in the
-minibuffer each time the Action or Assist Key is released, showing
-the context of the press and its associated action, so you can see
-exactly what is happening whenever you use a Smart Key.  These
-messages are all prefaced with ``(HyDebug)'' and logged to the
-``*Messages*'' buffer for later viewing.
address@hidden news comment
+In order to alert readers of your postings that they may send you
+personal replies with embedded Hyperbole buttons, the system inserts
+into news postings the same comment that is included within mail
+messages, if enabled.  @xref{Buttons in Mail}, for details and an
+explanation of how to turn this feature on.
 
address@hidden C-h h m c
address@hidden C-h h m r
-If you do find a problem with the Smart Keys and want to report a bug,
-use @bkbd{C-h h m r} to compose an email message to the bug-hyperbole
-list.  Hyperbole will automatically include all of the ``(HyDebug)''
-messages from your current emacs session into your email.  Similarly,
-when you compose an email to the hyperbole-users mailing list
-with @bkbd{C-h h m c}, these messages are also included.
 
 
address@hidden Menus, HyControl, Smart Keys, Top
address@hidden Menus, HyControl, Buttons, Top
 @chapter Menus
 
address@hidden InfoDock
address@hidden XEmacs
 @cindex Emacs
 @cindex menu use
 @cindex menubar, Hyperbole menu
 @cindex menu item, Remove-This-Menu
 @cindex removing Hyperbole menu
-Under InfoDock, XEmacs, and Emacs, pulldown and popup menus are
-available to invoke Hyperbole commands, including those from the rolo
-and the outliner.  These menus operate like any other application menus
-and are fairly self-explanatory.  Use the @code{Remove-This-Menu}
-command on the Hyperbole menubar menu to get rid of the menu if you do
-not need it.  Invoking Hyperbole from the keyboard, as explained below,
-will add the menu back to the menubar.
+Pulldown and popup menus are available to invoke Hyperbole commands,
+including those from the HyRolo and the Koutliner.  These menus operate
+like any other application menus and are fairly self-explanatory.  Use
+the @code{Remove-This-Menu} command on the Hyperbole menubar menu to
+get rid of the menu if you do not need it.  Invoking Hyperbole from
+the keyboard, as explained below, will add the menu back to the
+menubar.
 
 @float Image,image:Hyperbole Menu
 @caption{Hyperbole Menubar Menu}
@@ -2842,6 +2969,18 @@ Clear the argument to a value of 0.
 @kitem 0-9
 Multiply the argument by 10 and add the digit pressed.
 
address@hidden screen, a
address@hidden a
+Cycle though common width adjustments of a frame, such as 25% and 50%.
+Widths are given in screen percentages by the list
address@hidden and typically go from widest to narrowest.
+
address@hidden screen, A
address@hidden A
+Cycle though common height adjustments of a frame, such as 33.3% and
+75%.  Heights are given in screen percentages by the list
address@hidden and typically go from tallest to shortest.
+
 @kindex screen, h
 @kitem h
 Increase height by argument lines (line height determined by buffer
@@ -2886,18 +3025,10 @@ Move frame in the specified direction by argument 
pixels.
 
 @kindex screen, c
 @kitem c
-In FRAME mode, with each press, cycle the selected frame's position
-clockwise through the middle of edges and corners of the screen.  With
-an argument of 0, reset the cycle position to the upper left corner.
-Respects the pixel edge offsets returned by 
@code{hycontrol-get-screen-offsets}.
-
address@hidden screen, keypad number
address@hidden keypad number
-In FRAME mode, move the frame directly to the screen edge position given
-by the numeric keypad layout.  For example, 3 moves the frame to the
-bottom right corner and 8 moves it to the middle of the top edge.
-Keypad numeric keys do not adjust the argument.  Respects the pixel edge
-offsets returned by @code{hycontrol-get-screen-offsets}.
+With each press, cycle the selected frame's position clockwise through
+the middle of edges and corners of the screen.  With an argument of 0,
+reset the cycle position to the upper left corner.  Respects the pixel
+edge offsets returned by @code{hycontrol-get-screen-offsets}.
 
 @kindex screen, d
 @kitem d
@@ -2907,6 +3038,10 @@ Delete selected window or frame based on mode.
 Prompt for confirmation and then delete non-selected windows or frames
 based on mode.
 
address@hidden screen, l
address@hidden l
+In FRAME mode, lower the selected frame below all other Emacs session frames.
+
 @kindex screen, o
 @kitem o
 Select the next window in the window list, across all visible frames.
@@ -2914,6 +3049,23 @@ Select the next window in the window list, across all 
visible frames.
 @kitem O
 Select the next visible frame.
 
address@hidden screen, keypad number
address@hidden keypad number
+In FRAME mode, move the frame directly to the screen edge position given
+by the numeric keypad layout.  For example, 3 moves the frame to the
+bottom right corner and 8 moves it to the middle of the top edge.
+Keypad numeric keys do not adjust the argument.  Respects the pixel edge
+offsets returned by @code{hycontrol-get-screen-offsets}.
+
address@hidden screen, p
address@hidden p
+Display a virtual numeric keypad for emulating a keypad on keyboards without 
one.
+Each digit key operates just as a numeric keypad key would.
+
address@hidden screen, r
address@hidden r
+In FRAME mode, raise the selected frame above all other Emacs session frames.
+
 @vindex hycontrol-frame-offset
 @kindex screen, [
 @kitem [
@@ -2938,11 +3090,12 @@ based on mode.
 
 @kindex screen, f
 @kitem f
-Delete the selected window and redisplay its buffer in a new frame.
+Clone the selected window to a new similarly sized frame.
 @kindex screen, F
 @kitem F
-Clone the selected window into a new frame.
-
+Clone the selected window to a new similarly sized frame.  Delete the
+original window unless there is only one window in the source frame or
+if @var{hycontrol-keep-window-flag} is non-nil.
 
 @kindex screen, i
 @kindex screen, j
@@ -2952,9 +3105,11 @@ Clone the selected window into a new frame.
 @kitemx j
 @kitemx k
 @kitemx m
-In Frame mode, expand the selected frame to the associated screen edge
-based on key layout.  i=top, j=left, k=right and m=bottom screen edge.
-Respects the pixel edge offsets returned by
+Expand the selected frame to the respective screen edge based on U.S.
+keyboard key layout.  i=top, j=left, k=right and m=bottom screen edge.
+If already at the edge, adjusts the perpendicular dimension to ARG percent
+of the screen (50% by default if ARG is 1 or nil) but keep it at the screen
+edge.  Respects the pixel edge offsets returned by
 @code{hycontrol-get-screen-offsets}.
 
 @kindex screen, =
@@ -2989,7 +3144,7 @@ selected window.
 @kitem ~
 Swap two buffers between the selected window or frame and one other.
 In WINDOW mode, there must be precisely two windows in the selected
-frame.  In FRAME mode, the second frame mush have a single window.
+frame.  In FRAME mode, the second frame must have a single window.
 
 @findex zoom-frm.el
 @cindex zooming
@@ -3079,16 +3234,6 @@ Cells also store their time of creation and the user who 
created the
 cell.  User-defined attributes may also be added to cells.  @xref{Cell
 Attributes}.
 
address@hidden menu, Outline
-The outliner works under GNU Emacs, XEmacs or under InfoDock.  You can tell
-whether you are running a version of Emacs which supports the outliner by
-pressing @bkbd{C-h h} to display the Hyperbole menu (@bkbd{q} will
-quit).  If you see a @samp{Kotl/} entry in the menu, then the outliner is
-available.  Otherwise, the outliner does not work with your version of
-Emacs, so this section of the manual will not be of interest to you.  (The
-same is true of the Hyperbole/Outline pulldown menu; if it appears, the
-outliner is available for use.)
-
 @vindex file, EXAMPLE.kotl
 @cindex menu, Outline/Example
 @kindex C-h h k e
@@ -3545,8 +3690,8 @@ paragraphs.
 cell so that its lines wrap within the current margin settings.
 @bkbd{C-c M-q} or @bkbd{C-c M-j} refills all paragraphs within a
 cell.  @bkbd{C-M-q} or @bkbd{C-M-j} refills all cells within a tree.
-See your InfoDock, XEmacs, or GNU Emacs manual for information on how
-to set the left and right margins.
+See the GNU Emacs manual for information on how to set the left and
+right margins.
 
 @vindex kotl-mode:refill-flag
 @cindex refilling
@@ -4107,15 +4252,15 @@ The following subsections explain use and basic 
customization of this
 tool.
 
 @menu
-* Rolo Concepts::
-* Rolo Menu::
-* Rolo Searching::
-* Rolo Keys::
-* Rolo Settings::
+* HyRolo Concepts::
+* HyRolo Menu::
+* HyRolo Searching::
+* HyRolo Keys::
+* HyRolo Settings::
 @end menu
 
address@hidden Rolo Concepts, Rolo Menu, HyRolo, HyRolo
address@hidden   Rolo Concepts
address@hidden HyRolo Concepts, HyRolo Menu, HyRolo, HyRolo
address@hidden   HyRolo Concepts
 
 @cindex rolo file
 @cindex rolo entry
@@ -4182,7 +4327,7 @@ Thus, searching for Company retrieves all listed 
employees.
 Searching for Manager turns up all Staffer entries.
 
 
address@hidden Rolo Menu, Rolo Searching, Rolo Concepts, HyRolo
address@hidden HyRolo Menu, HyRolo Searching, HyRolo Concepts, HyRolo
 @section   Rolo Menu
 
 @noindent
@@ -4191,12 +4336,13 @@ for searching and maintaining a personal address book.  
It looks like
 so.
 
 @float Image,image:Rolo Menu
address@hidden Menu}
address@hidden @image{im/menu-rolo,,7in,Rolo Menu}
address@hidden Menu}
address@hidden @image{im/menu-rolo,,7in,HyRolo Menu}
 @end float
 @page
 
 @cindex rolo menu
address@hidden HyRolo menu
 The Rolo/ menu entry on the Hyperbole minibuffer menu provides the same
 set of commands as the menubar menu, with more concise labels.
 The Rolo/ menu offers the following commands:
@@ -4217,13 +4363,13 @@ The Rolo/ menu offers the following commands:
 @group
 Menu Item       Command                 Description
 =====================================================================
-Add             hyrolo-add              Adds a rolo entry
+Add             hyrolo-add              Adds a hyrolo entry
 Display         hyrolo-display-matches  Displays last matches again
-Edit            hyrolo-edit             Edits an existing rolo entry
-Info                                    Displays a rolo manual entry
-Kill            hyrolo-kill             Deletes a rolo entry
+Edit            hyrolo-edit             Edits an existing hyrolo entry
+Info                                    Displays a hyrolo manual entry
+Kill            hyrolo-kill             Deletes a hyrolo entry
 Mail            hyrolo-mail             Mails to an address at point
-Order           hyrolo-sort             Sorts all rolo levels
+Order           hyrolo-sort             Sorts all hyrolo levels
 RegexFind       hyrolo-grep             Finds all entries containing
                                           a regular expression
 StringFind      hyrolo-fgrep            Finds all entries containing
@@ -4232,7 +4378,7 @@ StringFind      hyrolo-fgrep            Finds all entries 
containing
 WordFind        hyrolo-word             Finds all entries containing
                                           a string of whole words
 Yank            hyrolo-yank             Inserts the first matching
-                                          rolo entry at point
+                                          hyrolo entry at point
 =====================================================================
 @end group
 @end example
@@ -4243,8 +4389,8 @@ The search is terminated whenever that number of matches 
is found.
 
 For any of the above commands that prompt for a name such as Edit or
 Add (not the Find commands), you may use the form parent/child to
-locate a child entry below a specific parent.  Hence, for a rolo which
-looked like so:
+locate a child entry below a specific parent.  Hence, for a HyRolo which
+looks like so:
 
 @example
 @group
@@ -4255,25 +4401,25 @@ looked like so:
 @end example
 
 @noindent
-you could refer to the Staffer entry with the following hierarchical
+you can refer to the Staffer entry with the following hierarchical
 notation, Company/Manager/Staffer.  This hierarchical
 notation is not used in search expressions since they search the
-entire rolo anyway.  Thus, "Staffer" as a search pattern will find an entry
+entire HyRolo anyway.  Thus, "Staffer" as a search pattern will find an entry
 containing "Staffer" at any level in a hierarchy, like so:
 
 @example
 ***      Staffer
 @end example
 
address@hidden Rolo Searching, Rolo Keys, Rolo Menu, HyRolo
address@hidden   Rolo Searching
address@hidden HyRolo Searching, HyRolo Keys, HyRolo Menu, HyRolo
address@hidden   HyRolo Searching
 
 @cindex rolo searching
 @cindex searching, rolo
 @cindex menu item, RegexFind
 @cindex menu item, WordFind
 @cindex menu item, StringFind
address@hidden Menu}, for the list of rolo search commands.  In this
address@hidden Menu}, for the list of HyRolo search commands.  In this
 section, the menu item names from the minibuffer menu are used to
 refer to each command.
 
@@ -4330,8 +4476,8 @@ you should contact.
 @end example
 
 
address@hidden Rolo Keys, Rolo Settings, Rolo Searching, HyRolo
address@hidden   Rolo Keys
address@hidden HyRolo Keys, HyRolo Settings, HyRolo Searching, HyRolo
address@hidden   HyRolo Keys
 
 @cindex hyrolo menu
 @cindex rolo keys
@@ -4458,8 +4604,8 @@ Once you have found an entry of interest and you want to 
remove the
 rolo match buffer, use @bkbd{q} to quit.  This will restore your
 current frame to its state prior to the rolo search.
 
address@hidden Rolo Settings,  , Rolo Keys, HyRolo
address@hidden   Rolo Settings
address@hidden HyRolo Settings,  , HyRolo Keys, HyRolo
address@hidden   HyRolo Settings
 
 @vindex hyrolo-file-list
 @cindex rolo, personal
@@ -4475,7 +4621,7 @@ command on the rolo menu adds entries.
 
 Hyperbole releases earlier than 4.17 used a different file name for the
 personal rolo.  If such a file exists, you will be prompted to rename
-it whenever the Rolo system is loaded.
+it whenever the HyRolo system is loaded.
 
 @cindex BBDB
 @cindex Big Brother DataBase
@@ -4503,7 +4649,7 @@ display type, the rolo uses the value of 
@code{hyrolo-highlight-face} as
 the face which highlights search matches.
 
 @item hyrolo-kill-buffers-after-use
-Rolo file buffers are left around after they are searched, on the
+HyRolo file buffers are left around after they are searched, on the
 assumption that another search is likely to follow within this emacs
 session.  You may wish to change this behavior with the following
 setting: @code{(setq hyrolo-kill-buffers-after-use t)}.
@@ -5408,16 +5554,16 @@ to documents created and managed by tools other than 
Hyperbole, for
 example, programming documentation.  @b{Ibtype} is a synonym for
 implicit button type.  See also @b{system encapsulation}.
 
address@hidden InfoDock
address@hidden InfoDock
-InfoDock is an integrated productivity toolset for software engineers
-and knowledge workers.  It is presently built atop XEmacs and is no
-longer maintained.  An older version from 1999 may be found at
-infodock.sf.net.  InfoDock has all the power of emacs, but with an
-easier to use and more comprehensive menu-based user interface.  Most
-objections people raise to using emacs have already been addressed in
-InfoDock.  InfoDock was meant for people who wanted a complete,
-pre-customized environment in one package.
address@hidden @cindex InfoDock
address@hidden @item InfoDock
address@hidden InfoDock is an integrated productivity toolset for software 
engineers
address@hidden and knowledge workers.  It is presently built atop XEmacs and is 
no
address@hidden longer maintained.  An older version from 1999 may be found at
address@hidden infodock.sf.net.  InfoDock has all the power of emacs, but with 
an
address@hidden easier to use and more comprehensive menu-based user interface.  
Most
address@hidden objections people raise to using emacs have already been 
addressed in
address@hidden InfoDock.  InfoDock was meant for people who wanted a complete,
address@hidden pre-customized environment in one package.
 
 @item Instance Number
 A colon prefaced number appended to the label of a newly created button
@@ -5759,7 +5905,7 @@ in future Emacs sessions.
 Use Cust/All-Options @bkbd{C-h h c a} to display an expandable tree of
 customizable Hyperbole options.  Hyperbole's customizations are
 further grouped into several sub-categories, one for the Koutliner,
-one for the Rolo, etc.  You can select either an entire category or a
+one for the HyRolo, etc.  You can select either an entire category or a
 specfic option and they will appear in another window for editing.
 Simply follow the instructions on screen and then press the ``Apply
 and Save'' button to make any changes permanent.
@@ -5976,21 +6122,20 @@ you in deciding whether or not to modify the value of
 
 @node Button Colors,  , Link Variable Substitution, Customization
 @subsection  Configuring Button Colors
address@hidden XEmacs support
 @cindex Emacs support
 @cindex button highlighting
 @cindex button flashing
 @vindex file, hui-ep*.el
 @vindex file, hsettings.el
 @findex hproperty:cycle-but-color
-When Hyperbole is run under a window system together with InfoDock,
-Emacs, or XEmacs, it automatically highlights any explicit buttons in
-a buffer and makes them flash when selected.  The main setting you may
-want change is the selection of a color (or style) for button
-highlighting and button flashing.  See the @file{hui-*-b*.el} files for
-lists of potential colors and the code which supports this behavior.  A
-call to @code{(hproperty:cycle-but-color)} in the @file{hsettings.el}
-file changes the color used to highlight and flash explicit buttons.
+When Hyperbole is run under a window system, it automatically
+highlights any explicit buttons in a buffer and makes them flash when
+selected.  The main setting you may want change is the selection of a
+color (or style) for button highlighting and button flashing.  See
+the @file{hui-*-b*.el} files for lists of potential colors and the
+code which supports this behavior.  A call
+to @code{(hproperty:cycle-but-color)} in the @file{hsettings.el} file
+changes the color used to highlight and flash explicit buttons.
 
 @cindex button emphasis
 @vindex hproperty:but-emphasize-p
@@ -7037,7 +7182,7 @@ the minimal diagonal movements which register a drag):
 * Smart Key - Tar File Mode::
 * Smart Key - Man Pages::
 * Smart Key - WWW URLs::
-* Smart Key - Rolo Match Buffers::
+* Smart Key - HyRolo Match Buffers::
 * Smart Key - Gomoku Game::
 * Smart Key - The OO-Browser::
 * Smart Key - Default Context::
@@ -7179,27 +7324,35 @@ If the Smart Menu package (part of InfoDock) has been 
loaded and
 @node Smart Key - Dired Mode, Smart Key - Hyperbole Buttons, Smart Key - Smart 
Menus, Smart Keyboard Keys
 @subsection Smart Key - Dired Mode
 @cindex click, dired
address@hidden drag, dired
 @cindex dired browsing
address@hidden DisplayHere mode
 @format
 @group
 If pressed within a dired-mode (directory editor) buffer:
   ACTION KEY
      (1) within an entry line, the selected file/directory is displayed
-         for editing in the other window;
-     (2) on the first line of the buffer, if any deletes are to be
-         performed, they are executed after user verification; otherwise,
-         nothing is done;
-     (3) on or after the last line in the buffer, this dired invocation
-         is quit.
+         for editing, normally in another window but if an entry has been 
dragged
+         for display in another window, then this entry is displayed in the 
current
+         window (DisplayHere minor mode is shown in the mode-line; use 
@bkbd{g} to
+         disable it)
+     (2) on the first line of the buffer:
+         (a) within the leading whitespace, then if any deletes are to be
+             performed, they are executed after user verification; otherwise,
+             nothing is done;
+         (b) otherwise, dired is run in another window on the ancestor 
directory
+             of the current directory path up through the location of point;
+             if point is before the first character, then the / root directory
+             is used.
+     (3) on or after the last line in the buffer or at the end of the first 
line,
+         this dired invocation is quit.
   ASSIST KEY
-     (1) on a ~ character, all backup files in the directory are marked
-         for deletion;
-     (2) on a # character, all auto-save files in the directory are
-         marked for deletion;
-     (3) anywhere else within an entry line, the current entry is marked
-         for deletion;
-     (4) on or after the last line in the buffer, all delete marks on
-         all entries are undone.
+     (1) on a ~ character, all backup files in the directory are marked for 
deletion;
+     (2) on a # character, all auto-save files in the directory are marked for
+         deletion;
+     (3) anywhere else within an entry line, the current entry is marked for 
deletion;
+     (4) on or after the last line in the buffer or at the end of the first 
line,
+         all delete marks on all entries are undone.
 @end group
 @end format
 
@@ -7961,7 +8114,7 @@ containing its pathname:
 @end group
 @end format
 
address@hidden Smart Key - WWW URLs, Smart Key - Rolo Match Buffers, Smart Key 
- Man Pages, Smart Keyboard Keys
address@hidden Smart Key - WWW URLs, Smart Key - HyRolo Match Buffers, Smart 
Key - Man Pages, Smart Keyboard Keys
 @subsection Smart Key - WWW URLs
 @cindex click, world-wide web
 @cindex W3
@@ -7977,19 +8130,19 @@ If pressed on a World-Wide Web universal resource 
locator (URL):
 @end group
 @end format
 
address@hidden Smart Key - Rolo Match Buffers, Smart Key - Gomoku Game, Smart 
Key - WWW URLs, Smart Keyboard Keys
address@hidden Smart Key - Rolo Match Buffers
address@hidden Smart Key - HyRolo Match Buffers, Smart Key - Gomoku Game, Smart 
Key - WWW URLs, Smart Keyboard Keys
address@hidden Smart Key - HyRolo Match Buffers
 @cindex click, hyrolo matches
 @cindex hyrolo matches
 @format
 @group
-If pressed within an entry in the Rolo search results buffer:
+If pressed within an entry in the HyRolo search results buffer:
   ACTION KEY or ASSIST KEY
      The entry is edited in the other window.
 @end group
 @end format
 
address@hidden Smart Key - Gomoku Game, Smart Key - The OO-Browser, Smart Key - 
Rolo Match Buffers, Smart Keyboard Keys
address@hidden Smart Key - Gomoku Game, Smart Key - The OO-Browser, Smart Key - 
HyRolo Match Buffers, Smart Keyboard Keys
 @subsection Smart Key - Gomoku Game
 @cindex game, gomoku
 @cindex gomoku
@@ -8198,9 +8351,10 @@ This other-worldly reaction is of course an individual 
matter.  Some
 people have canceled meditation trips to the Far East after
 discovering that pressing the Action Key in random contexts serves a
 similar purpose much more cheaply.  We have not seen anyone's mind
-turn to jelly but with the thinking Hyperbole saves you, you might
+turn to jelly but with the cognition Hyperbole saves you, you might
 just grow a second one.  Eventually, you will be at peace and will
-understand that there is no adequate description of Hyperbole.
+understand that there is no adequate description of Hyperbole.  Just
+let it flow through you.
 
 @noindent
 Ok, joking aside, now that we have your attention, here are some
@@ -8332,7 +8486,7 @@ in mind, however.
 
 @item Button Copying, Killing, and Yanking
 There is as yet no means of transferring explicit buttons among
-buffers. We realize this is a critical need.  Users should be able to
+buffers. We realize this is an important need.  Users should be able to
 manipulate text with embedded buttons in ordinary ways.  With this
 feature, Hyperbole would store the button attributes as text
 properties within the buffers so that if a button is copied, its
@@ -8345,6 +8499,15 @@ character keys that normally insert characters to 
instead modify the
 view of a Koutline and to move around in it, for ease of study.
 Switching between view and edit modes will also be simple.
 
address@hidden Direct Manipulation
+Hyperbole is designed to let you rapidly navigate and manipulate
+large, distributed information spaces.  Being able to directly
+manipulate entities in these spaces will accelerate understanding and
+production of new information.  Already Hyperbole lets you drag
+buffers, windows, files, and directories and place them where you
+like.  But there is much more that can be done to allow for
+higher-level browsing and information organization.
+
 @item Trails
 Trails are an extension to the basic history mechanism presently offered
 by Hyperbole.  Trails will allow a user to capture, edit and store a
diff --git a/man/version.texi b/man/version.texi
index a7d8584..e4d2f46 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED October 6, 2017
address@hidden UPDATED October 19, 2017
 @set UPDATED-MONTH OCT 2017
address@hidden EDITION 6.0.2d
address@hidden VERSION 6.0.2d
address@hidden EDITION 6.0.2e
address@hidden VERSION 6.0.2e



reply via email to

[Prev in Thread] Current Thread [Next in Thread]