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

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

[elpa] externals/hyperbole 34a3fe5 6/6: 7.0.1 Merge branch 'master' of h


From: Robert Weiner
Subject: [elpa] externals/hyperbole 34a3fe5 6/6: 7.0.1 Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole
Date: Wed, 22 Nov 2017 17:56:15 -0500 (EST)

branch: externals/hyperbole
commit 34a3fe5dc152a1ea4f201a086335592889e2a3ea
Merge: 9b2d75a 5cc7ac8
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>

    7.0.1 Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into 
externals/hyperbole
---
 Changes            |  95 +++++++++++-
 DEMO               |  40 ++++--
 HY-ABOUT           |   2 +-
 HY-ANNOUNCE        | 104 +++++++-------
 HY-NEWS            |  25 ++++
 HY-WHY.kotl        |  31 ++--
 MANIFEST           |   1 +
 Makefile           |   6 +-
 README.md          |   2 +-
 README.md.html     |  20 +--
 hactypes.el        |  12 +-
 hib-social.el      |   8 +-
 hmouse-drv.el      | 132 +++++++++++++----
 hmouse-sh.el       |   7 +
 hui-mouse.el       |  27 ++--
 hui-select.el      |  35 +++--
 hui-treemacs.el    | 221 ++++++++++++++++++++++++++++
 hui-window.el      |  95 ++++++------
 hui.el             |   6 +-
 hversion.el        |   2 +-
 hypb.el            |   2 +-
 hyperbole-pkg.el   |   2 +-
 hyperbole.el       |   2 +-
 hyrolo.el          |  31 ++--
 man/hyperbole.html | 413 +++++++++++++++++++++++++++++++++--------------------
 man/hyperbole.info | Bin 483045 -> 487474 bytes
 man/hyperbole.pdf  | Bin 1255114 -> 1259831 bytes
 man/hyperbole.texi | 189 +++++++++++++++++-------
 man/im/C-hh.png    | Bin 0 -> 898836 bytes
 man/version.texi   |   6 +-
 30 files changed, 1098 insertions(+), 418 deletions(-)

diff --git a/Changes b/Changes
index 317f854..2b8e73e 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,94 @@
+2017-11-22  Bob Weiner  <address@hidden>
+
+* hversion.el: Released 7.0.1.
+
+* hui.el (hui:buf-writable-err): Added previously unused func-name parameter 
to error msg.
+
+* hypb.el (hypb:error): Fixed issue when a literal string with % characters in 
it was sent to format
+    and triggered an error, e.g. when a buffer or file name contains a %.
+
+* hmouse-drv.el (hkey-help-show): Limited local binding of {q} to 
hkey-help-hide only
+    when in a help-mode (or derived) buffer.
+
+2017-11-21  Bob Weiner  <address@hidden>
+
+* DEMO (Displaying File and Buffer Items): Added description of ace-window 
integration.
+
+* HY-WHY.kotl: Added link to Delimited Thing drags; mention of Treemacs
+
+* man/hyperbole.texi (Smart Key - Treemacs): Added and updated with other 
improvements for this release.
+                     (Keyboard Drags): Added this section and documented 
integration with ace-window package.
+
+* hui-window.el (hmouse-modeline-click): Loosened check to allow a small 
movement between press and release
+    as long as it is less than whatever amount of movement registers a drag 
(used to require exact pixel match).
+
+* hmouse-drv.el (hkey-ace-window-setup): Setup keyboard-based display of items 
in windows specified by
+    short ids.  See its doc string for how to use.
+                (hkey-drag, hkey-drag-to): Added for mouse drag emulation via 
keyboard from a single
+    function that uses the selected window point for depress location and the 
parameter RELEASE-WINDOW
+    for the window and its point for release.  hkey-drag-to is useful as a 
command in the ace-window
+    package's aw-dispatch-alist, e.g. {i} for insert item, because it leaves 
RELEASE-WINDOW selected.
+
+* hui-select.el (hui-select-ignore-quoted-sexp-modes): Added so major modes to 
ignore for syntactic pair
+    selection can be customized.
+                (hui-select-at-delimited-thing-p): Changed to not trigger when 
on an Emacs button.
+
+* hui-window.el (hmouse-drag-between-frames): Replaced calls to window-valid-p 
with window-live-p.
+                (hmouse-drag-window-side, hmouse-drag-between-windows, 
hmouse-drag-same-window,
+                hmouse-drag-outside-all-windows, hmouse-drag-item-to-display,
+                hmouse-item-to-window): Added window-live-p checks for cases 
where a window has
+    been deleted between depress and release.
+
+* hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Updated to support 
keyboard drag emulation.
+                (hkey-help): Changed hkey-forms to use hmouse-alist instead of 
hkey-alist so mouse
+    drags are accounted for when emulating drags from the keyboard and then 
invoking {C-h A} for help.
+  hui-window.el (hmouse-drag-outside-all-windows): Triggered only if an 
action/assist-key press has
+    occurred, e.g. could be called by hkey-help when no press has occurred.
+                (hmouse-x-coord, hmouse-y-coord): Removed error when there is 
no valid coordinate and
+    returned nil instead to support keyboard drag emulation help.
+
+2017-11-20  Bob Weiner  <address@hidden>
+
+* hmouse-drv.el (hkey-absolute-pixel-position): Added and used in 
Action/Assist Key functions.
+                (hmouse-set-point): Fixed hkey-operate bug by wrapping final 
(posn-at-point) in
+    a list with an event type symbol so if called from a keyboard event, 
returns a proper format
+    event.
+                (hkey-operate): Changed so output messages only when called 
interactively.
+
+* hui-treemacs.el: Added for Smart Key support of the Treemacs file manager.
+                   (smart-treemacs): Added.
+                   (smart-treemacs-modeline): Added to allow toggling of 
Treemacs display on
+    Action Key clicks on buffer id of modeline.
+  hui-mouse.el (hkey-alist, action-key-modeline-buffer-id-function): Added 
Smart Key treemacs
+    package support.
+  hui-window.el (action-key-modeline): Updated to call 
action-key-modeline-buffer-id-function.
+  hactypes.el (link-to-buffer-tmp): Added optional 2nd parameter of POINT to 
display.
+
+2017-11-19  Bob Weiner  <address@hidden>
+
+* hui-window.el (hmouse-item-to-window): Added support for 
hmouse-drag-item-mode-forms sending
+    a sequence of (buffer position) rather than just buffer.
+                (hmouse-drag-item-mode-forms): Added support for dragging 
items from the treemacs
+    hierachical file viewer package.
+
+2017-11-17  Bob Weiner  <address@hidden>
+
+* hyrolo.el (hyrolo-initialize-file-list): Fixed to set hyrolo-file-list.
+            (hyrolo-retrieve-google-contacts): Updated to cache Google 
passphrase whenever Google contacts
+    are used so the user is not prompted for his passphrase on every HyRolo 
search.
+  man/hyperbole.texi (HyRolo Settings): Updated Google Contacts settings 
handling to document this caching.
+
+* man/im/C-hh.png - Added showing Hyperbole mini-buffer menu prefix key 
binding.
+
+2017-11-16  Bob Weiner  <address@hidden>
+
+* hywconfig.el (hywconfig-delete-pop): Fixed bug that removed the ring entry 
before using it to restore
+    the window configuration.
+
+==============================================================================
+V7.0.1 changes ^^^^:
+==============================================================================
+
 2017-11-15  Bob Weiner  <address@hidden>
 
 * hversion.el: Updated to 7.0.0 for major release.
@@ -205,7 +296,7 @@
 
 2017-10-30  Bob Weiner  <address@hidden>
 
-* man/hyperbole.texi (Glossary): Removed mention of old remote file access 
packages: ange-ftp and EFS.  Use Tramp only
+* man/hyperbole.texi (Glossary): Removed mention of old remote file access 
packages: ange-ftp and EFS.  Use Tamrp only
     now.
                      (Searching and Summarizing): Renamed from Location.
 
@@ -1300,7 +1391,7 @@ Python (case-sensitive).
   hvar.el (var:append): Removed improper function quoting of variable.
 
 ==============================================================================
-V6.0.3 changes ^^^^:
+V7.0.0 changes ^^^^:
 ==============================================================================
 
 2016-08-08  Bob Weiner  <address@hidden>
diff --git a/DEMO b/DEMO
index 1775c76..d0937c1 100644
--- a/DEMO
+++ b/DEMO
@@ -1135,29 +1135,41 @@ If you want a new window where you release (so the 
original destination window's
 buffer stays onscreen), just drag to a window's modeline; that window will be
 split before the buffer is displayed.
 
-*** Cloning Windows
-
-To clone a window with its buffer to a new frame, simply drag the Action Mouse
-Key from the window to outside of Emacs and release the key.  A new frame will
-be created, selected and sized according to the original window.  Do the same
-thing with the Assist Mouse Key and the original window will be deleted as 
well,
-unless it is the only window in that frame.  Create a few windows and try these
-actions.
-
 *** Displaying File and Buffer Items
 
-You can do the same thing with items in dired, buffer menu and ibuffer menus
-rather than buffers themselves.  Drag with the Action Mouse Key and the 
selected
-item will be displayed in any Emacs window in which you release.  Drag outside
-Emacs and it will be displayed in a new frame.
+You can do the same thing with items in dired, buffer menu and ibuffer menu
+listing buffers rather than buffers themselves.  Drag with the Action Mouse Key
+and the selected item will be displayed in any Emacs window in which you
+release.  Drag outside Emacs and it will be displayed in a new frame.  To
+display the last item you want, press the Action Key on it and it will display
+within the listing window itself.  (If you use the Treemacs file viewer 
package,
+item dragging works there as well).
 
 So now you can rapidly put a bunch of buffers and files on your screen wherever
 you like.  Typically, a brief visual pulse is shown first at the source item 
and
-then in the whole destination window, to help you see that the transfer has 
been
+then in the destination window, to help you see that the transfer has been
 made.  An Assist Key Drag will move the the item list buffer to the destination
 (swapping buffers), just as it does with other buffers.  Practice these drags 
as
 they will prove very beneficial across time.
 
+For even faster keyboard-based drag emulation, use the Emacs package
+'ace-window' (see "(hyperbole)Keyboard Drags" for setup).  Once this is
+configured, the leftmost character or two of each window's modeline will show
+the ID to type to use that window as the drag destination.  Then whenever point
+is on an item you want displayed in another window, use M-o i
+<id-of-window-to-display-item-in> and watch the magic happen.  You can also use
+this to create explicit button links to other window buffers when in an 
editable
+buffer.
+
+*** Cloning Windows
+
+To clone a window with its buffer to a new frame, simply drag the Action Mouse
+Key from the window to outside of Emacs and release the key.  A new frame will
+be created, selected and sized according to the original window.  Do the same
+thing with the Assist Mouse Key and the original window will be deleted as 
well,
+unless it is the only window in that frame.  Create a few windows and try these
+actions.
+
 ** Window Configuration Drags
 
 A window configuration consists of the set of windows within a single Emacs
diff --git a/HY-ABOUT b/HY-ABOUT
index b8f0a59..cfd0c72 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 7.0.0
+                            Version 7.0.1
 
 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 58e3b03..57dd3cc 100644
--- a/HY-ANNOUNCE
+++ b/HY-ANNOUNCE
@@ -1,40 +1,42 @@
-To: address@hidden, address@hidden, address@hidden
-ANNOUNCE: GNU Hyperbole 7, a.k.a the Git Ready for Action Release
+To: address@hidden, address@hidden, address@hidden, address@hidden, 
address@hidden
+ANNOUNCE: GNU Hyperbole 7, a.k.a the Git Ready for Action Release, is now 
available
 
-This is the main public release of GNU Hyperbole for 2017.  It offers many
-new productivity-enhancing features including Git and Github object links
-as summarized here:
+This is the main public release of GNU Hyperbole for 2017 and it is
+bursting with new features and further quality improvements.  New
+capabilities, including Git and Github object links, are summarized
+here:
 
   https://git.savannah.gnu.org/cgit/hyperbole.git/plain/HY-NEWS
 
-A short explanation of Hyperbole is included below.  For more detail
-or how to obtain and install it, see:
+A short explanation of Hyperbole is included below.  For more
+detail or how to obtain and install it, see:
 
-  https://www.gnu.org/software/hyperbole
+  https://www.gnu.org/s/hyperbole
 
 For a list of use cases, see:
 
-  https://www.gnu.org/software/hyperbole/HY-WHY.html
+  https://www.gnu.org/s/hyperbole/HY-WHY.html
 
 For what users think about Hyperbole, see:
 
-  https://www.gnu.org/software/hyperbole/hyperbole.html#user-quotes
+  https://www.gnu.org/s/hyperbole/hyperbole.html#user-quotes
 
 ----
 
-GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is an
-amazing, programmable hypertextual information management system
-implemented as a GNU Emacs package and extensively documented.  Hyperbole
-has been greatly expanded and updated for use with the latest Emacs 26
-releases; it supports GNU Emacs 24.4 or above.
+GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole,
+is an amazing, programmable hypertextual information management
+system implemented as a GNU Emacs package and extensively
+documented.  Hyperbole has been greatly expanded and updated for
+use with the latest Emacs 26 releases; it supports GNU Emacs 24.4
+or above.
 
-Hyperbole can boost your day-to-day productivity with Emacs and your
-ability to manage information stored across many different machines on the
-internet.  People who get used to Hyperbole often find they prefer never to
-use Emacs without it.
+Hyperbole can boost your day-to-day productivity with Emacs and
+your ability to manage information stored across many different
+machines on the internet.  People who get used to Hyperbole often
+find they prefer never to use Emacs without it.
 
-Hyperbole includes its own easy-to-use hypertextual buttons and links that
-can be created without the need for any markup language.
+Hyperbole includes its own easy-to-use hypertextual buttons and
+links that can be created without the need for any markup language.
 
 It also comes out-of-the-box with:
 
@@ -44,32 +46,33 @@ It also comes out-of-the-box with:
 
   - a powerful multi-level auto-numbered outliner
 
-  - and two very smart context-dependent mouse and keyboard keys that
-    simplify operations in many editing and browsing modes.  All features
-    are aimed at making textual information management and display fast and
-    easy.
+  - and two very smart context-dependent mouse and keyboard keys
+    that simplify operations in many editing and browsing modes.
+    All features are aimed at making textual information management
+    and display fast and easy.
 
-Bob Weiner designed and programmed GNU Hyperbole.  He and Mats Lidell
-maintain it with the Free Software Foundation.  It includes an interactive
-demo to introduce you to its features as well as a detailed reference manual,
-as explained here:
+Bob Weiner designed and programmed GNU Hyperbole.  He and Mats
+Lidell maintain it with the Free Software Foundation.  It includes
+an interactive demo to introduce you to its features as well as a
+detailed reference manual, as explained here:
 
-  https://www.gnu.org/software/hyperbole/hyperbole.html#invocation-and-doc
+  https://www.gnu.org/s/hyperbole/hyperbole.html#invocation-and-doc
 
 ----
 
-Please give Hyperbole a try.  It's free, man.  It adapts to your needs.
-It connects everything.  It rewires your brain.  It speeds your web
-searches for `carpal tunnel syndrome'.  It makes you feel like the
-sun is out on a gray winter day :-)
+Please give Hyperbole a try.  It's free, man.  It adapts to your
+needs. It connects everything.  It rewires your brain.  It speeds
+your web searches for `carpal tunnel syndrome'.  It makes you feel
+like the sun is out on a gray winter day :-)
 
-But wait, there's more and this part is serious.  For a limited time,
-to encourage use and feedback, the first 30 people who try out the
-Hyperbole DEMO or read the Hyperbole Manual and send a few thoughtful
-sentences to <rsw at gnu dot org> will receive either of their choice of
-the following as yet unpublished single file Emacs Lisp libraries:
+But wait, there's more and this part is serious.  For a limited
+time, to encourage use and feedback, the first 30 people who try
+out the Hyperbole DEMO or read the Hyperbole Manual and send a few
+thoughtful sentences to <rsw at gnu dot org> will receive either of
+their choice of the following as yet unpublished single file Emacs
+Lisp libraries:
 
-;;  rsw-linecol.el: User-editable mode-line column and line number display 
formats
+;;  rsw-linecol.el: User-editable mode-line col/line number formats
 ;;
 ;;  GNU Emacs buries the formatting of mode-line line and column
 ;;  numbers in a way that makes it virtually impossible for a user
@@ -79,18 +82,17 @@ the following as yet unpublished single file Emacs Lisp 
libraries:
 
 or
 
-;;  rsw-chrome-macos.el: Open a URL or file in Google Chrome and reuse an 
existing
-;;    tab/window if already displayed.
+;;  rsw-chrome-macos.el: Open a URL in Google Chrome and reuse an
+;;     existing tab/window if already displayed.
 ;;
-;;  This library resolves the many problems of sending URLs to Google Chrome
-;;  on MacOS.  It properly sends # hash in-file links (these are
-;;  typically stripped when Chrome is called as a MacOS application).
-;;  It reuses any tab already displaying any matching URL that is sent
-;;  and it does this even if the ultimately displayed URL goes through
-;;  several redirects before display.
+;;  This library resolves the many problems of sending URLs to
+;;  Google Chrome on MacOS.  It properly sends # hash in-file links
+;;  (these are typically stripped when Chrome is called as a MacOS
+;;  application).  It reuses any tab already displaying any
+;;  matching URL that is sent and it does this even if the
+;;  ultimately displayed URL goes through several redirects before
+;;  display.
 
 Enjoy,
 
-Bob and Mats
-
-
+Bob Weiner and Mats Lidell
diff --git a/HY-NEWS b/HY-NEWS
index 44b430b..1e4284c 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -2,6 +2,31 @@
                                 by Bob Weiner
 
 ===========================================================================
+*                                   V7.0.1
+===========================================================================
+
+  SMART (ACTION AND ASSIST) KEYS
+
+    - Keyboard Drags: Keyboard emulation of many Smart Mouse Key drag actions.
+      See "(hyperbole)Keyboard Drags".
+  
+    - Keyboard Help: When {M-o} is bound to the `hkey-operate' command to
+      emulate drag depress and release events; when in the release window
+      prior to pressing the second {M-o}, the {C-h A} now reports the drag
+      action associated with the current release point.  See "(hyperbole)C-h 
A".
+
+    - Smart Treemacs: Smart Key and item drag support for the Treemacs package.
+      See "(hyperbole)Smart Key - Treemacs".
+
+    - Ace Window: Integrated Hyperbole item drag and link creation with this
+      package's direct window selection.  See "(hyperbole)Keyboard Drags".
+
+  HYROLO
+
+    - Fixed Google Contacts support to prompt only once for authorization.
+
+
+===========================================================================
 *                                   V7.0.0
 ===========================================================================
 
diff --git a/HY-WHY.kotl b/HY-WHY.kotl
index 4ba7036..5bbfba2 100644
--- a/HY-WHY.kotl
+++ b/HY-WHY.kotl
@@ -60,14 +60,19 @@
       and frames with mouse drags and the Hyperbole HyControl system.
       See "DEMO#HyControl".
 
-    11a. Drag Buffer Menu or Dired items to other windows to display
-         them wherever you want.  Drag-and-drop text regions across
-         Emacs frames.  See "DEMO#Displaying File and Buffer Items".
+    11a. Drag Buffer Menu, Dired or Treemacs items to other windows to
+         display them wherever you want.  Integrate with the Ace
+         Window package to `throw' items to specific windows with
+         quick key sequences.  See "DEMO#Displaying File and Buffer
+         Items".
 
-    11b. Swap buffers in windows across frames with a mouse drag.
+    11b. Drag-and-drop text regions across Emacs frames.  See
+         "DEMO#Things".
+
+    11c. Swap buffers in windows across frames with a mouse drag.
          See "DEMO#Swapping Buffers".
 
-    11c. With one command, rapidly create a grid of tiled windows
+    11d. With one command, rapidly create a grid of tiled windows
          displaying either selected buffers, buffers with a specific
          major mode or the most recently used buffer list, e.g.
          {63 C-c @} creates 6 rows, each with 3 columns of windows (18
@@ -77,22 +82,22 @@
          same above command to display them in a grid of windows.  See
          "DEMO#Windows Grid".
 
-    11d. Use a quick mouse key press to scroll any window line to the
+    11e. Use a quick mouse key press to scroll any window line to the
          top or bottom of a window, to see exactly what you want on
          screen.  See "DEMO#Smart Scrolling".
 
-    11e. Clone or tear off a window into its own frame with a quick
+    11f. Clone or tear off a window into its own frame with a quick
          mouse drag.  See "DEMO#Cloning Windows".
 
-    11f. Each frame can store a series of window configurations
+    11g. Each frame can store a series of window configurations
          (layouts) which support working with sets of buffers and
          rapidly moving among them.  See "DEMO#Window Configuration
          Drags".
 
-    11g. Easily adjust the height and width of windows and frames as
+    11h. Easily adjust the height and width of windows and frames as
          needed.  See "DEMO#Frame Commands".
 
-    11h. Quick clicks on different areas of a buffer's modeline will
+    11i. Quick clicks on different areas of a buffer's modeline will
          rotate through your working list of buffers, changing what
          each window displays.  A popup menu gives you quick access to
          Hyperbole commands plus frame, window and buffer selection
@@ -102,7 +107,7 @@
 
 
 "ben" ;; kvspec:current
-36 ;; id-counter
+37 ;; id-counter
 alpha ;; label-type
 4 ;; label-min-width
 ". " ;; label-separator
@@ -110,7 +115,7 @@ alpha ;; label-type
 
 ;; depth-first kcell attributes
 [[0
-  (creator "address@hidden" create-time "20171114:17:51:59" id-counter 36 file 
"/Users/bk/sw-dev/emacs/hyperbole/HY-WHY.kotl")]
+  (creator "address@hidden" create-time "20171122:02:34:20" id-counter 37 file 
"/Users/bk/Dropbox/emacs/hyperbole/HY-WHY.kotl")]
  [1
   (creator "address@hidden" create-time "20160524:15:04:17" no-fill t)]
  [17
@@ -135,6 +140,8 @@ alpha ;; label-type
   (creator "address@hidden" create-time "20160524:15:32:11" no-fill t)]
  [20
   (creator "address@hidden" create-time "20171019:22:07:29" no-fill t)]
+ [37
+  (idstamp 20 creator "address@hidden" create-time "20171019:22:07:29" no-fill 
t)]
  [23
   (creator "address@hidden" create-time "20171108:01:15:39" no-fill t)]
  [22
diff --git a/MANIFEST b/MANIFEST
index aed31f7..05c5dd2 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -40,6 +40,7 @@ hui-menu.el         - Menubar menu of GNU Hyperbole commands
 hui-mini.el         - Single line command menus for GNU Hyperbole
 hui-mouse.el        - Use key or mouse key for many functions, e.g. GNU 
Hyperbole menus
 hui-select.el       - Select delimited or larger and larger syntax-driven 
regions in a buffer
+hui-treemacs.el     - Hyperbole Smart Key support for the Treemacs file 
manager package
 hui-window.el       - Smart Mouse Key window and modeline depress/release 
actions
 hui-xe-but.el       - XEmacs button highlighting and flashing support
 hui.el              - GNU Hyperbole button and hyperlink user interface
diff --git a/Makefile b/Makefile
index 799739d..bc4335f 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 = 7.0.0
+HYPB_VERSION = 7.0.1
 
 # Emacs executable used to byte-compile .el files into .elc's.
 # Possibilities include: emacs, infodock, xemacs, etc.
@@ -150,7 +150,7 @@ EL_COMPILE = hact.el hactypes.el hargs.el hbdata.el 
hbmap.el hbut.el \
             hmouse-drv.el hmouse-key.el hmouse-mod.el hmouse-sh.el 
hmouse-tag.el \
             hpath.el hrmail.el hsettings.el hsmail.el hsys-org.el hsys-www.el 
htz.el \
             hycontrol.el hui-jmenu.el hui-menu.el hui-mini.el hui-mouse.el 
hui-select.el \
-            hui-window.el hui.el hvar.el hversion.el hvm.el hypb.el 
hyperbole.el \
+            hui-treemacs.el hui-window.el hui.el hvar.el hversion.el hvm.el 
hypb.el hyperbole.el \
             hyrolo-demo.el hyrolo-logic.el hyrolo-menu.el hyrolo.el 
hywconfig.el set.el
 
 EL_KOTL = kotl/kexport.el kotl/kfile.el kotl/kfill.el kotl/kimport.el 
kotl/klabel.el \
@@ -165,7 +165,7 @@ ELC_COMPILE =  hactypes.elc hibtypes.elc hib-debbugs.elc 
hib-doc-id.elc hib-kbd.
             hmouse-drv.elc hmouse-key.elc hmouse-mod.elc hmouse-sh.elc 
hmouse-tag.elc \
             hpath.elc hrmail.elc hsettings.elc hsmail.elc hsys-org.elc 
hsys-www.elc htz.elc \
             hycontrol.elc hui-jmenu.elc hui-menu.elc hui-mini.elc 
hui-mouse.elc hui-select.elc \
-            hui-window.elc hui.elc hvar.elc hversion.elc hvm.elc hypb.elc 
hyperbole.elc \
+            hui-treemacs.elc hui-window.elc hui.elc hvar.elc hversion.elc 
hvm.elc hypb.elc hyperbole.elc \
             hyrolo-demo.elc hyrolo-logic.elc hyrolo-menu.elc hyrolo.elc 
hywconfig.elc set.elc
 
 ELC_KOTL = kotl/kexport.elc kotl/kfile.elc kotl/kfill.elc kotl/kimport.elc 
kotl/klabel.elc \
diff --git a/README.md b/README.md
index b424475..875c05b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# GNU Hyperbole 7.0.0 - The Everyday Hypertextual Information Manager
+# GNU Hyperbole 7.0.1 - The Everyday Hypertextual Information Manager
 
 <!-- START doctoc generated TOC -->
 **Table of Contents**
diff --git a/README.md.html b/README.md.html
index edec72a..65c84f8 100644
--- a/README.md.html
+++ b/README.md.html
@@ -1,5 +1,5 @@
 <h1>
-<a 
id="user-content-gnu-hyperbole-700---the-everyday-hypertextual-information-manager"
 class="anchor" 
href="#gnu-hyperbole-700---the-everyday-hypertextual-information-manager" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>GNU Hyperbole 7.0.0 - The Everyday Hypertextual 
Information Manager</h1>
+<a 
id="user-content-gnu-hyperbole-701---the-everyday-hypertextual-information-manager"
 class="anchor" 
href="#gnu-hyperbole-701---the-everyday-hypertextual-information-manager" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>GNU Hyperbole 7.0.1 - The Everyday Hypertextual 
Information Manager</h1>
 
 <p><strong>Table of Contents</strong></p>
 <ul>
@@ -69,7 +69,7 @@ it is textual information, Hyperbole can work with it.  In 
contrast to
 Org mode, Hyperbole works across all Emacs modes and speeds your work
 by turning all kinds of references into clickable hyperlinks and
 allowing you to create new hyperlinks by dragging between two windows.
-The <a href="https://www.emacswiki.org/emacs/Hyperbole";>Hyperbole wiki page</a>
+The <a href="https://www.emacswiki.org/emacs/Hyperbole"; 
rel="nofollow">Hyperbole wiki page</a>
 explains the many ways it differs from and is complementary to Org
 mode.</p>
 <p>Hyperbole allows hypertext buttons to be embedded within unstructured
@@ -90,7 +90,7 @@ rather learn fewer packages and get more work done faster, 
then
 Hyperbole is for you.</p>
 <p>Hyperbole works well on GNU Emacs 24.4 or above.  It is designed and
 written by Bob Weiner.  It is maintained by him and Mats Lidell.  Its
-main distribution site is: <a 
href="https://www.gnu.org/software/hyperbole/";>https://www.gnu.org/software/hyperbole/</a>.
+main distribution site is: <a href="https://www.gnu.org/software/hyperbole/"; 
rel="nofollow">https://www.gnu.org/software/hyperbole/</a>.
 If any term in here is new or unfamiliar to you, you can look it up in the
 <a href="man/hyperbole.html#Glossary">Hyperbole Glossary</a>.</p>
 <p>Hyperbole is available for <a href="#installation">download and 
installation</a>
@@ -110,28 +110,28 @@ through the GNU Emacs package manager.</p>
 <p>To inspect the Hyperbole source code online rather than installing it for
 use (which will also give you the source code), open a web page to:</p>
 <ul>
-<li><a 
href="https://git.savannah.gnu.org/cgit/hyperbole.git/tree/";>https://git.savannah.gnu.org/cgit/hyperbole.git/tree/</a></li>
+<li><a href="https://git.savannah.gnu.org/cgit/hyperbole.git/tree/"; 
rel="nofollow">https://git.savannah.gnu.org/cgit/hyperbole.git/tree/</a></li>
 </ul>
 <p>Alternatively, you may download a tar.gz source archive from either:</p>
 <ul>
 <li>
-<p><a 
href="ftp://ftp.gnu.org/gnu/hyperbole/";>ftp://ftp.gnu.org/gnu/hyperbole/</a></p>
+<p><a href="ftp://ftp.gnu.org/gnu/hyperbole/"; 
rel="nofollow">ftp://ftp.gnu.org/gnu/hyperbole/</a></p>
 </li>
 <li>
-<p><a 
href="http://ftpmirror.gnu.org/hyperbole/";>http://ftpmirror.gnu.org/hyperbole/</a></p>
+<p><a href="http://ftpmirror.gnu.org/hyperbole/"; 
rel="nofollow">http://ftpmirror.gnu.org/hyperbole/</a></p>
 </li>
 </ul>
 <p>which will find the closest mirror of the GNU ftp site and show it to 
you.</p>
 <p>If you want to follow along with Hyperbole development and maintain a
 copy/clone of the current version-controlled git tree, use a
-<a href="https://savannah.gnu.org/git/?group=hyperbole";>command listed here</a>
+<a href="https://savannah.gnu.org/git/?group=hyperbole"; rel="nofollow">command 
listed here</a>
 to clone the Hyperbole project tree.</p>
 <h2>
 <a id="user-content-installation" class="anchor" href="#installation" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Installation</h2>
 <p>Once you have Emacs set up at your site, GNU Hyperbole may be
 installed by using the Emacs Package Manager.  If you are not
 familiar with it, see the Packages section of the GNU Emacs Manual,
-<a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html";>Emacs
 Packages</a>.</p>
+<a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html"; 
rel="nofollow">Emacs Packages</a>.</p>
 <p>If you have Hyperbole 5.10 or higher already installed and simply want to
 upgrade it, invoke the Emacs Package Manager with {M-x list-packages RET},
 then use the {U} key followed by the {x} key to upgrade all out-of-date
@@ -139,7 +139,7 @@ packages, Hyperbole among them.  Then skip the text below 
and move on to
 the next section, <a href="#invocation">Invocation</a>.</p>
 <p>Otherwise, to download and install the Hyperbole package, you should
 add several lines to your personal Emacs initialization file,
-typically "~/.emacs".  For further details, see <a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html";>Emacs
 Init
+typically "~/.emacs".  For further details, see <a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html"; 
rel="nofollow">Emacs Init
 File</a>.</p>
 <p>Below are the lines to add:</p>
 <pre><code>(require 'package)
@@ -182,7 +182,7 @@ control.  {t} switches between window and frame control 
once in one of
 them.  Hyperbole also binds {C-c } for quick access to HyControl's
 window control menu if it was not already bound prior to Hyperbole's
 initialization.  A long video demonstrating many of HyControl's
-features is available at <a 
href="https://youtu.be/M3-aMh1ccJk";>https://youtu.be/M3-aMh1ccJk</a>.</p>
+features is available at <a href="https://youtu.be/M3-aMh1ccJk"; 
rel="nofollow">https://youtu.be/M3-aMh1ccJk</a>.</p>
 <p>The above are the best interactive ways to learn about Hyperbole.
 Hyperbole also includes the Hyperbole Manual, a full reference manual,
 not a simple introduction.  It is included in the "man/" subdirectory
diff --git a/hactypes.el b/hactypes.el
index 7145949..bfe03fc 100644
--- a/hactypes.el
+++ b/hactypes.el
@@ -229,13 +229,19 @@ For example:  To: address@hidden")))
            (t (hpath:find buf-str-or-file)))
     (hypb:error "(hyp-source): Non-string argument: %s" buf-str-or-file)))
 
-(defact link-to-buffer-tmp (buffer)
-  "Displays a BUFFER.
+(defact link-to-buffer-tmp (buffer &optional point)
+  "Displays a BUFFER scrolled to optional POINT.
+If POINT is given, the buffer is displayed with POINT at the top of
+the window.
+
 This type of link generally can only be used within a single editor session.
 Use `link-to-file' instead for a permanent link."
   (interactive "bBuffer to link to: ")
   (if (or (stringp buffer) (bufferp buffer))
-      (hpath:display-buffer buffer)
+      (and (hpath:display-buffer buffer)
+          (integerp point)
+          (progn (goto-char (min (point-max) point))
+                 (recenter 0)))
     (hypb:error "(link-to-buffer-tmp): Not a current buffer: %s" buffer)))
 
 (defact link-to-directory (directory)
diff --git a/hib-social.el b/hib-social.el
index 2a00a75..2f0e550 100644
--- a/hib-social.el
+++ b/hib-social.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    20-Jul-16 at 22:41:34
 ;;
-;; Copyright (C) 2016  Free Software Foundation, Inc.
+;; Copyright (C) 2016-2017  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -66,14 +66,14 @@
 ;;                                               is set, display current 
project's local
 ;;                                               git commit diff
 ;;     git#master                                Show latest commit entry and 
diff for branch
-;;     git#hyperbole-6.0.2                       From any buffer, show the 
commit diff
-;;                                               for tag `hyperbole-6.0.2'
+;;     git#hyperbole-7.0.0                       From any buffer, show the 
commit diff
+;;                                               for tag `hyperbole-7.0.0'
 ;;
 ;;     When you want to be more explicit, use:
 ;;       
 ;;       git#commit/55a1f0
 ;;       git#branch/master
-;;       git#tag/hyperbole-6.0.2
+;;       git#tag/hyperbole-7.0.0
 ;;
 ;;     To edit and view git managed files (note the =):
 ;;
diff --git a/hmouse-drv.el b/hmouse-drv.el
index cccc888..27d3fc5 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    04-Feb-90
 ;;
-;; Copyright (C) 1989-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1989-2017  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -16,6 +16,7 @@
 ;;; Other required Elisp libraries
 ;;; ************************************************************************
 
+(eval-when-compile (require 'hui-window)) ;; for `hmouse-drag-item-to-display'
 (require 'hypb)
 
 ;; Quiet byte compiler warnings for these free variables.
@@ -127,6 +128,12 @@ This permits the Smart Keys to behave as paste keys.")
 ;;; Hyperbole context-sensitive key driver functions
 ;;; ************************************************************************
 
+(defun hkey-absolute-pixel-position ()
+  "Return the display terminal absolute pixel position of the mouse (if in a 
mouse event) or the selected window's point."
+  (if (mouse-event-p last-input-event)
+      (mouse-absolute-pixel-position)
+    (window-absolute-pixel-position)))
+
 ;;; Smart Key Depress Functions
 (defun action-key-depress (&rest args)
   (interactive)
@@ -139,7 +146,7 @@ This permits the Smart Keys to behave as paste keys.")
        action-key-depress-args (hmouse-set-point args)
        action-key-depress-window (or (hmouse-depress-inactive-minibuffer-p 
args)
                                      (selected-window))
-       action-key-depress-position (mouse-absolute-pixel-position)
+       action-key-depress-position (hkey-absolute-pixel-position)
        action-key-release-args nil
        action-key-release-window nil
        action-key-release-prev-point nil)
@@ -156,7 +163,7 @@ This permits the Smart Keys to behave as paste keys.")
        assist-key-depress-args (hmouse-set-point args)
        assist-key-depress-window (or (hmouse-depress-inactive-minibuffer-p 
args)
                                      (selected-window))
-       assist-key-depress-position (mouse-absolute-pixel-position)
+       assist-key-depress-position (hkey-absolute-pixel-position)
        assist-key-release-args nil
        assist-key-release-window nil
        assist-key-release-prev-point nil)
@@ -190,7 +197,7 @@ Any ARGS will be passed to `hmouse-function'."
   ;; Make this a no-op if some local mouse key binding overrode the global
   ;; action-key-depress command invocation.
   (when action-key-depressed-flag
-    (setq action-key-release-position (mouse-absolute-pixel-position))
+    (setq action-key-release-position (hkey-absolute-pixel-position))
     (let ((hkey-alist hmouse-alist))
       (setq action-key-depressed-flag nil)
       (cond (action-key-cancelled
@@ -214,7 +221,7 @@ Any ARGS will be passed to `hmouse-function'."
   ;; Make this a no-op if some local mouse key binding overrode the global
   ;; assist-key-depress command invocation.
   (when assist-key-depressed-flag
-    (setq assist-key-release-position (mouse-absolute-pixel-position))
+    (setq assist-key-release-position (hkey-absolute-pixel-position))
     (let ((hkey-alist hmouse-alist))
       (setq assist-key-depressed-flag nil)
       (cond (assist-key-cancelled
@@ -321,6 +328,74 @@ bound to a valid function."
                   (hypb:format-quote (format "%s" hkey-action))
                   (current-buffer) major-mode (minibuffer-depth))))
 
+;;;###autoload
+(defun hkey-drag (release-window)
+  "Emulate Smart Mouse Key drag from selected window to RELEASE-WINDOW.
+The drag action determines the final selected window.
+
+Optional prefix ARG non-nil means emulate Assist Key rather than the
+Action Key.
+
+Only works when running under a window system, not from a dumb terminal."
+  ;; Cancel any partial drag that may have been recorded.
+  (if current-prefix-arg
+      (setq assist-key-depressed-flag nil)
+    (setq action-key-depressed-flag nil))
+  (hkey-operate current-prefix-arg)
+  (when (window-live-p release-window)
+    (select-window release-window))
+  (hkey-operate current-prefix-arg))
+
+;;;###autoload
+(defun hkey-drag-to (release-window)
+  "Emulate Smart Mouse Key drag from selected window to RELEASE-WINDOW.
+If an item is dragged to RELEASE-WINDOW, then RELEASE-WINDOW is selected;
+otherwise, the drag action determines the selected window.
+
+Optional prefix ARG non-nil means emulate Assist Key rather than the
+Action Key.
+
+Only works when running under a window system, not from a dumb terminal."
+  (if (and (hmouse-drag-item-to-display) (window-live-p release-window))
+      (progn (hkey-drag release-window)
+            ;; Leave release window selected
+            (when (window-live-p release-window)
+              (select-window release-window)))
+    ;; Leave hkey-drag to choose selected window
+    (hkey-drag release-window)))
+
+(defun hkey-ace-window-setup (&optional key)
+  "Bind optional keyboard KEY and setup display of items in windows specified 
by short ids.
+
+The ace-window package, (see 
\"https://elpa.gnu.org/packages/ace-window.html\";),
+assigns short ids to each Emacs window and lets you jump to or
+operate upon a specific window by giving its letter.  Hyperbole
+can insert an operation into ace-window that allows you to
+display items such as dired or buffer menu items in a specific
+window.
+
+To enable this feature, in your Emacs initialization file after
+Hyperbole is initialized, if you already have a key bound for
+ace-window, then call:
+
+ (hkey-ace-window-setup)
+
+otherwise, choose a binding like {M-o} and send it to the same
+function to bind it:
+
+ (hkey-ace-window-setup \"\M-o\")
+
+Then whenever point is on an item you want displayed in another
+window, use {M-o i <id-of-window-to-display-item-in>} and watch the
+magic happen."
+  (require 'ace-window)
+  (when key (global-set-key key 'ace-window))
+  (push '(?i hkey-drag-to "Hyperbole Drag To") aw-dispatch-alist)
+  (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)
+       ;; allows {i} operation to work when only 2 windows exist
+       aw-dispatch-always t)
+  (ace-window-display-mode 1))
+
 (defun hkey-execute (assist-flag)
   "Evaluate Action Key form (or Assist Key form with ASSIST-FLAG non-nil) for 
first non-nil predicate from `hkey-alist'.
 Non-nil ASSIST-FLAG means evaluate second form, otherwise evaluate first form.
@@ -344,7 +419,7 @@ Return non-nil iff a non-nil predicate is found."
 With optional ASSIST-FLAG non-nil, display help for the Assist Key command.
 Return non-nil iff associated help documentation is found."
   (interactive "P")
-  (let ((hkey-forms hkey-alist)
+  (let ((hkey-forms hmouse-alist)
        hkey-form pred-value call calls cmd-sym doc)
     (while (and (null pred-value) (setq hkey-form (car hkey-forms)))
       (or (setq pred-value (eval (car hkey-form)))
@@ -497,9 +572,10 @@ the current window.  By default, it is displayed according 
to the setting of
          ;; selection.
          (unless (or (where-is-internal 'quit-window (current-local-map))
                      (where-is-internal 'hkey-help-hide (current-local-map)))
-           (if (string-match "^\\*Help\\|Help\\*$" (buffer-name))
-               (help-mode))
-           (local-set-key "q" #'hkey-help-hide))))
+           (when (string-match "^\\*Help\\|Help\\*$" (buffer-name))
+             (help-mode))
+           (when (derived-mode-p 'help-mode)
+             (local-set-key "q" #'hkey-help-hide)))))
     ;; If in a *Completions* buffer, re-select the window that
     ;; generated the completions.
     (if (buffer-live-p completion-reference-buffer)
@@ -543,20 +619,22 @@ Only works when running under a window system, not from a 
dumb terminal."
   (if arg
       (if assist-key-depressed-flag
          (progn (assist-mouse-key)
-                (message "Assist Key released."))
+                (when (called-interactively-p 'interactive)
+                  (message "Assist Key released.")))
        (assist-key-depress)
-       (message
-         "Assist Key depressed; go to release point and hit {%s %s}."
-         (substitute-command-keys "\\[universal-argument]")
-         (substitute-command-keys "\\[hkey-operate]")
-         ))
+       (when (called-interactively-p 'interactive)
+         (message
+          "Assist Key depressed; go to release point and hit {%s %s}."
+          (substitute-command-keys "\\[universal-argument]")
+          (substitute-command-keys "\\[hkey-operate]"))))
     (if action-key-depressed-flag
        (progn (action-mouse-key)
-              (message "Action Key released."))
+              (when (called-interactively-p 'interactive)
+                (message "Action Key released.")))
       (action-key-depress)
-      (message "Action Key depressed; go to release point and hit {%s}."
-              (substitute-command-keys "\\[hkey-operate]"))
-      )))
+      (when (called-interactively-p 'interactive)
+       (message "Action Key depressed; go to release point and hit {%s}."
+                (substitute-command-keys "\\[hkey-operate]"))))))
 
 (defun hkey-summarize (&optional current-window)
   "Display smart key operation summary in help buffer.
@@ -614,8 +692,11 @@ With optional ARG, override them iff ARG is positive."
     spacing))
 
 (defun hmouse-window-at-absolute-pixel-position (&optional position 
release-flag)
-  "Return the top-most Emacs window at optional POSITION ((x . y) in absolute 
pixels) or mouse position.
-If POSITION is not in a window, return nil.  Considers all windows on
+  "Return the top-most Emacs window at optional POSITION ((x . y) in absolute 
pixels).
+If POSITION is nil, use mouse position if last input event was a mouse
+event, otherwise, use the position of point in the selected window.
+
+If the position used is not in a window, return nil.  Considers all windows on
 the same display as the selected frame.
 
 If optional RELEASE-FLAG is non-nil, this is part of a Smart Key
@@ -623,11 +704,14 @@ release computation, so optimize window selection based 
on the depress
 window already computed.
 
 If the selected frame is a graphical macOS window and
-`hmouse-verity-release-window-flag' is non-nil, then return the
+`hmouse-verify-release-window-flag' is non-nil, then return the
 top-most Emacs window only if it is the top-most application window at
 the position (not below another application's window)."
   (interactive)
-  (setq position (or position (mouse-absolute-pixel-position)))
+  (setq position (or position
+                    (if (mouse-event-p last-input-event)
+                        (mouse-absolute-pixel-position)
+                      (hkey-absolute-pixel-position))))
   ;; Proper top-to-bottom listing of frames is available only in Emacs
   ;; 26 and above.  For prior versions, the ordering of the frames
   ;; returned is not guaranteed, so the frame whose window is returned
@@ -846,7 +930,7 @@ return current point as a marker."
                            (+ (nth 1 args) (nth 0 (window-edges win)))
                            (+ (nth 2 args) (nth 1 (window-edges win))))))
                   (t args)))
-    (posn-at-point)))
+    (list 'keyboard-drag (posn-at-point))))
 
 (defun hmouse-set-point-at (set-point-arg-list)
   "Set point to cursor position using SET-POINT-ARG-LIST and returns t.
diff --git a/hmouse-sh.el b/hmouse-sh.el
index b93e6a0..64fceee 100644
--- a/hmouse-sh.el
+++ b/hmouse-sh.el
@@ -560,6 +560,13 @@ With optional MIDDLE-KEY-ONLY-FLAG non-nil, binds only the 
middle mouse key."
   (interactive)
   (cond        ;; GNU Emacs
    (hyperb:emacs-p
+    ;; Unbind Emacs push-button mouse keys since Hyperbole handles them.
+    (define-key button-map [mouse-2] nil)
+    (define-key button-map [mode-line mouse-2] nil)
+    (define-key button-map [header-line mouse-2] nil)
+    ;; Remove push-button help echo string for mouse-2 key.
+    (put 'default-button 'help-echo nil)
+    ;;
     ;; In Info-mode, Emacs uses key-translation-map to link mouse-1 to
     ;; do whatever mouse-2 does but because Hyperbole uses both down
     ;; and up bindings on mouse2, this does work.  So we rebind
diff --git a/hui-mouse.el b/hui-mouse.el
index 123ca16..6944b44 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    04-Feb-89
 ;;
-;; Copyright (C) 1991-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1991-2017  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -67,6 +67,13 @@ Set it to #'hkey-summarize if you want it to display a 
summary of Smart Key beha
   :type 'function
   :group 'hyperbole-keys)
 
+(defcustom action-key-modeline-buffer-id-function #'dired-jump
+  "*Function to call when the Action Mouse Key is clicked on the buffer id 
portion of a modeline.
+Its default value is #'dired-jump; set it to #'smart-treemacs-modeline
+to use the Treemacs file manager package instead."
+  :type 'function
+  :group 'hyperbole-keys)
+
 (defcustom action-key-eol-function #'smart-scroll-up
   "*Function run by the Action Key at the end of a line.
 Its default value is #'smart-scroll-up."
@@ -88,6 +95,9 @@ Its default value is #'smart-scroll-down."
 
 (defvar hkey-alist
   '(
+    ((eq major-mode 'treemacs-mode) . 
+     ((smart-treemacs) . (smart-treemacs)))
+    ;;
     ;; Handle Emacs push buttons in buffers
     ((and (fboundp 'button-at) (button-at (point))) .
      ((push-button nil (mouse-event-p last-command-event))
@@ -133,9 +143,12 @@ Its default value is #'smart-scroll-down."
        (smart-eolp)) .
        ((funcall action-key-eol-function) . (funcall assist-key-eol-function)))
     ;;
-    ;; The Smart Menu system provides menus within Emacs on a dumb terminal.
-    ;; It is a part of InfoDock, but may also be obtained as a separate
-    ;; package.  It is not included with Hyperbole.
+    ;; The Smart Menu system is an attractive in-buffer menu system
+    ;; that works on any display system that supports Emacs.  It
+    ;; predates Emacs' menu systems; it is a part of InfoDock.
+    ;; It is not included with Hyperbole.
+    ;;
+    ;; This selects or gives help for a menu item.
     ((eq major-mode 'smart-menu-mode) . 
      ((smart-menu-select) . (smart-menu-help)))
     ;;
@@ -146,8 +159,7 @@ Its default value is #'smart-scroll-down."
     ((hbut:at-p) .
      ((hui:hbut-act 'hbut:current) . (hui:hbut-help 'hbut:current)))
     ;;
-    ;; The Smart Menu system is an attractive in-buffer menu system
-    ;; that predates Emacs menu systems; it is included in InfoDock.
+    ;; This potentially displays a Smart Menu.
     ((and (fboundp 'smart-menu-choose-menu)
          (setq hkey-value (and hkey-always-display-menu
                                (smart-menu-choose-menu)))
@@ -660,8 +672,7 @@ If key is pressed:
                      (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))
+       ((last-line-p) (quit-window))
        (t (hpath:find (dired-get-filename)))))
 
 (defun smart-dired-assist ()
diff --git a/hui-select.el b/hui-select.el
index 6abc237..6474acf 100644
--- a/hui-select.el
+++ b/hui-select.el
@@ -136,7 +136,13 @@
   (append '(altmath-mode asm-mode csh-mode eiffel-mode ksh-mode
             math-mode miranda-mode python-mode pascal-mode sather-mode)
          hui-select-text-modes)
-  "*List of language major modes which use mostly indentation to define 
syntactic structure."
+  "*List of language major modes that use indentation mostly to define 
syntactic structure."
+  :type '(repeat (function :tag "Mode"))
+  :group 'hyperbole-commands)
+
+(defcustom hui-select-ignore-quoted-sexp-modes
+  '(debugger-mode emacs-lisp-mode lisp-mode lisp-interaction-mode slime-mode 
cider-mode)
+  "*List of language major modes in which to ignore quoted sexpressions for 
syntactic matches."
   :type '(repeat (function :tag "Mode"))
   :group 'hyperbole-commands)
 
@@ -586,17 +592,20 @@ If an error occurs during syntax scanning, it returns 
nil."
 
 (defun hui-select-at-delimited-thing-p ()
   "Returns non-nil if point is at a markup pair, list, array/vector, set, 
comment or string, else nil.
-The non-nil value returned is the function to call to select that syntactic 
unit."
-  (setq hkey-value (hui-select-delimited-thing-call #'hui-select-at-p))
-  (cond ((eq hkey-value 'hui-select-punctuation)
-        (if (hui-select-comment (point))
-            (setq hkey-value #'hui-select-comment)
-          ;; Else here used to be `hkey-value' but then we are returning a
-          ;; value for any punctuation character without knowing if
-          ;; it is part of a delimited thing.  Nil should be the
-          ;; right thing here but need to test this.
-          nil))
-       (t hkey-value)))
+The non-nil value returned is the function to call to select that syntactic 
unit.
+
+Ignores any match if on an Emacs button and instead returns nil."
+  (unless (button-at (point))
+    (setq hkey-value (hui-select-delimited-thing-call #'hui-select-at-p))
+    (cond ((eq hkey-value 'hui-select-punctuation)
+          (if (hui-select-comment (point))
+              (setq hkey-value #'hui-select-comment)
+            ;; Else here used to be `hkey-value' but then we are returning a
+            ;; value for any punctuation character without knowing if
+            ;; it is part of a delimited thing.  Nil should be the
+            ;; right thing here.
+            nil))
+         (t hkey-value))))
 
 (defun hui-select-delimited-thing ()
   "Selects a markup pair, list, array/vector, set, comment or string at point 
and returns t, else nil."
@@ -692,7 +701,7 @@ mail and news reply modes."
 (defun hui-select-delimited-thing-call (func)
   "Selects a markup pair, list, vector/array, set, comment or string at point 
and returns non-nil, else nil.
 The non-nil value returned is the function to call to select that syntactic 
unit."
-  (unless (and (memq major-mode '(emacs-lisp-mode lisp-mode 
lisp-interaction-mode slime-mode cider-mode))
+  (unless (and (memq major-mode hui-select-ignore-quoted-sexp-modes)
               ;; Ignore quoted identifier sexpressions, like #'function
               (char-after) (memq (char-after) '(?# ?\')))
       (let ((hui-select-char-p)
diff --git a/hui-treemacs.el b/hui-treemacs.el
new file mode 100644
index 0000000..a33b7ce
--- /dev/null
+++ b/hui-treemacs.el
@@ -0,0 +1,221 @@
+;;; hui-treemacs.el --- Hyperbole Smart Key support for the Treemacs file 
manager package
+;;
+;; Author:       Bob Weiner
+;;
+;; Orig-Date:    19-Nov-17
+;;
+;; Copyright (C) 2017  Free Software Foundation, Inc.
+;; See the "HY-COPY" file for license information.
+;;
+;; This file is part of GNU Hyperbole.
+
+;;; Commentary:
+
+;;; Code:
+;;; ************************************************************************
+;;; Other required Elisp libraries
+;;; ************************************************************************
+
+(eval-and-compile (require 'treemacs nil t))
+
+;;; ************************************************************************
+;;; smart-treemacs functions
+;;; ************************************************************************
+
+;;;###autoload
+(defun smart-treemacs ()
+  "Uses a single key or mouse key to manipulate directory entries.
+
+Invoked via a key press when in treemacs-mode.  It assumes that its
+caller has already checked that the key was pressed in an appropriate buffer
+and has moved the cursor there.
+
+If key is pressed:
+ (1) on an entry icon, the treemacs TAB command is run to expand and
+     collapse the entry;
+ (2) elsewhere within an entry line, the item is displayed for editing,
+     normally in another window;
+ (3) on the first line of the buffer (other than the end of line),
+     dired is run on the current directory of this Treemacs;
+ (4) at the end of the first or last line of the buffer,
+     this Treemacs invocation is quit."
+
+  (interactive)
+  (cond ((first-line-p)
+        (if (eolp)
+            (treemacs-toggle)
+          (hact 'link-to-directory default-directory)))
+       ((and (last-line-p) (eolp))
+        (treemacs-toggle))
+       (t (let ((over-icon (and (treemacs--current-button)
+                                (= (point) (- (button-start 
(treemacs--current-button)) 2))))
+                (result (treemacs-node-buffer-and-position)))
+            (if (and (not over-icon) result (or (bufferp result) (listp 
result)))
+                (if (listp result)
+                    (hact 'link-to-buffer-tmp (seq-elt result 0) (seq-elt 
result 1))
+                  ;; (bufferp result)
+                  (hact 'link-to-buffer-tmp result))
+              (treemacs-push-button current-prefix-arg))))))
+
+;;;###autoload
+(defun smart-treemacs-modeline ()
+  "Toggle display of Treemacs file viewer based on Smart Action Key click on a 
modeline.
+
+When pressed on the Treemacs buffer modeline or Treemacs is displaying
+the default directory of the buffer modeline clicked upon, then
+quit/hide the Treemacs window.  Otherwise, display the Treemacs window
+with the default directory of the buffer modeline clicked upon.
+
+Suitable for use as a value of `action-key-modeline-buffer-id-function'."
+  (if (fboundp 'treemacs)
+      (progn
+       (require 'treemacs)
+       (cond
+        ;; Clicked on Treemacs buffer id
+        ((if action-key-depress-window
+             (treemacs--is-treemacs-window? action-key-depress-window)
+           (string-match " Treemacs " (format-mode-line mode-line-format)))
+         ;; Quit/hide treemacs.
+         (treemacs-toggle))
+        ;;
+        ;; Treemacs is visible and displaying the same dir as
+        ;; the default dir of the clicked on modeline.
+        ((and (treemacs--buffer-exists?)
+              (string-equal (expand-file-name default-directory)
+                            (with-current-buffer (treemacs--buffer-exists?)
+                              default-directory)))
+         ;; Quit/hide treemacs.
+         (treemacs-toggle))
+        ;;
+        ;; Otherwise, invoke treemacs on the default dir of the clicked on 
modeline.
+        (t (treemacs))))
+    (error "(smart-treemacs-modeline): Treemacs package is not installed")))
+
+;;; ************************************************************************
+;;; treemacs function updates
+;;; ************************************************************************
+
+;; Add this in treemacs-tags.el
+(defun treemacs--imenu-tag-noselect (file tag-path)
+  "Return a list of the source buffer for FILE and the position of the tag 
from TAG-PATH."
+  (let ((tag (car tag-path))
+        (path (cdr tag-path)))
+    (condition-case e
+        (progn
+          (find-file-noselect file)
+          (let ((index (treemacs--get-imenu-index file)))
+            (dolist (path-item path)
+              (setq index (cdr (assoc path-item index))))
+            (-let [(buf pos) (treemacs--pos-from-marker
+                              (cdr (--first
+                                    (equal (car it) tag)
+                                    index)))]
+              ;; some imenu implementations, like markdown, will only provide
+              ;; a raw buffer position (an int) to move to
+             (list (or buf (get-file-buffer file)) pos))))
+      (error
+       (treemacs--log "Something went wrong when finding tag '%s': %s"
+                      (propertize tag 'face 'treemacs-tags-face)
+                      e)))))
+
+;; Add this in treemacs-tags.el
+(defun treemacs--tag-noselect (btn)
+  "Return list of tag source buffer and position for BTN for future display."
+  (require 'hmouse-tag) ;; from GNU Hyperbole, adds xref convenience functions 
used herein
+  (-let [(tag-buf tag-pos)
+         (treemacs--with-button-buffer btn
+                                      (-> btn (button-get 'marker) 
(treemacs--pos-from-marker)))]
+    (if tag-buf
+       (list tag-buf tag-pos)
+      (-pcase treemacs-goto-tag-strategy
+        [`refetch-index
+         (let (file tag-path)
+           (with-current-buffer (marker-buffer btn)
+             (setq file (treemacs--nearest-path btn)
+                   tag-path (treemacs--tags-path-of btn)))
+           (treemacs--imenu-tag-noselect file tag-path))]
+        [`call-xref
+        (let ((xref (xref-definition
+                     (treemacs--with-button-buffer btn
+                                                   (treemacs--get-label-of 
btn)))))
+          (when xref
+            (list (xref-item-buffer xref) (xref-item-position xref))))]
+        [`issue-warning
+         (treemacs--log "Tag '%s' is located in a buffer that does not exist."
+                        (propertize (treemacs--with-button-buffer btn 
(treemacs--get-label-of btn)) 'face 'treemacs-tags-face))]
+        [_ (error "[Treemacs] '%s' is an invalid value for 
treemacs-goto-tag-strategy" treemacs-goto-tag-strategy)]))))
+
+;; Replace this macro in treemacs-impl.el
+(cl-defmacro treemacs--execute-button-action
+    (&key save-window ensure-window-split split-function window dir-action 
file-action tag-action no-match-explanation)
+  "Infrastructure macro for setting up actions on different button states.
+Fetches the currently selected button and verifies it's in the correct state
+based on the given state actions.
+If it isn't it will log NO-MATCH-EXPLANATION, if it is it selects WINDOW (or
+`next-window' if none is given) and splits it with SPLIT-FUNCTION if given.
+DIR-ACTION, FILE-ACTION, and TAG-ACTION are inserted into a `pcase' statement
+matching the buttons state.
+If ENSURE-WINDOW-SPLIT is t treemacs will vertically split the window if
+treemacs is the only window to make sure a buffer is opened next to it, not
+under or below it."
+  (let ((valid-states (list)))
+    (when dir-action
+      (push 'dir-node-open valid-states)
+      (push 'dir-node-closed valid-states))
+    (when file-action
+      (push 'file-node-open valid-states)
+      (push 'file-node-closed valid-states))
+    (when tag-action
+      (push 'tag-node valid-states))
+    `(-when-let (btn (treemacs--current-button))
+       (treemacs--without-following
+        (let* ((state (button-get btn 'state))
+               (current-window (selected-window)))
+          (if (not (memq state ',valid-states))
+              (treemacs--log "%s" ,no-match-explanation)
+            (progn
+              ,@(if ensure-window-split
+                    `((when (one-window-p)
+                        (save-selected-window
+                          (split-window nil nil (if (eq 'left 
treemacs-position) 'right 'left))))))
+              (select-window (or ,window (next-window (selected-window) nil 
nil)))
+              ,@(if split-function
+                    `((funcall ,split-function)
+                      (other-window 1)))
+             ;; Return the result of the action
+              (prog1 (pcase state
+                       ,@(when dir-action
+                          `(((or `dir-node-open `dir-node-closed)
+                             ,dir-action)))
+                       ,@(when file-action
+                          `(((or `file-node-open `file-node-closed)
+                             ,file-action)))
+                       ,@(when tag-action
+                          `((`tag-node
+                             ,tag-action)))
+                       (_ (error "No match achieved even though button's state 
%s was part of the set of valid states %s"
+                                state ',valid-states)))
+               (when ,save-window
+                  (select-window current-window))))))))))
+
+;; Reload source form of this library so updated version of
+;; `treemacs--execute-button-action' above is used throughout.
+(load "treemacs-interface.el")
+
+;; Add to treemacs-interface.el.
+;;;###autoload
+(defun treemacs-node-buffer-and-position (&optional arg)
+  "Return source buffer or list of buffer and position for the current node 
for future display.
+Stay in the selected window and ignore any prefix argument ARG."
+  (interactive "P")
+  (let ((treemacs--no-messages t))
+    (treemacs--execute-button-action
+     :file-action (find-file-noselect (treemacs--safe-button-get btn 
'abs-path))
+     :dir-action (find-file-noselect (treemacs--safe-button-get btn 'abs-path))
+     :tag-action (treemacs--tag-noselect btn)
+     :window (selected-window)
+     :save-window t
+     :ensure-window-split nil
+     :no-match-explanation "")))
+
+(provide 'hytreemacs)
diff --git a/hui-window.el b/hui-window.el
index d8dd4ad..63a6fd5 100644
--- a/hui-window.el
+++ b/hui-window.el
@@ -127,7 +127,11 @@ of screen control commands."
                                                ;; release window.
                                                (prog1 (current-buffer)
                                                  (hmouse-pulse-buffer)
-                                                 (bury-buffer))))))
+                                                 (bury-buffer))))
+     (treemacs-mode (if (fboundp 'treemacs-node-buffer-and-position)
+                       (treemacs-node-buffer-and-position))
+                   (error "(hmouse-item-to-window): %s the treemacs package 
for item dragging support"
+                          (if (fboundp 'treemacs) "Update" "Install")))))
   "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
@@ -451,12 +455,12 @@ Signals an error if the buffer is read-only."
   "Returns non-nil if last Action Key depress and release were in different 
frames.
 If free variable `assist-flag' is non-nil, uses Assist Key."
   (if assist-flag
-      (and (window-valid-p assist-key-depress-window)
-          (window-valid-p assist-key-release-window)
+      (and (window-live-p assist-key-depress-window)
+          (window-live-p assist-key-release-window)
           (not (eq (window-frame assist-key-depress-window)
                    (window-frame assist-key-release-window))))
-    (and (window-valid-p action-key-depress-window)
-        (window-valid-p action-key-release-window)
+    (and (window-live-p action-key-depress-window)
+        (window-live-p action-key-release-window)
         (not (eq (window-frame action-key-depress-window)
                  (window-frame action-key-release-window))))))
 
@@ -464,27 +468,31 @@ If free variable `assist-flag' is non-nil, uses Assist 
Key."
   "Returns non-nil if last Action Key depress and release were in different 
windows.
 If free variable `assist-flag' is non-nil, uses Assist Key."
   (if assist-flag
-      (and assist-key-depress-window assist-key-release-window
+      (and (window-live-p assist-key-depress-window)
+          (window-live-p assist-key-release-window)
           (not (eq assist-key-depress-window
                    assist-key-release-window)))
-    (and action-key-depress-window action-key-release-window
+    (and (window-live-p action-key-depress-window)
+        (window-live-p action-key-release-window)
         (not (eq action-key-depress-window action-key-release-window)))))
 
 (defun hmouse-drag-same-window ()
   "Returns non-nil if last Action Key depress and release were in the same 
window.
 If free variable `assist-flag' is non-nil, uses Assist Key."
   (if assist-flag
-      (and assist-key-depress-window assist-key-release-window
+      (and (window-live-p assist-key-depress-window)
+          (window-live-p assist-key-release-window)
           (eq assist-key-depress-window assist-key-release-window))
-    (and action-key-depress-window action-key-release-window
+    (and (window-live-p action-key-depress-window)
+        (window-live-p action-key-release-window)
         (eq action-key-depress-window action-key-release-window))))
 
 (defun hmouse-drag-outside-all-windows ()
   "Returns non-nil if last Action Key release was outside of an Emacs window.
 If free variable `assist-flag' is non-nil, uses Assist Key."
-  (null (if assist-flag
-           assist-key-release-window
-         action-key-release-window)))
+  (if assist-flag
+      (and (window-live-p assist-key-depress-window) (not 
assist-key-release-window))
+    (and (window-live-p action-key-depress-window) (not 
action-key-release-window))))
 
 (defun hmouse-drag-item-to-display (&optional new-window)
   "Depress on a buffer name in Buffer-menu/ibuffer mode or on a file/directory 
in dired mode and release where the item is to be displayed.
@@ -501,7 +509,7 @@ not on an item, then nil.
 
 See `hmouse-drag-item-mode-forms' for how to allow for draggable
 items in other modes."
-  (let* ((buf (and action-key-depress-window (window-buffer 
action-key-depress-window)))
+  (let* ((buf (and (window-live-p action-key-depress-window) (window-buffer 
action-key-depress-window)))
         (mode (and buf (cdr (assq 'major-mode (buffer-local-variables buf))))))
     (when (and buf (with-current-buffer buf
                     ;; Point must be on an item, not after one
@@ -621,9 +629,9 @@ If free variable `assist-flag' is non-nil, uses Assist Key."
                                action-key-release-args))
                (wd (smart-window-of-coords depress-args))
                (wr (smart-window-of-coords release-args))
-               (right-side-ln (and wd (1- (nth 2 (window-edges wd)))))
-               (last-press-x   (and wd depress-args (hmouse-x-coord 
depress-args)))
-               (last-release-x (and wr release-args (hmouse-x-coord 
release-args))))
+               (right-side-ln (and (window-live-p wd) (1- (nth 2 (window-edges 
wd)))))
+               (last-press-x   (and (window-live-p wd) depress-args 
(hmouse-x-coord depress-args)))
+               (last-release-x (and (window-live-p wr) release-args 
(hmouse-x-coord release-args))))
           (and last-press-x last-release-x right-side-ln
                (/= last-press-x last-release-x)
                (not (<= (abs (- right-side-ln (frame-width))) 5))
@@ -826,8 +834,9 @@ item, this moves the menu buffer itself to the release 
location."
         ;; create a new frame and window.
         (w2 (or action-key-release-window (frame-selected-window 
(hycontrol-make-frame))))
         (buf-name)
-        (w1-ref))
-    (when (and w1 w2)
+        (w1-ref)
+        (pos))
+    (when (and (window-live-p w1) (window-live-p w2))
       (unwind-protect
          (progn (select-window w1)
                 (if (eq (posn-area (event-start action-key-depress-args)) 
'header-line)
@@ -844,18 +853,25 @@ item, this moves the menu buffer itself to the release 
location."
        (when (and new-window action-key-release-window)
          (hmouse-split-window))))
     (unwind-protect
-       (cond ((not w1-ref)
-              (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)
-              (set-buffer w1-ref)
-              (hmouse-pulse-buffer))
-             ((and (stringp w1-ref) (file-readable-p w1-ref))
-              (set-window-buffer w2 (set-buffer (find-file-noselect w1-ref)))
-              (hmouse-pulse-buffer))
-             (t (error "(hmouse-item-to-window): Cannot find or read `%s'" 
w1-ref)))
+       (progn
+         (when (and w1-ref (not (stringp w1-ref)) (sequencep w1-ref))
+           ;; w1-ref is a list or vector of `buffer' and `position' elements.
+           (setq pos (seq-elt w1-ref 1)
+                 w1-ref (seq-elt w1-ref 0)))
+         (cond ((not w1-ref)
+                (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)
+                (set-buffer w1-ref))
+               ((and (stringp w1-ref) (file-readable-p w1-ref))
+                (set-window-buffer w2 (set-buffer (find-file-noselect 
w1-ref))))
+               (t (error "(hmouse-item-to-window): Cannot find or read `%s'" 
w1-ref)))
+         (if pos
+             (progn (goto-char pos)
+                    (hmouse-pulse-line))
+           (hmouse-pulse-buffer)))
       ;; If helm is active, end in the minibuffer window.
       (if (smart-helm-alive-p)
          (smart-helm-to-minibuffer)))))
@@ -881,7 +897,7 @@ If the Action Key is:
     (if w (select-window w))
     (cond ((hmouse-modeline-click)
           (cond ((hmouse-emacs-at-modeline-buffer-id-p)
-                 (dired-jump))
+                 (funcall action-key-modeline-buffer-id-function))
                 ((hmouse-release-left-edge) (bury-buffer))
                 ((hmouse-release-right-edge)
                  (if (eq major-mode 'Info-mode)
@@ -925,18 +941,16 @@ If the Assist Key is:
          (t (hmouse-modeline-resize-window)))))
 
 (defun hmouse-modeline-click ()
-  "Returns non-nil if last Smart Key depress and release were at a single 
point in a modeline."
+  "Returns non-nil if last Smart Key depress and release were at a single 
point (less than drag tolerance apart) in a modeline."
   (and (hmouse-modeline-release) (hmouse-modeline-depress)
-       (equal (if assist-flag assist-key-depress-position 
action-key-depress-position)
-             (if assist-flag assist-key-release-position 
action-key-release-position))))
+       (not (or (hmouse-drag-horizontally) (hmouse-drag-vertically) 
(hmouse-drag-diagonally)))))
 
 (defun hmouse-emacs-modeline-event-p (event)
   "GNU Emacs: Returns non-nil if EVENT happened on a window mode line."
   (or (and (eventp event) (eq (posn-area (event-start event)) 'mode-line))
       ;; If drag release was to an unselected frame mode-line, on
       ;; click-to-focus systems, the release event will not include
-      ;; the mode-line area when release was on the mode-line, so
-      ;; manually compute if that was the location.
+      ;; the mode-line area, so manually compute if that was the location.
       (let* ((w (smart-window-of-coords event))
             ;; Do all calculations in pixels if possible.
             (line-height (if w (frame-char-height (window-frame w))))
@@ -1210,7 +1224,7 @@ of the Smart Key."
       )))
 
 (defun hmouse-x-coord (args)
-  "Returns x coordinate in characters from window system dependent ARGS."
+  "Returns x coordinate in characters from window system dependent ARGS or 
nil."
   (let ((x (if (markerp args)
               (save-excursion
                 (hypb:goto-marker args)
@@ -1231,10 +1245,10 @@ of the Smart Key."
                                 ("xterm"  .  (car args))
                                 ("next"   .  (nth 1 args))
                                 )))))))
-    (if (integerp x) x (error "(hmouse-x-coord): invalid X coord: %s" x))))
+    (if (integerp x) x)))
 
 (defun hmouse-y-coord (args)
-  "Returns y coordinate in frame lines from window system dependent ARGS."
+  "Returns y coordinate in frame lines from window system dependent ARGS or 
nil."
   (let ((y (eval (cdr (assoc (hyperb:window-system)
                             '(("emacs" . (progn (if (eventp args) (setq args 
(event-start args)))
                                                 (cond ((posnp args)
@@ -1250,8 +1264,7 @@ of the Smart Key."
                               ("xterm"  .  (nth 1 args))
                               ("next"   .  (nth 2 args))
                               ))))))
-    (if (integerp y) y (error "(hmouse-y-coord): invalid Y coord: %s" y))))
-
+    (if (integerp y) y)))
 
 ;;; ************************************************************************
 ;;; Private variables
diff --git a/hui.el b/hui.el
index d1e9368..d32ea3d 100644
--- a/hui.el
+++ b/hui.el
@@ -591,12 +591,12 @@ DEFAULT-ACTYPE may be a valid symbol or symbol-name."
     ;;     Commented error out since some people want to be able to create
     ;;     buttons within files which they have purposely marked read-only.
     ;;     (setq err 
-    ;;      (format "(ebut-modify): You are not allowed to modify '%s'."
+    ;;      (format "(ebut-modify): Hyperbole lacks permission to write to 
'%s'."
     ;;              (file-name-nondirectory buffer-file-name))))
     (if buffer-read-only
        (setq err
-             (format "Button buffer '%s' is read-only.  Use {%s} to change it."
-                     (buffer-name but-buf) (hmouse-read-only-toggle-key))))
+             (format "(%s) Hyperbole button buffer '%s' cannot be edited.  Use 
{%s} to enable edits."
+                     func-name (buffer-name but-buf) 
(hmouse-read-only-toggle-key))))
     (set-buffer obuf)
     (if err (progn (pop-to-buffer but-buf) (hypb:error err)))))
 
diff --git a/hversion.el b/hversion.el
index 2e0b217..0110b88 100644
--- a/hversion.el
+++ b/hversion.el
@@ -23,7 +23,7 @@
 ;;; Public variables
 ;;; ************************************************************************
 
-(defconst hyperb:version "7.0.0" "GNU Hyperbole revision number.")
+(defconst hyperb:version "7.0.1" "GNU Hyperbole revision number.")
 
 ;;;###autoload
 (defvar hyperb:microcruft-os-p
diff --git a/hypb.el b/hypb.el
index 673bed9..0076de6 100644
--- a/hypb.el
+++ b/hypb.el
@@ -220,7 +220,7 @@ Global keymap is used unless optional KEYMAP is given."
 
 (defun hypb:error (&rest args)
   "Signals an error typically to be caught by `hyperbole'."
-  (let ((msg (apply 'format args)))
+  (let ((msg (if (< (length args) 2) (car args) (apply 'format args))))
     (put 'error 'error-message msg)
     (error msg)))
 
diff --git a/hyperbole-pkg.el b/hyperbole-pkg.el
index 8aa4b58..b9e11e4 100644
--- a/hyperbole-pkg.el
+++ b/hyperbole-pkg.el
@@ -1,5 +1,5 @@
 ;; -*- no-byte-compile: t -*-
-(define-package "hyperbole" "7.0.0" "GNU Hyperbole: The Everyday Hypertextual 
Information Manager"
+(define-package "hyperbole" "7.0.1" "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 1a617e2..5834858 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -6,7 +6,7 @@
 ;; Maintainer:       Bob Weiner <address@hidden> and Mats Lidell 
<address@hidden>
 ;; Created:          06-Oct-92 at 11:52:51
 ;; Released:         24-Oct-17
-;; Version:          7.0.0
+;; Version:          7.0.1
 ;; Keywords:         comm, convenience, files, frames, hypermedia, languages, 
mail, matching, mouse, multimedia, outlines, tools, wp
 ;; Package:          hyperbole
 ;; Package-Requires: ((emacs "24.4"))
diff --git a/hyrolo.el b/hyrolo.el
index f8b6fc3..00e3f39 100644
--- a/hyrolo.el
+++ b/hyrolo.el
@@ -79,7 +79,7 @@ executable must be found as well (for Oauth security)."
 
 ;;;###autoload
 (defun hyrolo-initialize-file-list ()
-  "Initialize the list of files to use for HyRolo searches."
+  "Initialize the list of files used for HyRolo searches."
   (interactive)
   (let* ((gcontacts (if (hyrolo-google-contacts-p) 
google-contacts-buffer-name))
         (ms "c:/_rolo.otl")
@@ -89,9 +89,10 @@ executable must be found as well (for Oauth security)."
                                 (list ms bbdb-file gcontacts)
                               (list  "~/.rolo.otl" bbdb-file gcontacts))
                           (if hyperb:microcruft-os-p (list ms gcontacts) (list 
unix gcontacts))))))
-      (when (called-interactively-p 'interactive)
-       (message "HyRolo Search List: %S" list))
-      list))
+    (setq hyrolo-file-list list)
+    (when (called-interactively-p 'interactive)
+      (message "HyRolo Search List: %S" list))
+    list))
 
 (defvar hyrolo-file-list (hyrolo-initialize-file-list)
   "*List of files containing rolo entries.
@@ -990,8 +991,8 @@ Returns number of matching entries found."
 ;; Derived from google-contacts.el.
 (defun hyrolo-google-contacts-insert-generic-list (items title &optional 
get-value)
   "Insert a text for rendering ITEMS with TITLE.
-Use GET-VALUE to get the value from the cdr of the item,
-otherwise just put the cdr of item."
+Use GET-VALUE fuction to retrieve the value from the cdr of the item,
+otherwise just use the cdr of the item."
   (when items
     (insert "\n" (google-contacts-margin-element) (concat title ":\n"))
     (dolist (item items)
@@ -1008,15 +1009,19 @@ otherwise just put the cdr of item."
    (list (read-string "Look for: " (car google-contacts-history)
                       'google-contacts-history)
          current-prefix-arg))
-  (let ((buffer (google-contacts-make-buffer))
-        (token (google-contacts-oauth-token))
-        (google-contacts-expire-time (if force-refresh 0 
google-contacts-expire-time))
-        (inhibit-read-only t))
+  ;; Without this first let binding, the user would be prompted for
+  ;; his passphrase on every hyrolo search.  This way it is cached.
+  (let* ((plstore-cache-passphrase-for-symmetric-encryption t)
+        (buffer (google-contacts-make-buffer))
+         (token (google-contacts-oauth-token))
+         (google-contacts-expire-time (if force-refresh 0 
google-contacts-expire-time))
+         (inhibit-read-only t))
     (with-current-buffer buffer
       (setq google-contacts-query-string query-string)
-      (hyrolo-google-contacts-insert-data (xml-get-children 
(google-contacts-data query-string token)
-                                                           'entry)
-                                         token "* "))))
+      (hyrolo-google-contacts-insert-data
+       (xml-get-children (google-contacts-data query-string token)
+                        'entry)
+       token "* "))))
 
 ;;; ************************************************************************
 ;;; Public functions
diff --git a/man/hyperbole.html b/man/hyperbole.html
index a774f55..fffb0b2 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 7.0.0, Published November 15, 2017).
+(Edition 7.0.1, Published November 21, 2017).
 
 Copyright (C) 1989-2017  Free Software Foundation, Inc.
 
@@ -146,6 +146,7 @@ ul.no-bullet {list-style: none}
       <li><a name="toc-Displaying-Buffers-1" 
href="#Displaying-Buffers">2.7.4.2 Displaying Buffers</a></li>
       <li><a name="toc-Cloning-Windows-1" href="#Cloning-Windows">2.7.4.3 
Cloning Windows</a></li>
       <li><a name="toc-Displaying-File-and-Buffer-Items-1" 
href="#Displaying-File-and-Buffer-Items">2.7.4.4 Displaying File and Buffer 
Items</a></li>
+      <li><a name="toc-Keyboard-Drags-1" href="#Keyboard-Drags">2.7.4.5 
Keyboard Drags</a></li>
     </ul></li>
   </ul></li>
 </ul></li>
@@ -259,46 +260,47 @@ ul.no-bullet {list-style: none}
   </ul></li>
   <li><a name="toc-Smart-Keyboard-Keys-1" href="#Smart-Keyboard-Keys">E.2 
Smart Keyboard Keys</a>
   <ul class="no-bullet">
-    <li><a name="toc-Smart-Key-_002d-Emacs-Pushbuttons-1" 
href="#Smart-Key-_002d-Emacs-Pushbuttons">E.2.1 Smart Key - Emacs 
Pushbuttons</a></li>
-    <li><a name="toc-Smart-Key-_002d-Argument-Completion-1" 
href="#Smart-Key-_002d-Argument-Completion">E.2.2 Smart Key - Argument 
Completion</a></li>
-    <li><a name="toc-Smart-Key-_002d-ID-Edit-Mode-1" 
href="#Smart-Key-_002d-ID-Edit-Mode">E.2.3 Smart Key - ID Edit Mode</a></li>
-    <li><a 
name="toc-Smart-Key-_002d-Emacs-Cross_002dreferences-_0028Xrefs_0029-1" 
href="#Smart-Key-_002d-Emacs-Cross_002dreferences-_0028Xrefs_0029">E.2.4 Smart 
Key - Emacs Cross-references (Xrefs)</a></li>
-    <li><a name="toc-Smart-Key-_002d-Smart-Scrolling-1" 
href="#Smart-Key-_002d-Smart-Scrolling">E.2.5 Smart Key - Smart 
Scrolling</a></li>
-    <li><a name="toc-Smart-Key-_002d-Smart-Menus-1" 
href="#Smart-Key-_002d-Smart-Menus">E.2.6 Smart Key - Smart Menus</a></li>
-    <li><a name="toc-Smart-Key-_002d-Dired-Mode-1" 
href="#Smart-Key-_002d-Dired-Mode">E.2.7 Smart Key - Dired Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Hyperbole-Buttons-1" 
href="#Smart-Key-_002d-Hyperbole-Buttons">E.2.8 Smart Key - Hyperbole 
Buttons</a></li>
-    <li><a name="toc-Smart-Key-_002d-View-Mode-1" 
href="#Smart-Key-_002d-View-Mode">E.2.9 Smart Key - View Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Delimited-Things-1" 
href="#Smart-Key-_002d-Delimited-Things">E.2.10 Smart Key - Delimited 
Things</a></li>
-    <li><a name="toc-Smart-Key-_002d-The-Koutliner-1" 
href="#Smart-Key-_002d-The-Koutliner">E.2.11 Smart Key - The Koutliner</a></li>
-    <li><a name="toc-Smart-Key-_002d-RDB-Mode-1" 
href="#Smart-Key-_002d-RDB-Mode">E.2.12 Smart Key - RDB Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Help-Buffers-1" 
href="#Smart-Key-_002d-Help-Buffers">E.2.13 Smart Key - Help Buffers</a></li>
-    <li><a name="toc-Smart-Key-_002d-Pages-Directory-Mode-1" 
href="#Smart-Key-_002d-Pages-Directory-Mode">E.2.14 Smart Key - Pages Directory 
Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Identifier-Menu-Mode-1" 
href="#Smart-Key-_002d-Identifier-Menu-Mode">E.2.15 Smart Key - Identifier Menu 
Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-C-Source-Code-1" 
href="#Smart-Key-_002d-C-Source-Code">E.2.16 Smart Key - C Source Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-C_002b_002b-Source-Code-1" 
href="#Smart-Key-_002d-C_002b_002b-Source-Code">E.2.17 Smart Key - C++ Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Assembly-Source-Code-1" 
href="#Smart-Key-_002d-Assembly-Source-Code">E.2.18 Smart Key - Assembly Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Lisp-Source-Code-1" 
href="#Smart-Key-_002d-Lisp-Source-Code">E.2.19 Smart Key - Lisp Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Java-Source-Code-1" 
href="#Smart-Key-_002d-Java-Source-Code">E.2.20 Smart Key - Java Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-JavaScript-Source-Code-1" 
href="#Smart-Key-_002d-JavaScript-Source-Code">E.2.21 Smart Key - JavaScript 
Source Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Python-Source-Code-1" 
href="#Smart-Key-_002d-Python-Source-Code">E.2.22 Smart Key - Python Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Objective_002dC-Source-Code-1" 
href="#Smart-Key-_002d-Objective_002dC-Source-Code">E.2.23 Smart Key - 
Objective-C Source Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Fortran-Source-Code-1" 
href="#Smart-Key-_002d-Fortran-Source-Code">E.2.24 Smart Key - Fortran Source 
Code</a></li>
-    <li><a name="toc-Smart-Key-_002d-Occurrence-Matches-1" 
href="#Smart-Key-_002d-Occurrence-Matches">E.2.25 Smart Key - Occurrence 
Matches</a></li>
-    <li><a name="toc-Smart-Key-_002d-Calendar-Mode-1" 
href="#Smart-Key-_002d-Calendar-Mode">E.2.26 Smart Key - Calendar Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Man-Page-Apropos-1" 
href="#Smart-Key-_002d-Man-Page-Apropos">E.2.27 Smart Key - Man Page 
Apropos</a></li>
-    <li><a name="toc-Smart-Key-_002d-Emacs-Outline-Mode-1" 
href="#Smart-Key-_002d-Emacs-Outline-Mode">E.2.28 Smart Key - Emacs Outline 
Mode</a></li>
-    <li><a name="toc-Smart-Key-_002d-Info-Manuals-1" 
href="#Smart-Key-_002d-Info-Manuals">E.2.29 Smart Key - Info Manuals</a></li>
-    <li><a name="toc-Smart-Key-_002d-Email-Composers-1" 
href="#Smart-Key-_002d-Email-Composers">E.2.30 Smart Key - Email 
Composers</a></li>
-    <li><a name="toc-Smart-Key-_002d-GNUS-Newsreader-1" 
href="#Smart-Key-_002d-GNUS-Newsreader">E.2.31 Smart Key - GNUS 
Newsreader</a></li>
-    <li><a name="toc-Smart-Key-_002d-Buffer-Menus-1" 
href="#Smart-Key-_002d-Buffer-Menus">E.2.32 Smart Key - Buffer Menus</a></li>
-    <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-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-Image-Thumbnails-1" 
href="#Smart-Key-_002d-Image-Thumbnails">E.2.37 Smart Key - Image 
Thumbnails</a></li>
-    <li><a name="toc-Smart-Key-_002d-Gomoku-Game-1" 
href="#Smart-Key-_002d-Gomoku-Game">E.2.38 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.39 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.40 Smart Key - Default 
Context</a></li>
+    <li><a name="toc-Smart-Key-_002d-Treemacs-1" 
href="#Smart-Key-_002d-Treemacs">E.2.1 Smart Key - Treemacs</a></li>
+    <li><a name="toc-Smart-Key-_002d-Emacs-Pushbuttons-1" 
href="#Smart-Key-_002d-Emacs-Pushbuttons">E.2.2 Smart Key - Emacs 
Pushbuttons</a></li>
+    <li><a name="toc-Smart-Key-_002d-Argument-Completion-1" 
href="#Smart-Key-_002d-Argument-Completion">E.2.3 Smart Key - Argument 
Completion</a></li>
+    <li><a name="toc-Smart-Key-_002d-ID-Edit-Mode-1" 
href="#Smart-Key-_002d-ID-Edit-Mode">E.2.4 Smart Key - ID Edit Mode</a></li>
+    <li><a 
name="toc-Smart-Key-_002d-Emacs-Cross_002dreferences-_0028Xrefs_0029-1" 
href="#Smart-Key-_002d-Emacs-Cross_002dreferences-_0028Xrefs_0029">E.2.5 Smart 
Key - Emacs Cross-references (Xrefs)</a></li>
+    <li><a name="toc-Smart-Key-_002d-Smart-Scrolling-1" 
href="#Smart-Key-_002d-Smart-Scrolling">E.2.6 Smart Key - Smart 
Scrolling</a></li>
+    <li><a name="toc-Smart-Key-_002d-Smart-Menus-1" 
href="#Smart-Key-_002d-Smart-Menus">E.2.7 Smart Key - Smart Menus</a></li>
+    <li><a name="toc-Smart-Key-_002d-Dired-Mode-1" 
href="#Smart-Key-_002d-Dired-Mode">E.2.8 Smart Key - Dired Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Hyperbole-Buttons-1" 
href="#Smart-Key-_002d-Hyperbole-Buttons">E.2.9 Smart Key - Hyperbole 
Buttons</a></li>
+    <li><a name="toc-Smart-Key-_002d-View-Mode-1" 
href="#Smart-Key-_002d-View-Mode">E.2.10 Smart Key - View Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Delimited-Things-1" 
href="#Smart-Key-_002d-Delimited-Things">E.2.11 Smart Key - Delimited 
Things</a></li>
+    <li><a name="toc-Smart-Key-_002d-The-Koutliner-1" 
href="#Smart-Key-_002d-The-Koutliner">E.2.12 Smart Key - The Koutliner</a></li>
+    <li><a name="toc-Smart-Key-_002d-RDB-Mode-1" 
href="#Smart-Key-_002d-RDB-Mode">E.2.13 Smart Key - RDB Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Help-Buffers-1" 
href="#Smart-Key-_002d-Help-Buffers">E.2.14 Smart Key - Help Buffers</a></li>
+    <li><a name="toc-Smart-Key-_002d-Pages-Directory-Mode-1" 
href="#Smart-Key-_002d-Pages-Directory-Mode">E.2.15 Smart Key - Pages Directory 
Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Identifier-Menu-Mode-1" 
href="#Smart-Key-_002d-Identifier-Menu-Mode">E.2.16 Smart Key - Identifier Menu 
Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-C-Source-Code-1" 
href="#Smart-Key-_002d-C-Source-Code">E.2.17 Smart Key - C Source Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-C_002b_002b-Source-Code-1" 
href="#Smart-Key-_002d-C_002b_002b-Source-Code">E.2.18 Smart Key - C++ Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Assembly-Source-Code-1" 
href="#Smart-Key-_002d-Assembly-Source-Code">E.2.19 Smart Key - Assembly Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Lisp-Source-Code-1" 
href="#Smart-Key-_002d-Lisp-Source-Code">E.2.20 Smart Key - Lisp Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Java-Source-Code-1" 
href="#Smart-Key-_002d-Java-Source-Code">E.2.21 Smart Key - Java Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-JavaScript-Source-Code-1" 
href="#Smart-Key-_002d-JavaScript-Source-Code">E.2.22 Smart Key - JavaScript 
Source Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Python-Source-Code-1" 
href="#Smart-Key-_002d-Python-Source-Code">E.2.23 Smart Key - Python Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Objective_002dC-Source-Code-1" 
href="#Smart-Key-_002d-Objective_002dC-Source-Code">E.2.24 Smart Key - 
Objective-C Source Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Fortran-Source-Code-1" 
href="#Smart-Key-_002d-Fortran-Source-Code">E.2.25 Smart Key - Fortran Source 
Code</a></li>
+    <li><a name="toc-Smart-Key-_002d-Occurrence-Matches-1" 
href="#Smart-Key-_002d-Occurrence-Matches">E.2.26 Smart Key - Occurrence 
Matches</a></li>
+    <li><a name="toc-Smart-Key-_002d-Calendar-Mode-1" 
href="#Smart-Key-_002d-Calendar-Mode">E.2.27 Smart Key - Calendar Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Man-Page-Apropos-1" 
href="#Smart-Key-_002d-Man-Page-Apropos">E.2.28 Smart Key - Man Page 
Apropos</a></li>
+    <li><a name="toc-Smart-Key-_002d-Emacs-Outline-Mode-1" 
href="#Smart-Key-_002d-Emacs-Outline-Mode">E.2.29 Smart Key - Emacs Outline 
Mode</a></li>
+    <li><a name="toc-Smart-Key-_002d-Info-Manuals-1" 
href="#Smart-Key-_002d-Info-Manuals">E.2.30 Smart Key - Info Manuals</a></li>
+    <li><a name="toc-Smart-Key-_002d-Email-Composers-1" 
href="#Smart-Key-_002d-Email-Composers">E.2.31 Smart Key - Email 
Composers</a></li>
+    <li><a name="toc-Smart-Key-_002d-GNUS-Newsreader-1" 
href="#Smart-Key-_002d-GNUS-Newsreader">E.2.32 Smart Key - GNUS 
Newsreader</a></li>
+    <li><a name="toc-Smart-Key-_002d-Buffer-Menus-1" 
href="#Smart-Key-_002d-Buffer-Menus">E.2.33 Smart Key - Buffer Menus</a></li>
+    <li><a name="toc-Smart-Key-_002d-Tar-File-Mode-1" 
href="#Smart-Key-_002d-Tar-File-Mode">E.2.34 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.35 Smart Key - Man Pages</a></li>
+    <li><a name="toc-Smart-Key-_002d-WWW-URLs-1" 
href="#Smart-Key-_002d-WWW-URLs">E.2.36 Smart Key - WWW URLs</a></li>
+    <li><a name="toc-Smart-Key-_002d-HyRolo-Match-Buffers-1" 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">E.2.37 Smart Key - HyRolo Match 
Buffers</a></li>
+    <li><a name="toc-Smart-Key-_002d-Image-Thumbnails-1" 
href="#Smart-Key-_002d-Image-Thumbnails">E.2.38 Smart Key - Image 
Thumbnails</a></li>
+    <li><a name="toc-Smart-Key-_002d-Gomoku-Game-1" 
href="#Smart-Key-_002d-Gomoku-Game">E.2.39 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.40 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.41 Smart Key - Default 
Context</a></li>
   </ul></li>
 </ul></li>
 <li><a name="toc-Suggestion-or-Bug-Reporting-1" 
href="#Suggestion-or-Bug-Reporting">Appendix F Suggestion or Bug 
Reporting</a></li>
@@ -338,8 +340,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 7.0.0
-Printed November 15, 2017.
+Edition 7.0.1
+Printed November 21, 2017.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -488,6 +490,8 @@ Dragging Buffers, Windows and Items
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Keyboard-Drags">Keyboard 
Drags</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
@@ -688,7 +692,9 @@ Smart Mouse Keys
 
 Smart Keyboard Keys
 
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Emacs-Pushbuttons">Smart Key - Emacs 
Pushbuttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Treemacs">Smart Key - 
Treemacs</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-Emacs-Pushbuttons">Smart Key - Emacs 
Pushbuttons</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-Argument-Completion">Smart Key - Argument 
Completion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -782,7 +788,7 @@ Next: <a href="#Smart-Keys" accesskey="n" rel="next">Smart 
Keys</a>, Previous: <
 <h2 class="chapter">1 Introduction</h2>
 
 <p>This edition of the GNU Hyperbole Manual is for use with any version
-7.0.0 or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+7.0.1 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,
@@ -1565,8 +1571,8 @@ kill (delete) the thing.
 <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
+<p>Even better are Smart Mouse Key thing drags which let you copy or move
+delimited things in one operation without having to select a region.  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
@@ -1575,9 +1581,6 @@ 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
 work.
 </p>
-<p>Try out some of these operations in HTML or source code files to see
-how they can speed your editing.
-</p>
 <p>Hyperbole also binds two convenience keys for working with things.
 </p>
 <a name="index-C_002dc-RET"></a>
@@ -1644,6 +1647,8 @@ you can click anywhere on the buffer identifier.
 </li><li> Buffer ID Element
 
 <a name="index-dired"></a>
+<a name="index-directory-editor"></a>
+<a name="index-dired_002djump"></a>
 <a name="index-modeline_002c-dired"></a>
 <a name="index-buffer-id"></a>
 <a name="index-modeline_002c-buffer-id"></a>
@@ -1655,11 +1660,21 @@ Then Action Key clicks on directory items in the dired 
buffer display the
 items selected in other windows.  An Action Key drag from an item to
 another window displays the item in that window.
 </p>
-<p>An Action Key click on the first line in a dired buffer which contains the
-current directory path, specifically on any ancestor part of the path (the
-part to the left of the click point), starts another dired session on the
-ancestor directory.  Click at the end of this line to end the dired session
-(bury its buffer).
+<p>An Action Key click on the first line in a dired buffer which contains
+the current directory path, specifically on any ancestor part of the
+path (the part to the left of the click point), starts another dired
+session on the ancestor directory.  Click at the end of this line or
+on the last line to end the dired session (bury its buffer).
+</p>
+<a name="index-Treemacs"></a>
+<a name="index-file-viewer_002c-Treemacs"></a>
+<p>If you use the Treemacs file viewer Emacs package, you can configure 
Hyperbole
+to use this instead of Dired when you click on a modeline buffer id.
+</p>
+<p>Since this is a customization option, it may be change permanently like so.
+Use <kbd>{M-x customize-set-variable <span class="key">RET</span> 
action-key-modeline-buffer-id-function <span class="key">RET</span>}</kbd>.
+Change the value to <code>smart-treemacs-modeline</code>.  Then press <tt 
class="key">RET</tt>.  To change it back
+to Hyperbole&rsquo;s default, use the value, <code>dired-jump</code>.
 </p>
 </li><li> Large Blank Area
 
@@ -1724,25 +1739,16 @@ use that with the following in your Emacs 
initialization file:
 To set it back to the default use:
 <code>(setq action-key-modeline-function #'hmouse-context-menu)</code>.
 </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-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>.
+configurations or frames.
 </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.
+<p>Since these are customization options, they may be change permanently like 
so.
+Use <kbd>{M-x customize-set-variable <span class="key">RET</span> 
assist-key-modeline-function <span class="key">RET</span>}</kbd>.
+Change the value to your desired command.  Then press <tt class="key">RET</tt>.
 </p></li></ul>
 
 <hr>
@@ -1877,6 +1883,8 @@ locations with drags.  Below we explore these drag 
actions.
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#Displaying-File-and-Buffer-Items" accesskey="4">Displaying File and 
Buffer Items</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Keyboard-Drags" 
accesskey="5">Keyboard Drags</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
 </table>
 
 <hr>
@@ -1944,26 +1952,91 @@ unless it is the only window in that frame.
 <a name="Displaying-File-and-Buffer-Items"></a>
 <div class="header">
 <p>
-Previous: <a href="#Cloning-Windows" accesskey="p" rel="prev">Cloning 
Windows</a>, Up: <a href="#Dragging-Buffers" accesskey="u" rel="up">Dragging 
Buffers</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="#Keyboard-Drags" accesskey="n" rel="next">Keyboard Drags</a>, 
Previous: <a href="#Cloning-Windows" accesskey="p" rel="prev">Cloning 
Windows</a>, Up: <a href="#Dragging-Buffers" accesskey="u" rel="up">Dragging 
Buffers</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="Displaying-File-and-Buffer-Items-1"></a>
 <h4 class="subsubsection">2.7.4.4 Displaying File and Buffer Items</h4>
 
 <a name="index-dired-item-drag"></a>
 <a name="index-buffer-menu-item-drag"></a>
+<a name="index-Treemacs-item-drag"></a>
 <a name="index-drag_002c-dired-item"></a>
 <a name="index-drag_002c-buffer-menu-item"></a>
-<p>You can do the same thing with items in dired, buffer menu and ibuffer menus
-rather than buffers themselves.  Drag with the Action Mouse Key and the 
selected
-item will be displayed in any Emacs window in which you release.  Drag outside
-Emacs and it will be displayed in a new frame.
+<a name="index-drag_002c-Treemacs-item"></a>
+<p>You can do the same thing with items in dired, buffer menu and ibuffer menu
+listing buffers rather than buffers themselves.  Drag with the Action Mouse Key
+and the selected item will be displayed in any Emacs window in which you
+release.  Drag outside Emacs and it will be displayed in a new frame.  To
+display the last item you want, press the Action Key on it and it will display
+within the listing window itself.  (If you use the Treemacs file viewer 
package,
+item dragging works there as well).  Remember that you can emulate these drags
+from the keyboard when needed, see <a href="#Smart-Mouse-Key-Drags">Smart 
Mouse Key Drags</a>.
 </p>
 <p>So now you can put a bunch of buffers and files on your screen wherever
 you like.  Typically, a brief visual pulse is shown first at the source item 
and
-then in the whole destination window, to help you see that the transfer has 
been
+then in the destination window, to help you see that the transfer has been
 made.  An Assist Key Drag will move the the item list buffer to the
 destination (swapping buffers), just as it does with other buffers.
 </p>
+<hr>
+<a name="Keyboard-Drags"></a>
+<div class="header">
+<p>
+Previous: <a href="#Displaying-File-and-Buffer-Items" accesskey="p" 
rel="prev">Displaying File and Buffer Items</a>, Up: <a 
href="#Dragging-Buffers" accesskey="u" rel="up">Dragging Buffers</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="Keyboard-Drags-1"></a>
+<h4 class="subsubsection">2.7.4.5 Keyboard Drags</h4>
+
+<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-drag-emulation"></a>
+<a name="index-emulation_002c-drag"></a>
+<a name="index-keyboard-drags"></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 many Action Key drags can be
+emulated from the keyboard.  To do so, press <kbd>{M-o}</kbd>, the
+<code>hkey-operate</code> command, at the button source location, move
+to the link destination, e.g. with <kbd>{C-x o}</kbd>, and then press
+<kbd>{M-o}</kbd> again.  This simulates a depress and 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-ace_002dwindow-1"></a>
+<a name="index-hkey_002dace_002dwindow_002dsetup"></a>
+<a name="index-ace_002dwindow"></a>
+<a name="index-window-by-letter"></a>
+<a name="index-jump-to-window-by-letter"></a>
+<a name="index-keyboard_002c-jump-to-window"></a>
+<p>For even faster keyboard-based drag emulation, use the Emacs
+package <code>ace-window</code> (see <a 
href="https://elpa.gnu.org/packages/ace-window.html";>https://elpa.gnu.org/packages/ace-window.html</a>).
+</p>
+<p>The ace-window package assigns short letter IDs to each Emacs window and 
lets
+you jump to or operate upon a specific window by giving its ID.  Hyperbole can
+add an operation to ace-window that replaces the two-step drag emulation key
+described above with a single key sequence that jumps directly to the
+destination window desired.  This is most useful when working with dired or
+buffer menu <em>items</em>, so the drag operation uses the {i} key
+within <code>ace-window</code>.
+</p>
+<p>To enable this feature, in your Emacs initialization file after
+Hyperbole is initialized, if you do not have a key bound for
+<code>ace-window</code>, then call: <code>(hkey-ace-window-setup 
\&quot;\M-o\&quot;)</code>
+to bind it to <kbd>{M-o}</kbd>.  Otherwise, call the setup function without
+a key: <code>(hkey-ace-window-setup)</code>.
+</p>
+<a name="index-link-creation-from-keyboard"></a>
+<a name="index-keyboard-link-creation"></a>
+<p>After setup, the leftmost character or two of each window&rsquo;s modeline 
will show
+the ID to type to use that window as the drag destination.  Then whenever point
+is on an item you want displayed in another window, use <kbd>{M-o i
+&lt;id-of-window-to-display-item-in&gt;}</kbd> and watch the magic happen.  
You can also use
+this to create explicit button links to other window buffers when in an 
editable
+buffer.
+</p>
+
 
 
 
@@ -3206,22 +3279,7 @@ 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-emulation_002c-Action-Key-drag"></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>
+
 <hr>
 <a name="By-Menu"></a>
 <div class="header">
@@ -6035,6 +6093,7 @@ BBDB entries, just finding them.
 <code>hyrolo-bbdb-fgrep</code> (string finding) and 
<code>hyrolo-bbdb-grep</code>
 (regular expression finding).  They may be bound to keys if desired.
 </p>
+<a name="index-contacts_002c-Google"></a>
 <a name="index-Google-Contacts"></a>
 <a name="index-Gmail-Contacts"></a>
 <p>If you use Google/Gmail Contacts, you can configure the HyRolo to
@@ -6049,8 +6108,9 @@ Contacts to your searches.
 </p>
 <p>When you next do a search, you will be prompted for your Google
 Contacts password and may also have to enter an authorization code
-that will be displayed on your screen.  After authorization, you may
-at times be re-prompted for your password.
+that will be displayed on your screen.  After authorization, your
+your information will be cached so that you are not prompted for
+it again within this Emacs session.
 </p>
 <a name="index-hyrolo_002dgoogle_002dcontacts_002dfgrep"></a>
 <a name="index-hyrolo_002dgoogle_002dcontacts_002dgrep"></a>
@@ -6060,11 +6120,10 @@ at times be re-prompted for your password.
 may be bound to keys if desired.
 </p>
 <a name="index-hyrolo_002dgoogle_002dcontacts_002dflag"></a>
-<p>Because Google can require frequent reauthorization to search your
-contacts, there is a flag, <code>hyrolo-google-contacts-flag</code>, which
-when set to &lsquo;<samp>nil</samp>&rsquo; disables searching of your Google 
Contacts.
+<p>If you ever need to disable Google Contacts usage, there is a
+flag, <code>hyrolo-google-contacts-flag</code>, which when set to 
&lsquo;<samp>nil</samp>&rsquo;
+disables searching of your Google Contacts.
 </p>
-
 <p>Below are the rest of the settings available with HyRolo:
 </p>
 <dl compact="compact">
@@ -9247,23 +9306,25 @@ Previous: <a href="#Smart-Mouse-Keys" accesskey="p" 
rel="prev">Smart Mouse Keys<
 <h3 class="section">E.2 Smart Keyboard Keys</h3>
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Emacs-Pushbuttons" accesskey="1">Smart Key - Emacs 
Pushbuttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-_002d-Treemacs" 
accesskey="1">Smart Key - Treemacs</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-Emacs-Pushbuttons" accesskey="2">Smart Key - Emacs 
Pushbuttons</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-Argument-Completion" accesskey="2">Smart Key - Argument 
Completion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Argument-Completion" accesskey="3">Smart Key - Argument 
Completion</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-ID-Edit-Mode" accesskey="3">Smart Key - ID Edit 
Mode</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-ID-Edit-Mode" accesskey="4">Smart Key - ID Edit 
Mode</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-Emacs-Cross_002dreferences-_0028Xrefs_0029" 
accesskey="4">Smart Key - Emacs Cross-references 
(Xrefs)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Emacs-Cross_002dreferences-_0028Xrefs_0029" 
accesskey="5">Smart Key - Emacs Cross-references 
(Xrefs)</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-Smart-Scrolling" accesskey="5">Smart Key - Smart 
Scrolling</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Smart-Scrolling" accesskey="6">Smart Key - Smart 
Scrolling</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-Smart-Menus" accesskey="6">Smart Key - Smart 
Menus</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Smart-Menus" accesskey="7">Smart Key - Smart 
Menus</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-Dired-Mode" 
accesskey="7">Smart Key - Dired Mode</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Smart-Key-_002d-Dired-Mode" 
accesskey="8">Smart Key - Dired Mode</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-Hyperbole-Buttons" accesskey="8">Smart Key - Hyperbole 
Buttons</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-Hyperbole-Buttons" accesskey="9">Smart Key - Hyperbole 
Buttons</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-View-Mode" 
accesskey="9">Smart Key - View Mode</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Smart-Key-_002d-View-Mode">Smart Key - View 
Mode</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-Delimited-Things">Smart Key - Delimited 
Things</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -9330,13 +9391,45 @@ Previous: <a href="#Smart-Mouse-Keys" accesskey="p" 
rel="prev">Smart Mouse Keys<
 </table>
 
 <hr>
+<a name="Smart-Key-_002d-Treemacs"></a>
+<div class="header">
+<p>
+Next: <a href="#Smart-Key-_002d-Emacs-Pushbuttons" accesskey="n" 
rel="next">Smart Key - Emacs Pushbuttons</a>, Previous: <a 
href="#Smart-Keyboard-Keys" accesskey="p" rel="prev">Smart Keyboard Keys</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-Treemacs-1"></a>
+<h4 class="subsection">E.2.1 Smart Key - Treemacs</h4>
+
+<a name="index-Treemacs-1"></a>
+<p>Treemacs is an add-on Emacs package that offers a fixed, per-frame, 
graphical
+window for hierarchically browsing and operating upon directories, files and
+programming tags within files.  Use the Emacs package manager to install it and
+then invoke it with <kbd>{M-x treemacs <span class="key">RET</span>}</kbd> and 
quit with <kbd>{q}</kbd>.
+</p>
+<p>Treemacs items may be dragged with the Action Key to other windows for 
display.
+See <a href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a>.
+</p>
+<div class="format">
+<pre class="format">When in a Treemacs file browser buffer:
+  ACTION KEY or ASSIST KEY
+     (1) on an entry icon, the treemacs TAB command is run to expand and
+         collapse the entry;
+     (2) elsewhere within an entry line, the item is displayed for editing,
+         normally in another window;
+     (3) on the first line of the buffer (other than the end of line),
+         dired is run on the current directory of this Treemacs;
+     (4) at the end of the first or last line of the buffer,
+         this Treemacs invocation is quit.
+</pre></div>
+
+
+<hr>
 <a name="Smart-Key-_002d-Emacs-Pushbuttons"></a>
 <div class="header">
 <p>
-Next: <a href="#Smart-Key-_002d-Argument-Completion" accesskey="n" 
rel="next">Smart Key - Argument Completion</a>, Previous: <a 
href="#Smart-Keyboard-Keys" accesskey="p" rel="prev">Smart Keyboard Keys</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-Argument-Completion" accesskey="n" 
rel="next">Smart Key - Argument Completion</a>, Previous: <a 
href="#Smart-Key-_002d-Treemacs" accesskey="p" rel="prev">Smart Key - 
Treemacs</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-Emacs-Pushbuttons-1"></a>
-<h4 class="subsection">E.2.1 Smart Key - Emacs Pushbuttons</h4>
+<h4 class="subsection">E.2.2 Smart Key - Emacs Pushbuttons</h4>
 
 <div class="format">
 <pre class="format">When over an Emacs pushbutton:
@@ -9353,7 +9446,7 @@ Next: <a href="#Smart-Key-_002d-Argument-Completion" 
accesskey="n" rel="next">Sm
 Next: <a href="#Smart-Key-_002d-ID-Edit-Mode" accesskey="n" rel="next">Smart 
Key - ID Edit Mode</a>, Previous: <a href="#Smart-Key-_002d-Emacs-Pushbuttons" 
accesskey="p" rel="prev">Smart Key - Emacs Pushbuttons</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-Argument-Completion-1"></a>
-<h4 class="subsection">E.2.2 Smart Key - Argument Completion</h4>
+<h4 class="subsection">E.2.3 Smart Key - Argument Completion</h4>
 
 <a name="index-Smart-Keyboard-Keys"></a>
 <div class="format">
@@ -9384,7 +9477,7 @@ Next: <a href="#Smart-Key-_002d-ID-Edit-Mode" 
accesskey="n" rel="next">Smart Key
 Next: <a href="#Smart-Key-_002d-Emacs-Cross_002dreferences-_0028Xrefs_0029" 
accesskey="n" rel="next">Smart Key - Emacs Cross-references (Xrefs)</a>, 
Previous: <a href="#Smart-Key-_002d-Argument-Completion" accesskey="p" 
rel="prev">Smart Key - Argument Completion</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-ID-Edit-Mode-1"></a>
-<h4 class="subsection">E.2.3 Smart Key - ID Edit Mode</h4>
+<h4 class="subsection">E.2.4 Smart Key - ID Edit Mode</h4>
 <div class="format">
 <pre class="format">If in ID Edit mode (a package within InfoDock, not 
included in
 Hyperbole, that supports rapid marking, killing, copying, yanking and
@@ -9400,7 +9493,7 @@ display-management):
 Next: <a href="#Smart-Key-_002d-Smart-Scrolling" accesskey="n" 
rel="next">Smart Key - Smart Scrolling</a>, Previous: <a 
href="#Smart-Key-_002d-ID-Edit-Mode" accesskey="p" rel="prev">Smart Key - ID 
Edit Mode</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-Emacs-Cross_002dreferences-_0028Xrefs_0029-1"></a>
-<h4 class="subsection">E.2.4 Smart Key - Emacs Cross-references (Xrefs)</h4>
+<h4 class="subsection">E.2.5 Smart Key - Emacs Cross-references (Xrefs)</h4>
 
 <div class="format">
 <pre class="format">When over an Emacs cross-reference:
@@ -9418,7 +9511,7 @@ Next: <a href="#Smart-Key-_002d-Smart-Scrolling" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-Smart-Menus" accesskey="n" rel="next">Smart 
Key - Smart Menus</a>, Previous: <a 
href="#Smart-Key-_002d-Emacs-Cross_002dreferences-_0028Xrefs_0029" 
accesskey="p" rel="prev">Smart Key - Emacs Cross-references (Xrefs)</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-Smart-Scrolling-1"></a>
-<h4 class="subsection">E.2.5 Smart Key - Smart Scrolling</h4>
+<h4 class="subsection">E.2.6 Smart Key - Smart Scrolling</h4>
 
 <a name="index-smart_002dscroll_002dproportional"></a>
 <a name="index-proportional-scrolling-1"></a>
@@ -9456,7 +9549,7 @@ Next: <a href="#Smart-Key-_002d-Smart-Menus" 
accesskey="n" rel="next">Smart Key
 Next: <a href="#Smart-Key-_002d-Dired-Mode" accesskey="n" rel="next">Smart Key 
- Dired Mode</a>, Previous: <a href="#Smart-Key-_002d-Smart-Scrolling" 
accesskey="p" rel="prev">Smart Key - Smart Scrolling</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-Smart-Menus-1"></a>
-<h4 class="subsection">E.2.6 Smart Key - Smart Menus</h4>
+<h4 class="subsection">E.2.7 Smart Key - Smart Menus</h4>
 
 <p>Smart Menus are an older in-buffer menu system that worked on dumb
 terminals and pre-dated Emacs&rsquo; own dumb terminal menu support.  They
@@ -9490,7 +9583,7 @@ necesary for its use.
 Next: <a href="#Smart-Key-_002d-Hyperbole-Buttons" accesskey="n" 
rel="next">Smart Key - Hyperbole Buttons</a>, Previous: <a 
href="#Smart-Key-_002d-Smart-Menus" accesskey="p" rel="prev">Smart Key - Smart 
Menus</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-Dired-Mode-1"></a>
-<h4 class="subsection">E.2.7 Smart Key - Dired Mode</h4>
+<h4 class="subsection">E.2.8 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>
@@ -9531,7 +9624,7 @@ Next: <a href="#Smart-Key-_002d-Hyperbole-Buttons" 
accesskey="n" rel="next">Smar
 Next: <a href="#Smart-Key-_002d-View-Mode" accesskey="n" rel="next">Smart Key 
- View Mode</a>, Previous: <a href="#Smart-Key-_002d-Dired-Mode" accesskey="p" 
rel="prev">Smart Key - Dired Mode</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-Hyperbole-Buttons-1"></a>
-<h4 class="subsection">E.2.8 Smart Key - Hyperbole Buttons</h4>
+<h4 class="subsection">E.2.9 Smart Key - Hyperbole Buttons</h4>
 
 <a name="index-click_002c-button"></a>
 <a name="index-button-click"></a>
@@ -9551,7 +9644,7 @@ Next: <a href="#Smart-Key-_002d-View-Mode" accesskey="n" 
rel="next">Smart Key -
 Next: <a href="#Smart-Key-_002d-Delimited-Things" accesskey="n" 
rel="next">Smart Key - Delimited Things</a>, Previous: <a 
href="#Smart-Key-_002d-Hyperbole-Buttons" accesskey="p" rel="prev">Smart Key - 
Hyperbole Buttons</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-View-Mode-1"></a>
-<h4 class="subsection">E.2.9 Smart Key - View Mode</h4>
+<h4 class="subsection">E.2.10 Smart Key - View Mode</h4>
 
 <a name="index-view-mode"></a>
 <div class="format">
@@ -9570,7 +9663,7 @@ Next: <a href="#Smart-Key-_002d-Delimited-Things" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-The-Koutliner" accesskey="n" rel="next">Smart 
Key - The Koutliner</a>, Previous: <a href="#Smart-Key-_002d-View-Mode" 
accesskey="p" rel="prev">Smart Key - View Mode</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-Delimited-Things-1"></a>
-<h4 class="subsection">E.2.10 Smart Key - Delimited Things</h4>
+<h4 class="subsection">E.2.11 Smart Key - Delimited Things</h4>
 
 <a name="index-thing-1"></a>
 <a name="index-list-1"></a>
@@ -9608,7 +9701,7 @@ original location and yanks it at the new location.
 Next: <a href="#Smart-Key-_002d-RDB-Mode" accesskey="n" rel="next">Smart Key - 
RDB Mode</a>, Previous: <a href="#Smart-Key-_002d-Delimited-Things" 
accesskey="p" rel="prev">Smart Key - Delimited Things</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-The-Koutliner-1"></a>
-<h4 class="subsection">E.2.11 Smart Key - The Koutliner</h4>
+<h4 class="subsection">E.2.12 Smart Key - The Koutliner</h4>
 <div class="format">
 <pre class="format">When pressed within a Hyperbole Koutliner buffer 
(kotl-mode):
   ACTION KEY
@@ -9643,7 +9736,7 @@ Next: <a href="#Smart-Key-_002d-RDB-Mode" accesskey="n" 
rel="next">Smart Key - R
 Next: <a href="#Smart-Key-_002d-Help-Buffers" accesskey="n" rel="next">Smart 
Key - Help Buffers</a>, Previous: <a href="#Smart-Key-_002d-The-Koutliner" 
accesskey="p" rel="prev">Smart Key - The Koutliner</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-RDB-Mode-1"></a>
-<h4 class="subsection">E.2.12 Smart Key - RDB Mode</h4>
+<h4 class="subsection">E.2.13 Smart Key - RDB Mode</h4>
 <a name="index-rdb_002dmode"></a>
 <a name="index-database"></a>
 <div class="format">
@@ -9676,7 +9769,7 @@ relational databases (part of InfoDock):
 Next: <a href="#Smart-Key-_002d-Pages-Directory-Mode" accesskey="n" 
rel="next">Smart Key - Pages Directory Mode</a>, Previous: <a 
href="#Smart-Key-_002d-RDB-Mode" accesskey="p" rel="prev">Smart Key - RDB 
Mode</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-Help-Buffers-1"></a>
-<h4 class="subsection">E.2.13 Smart Key - Help Buffers</h4>
+<h4 class="subsection">E.2.14 Smart Key - Help Buffers</h4>
 <a name="index-help-buffer"></a>
 <div class="format">
 <pre class="format">
@@ -9693,7 +9786,7 @@ When pressed at the end of a Help buffer:
 Next: <a href="#Smart-Key-_002d-Identifier-Menu-Mode" accesskey="n" 
rel="next">Smart Key - Identifier Menu Mode</a>, Previous: <a 
href="#Smart-Key-_002d-Help-Buffers" accesskey="p" rel="prev">Smart Key - Help 
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-Pages-Directory-Mode-1"></a>
-<h4 class="subsection">E.2.14 Smart Key - Pages Directory Mode</h4>
+<h4 class="subsection">E.2.15 Smart Key - Pages Directory Mode</h4>
 
 <div class="format">
 <pre class="format">Pages-directory-mode is used in special buffers that 
contain title lines extracted from files consisting of titled, page-delimited 
contents, e.g. Info files.
@@ -9712,7 +9805,7 @@ When pressed on a pages-directory-mode entry line:
 Next: <a href="#Smart-Key-_002d-C-Source-Code" accesskey="n" rel="next">Smart 
Key - C Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Pages-Directory-Mode" accesskey="p" rel="prev">Smart Key 
- Pages Directory Mode</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-Identifier-Menu-Mode-1"></a>
-<h4 class="subsection">E.2.15 Smart Key - Identifier Menu Mode</h4>
+<h4 class="subsection">E.2.16 Smart Key - Identifier Menu Mode</h4>
 
 <div class="format">
 <pre class="format">This works only for identifiers defined within the same 
source file in which they are referenced.
@@ -9735,7 +9828,7 @@ When pressed on an identifier name after an identifier 
index has been generated:
 Next: <a href="#Smart-Key-_002d-C_002b_002b-Source-Code" accesskey="n" 
rel="next">Smart Key - C++ Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Identifier-Menu-Mode" accesskey="p" rel="prev">Smart Key 
- Identifier Menu Mode</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-C-Source-Code-1"></a>
-<h4 class="subsection">E.2.16 Smart Key - C Source Code</h4>
+<h4 class="subsection">E.2.17 Smart Key - C Source Code</h4>
 
 <a name="index-smart_002dc_002dcpp_002dinclude_002dpath"></a>
 <a name="index-smart_002dc_002dinclude_002dpath"></a>
@@ -9767,7 +9860,7 @@ Next: <a href="#Smart-Key-_002d-C_002b_002b-Source-Code" 
accesskey="n" rel="next
 Next: <a href="#Smart-Key-_002d-Assembly-Source-Code" accesskey="n" 
rel="next">Smart Key - Assembly Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-C-Source-Code" accesskey="p" rel="prev">Smart Key - C 
Source Code</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-C_002b_002b-Source-Code-1"></a>
-<h4 class="subsection">E.2.17 Smart Key - C++ Source Code</h4>
+<h4 class="subsection">E.2.18 Smart Key - C++ Source Code</h4>
 
 <a name="index-c_002b_002b_002dcpp_002dinclude_002dpath"></a>
 <a name="index-c_002b_002b_002dinclude_002dpath"></a>
@@ -9820,7 +9913,7 @@ buffer:
 Next: <a href="#Smart-Key-_002d-Lisp-Source-Code" accesskey="n" 
rel="next">Smart Key - Lisp Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-C_002b_002b-Source-Code" accesskey="p" rel="prev">Smart 
Key - C++ Source Code</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-Assembly-Source-Code-1"></a>
-<h4 class="subsection">E.2.18 Smart Key - Assembly Source Code</h4>
+<h4 class="subsection">E.2.19 Smart Key - Assembly Source Code</h4>
 
 <a name="index-smart_002dasm_002dinclude_002dpath"></a>
 <div class="format">
@@ -9845,7 +9938,7 @@ Next: <a href="#Smart-Key-_002d-Lisp-Source-Code" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-Java-Source-Code" accesskey="n" 
rel="next">Smart Key - Java Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Assembly-Source-Code" accesskey="p" rel="prev">Smart Key 
- Assembly Source Code</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-Lisp-Source-Code-1"></a>
-<h4 class="subsection">E.2.19 Smart Key - Lisp Source Code</h4>
+<h4 class="subsection">E.2.20 Smart Key - Lisp Source Code</h4>
 
 <div class="format">
 <pre class="format">When pressed on a Lisp symbol within any of these types of 
buffers
@@ -9867,7 +9960,7 @@ Next: <a href="#Smart-Key-_002d-Java-Source-Code" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-JavaScript-Source-Code" accesskey="n" 
rel="next">Smart Key - JavaScript Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Lisp-Source-Code" accesskey="p" rel="prev">Smart Key - 
Lisp Source Code</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-Java-Source-Code-1"></a>
-<h4 class="subsection">E.2.20 Smart Key - Java Source Code</h4>
+<h4 class="subsection">E.2.21 Smart Key - Java Source Code</h4>
 
 <a name="index-smart_002djava_002dpackage_002dpath"></a>
 <div class="format">
@@ -9910,7 +10003,7 @@ buffer:
 Next: <a href="#Smart-Key-_002d-Python-Source-Code" accesskey="n" 
rel="next">Smart Key - Python Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Java-Source-Code" accesskey="p" rel="prev">Smart Key - 
Java Source Code</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-JavaScript-Source-Code-1"></a>
-<h4 class="subsection">E.2.21 Smart Key - JavaScript Source Code</h4>
+<h4 class="subsection">E.2.22 Smart Key - JavaScript Source Code</h4>
 
 <div class="format">
 <pre class="format">When pressed within a JavaScript source code file:
@@ -9931,7 +10024,7 @@ Next: <a href="#Smart-Key-_002d-Python-Source-Code" 
accesskey="n" rel="next">Sma
 Next: <a href="#Smart-Key-_002d-Objective_002dC-Source-Code" accesskey="n" 
rel="next">Smart Key - Objective-C Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-JavaScript-Source-Code" accesskey="p" rel="prev">Smart 
Key - JavaScript Source Code</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-Python-Source-Code-1"></a>
-<h4 class="subsection">E.2.22 Smart Key - Python Source Code</h4>
+<h4 class="subsection">E.2.23 Smart Key - Python Source Code</h4>
 <div class="format">
 <pre class="format">When the OO-Browser has been loaded and the press is 
within a Python
 buffer:
@@ -9962,7 +10055,7 @@ buffer:
 Next: <a href="#Smart-Key-_002d-Fortran-Source-Code" accesskey="n" 
rel="next">Smart Key - Fortran Source Code</a>, Previous: <a 
href="#Smart-Key-_002d-Python-Source-Code" accesskey="p" rel="prev">Smart Key - 
Python Source Code</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-Objective_002dC-Source-Code-1"></a>
-<h4 class="subsection">E.2.23 Smart Key - Objective-C Source Code</h4>
+<h4 class="subsection">E.2.24 Smart Key - Objective-C Source Code</h4>
 
 <a name="index-objc_002dcpp_002dinclude_002dpath"></a>
 <a name="index-objc_002dinclude_002dpath"></a>
@@ -10013,7 +10106,7 @@ OO-Browser):
 Next: <a href="#Smart-Key-_002d-Occurrence-Matches" accesskey="n" 
rel="next">Smart Key - Occurrence Matches</a>, Previous: <a 
href="#Smart-Key-_002d-Objective_002dC-Source-Code" accesskey="p" 
rel="prev">Smart Key - Objective-C Source Code</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-Fortran-Source-Code-1"></a>
-<h4 class="subsection">E.2.24 Smart Key - Fortran Source Code</h4>
+<h4 class="subsection">E.2.25 Smart Key - Fortran Source Code</h4>
 
 <div class="format">
 <pre class="format">When pressed within a Fortran source code file:
@@ -10031,7 +10124,7 @@ Next: <a href="#Smart-Key-_002d-Occurrence-Matches" 
accesskey="n" rel="next">Sma
 Next: <a href="#Smart-Key-_002d-Calendar-Mode" accesskey="n" rel="next">Smart 
Key - Calendar Mode</a>, Previous: <a 
href="#Smart-Key-_002d-Fortran-Source-Code" accesskey="p" rel="prev">Smart Key 
- Fortran Source Code</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-Occurrence-Matches-1"></a>
-<h4 class="subsection">E.2.25 Smart Key - Occurrence Matches</h4>
+<h4 class="subsection">E.2.26 Smart Key - Occurrence Matches</h4>
 
 <div class="format">
 <pre class="format">When pressed within an occur-mode, moccur-mode or 
amoccur-mode buffer:
@@ -10046,7 +10139,7 @@ Next: <a href="#Smart-Key-_002d-Calendar-Mode" 
accesskey="n" rel="next">Smart Ke
 Next: <a href="#Smart-Key-_002d-Man-Page-Apropos" accesskey="n" 
rel="next">Smart Key - Man Page Apropos</a>, Previous: <a 
href="#Smart-Key-_002d-Occurrence-Matches" accesskey="p" rel="prev">Smart Key - 
Occurrence Matches</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-Calendar-Mode-1"></a>
-<h4 class="subsection">E.2.26 Smart Key - Calendar Mode</h4>
+<h4 class="subsection">E.2.27 Smart Key - Calendar Mode</h4>
 
 <div class="format">
 <pre class="format">When pressed within a calendar-mode buffer:
@@ -10073,7 +10166,7 @@ Next: <a href="#Smart-Key-_002d-Man-Page-Apropos" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-Emacs-Outline-Mode" accesskey="n" 
rel="next">Smart Key - Emacs Outline Mode</a>, Previous: <a 
href="#Smart-Key-_002d-Calendar-Mode" accesskey="p" rel="prev">Smart Key - 
Calendar Mode</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-Man-Page-Apropos-1"></a>
-<h4 class="subsection">E.2.27 Smart Key - Man Page Apropos</h4>
+<h4 class="subsection">E.2.28 Smart Key - Man Page Apropos</h4>
 <div class="format">
 <pre class="format">When pressed within a man page apropos buffer or listing:
   ACTION KEY
@@ -10095,7 +10188,7 @@ Next: <a href="#Smart-Key-_002d-Emacs-Outline-Mode" 
accesskey="n" rel="next">Sma
 Next: <a href="#Smart-Key-_002d-Info-Manuals" accesskey="n" rel="next">Smart 
Key - Info Manuals</a>, Previous: <a href="#Smart-Key-_002d-Man-Page-Apropos" 
accesskey="p" rel="prev">Smart Key - Man Page Apropos</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-Emacs-Outline-Mode-1"></a>
-<h4 class="subsection">E.2.28 Smart Key - Emacs Outline Mode</h4>
+<h4 class="subsection">E.2.29 Smart Key - Emacs Outline Mode</h4>
 <a name="index-selective_002ddisplay"></a>
 <div class="format">
 <pre class="format">If pressed within an outline-mode buffer or when no other 
context is matched
@@ -10132,7 +10225,7 @@ and outline-minor-mode is enabled:
 Next: <a href="#Smart-Key-_002d-Email-Composers" accesskey="n" 
rel="next">Smart Key - Email Composers</a>, Previous: <a 
href="#Smart-Key-_002d-Emacs-Outline-Mode" accesskey="p" rel="prev">Smart Key - 
Emacs Outline Mode</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-Info-Manuals-1"></a>
-<h4 class="subsection">E.2.29 Smart Key - Info Manuals</h4>
+<h4 class="subsection">E.2.30 Smart Key - Info Manuals</h4>
 
 <div class="format">
 <pre class="format"><a name="index-click_002c-Info"></a><a 
name="index-Info-browsing"></a><a name="index-Info_002dglobal_002dnext"></a><a 
name="index-Info_002dglobal_002dprev"></a>If pressed within an Info manual node:
@@ -10173,7 +10266,7 @@ Use <kbd>{s}</kbd> within an Info manual to search for 
any concept that interest
 Next: <a href="#Smart-Key-_002d-GNUS-Newsreader" accesskey="n" 
rel="next">Smart Key - GNUS Newsreader</a>, Previous: <a 
href="#Smart-Key-_002d-Info-Manuals" accesskey="p" rel="prev">Smart Key - Info 
Manuals</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-Email-Composers-1"></a>
-<h4 class="subsection">E.2.30 Smart Key - Email Composers</h4>
+<h4 class="subsection">E.2.31 Smart Key - Email Composers</h4>
 <a name="index-hmail_003areader"></a>
 <a name="index-hmail_003alister"></a>
 <div class="format">
@@ -10212,7 +10305,7 @@ Next: <a href="#Smart-Key-_002d-GNUS-Newsreader" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-Buffer-Menus" accesskey="n" rel="next">Smart 
Key - Buffer Menus</a>, Previous: <a href="#Smart-Key-_002d-Email-Composers" 
accesskey="p" rel="prev">Smart Key - Email Composers</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-GNUS-Newsreader-1"></a>
-<h4 class="subsection">E.2.31 Smart Key - GNUS Newsreader</h4>
+<h4 class="subsection">E.2.32 Smart Key - GNUS Newsreader</h4>
 <a name="index-click_002c-Gnus"></a>
 <a name="index-Gnus-browsing"></a>
 <div class="format">
@@ -10279,7 +10372,7 @@ Next: <a href="#Smart-Key-_002d-Buffer-Menus" 
accesskey="n" rel="next">Smart Key
 Next: <a href="#Smart-Key-_002d-Tar-File-Mode" accesskey="n" rel="next">Smart 
Key - Tar File Mode</a>, Previous: <a href="#Smart-Key-_002d-GNUS-Newsreader" 
accesskey="p" rel="prev">Smart Key - GNUS Newsreader</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-Buffer-Menus-1"></a>
-<h4 class="subsection">E.2.32 Smart Key - Buffer Menus</h4>
+<h4 class="subsection">E.2.33 Smart Key - Buffer Menus</h4>
 <a name="index-click_002c-buffer-menu"></a>
 <a name="index-buffer-menu-2"></a>
 <div class="format">
@@ -10336,7 +10429,7 @@ Next: <a href="#Smart-Key-_002d-Tar-File-Mode" 
accesskey="n" rel="next">Smart Ke
 Next: <a href="#Smart-Key-_002d-Man-Pages" accesskey="n" rel="next">Smart Key 
- Man Pages</a>, Previous: <a href="#Smart-Key-_002d-Buffer-Menus" 
accesskey="p" rel="prev">Smart Key - Buffer Menus</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-Tar-File-Mode-1"></a>
-<h4 class="subsection">E.2.33 Smart Key - Tar File Mode</h4>
+<h4 class="subsection">E.2.34 Smart Key - Tar File Mode</h4>
 <a name="index-click_002c-tar"></a>
 <a name="index-tar-archive-browsing"></a>
 <a name="index-extracting-from-tar-files"></a>
@@ -10363,7 +10456,7 @@ Next: <a href="#Smart-Key-_002d-Man-Pages" 
accesskey="n" rel="next">Smart Key -
 Next: <a href="#Smart-Key-_002d-WWW-URLs" accesskey="n" rel="next">Smart Key - 
WWW URLs</a>, Previous: <a href="#Smart-Key-_002d-Tar-File-Mode" accesskey="p" 
rel="prev">Smart Key - Tar File Mode</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-Man-Pages-1"></a>
-<h4 class="subsection">E.2.34 Smart Key - Man Pages</h4>
+<h4 class="subsection">E.2.35 Smart Key - Man Pages</h4>
 <a name="index-man-page-references"></a>
 <a name="index-smart_002dman_002dc_002droutine_002dref"></a>
 <div class="format">
@@ -10383,7 +10476,7 @@ containing its pathname:
 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>
+<h4 class="subsection">E.2.36 Smart Key - WWW URLs</h4>
 <a name="index-click_002c-world_002dwide-web"></a>
 <a name="index-W3"></a>
 <a name="index-URL-2"></a>
@@ -10409,7 +10502,7 @@ Next: <a href="#Smart-Key-_002d-HyRolo-Match-Buffers" 
accesskey="n" rel="next">S
 Next: <a href="#Smart-Key-_002d-Image-Thumbnails" accesskey="n" 
rel="next">Smart Key - Image Thumbnails</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-HyRolo-Match-Buffers-1"></a>
-<h4 class="subsection">E.2.36 Smart Key - HyRolo Match Buffers</h4>
+<h4 class="subsection">E.2.37 Smart Key - HyRolo Match Buffers</h4>
 <a name="index-click_002c-hyrolo-matches"></a>
 <a name="index-hyrolo-matches"></a>
 <div class="format">
@@ -10425,7 +10518,7 @@ Next: <a href="#Smart-Key-_002d-Image-Thumbnails" 
accesskey="n" rel="next">Smart
 Next: <a href="#Smart-Key-_002d-Gomoku-Game" accesskey="n" rel="next">Smart 
Key - Gomoku Game</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-Image-Thumbnails-1"></a>
-<h4 class="subsection">E.2.37 Smart Key - Image Thumbnails</h4>
+<h4 class="subsection">E.2.38 Smart Key - Image Thumbnails</h4>
 <a name="index-images"></a>
 <a name="index-thumbnails"></a>
 <a name="index-dired_002c-images"></a>
@@ -10446,7 +10539,7 @@ Next: <a href="#Smart-Key-_002d-Gomoku-Game" 
accesskey="n" rel="next">Smart Key
 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-Image-Thumbnails" accesskey="p" rel="prev">Smart Key - 
Image Thumbnails</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.38 Smart Key - Gomoku Game</h4>
+<h4 class="subsection">E.2.39 Smart Key - Gomoku Game</h4>
 <a name="index-game_002c-gomoku"></a>
 <a name="index-gomoku"></a>
 <div class="format">
@@ -10464,7 +10557,7 @@ Next: <a href="#Smart-Key-_002d-The-OO_002dBrowser" 
accesskey="n" rel="next">Sma
 Next: <a href="#Smart-Key-_002d-Default-Context" accesskey="n" 
rel="next">Smart Key - Default Context</a>, Previous: <a 
href="#Smart-Key-_002d-Gomoku-Game" accesskey="p" rel="prev">Smart Key - Gomoku 
Game</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-The-OO_002dBrowser-1"></a>
-<h4 class="subsection">E.2.39 Smart Key - The OO-Browser</h4>
+<h4 class="subsection">E.2.40 Smart Key - The OO-Browser</h4>
 
 <a name="index-OO_002dBrowser"></a>
 <a name="index-object_002doriented-code-browsing"></a>
@@ -10538,7 +10631,7 @@ buffer after an OO-Browser Environment has been loaded:
 Previous: <a href="#Smart-Key-_002d-The-OO_002dBrowser" accesskey="p" 
rel="prev">Smart Key - The OO-Browser</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-Default-Context-1"></a>
-<h4 class="subsection">E.2.40 Smart Key - Default Context</h4>
+<h4 class="subsection">E.2.41 Smart Key - Default Context</h4>
 <a name="index-action_002dkey_002ddefault_002dfunction-1"></a>
 <a name="index-assist_002dkey_002ddefault_002dfunction-1"></a>
 <a name="index-hyperbole-1"></a>
@@ -11231,14 +11324,14 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-C_002du-C_002dc-m"><code>C-u C-c 
m</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-C_002du-C_002dh-A"><code>C-u C-h 
A</code></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-C_002du-C_002dh-A-1"><code>C-u 
C-h A</code></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-C_002du-M_002do"><code>C-u 
M-o</code></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-C_002du-M_002do"><code>C-u 
M-o</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002du-M_002dRET"><code>C-u 
M-<span class="key">RET</span></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-C_002du-M_002dRET-1"><code>C-u 
M-<span class="key">RET</span></code></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-C_002dx-_0024"><code>C-x 
$</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-_002b"><code>C-x 
+</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-C_002de"><code>C-x 
C-e</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-m"><code>C-x 
m</code></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-C_002dx-o"><code>C-x 
o</code></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-C_002dx-o"><code>C-x 
o</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <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>
@@ -11316,7 +11409,7 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-m"><code>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-M_002db"><code>M-b</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-M_002df"><code>M-f</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-M_002do"><code>M-o</code></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-M_002do"><code>M-o</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002do-1"><code>M-o</code></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-M_002dRET"><code>M-<span 
class="key">RET</span></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-M_002dRET-1"><code>M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
@@ -11565,6 +11658,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> 
Section</th></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-A">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-ace_002dwindow-1"><code>ace-window</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action_002dact_002dhook">action-act-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-action_002dkey"><code>action-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-action_002dkey_002ddefault_002dfunction">action-key-default-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
@@ -11723,12 +11817,13 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <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_002dgithub_002ddefault_002duser-1">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_002dace_002dwindow_002dsetup"><code>hkey-ace-window-setup</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Keyboard-Drags">Keyboard Drags</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>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002deither"><code>hkey-either</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-hkey_002dinit">hkey-init</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-hkey_002dinit_002doverride_002dlocal_002dkeys">hkey-init-override-local-keys</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-hkey_002doperate"><code>hkey-operate</code></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-hkey_002doperate"><code>hkey-operate</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hkey_002dsummarize"><code>hkey-summarize</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-hmail_003alister">hmail:lister</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-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>
@@ -12159,6 +12254,7 @@ 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-A">A</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-abbreviated-URLs">abbreviated 
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-ace_002dwindow">ace-window</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action">action</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Action-Types">Action Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-action-1">action</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Action-Types">Action Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Key">Action 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
@@ -12348,6 +12444,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <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-contacts_002c-Google">contacts, 
Google</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-context">context</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-context_002dsensitive-help">context-sensitive 
help</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-copy-and-yank">copy and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Thing-Selection">Thing 
Selection</a></td></tr>
@@ -12396,7 +12493,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <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-Mouse-Key-Modeline-Clicks">Smart Mouse 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-Mouse-Key-Modeline-Clicks">Smart Mouse 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-Mouse-Key-Modeline-Clicks">Smart Mouse 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-dired-item-drag">dired item 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-dired_002c-images">dired, 
images</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Image-Thumbnails">Smart Key - Image 
Thumbnails</a></td></tr>
@@ -12414,6 +12510,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-drag">drag</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-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-emulation">drag 
emulation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-drag_002c-buffer-menu-item">drag, buffer menu 
item</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-buffer-swap">drag, 
buffer swap</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Swapping-Buffers">Swapping Buffers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-clone-window">drag, 
clone window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cloning-Windows">Cloning Windows</a></td></tr>
@@ -12427,6 +12524,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-drag_002c-resize-window">drag, 
resize window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Resizing-Windows">Resizing Windows</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-Smart-Mouse-Key">drag, 
Smart Mouse Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Drags">Smart Mouse Key Drags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-drag_002c-Treemacs-item">drag, 
Treemacs item</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</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="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-drag_002c-vertical-1">drag, 
vertical</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-drag_002c-window-configuration">drag, window 
configuration</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Saving-and-Restoring-Window-Configurations">Saving and Restoring Window 
Configurations</a></td></tr>
@@ -12448,7 +12546,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Emacs-Lisp-variables">Emacs Lisp 
variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Link-Variable-Substitution">Link Variable Substitution</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-emacs-outline">emacs 
outline</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-Emacs-support">Emacs 
support</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-emulation_002c-Action-Key-drag">emulation, Action Key 
drag</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-emulation_002c-drag">emulation, 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-enabling-URLs-in-find_002dfile">enabling 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-end-of-line-click">end of line 
click</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-Engelbart">Engelbart</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner-History">Koutliner History</a></td></tr>
@@ -12480,6 +12578,7 @@ 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-F">F</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file-display-function">file 
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-file-viewer_002c-Treemacs">file 
viewer, Treemacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-DEMO">file, 
DEMO</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Manual-Overview">Manual 
Overview</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-file_002c-hycontrol_002eel">file, 
hycontrol.el</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-file_002c-importing">file, 
importing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
@@ -12655,6 +12754,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <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-Mouse-Key-Modeline-Clicks">Smart Mouse 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></td><td valign="top"><a href="#index-jump-to-window-by-letter">jump 
to window by letter</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</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>
 <tr><td></td><td valign="top"><a href="#index-kcell-link">kcell 
link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -12674,7 +12774,9 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-key-bindings_002c-toggle">key 
bindings, 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-key-bindings_002c-toggle-1">key 
bindings, toggle</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-key-sequence">key 
sequence</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-keyboard-drag-emulation">keyboard drag 
emulation</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-keyboard-drags">keyboard 
drags</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-keyboard-link-creation">keyboard 
link creation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-keyboard_002c-jump-to-window">keyboard, jump to 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-keypad">keypad</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-kill-and-yank">kill and 
yank</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-kill-and-yank-1">kill and 
yank</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-between-Windows">Smart Mouse Drags between 
Windows</a></td></tr>
@@ -12715,6 +12817,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-link-action-types">link action 
types</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Action-Types">Action 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-link-button">link 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-link-creation">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-link-creation-from-keyboard">link creation from 
keyboard</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-link-display">link 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-link_002c-creation">link, 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Menu">By 
Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-link_002c-display-function">link, display 
function</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
@@ -13108,6 +13211,9 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-tree_002c-show">tree, 
show</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-tree_002c-show-1">tree, 
show</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-tree_002c-show-subtree">tree, 
show subtree</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-Treemacs">Treemacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-Treemacs-1">Treemacs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Treemacs">Smart Key - Treemacs</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Treemacs-item-drag">Treemacs 
item drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-File-and-Buffer-Items">Displaying File and Buffer 
Items</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-troubleshooting-Smart-Keys">troubleshooting 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-tutorial">tutorial</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Manual-Overview">Manual Overview</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-type-definition">type 
definition</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Types">Creating Types</a></td></tr>
@@ -13166,6 +13272,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-web-search-menu">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-web-search-menu-1">web search 
menu</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-where-to-display">where to 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window-by-letter">window by 
letter</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-window-configuration">window 
configuration</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-window-configuration-commands">window configuration 
commands</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-window-configuration-drag">window configuration 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Saving-and-Restoring-Window-Configurations">Saving and Restoring Window 
Configurations</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index 3682d9d..1f4a847 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index d74d0e4..cc07b65 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 5c5e513..cd7028d 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 7.0.0
-Printed November 15, 2017.
+Edition 7.0.1
+Printed November 21, 2017.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -176,7 +176,7 @@ Printed November 15, 2017.
 
 @center The Everyday Hypertextual Information Manager
 
address@hidden Edition 7.0.0, November 15, 2017.
address@hidden Edition 7.0.1, November 21, 2017.
 
 @sp 2
 @noindent
@@ -297,6 +297,7 @@ Dragging Buffers, Windows and Items
 * Displaying Buffers::
 * Cloning Windows::
 * Displaying File and Buffer Items::
+* Keyboard Drags::
 
 Buttons
 
@@ -412,6 +413,7 @@ Smart Mouse Keys
 
 Smart Keyboard Keys
 
+* Smart Key - Treemacs::
 * Smart Key - Emacs Pushbuttons::
 * Smart Key - Argument Completion::
 * Smart Key - ID Edit Mode::
@@ -460,7 +462,7 @@ Smart Keyboard Keys
 @chapter Introduction
 
 This edition of the GNU Hyperbole Manual is for use with any version
-7.0.0 or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+7.0.1 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,
@@ -1082,8 +1084,8 @@ kill (delete) the thing.
 @cindex cut region
 @cindex copy region
 @cindex 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
+Even better are Smart Mouse Key thing drags which let you copy or move
+delimited things in one operation without having to select a region.  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
@@ -1092,9 +1094,6 @@ 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
 work.
 
-Try out some of these operations in HTML or source code files to see
-how they can speed your editing.
-
 @noindent
 Hyperbole also binds two convenience keys for working with things.
 
@@ -1156,6 +1155,8 @@ you can click anywhere on the buffer identifier.
 @item Buffer ID Element
 
 @cindex dired
address@hidden directory editor
address@hidden dired-jump
 @cindex modeline, dired
 @cindex buffer id
 @cindex modeline, buffer id
@@ -1167,11 +1168,21 @@ Then Action Key clicks on directory items in the dired 
buffer display the
 items selected 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 in a dired buffer which contains the
-current directory path, specifically on any ancestor part of the path (the
-part to the left of the click point), starts another dired session on the
-ancestor directory.  Click at the end of this line to end the dired session
-(bury its buffer).
+An Action Key click on the first line in a dired buffer which contains
+the current directory path, specifically on any ancestor part of the
+path (the part to the left of the click point), starts another dired
+session on the ancestor directory.  Click at the end of this line or
+on the last line to end the dired session (bury its buffer).
+
address@hidden Treemacs
address@hidden file viewer, Treemacs
+If you use the Treemacs file viewer Emacs package, you can configure Hyperbole
+to use this instead of Dired when you click on a modeline buffer id.
+
+Since this is a customization option, it may be change permanently like so.
+Use @bkbd{M-x customize-set-variable @key{RET} 
action-key-modeline-buffer-id-function @key{RET}}.
+Change the value to @code{smart-treemacs-modeline}.  Then press @key{RET}.  To 
change it back
+to Hyperbole's default, use the value, @code{dired-jump}.
 
 @item Large Blank Area
 
@@ -1236,25 +1247,16 @@ use that with the following in your Emacs 
initialization file:
 To set it back to the default use:
 @code{(setq action-key-modeline-function #'hmouse-context-menu)}.
 
address@hidden dired-jump
 @findex hui-menu-screen-commands
address@hidden directory editor
address@hidden dired
 @cindex 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)}.
+configurations or frames.
 
-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.
+Since these are customization options, they may be change permanently like so.
+Use @bkbd{M-x customize-set-variable @key{RET} assist-key-modeline-function 
@key{RET}}.
+Change the value to your desired command.  Then press @key{RET}.
 @end itemize
 
 @node Smart Mouse Key Drags,  , Smart Mouse Key Modeline Clicks, Smart Keys
@@ -1352,6 +1354,7 @@ locations with drags.  Below we explore these drag 
actions.
 * Displaying Buffers::
 * Cloning Windows::
 * Displaying File and Buffer Items::
+* Keyboard Drags::
 @end menu
 
 @node Swapping Buffers, Displaying Buffers, Dragging Buffers, Dragging Buffers
@@ -1397,24 +1400,84 @@ be created, selected and sized according to the 
original window.  Do the same
 thing with the Assist Mouse Key and the original window will be deleted as 
well,
 unless it is the only window in that frame.
 
address@hidden Displaying File and Buffer Items,  , Cloning Windows, Dragging 
Buffers
address@hidden Displaying File and Buffer Items, Keyboard Drags, Cloning 
Windows, Dragging Buffers
 @subsubsection Displaying File and Buffer Items
 
 @cindex dired item drag
 @cindex buffer menu item drag
address@hidden Treemacs item drag
 @cindex drag, dired item
 @cindex drag, buffer menu item
-You can do the same thing with items in dired, buffer menu and ibuffer menus
-rather than buffers themselves.  Drag with the Action Mouse Key and the 
selected
-item will be displayed in any Emacs window in which you release.  Drag outside
-Emacs and it will be displayed in a new frame.
address@hidden drag, Treemacs item
+You can do the same thing with items in dired, buffer menu and ibuffer menu
+listing buffers rather than buffers themselves.  Drag with the Action Mouse Key
+and the selected item will be displayed in any Emacs window in which you
+release.  Drag outside Emacs and it will be displayed in a new frame.  To
+display the last item you want, press the Action Key on it and it will display
+within the listing window itself.  (If you use the Treemacs file viewer 
package,
+item dragging works there as well).  Remember that you can emulate these drags
+from the keyboard when needed, @pxref{Smart Mouse Key Drags}.
 
 So now you can put a bunch of buffers and files on your screen wherever
 you like.  Typically, a brief visual pulse is shown first at the source item 
and
-then in the whole destination window, to help you see that the transfer has 
been
+then in the destination window, to help you see that the transfer has been
 made.  An Assist Key Drag will move the the item list buffer to the
 destination (swapping buffers), just as it does with other buffers.
 
address@hidden Keyboard Drags,  , Displaying File and Buffer Items, Dragging 
Buffers
address@hidden Keyboard Drags
+
address@hidden M-o
address@hidden C-u M-o
address@hidden C-x o
address@hidden hkey-operate
address@hidden drag emulation
address@hidden emulation, drag
address@hidden keyboard drags
+If you run Emacs under a window system and there is no prior key binding
+on @bkbd{M-o} when you load Hyperbole, then many Action Key drags can be
+emulated from the keyboard.  To do so, press @bkbd{M-o}, the
address@hidden command, at the button source location, move
+to the link destination, e.g.@: with @bkbd{C-x o}, and then press
address@hidden again.  This simulates a depress and 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 ace-window
address@hidden hkey-ace-window-setup
address@hidden ace-window
address@hidden window by letter
address@hidden jump to window by letter
address@hidden keyboard, jump to window
+For even faster keyboard-based drag emulation, use the Emacs
+package @code{ace-window} (see 
@url{https://elpa.gnu.org/packages/ace-window.html}).
+
+The ace-window package assigns short letter IDs to each Emacs window and lets
+you jump to or operate upon a specific window by giving its ID.  Hyperbole can
+add an operation to ace-window that replaces the two-step drag emulation key
+described above with a single key sequence that jumps directly to the
+destination window desired.  This is most useful when working with dired or
+buffer menu @emph{items}, so the drag operation uses the @address@hidden key
+within @code{ace-window}.
+
+To enable this feature, in your Emacs initialization file after
+Hyperbole is initialized, if you do not have a key bound for
address@hidden, then call: @code{(hkey-ace-window-setup \"\M-o\")}
+to bind it to @bkbd{M-o}.  Otherwise, call the setup function without
+a key: @code{(hkey-ace-window-setup)}.
+
address@hidden link creation from keyboard
address@hidden keyboard link creation
+After setup, the leftmost character or two of each window's modeline will show
+the ID to type to use that window as the drag destination.  Then whenever point
+is on an item you want displayed in another window, use @bkbd{M-o i
+<id-of-window-to-display-item-in>} and watch the magic happen.  You can also 
use
+this to create explicit button links to other window buffers when in an 
editable
+buffer.
+
address@hidden -------
+
 @c @node Smart Mouse Key Modifiers,  , Smart Mouse Key Drags, Smart Keys
 @c @section   Smart Mouse Key Modifiers
 
@@ -2546,21 +2609,6 @@ Buffer without File      link-to-buffer-tmp
 @end example
 @end format
 
address@hidden M-o
address@hidden C-u M-o
address@hidden C-x o
address@hidden hkey-operate
address@hidden emulation, Action Key drag 
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.
 
 @node By Menu,  , By Dragging, Creation
 @subsubsection Creation Via Menus
@@ -4992,6 +5040,7 @@ For finding matches within only BBDB, there are the 
commands
 @code{hyrolo-bbdb-fgrep} (string finding) and @code{hyrolo-bbdb-grep}
 (regular expression finding).  They may be bound to keys if desired.
 
address@hidden contacts, Google
 @cindex Google Contacts
 @cindex Gmail Contacts
 If you use Google/Gmail Contacts, you can configure the HyRolo to
@@ -5006,8 +5055,9 @@ Contacts to your searches.
 
 When you next do a search, you will be prompted for your Google
 Contacts password and may also have to enter an authorization code
-that will be displayed on your screen.  After authorization, you may
-at times be re-prompted for your password.
+that will be displayed on your screen.  After authorization, your
+your information will be cached so that you are not prompted for
+it again within this Emacs session.
 
 @findex hyrolo-google-contacts-fgrep
 @findex hyrolo-google-contacts-grep
@@ -5017,10 +5067,9 @@ For finding matches within only Google Contacts, there 
are the commands
 may be bound to keys if desired.
 
 @vindex hyrolo-google-contacts-flag
-Because Google can require frequent reauthorization to search your
-contacts, there is a flag, @code{hyrolo-google-contacts-flag}, which
-when set to @samp{nil} disables searching of your Google Contacts.
-
+If you ever need to disable Google Contacts usage, there is a
+flag, @code{hyrolo-google-contacts-flag}, which when set to @samp{nil}
+disables searching of your Google Contacts.
 
 @noindent
 Below are the rest of the settings available with HyRolo:
@@ -7735,6 +7784,7 @@ If dragged from an Emacs window to outside of Emacs:
 @section   Smart Keyboard Keys
 
 @menu
+* Smart Key - Treemacs::
 * Smart Key - Emacs Pushbuttons::
 * Smart Key - Argument Completion::
 * Smart Key - ID Edit Mode::
@@ -7777,7 +7827,36 @@ If dragged from an Emacs window to outside of Emacs:
 * Smart Key - Default Context::
 @end menu
 
address@hidden Smart Key - Emacs Pushbuttons, Smart Key - Argument Completion, 
Smart Keyboard Keys, Smart Keyboard Keys
address@hidden Smart Key - Treemacs, Smart Key - Emacs Pushbuttons, Smart 
Keyboard Keys, Smart Keyboard Keys
address@hidden Smart Key - Treemacs
+
address@hidden Treemacs
+Treemacs is an add-on Emacs package that offers a fixed, per-frame, graphical
+window for hierarchically browsing and operating upon directories, files and
+programming tags within files.  Use the Emacs package manager to install it and
+then invoke it with @bkbd{M-x treemacs @key{RET}} and quit with @bkbd{q}.
+
address@hidden
+Treemacs items may be dragged with the Action Key to other windows for display.
address@hidden File and Buffer Items}.
+
address@hidden
address@hidden
+When in a Treemacs file browser buffer:
+  ACTION KEY or ASSIST KEY
+     (1) on an entry icon, the treemacs TAB command is run to expand and
+         collapse the entry;
+     (2) elsewhere within an entry line, the item is displayed for editing,
+         normally in another window;
+     (3) on the first line of the buffer (other than the end of line),
+         dired is run on the current directory of this Treemacs;
+     (4) at the end of the first or last line of the buffer,
+         this Treemacs invocation is quit.
address@hidden group
address@hidden format
+
+
address@hidden Smart Key - Emacs Pushbuttons, Smart Key - Argument Completion, 
Smart Key - Treemacs, Smart Keyboard Keys
 @subsection Smart Key - Emacs Pushbuttons
 
 @format
diff --git a/man/im/C-hh.png b/man/im/C-hh.png
new file mode 100644
index 0000000..c6e5bb3
Binary files /dev/null and b/man/im/C-hh.png differ
diff --git a/man/version.texi b/man/version.texi
index f9a2794..2ff12f6 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED November 15, 2017
address@hidden UPDATED November 21, 2017
 @set UPDATED-MONTH Nov 2017
address@hidden EDITION 7.0.0
address@hidden VERSION 7.0.0
address@hidden EDITION 7.0.1
address@hidden VERSION 7.0.1



reply via email to

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