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

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

[elpa] externals/hyperbole 042842d 10/13: Small fixes and doc updates in


From: Stefan Monnier
Subject: [elpa] externals/hyperbole 042842d 10/13: Small fixes and doc updates in preparation for next release
Date: Sun, 12 May 2019 11:11:48 -0400 (EDT)

branch: externals/hyperbole
commit 042842df79f471316b2686c38ef0ec31280c3f57
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>

    Small fixes and doc updates in preparation for next release
---
 Changes            |  38 +++-
 DEMO               |  54 ++++-
 HY-ABOUT           |   5 +-
 HY-NEWS            |  21 +-
 HY-WHY.kotl        |  53 +++--
 Makefile           |   2 +-
 README.md          |   4 +-
 README.md.html     | 620 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 hibtypes.el        |   8 +-
 hmouse-drv.el      |  42 +++-
 hmouse-tag.el      |  24 ++-
 hpath.el           |  74 ++++---
 hui-mouse.el       |   4 +-
 hversion.el        |   2 +-
 hypb.el            |   7 +
 hyperbole-pkg.el   |   2 +-
 hyperbole.el       |   2 +-
 man/hkey-help.txt  |   2 +-
 man/hyperbole.html |  69 +++---
 man/hyperbole.info | Bin 494732 -> 494112 bytes
 man/hyperbole.pdf  | Bin 1266810 -> 1265402 bytes
 man/hyperbole.texi |  78 +++----
 man/version.texi   |   8 +-
 23 files changed, 947 insertions(+), 172 deletions(-)

diff --git a/Changes b/Changes
index 703b1bb..c46b56b 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,39 @@
+2019-05-11  Bob Weiner  <address@hidden>
+
+* man/hyperbole.texi (External Viewers): Commented out reference to mailcap 
use since it is
+    presently not used (commented out in the code).
+
+* hpath.el (hpath:find): Fixed filename and path ordering error when
+    path contains a variable and a hash anchor.
+
+* DEMO (POSIX and MSWindows Paths): Added this section.
+* HY-WHY.kotl: Added a reference to that section.
+
+2019-05-09  Bob Weiner  <address@hidden>
+
+* hmouse-drv.el (hkey-drag-item):
+                (hmouse-click-to-drag-item): Added and thereby changed
+    {M-o i} to trigger an error if not on an item to drag.  This also prevent
+    Hyperbole explicit button creation from being invoked which can be
+    confusing to users.
+* DEMO (Displaying File and Buffer Items and Moving Buffers): Updated with
+    {M-o i} change.
+
+2019-05-07  Bob Weiner  <address@hidden>
+
+* hpath.el (hpath:directory-expand-alist: Added to store the reverse of
+    each WSL mount-point for when converting from mswindows-to-posix.  Set
+    in hpath:cache-mswindows-mount-points.
+           (hpath:cache-mswindows-mount-points): Downcase all mounted Windows 
paths.
+           (hpath:mswindows-path-posix-mount-alist): Added.
+
+2019-05-05  Bob Weiner  <address@hidden>
+
+* hmouse-tag.el (smart-jedi-find-file): Added.
+               (smart-python-jedi-to-definition-p): Improved to use
+    hpath:display-where to display target when possible, i.e. when the
+    emacs-jedi project accepts our pull-request that adds this feature.
+
 2019-04-22  Bob Weiner  <address@hidden>
 
 * hversion.el: Pushed BW changes for 7.0.2c test update.
@@ -120,7 +156,7 @@
     Added and called when Hyperbole is initialized, mainly to allow access to
     MSWindows network shares which would otherwise not be accessible as links
     under POSIX systems.
-           (hpath:map-plist): Added to map over property lists.
+           (hypb:map-plist): Added to map over property lists.
     Called in hpath:cache-mswindows-mount-points.
 
 2019-01-26  Bob Weiner  <address@hidden>
diff --git a/DEMO b/DEMO
index 1caa3ad..1d3b4a1 100644
--- a/DEMO
+++ b/DEMO
@@ -1,5 +1,7 @@
 * GNU Hyperbole Demonstration by Bob Weiner
 
+  Say thanks if you like Hyperbole: https://saythanks.io/to/rswgnu
+
     Table of Contents
     -----------------
     * Introduction
@@ -586,6 +588,37 @@ you can also use paths of the form:
 
        ftp://ftp.gnu.org/pub/
 
+*** POSIX and MSWindows Paths
+
+Hyperbole recognizes standard POSIX paths as well as typical MSWindows
+paths (both local and network shares) and can convert an in-buffer
+path between POSIX and MSWindows formats multiple times, even paths
+involving mount points.  Hyperbole even recognizes the different ways
+paths are accessed when using Windows for GNU/Linux (WSL) atop
+MSWindows, where all of these reference the same directory:
+"c:/Users", "c:\Users", "/C/Users", "/c/Users", and "/mnt/c/Users".
+
+MSWindows paths may be used within links and implicit path buttons
+just like POSIX paths, whether running Emacs under a POSIX system or
+MSWindows.  If under POSIX, a remote MSWindows path must be accessed
+through a mount point to the network share.  Hyperbole caches such
+mount points when it is first loaded.  Use {M-x
+hpath:cache-mswindows-mount-points RET} to update them if more mounts
+are made later.
+
+{M-x hpath:substitute-posix-or-mswindows-at-point RET} toggles any
+path at point between POSIX and MSWindows styles.  Bind it to a key
+for rapid path transformations.
+
+The function, `hpath:substitute-posix-or-mswindows', does the same thing
+for properly quoted path strings, for example:
+  (hpath:substitute-posix-or-mswindows "C:\\Users") yields "/mnt/c/Users"
+and
+  (hpath:substitute-posix-or-mswindows "/c/Users") yields "c:\\Users".
+
+To convert pathnames in one direction only, use the
+`hpath:mswindows-to-posix' or `hpath:posix-to-mswindows' functions.
+
 ** Internet Request For Comments (RFC) Document Browsing
 
 With Tramp, you can also retrieve and browse RFC documents used in Internet
@@ -768,7 +801,7 @@ e.g. filter a file to just lines that don't match a pattern 
(RemoveLines).
 
 ** Annotated Bibliography Buttons
 
-Annotated Bibliography references such as [FSF 16] may be embedded in any file
+Annotated Bibliography references such as [FSF 19] may be embedded in any file
 and activated with the Action Key to find the reference at the end of the file.
 Try that one by pressing between the square brackets.
 
@@ -784,7 +817,7 @@ displayed.  Test this technique with a {C-x C-f} 
(find-file) and then a {?}.
 ** Hyperbole Source Buttons
 
 If you ask for help with the Assist Key or {C-u C-h A} from within the
-[FSF 16] button, the first line of the help buffer will look like this:
+[FSF 19] button, the first line of the help buffer will look like this:
 
 @loc> "DEMO"
 
@@ -1200,13 +1233,12 @@ configured and the suggested M-o key binding is made, 
the leftmost character or
 two of each window's modeline will show the <window-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 <window-id> and watch the magic happen.
-You can also use this to create explicit button links to other window buffers
-when in an editable buffer.  If you want to display multiple items in different
-windows, instead use the M-o t <window-id> key sequence to @emph{throw} each
-item to a different window, while leaving the same selected window.  To replace
-the selected window's buffer with that of another window, use M-o r 
<window-id>.
-To instead swap the selected window's buffer with that of another window,
-use M-o m <window-id>.  Try these commands out and they will speed your work.
+If you want to display multiple items in different windows, instead use the
+M-o t <window-id> key sequence to @emph{throw} each item to a different window,
+while leaving the same selected window.  To replace the selected window's
+buffer with that of another window, use M-o r <window-id>.  To instead swap the
+selected window's buffer with that of another window, use M-o m <window-id>.
+Try these commands out and they will speed your work.
 
 *** Cloning Windows
 
@@ -1318,7 +1350,7 @@ to dive deeper.  Read it online with the GNU Info reader 
at "(hyperbole)Top".
 
 * References
 
-[FSF 16] Free Software Foundation, Inc.  GNU Emacs Manual.  Free Software
-Foundation, Cambridge: MA, 2016.  "(emacs)Top"
+[FSF 19] Free Software Foundation, Inc.  GNU Emacs Manual.  Free Software
+Foundation, Cambridge: MA, 2019.  "(emacs)Top"
 
 * THE END
diff --git a/HY-ABOUT b/HY-ABOUT
index a0b484b..11e2285 100644
--- a/HY-ABOUT
+++ b/HY-ABOUT
@@ -3,7 +3,10 @@
                   Designed and Written by Bob Weiner
                Maintained by Mats Lidell and Bob Weiner
                 https://www.gnu.org/software/hyperbole/
-                            Version 7.0.2c
+                            Version 7.0.3
+
+                   Say thanks if you like Hyperbole:
+                    https://saythanks.io/to/rswgnu
 
 GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
 an efficient and programmable hypertextual information management
diff --git a/HY-NEWS b/HY-NEWS
index 5ddaff2..aaa478b 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -25,17 +25,25 @@
       hmouse-click-to-drag-stay, hmouse-click-to-drag-to,
       hmouse-click-to-replace, hmouse-click-to-swap, hmouse-click-to-throw.
 
+    - {M-o i <window-id>} is now for use only when on a listing item such as
+      in Dired or Buffer Menu.  It no longer creates Hyperbole buttons in
+      non-item areas to avoid confusion.  Now it will just trigger an error
+      if not on a listing item.
+
   SMART (ACTION AND ASSIST) KEYS
 
     - MSWindows Paths: Hyperbole now recognizes typical MSWindows paths (both
-      local and remote).  They may be used within links and implicit path
+      local and remote shares) and can convert an in-buffer path between POSIX
+      and MSWindows formats multiple times, even paths involving mount points.
+
+      MSWindows paths may be used within links and implicit path
       buttons just like POSIX paths, whether running Emacs under a POSIX
       system or MSWindows.  If under POSIX, a remote MSWindows path must be
       accessed through a mount point to the network share.  Hyperbole caches
       such mount points when it is loaded.  Use {M-x
       hpath:cache-mswindows-mount-points RET} to update them if more mounts
       are made later.  See also the NEW COMMANDS section herein for how to
-      convert a path between POSIX and MSWINDOWS/DOS formats.
+      convert a path between POSIX and MSWindows formats.
 
     - GitLab and Github Links: Added Gitlab implicit links with equivalent
       functionality to those of Github.  Added "people" reference support to
@@ -57,7 +65,8 @@
     - Org Mode: When in an *Org Help* buffer, the Smart Keys now defer to
       org-mode to handle jumps to its own locations for compatibility.
       Similarly, in org-mode buffers when not on an org link or heading,
-      Hyperbole defers to org-meta-return.
+      and the {M-RET} Action Key is pressed, Hyperbole defers to Org's
+      org-meta-return command.
 
     - Drag-based Kill, Copy and Yank: Added support for dragging across
       frames.
@@ -91,7 +100,7 @@
   HYCONTROL
 
     - Help Buffer Quitting: If HyControl is active, normally {q} quits
-      it but now if point is in an Emacs help buffer, {q} will quit
+      it, but now if point is in an Emacs help buffer, {q} will quit
       from the help buffer instead.  Use {Q} to quit from HyControl
       unconditionally.
 
@@ -112,7 +121,7 @@
 
   PROGRAMMING
 
-    - Added hpath:map-plist, equivalent to mapcar but maps over
+    - Added hypb:map-plist, equivalent to mapcar but maps over
       key-value pairs in property lists (where the key and value are
       individual elements in the list).
 
@@ -137,7 +146,7 @@
 
     - DEMO: Added section on "DEMO#Gitlab (Remote) References".
 
-    - Update Hyperbole Manual with new features.
+    - Updated Hyperbole Manual with new features.
 
 
 ===========================================================================
diff --git a/HY-WHY.kotl b/HY-WHY.kotl
index bda6d2e..c7e0769 100644
--- a/HY-WHY.kotl
+++ b/HY-WHY.kotl
@@ -23,22 +23,27 @@
       each site, the links are properly maintained.  See "DEMO#Path
       Suffixes and Variables" and "DEMO#Path Prefixes".
 
-   5. Quickly search the web for targeted types of information such as
+   5. Automatically translate POSIX and MSWindows paths within buffers
+      or links to the right format for the current operating system,
+      eliminating the drudgery of converting backslashes to forward
+      slashes.  See "DEMO#POSIX and MSWindows Paths".
+
+   6. Quickly search the web for targeted types of information such as
       programming questions, code libraries, images, videos,
       locations, word definitions, wikipedia entries or even tweets.
       See "DEMO#Hyperbole Menus".
 
-   6. Embed social media hashtags and user names in any text files.
+   7. Embed social media hashtags and user names in any text files.
       Then jump to the associated web page in your favorite web
       browser with an Action Key press.  See "DEMO#Social Media
       Hashtags and Usernames".
 
-   7. Similarly, you can embed github and git object links in any
+   8. Similarly, you can embed github and git object links in any
       files with a simple syntax and Hyperbole will display the
       associated objects with an Action Key press.  See "DEMO#Github
       (Remote) References" and "DEMO#Git (Local) References".
 
-   8. Full-text search for any contact-related information across
+   9. Full-text search for any contact-related information across
       thousands of contacts in under a second.  The fastest contact
       manager you have ever used, with hierarchical entries so you can
       easily find everyone on a particular team or within an
@@ -46,33 +51,33 @@
       while still seeing name, phone number and email information.
       Edit entries with a single key press.  See "DEMO#HyRolo".
 
-   9. Select regions of structured text or source code and to copy or
+  10. Select regions of structured text or source code to copy or
       move them between buffers with a single mouse drag or two key
       presses.  These selectable things include: delimited pairs of
       (), @address@hidden, <>, [] and quote marks, source code functions, 
source
       code comments and matching tag pairs in HTML and SGML modes.
-      See "DEMO#Thing Selection".    
+      See "DEMO#Thing Selection".
 
-  10. Use the fantastic, auto-numbered Koutliner with per-item links
+  11. Use the fantastic, auto-numbered Koutliner with per-item links
       and rapidly changeable views.  See "DEMO#Koutliner".
 
-  11. Rapid control over what is displayed where in multiple windows
-      and frames with mouse drags and the Hyperbole HyControl system.
-      See "DEMO#HyControl".
+  12. Rapid control over what is displayed in each window and frame
+      with mouse drags and the Hyperbole HyControl system.  See
+      "DEMO#HyControl".
 
-    11a. Drag Buffer Menu, Dired or Treemacs items to other windows to
+    12a. 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".
+         Items and Moving Buffers".
 
-    11b. Drag-and-drop text regions across Emacs frames.  See
-         "DEMO#Things".
+    12b. Drag-and-drop text regions across Emacs frames.  See
+         "DEMO#Thing Selection".
 
-    11c. Swap buffers in windows across frames with a mouse drag.
+    12c. Swap buffers in windows across frames with a mouse drag.
          See "DEMO#Swapping Buffers".
 
-    11d. With one command, rapidly create a grid of tiled windows
+    12d. 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
@@ -82,22 +87,22 @@
          same above command to display them in a grid of windows.  See
          "DEMO#Windows Grid".
 
-    11e. Use a quick mouse key press to scroll any window line to the
+    12e. 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".
 
-    11f. Clone or tear off a window into its own frame with a quick
+    12f. Clone or tear off a window into its own frame with a quick
          mouse drag.  See "DEMO#Cloning Windows".
 
-    11g. Each frame can store a series of window configurations
+    12g. 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".
 
-    11h. Easily adjust the height and width of windows and frames as
+    12h. Easily adjust the height and width of windows and frames as
          needed.  See "DEMO#Frame Commands".
 
-    11i. Quick clicks on different areas of a buffer's modeline will
+    12i. 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
@@ -107,7 +112,7 @@
 
 
 "ben" ;; kvspec:current
-37 ;; id-counter
+38 ;; id-counter
 alpha ;; label-type
 4 ;; label-min-width
 ". " ;; label-separator
@@ -115,7 +120,7 @@ alpha ;; label-type
 
 ;; depth-first kcell attributes
 [[0
-  (creator "address@hidden" create-time "20190203:156:52:59" id-counter 37 
file "/c/Users/bob.weiner/Dropbox/emacs/hyperbole/HY-WHY.kotl")]
+  (creator "address@hidden" create-time "20190512:130:33:52" id-counter 38 
file "/home/bob.weiner/Dropbox/emacs/hyperbole/HY-WHY.kotl")]
  [1
   (creator "address@hidden" create-time "20160524:15:04:17" no-fill t)]
  [17
@@ -124,6 +129,8 @@ alpha ;; label-type
   (creator "address@hidden" create-time "20171114:23:37:20" no-fill t)]
  [2
   (creator "address@hidden" create-time "20160524:15:04:24" no-fill t)]
+ [38
+  (creator "address@hidden" create-time "20190512:131:21:14" no-fill t)]
  [31
   (creator "address@hidden" create-time "20171114:23:18:01" no-fill t)]
  [33
diff --git a/Makefile b/Makefile
index 61f1976..656eb2b 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.2c
+HYPB_VERSION = 7.0.3
 
 # Emacs executable used to byte-compile .el files into .elc's.
 # Possibilities include: emacs, infodock, xemacs, etc.
diff --git a/README.md b/README.md
index 0de878c..37ea631 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
-# GNU Hyperbole 7.0.2c - The Everyday Hypertextual Information Manager
+# GNU Hyperbole 7.0.3 - The Everyday Hypertextual Information Manager
+
+[Say thanks if you like Hyperbole.(https://saythanks.io/to/rswgnu)]
 
 <!-- START doctoc generated TOC -->
 **Table of Contents**
diff --git a/README.md.html b/README.md.html
index e69de29..0ed4301 100644
--- a/README.md.html
+++ b/README.md.html
@@ -0,0 +1,620 @@
+<h1>
+<a 
id="user-content-gnu-hyperbole-703---the-everyday-hypertextual-information-manager"
 class="anchor" 
href="#gnu-hyperbole-703---the-everyday-hypertextual-information-manager" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>GNU Hyperbole 7.0.3 - The Everyday Hypertextual 
Information Manager</h1>
+<p>[Say thanks if you like Hyperbole.(<a href="https://saythanks.io/to/rswgnu"; 
rel="nofollow">https://saythanks.io/to/rswgnu</a>)]</p>
+
+<p><strong>Table of Contents</strong></p>
+<ul>
+<li><a href="#summary">Summary</a></li>
+<li><a href="#mailing-lists">Mailing Lists</a></li>
+<li><a href="#ftp-and-git-repository-downloads">Ftp and Git Repository 
Downloads</a></li>
+<li><a href="#installation">Installation</a></li>
+<li><a href="#invocation">Invocation</a></li>
+<li><a href="#hyperbole-components">Hyperbole Components</a></li>
+<li><a href="#hyperbole-buttons">Hyperbole Buttons</a></li>
+<li><a href="#important-features">Important Features</a></li>
+<li><a href="#hyperbole-uses">Hyperbole Uses</a></li>
+<li><a href="#files">Files</a></li>
+<li><a href="#programmer-quick-reference">Programmer Quick Reference</a></li>
+<li><a href="#user-quotes">User Quotes</a></li>
+<li><a href="#why-was-hyperbole-developed">Why was Hyperbole 
developed?</a></li>
+</ul>
+
+<p><a href="man/im/hyperbole-cv.png" target="_blank" rel="noopener 
noreferrer"><img src="man/im/hyperbole-cv.png" alt="Hyperbole screenshot of the 
Koutliner, DEMO file and HyRolo" style="max-width:100%;"></a></p>
+<h2>
+<a id="user-content-summary" class="anchor" href="#summary" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Summary</h2>
+<p><code>GNU Hyperbole</code> (pronounced Ga-new Hi-per-bo-lee), or just 
<code>Hyperbole</code>,
+is an easy-to-use, yet powerful and programmable hypertextual information
+management system implemented as a GNU Emacs package.  It offers rapid views
+and interlinking of all kinds of textual information, utilizing Emacs for
+editing.  It can dramatically increase your productivity and greatly reduce
+the number of keyboard/mouse keys you'll need to work efficiently.</p>
+<p>Hyperbole lets you:</p>
+<ol>
+<li>
+<p>Quickly create hyperlink buttons either from the keyboard or by dragging
+between a source and destination window with a mouse button depressed.
+Later, activate buttons by pressing/clicking on them or by giving the
+name of the button.</p>
+</li>
+<li>
+<p>Activate many kinds of <code>implicit buttons</code> recognized by context
+within text buffers, e.g. URLs, grep output lines, and git commits.
+A single key or mouse button automatically does the right thing in
+dozens of contexts; just press and go.</p>
+</li>
+<li>
+<p>Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6,
+that all renumber automatically as any node or tree is moved in the
+outline.  Each node also has a permanent hyperlink anchor that you can
+reference from any other node;</p>
+</li>
+<li>
+<p>Manage all your contacts quickly with hierarchical categories and
+embed hyperlinks within each entry.  Or create an archive of documents
+with hierarchical entries and use the same search mechanism to quickly
+find any matching entry;</p>
+</li>
+<li>
+<p>Use single keys to easily manage your Emacs windows or frames and
+quickly retrieve saved window and frame configurations;</p>
+</li>
+<li>
+<p>Search for things in your current buffers, in a directory tree or
+across major web search engines with the touch of a few keys.</p>
+</li>
+</ol>
+<p>The common thread in all these features is making retrieval,
+management and display of information fast and easy.  That is
+Hyperbole's purpose.  It may be broad but it works amazingly well.  If
+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"; 
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
+and structured files, mail messages and news articles.  It offers
+intuitive keyboard and mouse-based control of information display
+within multiple windows.  It also provides point-and-click access to
+World-Wide Web URLs, Info manuals, ftp archives, etc.</p>
+<p>Hyperbole includes easy-to-use, powerful hypertextual button types
+without the need to learn a markup language.  Hyperbole's button types
+are written in Lisp and can be wholly independent of the web, i.e. web
+links are one type of Hyperbole link, not fundamental to its link
+architecture.  However, Hyperbole is a great assistant when editing
+HTML or Javascript or when browsing web pages and links.</p>
+<p>Hyperbole is something to be experienced and interacted with, not
+understood from reading alone.  If you like an Emacs package to do
+only one thing than Hyperbole is not for you, but if you would
+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/"; 
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>
+through the GNU Emacs package manager.</p>
+<h2>
+<a id="user-content-mailing-lists" class="anchor" href="#mailing-lists" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Mailing Lists</h2>
+<ul>
+<li>
+<p><strong><a href="mailto:address@hidden";>address@hidden</a></strong> - User 
list for GNU Hyperbole</p>
+</li>
+<li>
+<p><strong><a href="mailto:address@hidden";>address@hidden</a></strong> - List 
for bug reporting</p>
+</li>
+</ul>
+<h2>
+<a id="user-content-ftp-and-git-repository-downloads" class="anchor" 
href="#ftp-and-git-repository-downloads" aria-hidden="true"><span 
aria-hidden="true" class="octicon octicon-link"></span></a>Ftp and Git 
Repository Downloads</h2>
+<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/"; 
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/"; 
rel="nofollow">ftp://ftp.gnu.org/gnu/hyperbole/</a></p>
+</li>
+<li>
+<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"; 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"; 
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
+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"; 
rel="nofollow">Emacs Init
+File</a>.</p>
+<p>Below are the lines to add:</p>
+<pre><code>(require 'package)
+(setq package-enable-at-startup nil) ;; Prevent double loading of libraries
+(package-initialize)
+(unless (package-installed-p 'hyperbole)
+  (package-refresh-contents)
+  (package-install 'hyperbole))
+(require 'hyperbole)
+</code></pre>
+<hr>
+<p>Now save the file and then restart Emacs.  Hyperbole will then be
+downloaded and compiled for use with your version of Emacs; give it a
+minute or two.  You may see a bunch of compilation warnings but these
+can be safely ignored.</p>
+<h2>
+<a id="user-content-invocation" class="anchor" href="#invocation" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Invocation</h2>
+<p>Once Hyperbole has been installed for use at your site and loaded into your
+Emacs session, it is ready for use.  You will see a Hyperbole menu on your
+menubar and {C-h h} will display a Hyperbole menu in the minibuffer for
+quick keyboard-based selection.</p>
+<p>You can invoke Hyperbole commands in one of three ways:</p>
+<p>use the Hyperbole menu on your menubar;</p>
+<p><a href="man/im/menu-hyperbole.png" target="_blank" rel="noopener 
noreferrer"><img src="man/im/menu-hyperbole.png" alt="Hyperbole Menubar Menu" 
style="max-width:100%;"></a></p>
+<p>type {C-h h} or {M-x hyperbole RET} to bring up the Hyperbole main menu
+in the minibuffer window, for fast keyboard or mouse-based selection;
+select an item from this menu by typing the item's first letter; use {q}
+to quit from the menu.</p>
+<p>use a specific Hyperbole command such as an Action Key click {M-RET} on
+a pathname to display the associated file or directory.</p>
+<p>Use {C-h h d d} for an interactive demonstration of standard Hyperbole
+button capabilities.</p>
+<p><a href="man/im/demo.png" target="_blank" rel="noopener noreferrer"><img 
src="man/im/demo.png" alt="Hyperbole screenshot of the DEMO" 
style="max-width:100%;"></a></p>
+<p>{C-h h k e} offers an interactive demonstration of the Koutliner,
+Hyperbole's multi-level autonumbered hypertextual outliner.</p>
+<p><a href="man/im/koutliner.png" target="_blank" rel="noopener 
noreferrer"><img src="man/im/koutliner.png" alt="Hyperbole screenshot of the 
Koutliner" style="max-width:100%;"></a></p>
+<p>To try out HyControl, Hyperbole's interactive frame and window control
+system, use {C-h h s w} for window control or {C-h h s f} for frame
+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"; 
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
+of the Hyperbole package directory in four forms:</p>
+<p><a href="man/hyperbole.info">hyperbole.info</a>   - online Info browser 
version<br>
+<a href="man/hyperbole.html">hyperbole.html</a>   - web HTML version<br>
+<a href="man/hyperbole.pdf">hyperbole.pdf</a>     - printable version<br>
+<a href="man/hyperbole.texi">hyperbole.texi</a>   - source form</p>
+<p>The Hyperbole package installation places the Info version of this manual
+where needed and adds an entry for Hyperbole into the Info directory under
+the Emacs category.  {C-h h d i} will let you browse the manual.  For web
+browsing, point your browser at "${hyperb:dir}/man/hyperbole.html",
+wherever the Hyperbole package directory is on your system; often this is:
+"~/.emacs.d/elpa/hyperbole-${hyperb:version}/".</p>
+<h2>
+<a id="user-content-hyperbole-components" class="anchor" 
href="#hyperbole-components" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Hyperbole Components</h2>
+<p>Hyperbole consists of five parts:</p>
+<ol>
+<li>
+<p><strong>Buttons and Smart Keys</strong>: A set of hyperbutton types which 
supply
+core hypertext and other behaviors.  Buttons may be added to
+documents (explicit buttons) with a simple drag between windows,
+no markup language needed.  Implicit buttons are patterns
+automatically recognized within text that perform actions,
+e.g. bug#24568 displays the bug status information for that bug
+number.</p>
+<p>These actions may be links or arbitrary Lisp expressions.  So
+for example, you could create your own button type of
+Wikipedia searches that jumped to the named Wikipedia page
+whenever point was within text of the form [wp].
+You define the pattern so {} might do the same
+thing if you preferred.  And this works within any Emacs
+buffer you want it to, regardless of major or minor mode.</p>
+<p>Buttons are accessed by clicking on them or referenced by name
+(global buttons), so they can be activated regardless of what is
+on screen.  Users can make simple changes to button types and
+those familiar with Emacs Lisp can prototype and deliver new
+types quickly with just a few lines of code.</p>
+<p>Hyperbole includes two special `Smart Keys', the Action Key
+and the Assist Key, that perform an extensive array of
+context-sensitive operations across emacs usage, including
+activating and showing help for Hyperbole buttons.  In many
+popular Emacs modes, they allow you to perform common, sometimes
+complex operations without having to use a different key for each
+operation.  Just press a Smart Key and the right thing happens;</p>
+</li>
+<li>
+<p><strong>Contact and Text Finder</strong>: an interactive textual information
+management interface, including fast, flexible file and text
+finding commands.  A powerful, hierarchical contact manager,
+HyRolo, which anyone can use is also included.  It is easy to
+learn to use since it introduces only a few new mechanisms and
+has a menu interface, which may be operated from the keyboard or
+the mouse.</p>
+<p><a href="man/im/menu-rolo.png" target="_blank" rel="noopener 
noreferrer"><img src="man/im/menu-rolo.png" alt="HyRolo Menubar Menu" 
style="max-width:100%;"></a></p>
+</li>
+<li>
+<p><strong>Screen Control</strong>: Hyperbole includes HyControl, the fastest,
+easiest-to-use window and frame control available for GNU
+Emacs.  With just a few keystrokes, you can shift from
+increasing a window's height by 5 lines to moving a frame by
+220 pixels or immediately moving it to a screen corner.  Text
+in each window or frame may be enlarged or shrunk (zoomed) for
+easy viewing, plus many other features;</p>
+<p>The broader vision for HyControl is to support persistent
+window and frame configurations as link targets.  Then a user
+will be able to create the views of information he wants and
+store them as links for rapid display.  Work remains to
+implement this feature but it helps explain the connection of
+HyControl to the rest of Hyperbole;</p>
+</li>
+<li>
+<p><strong>The Koutliner</strong>: an advanced outliner with multi-level
+autonumbering and permanent ids attached to each outline node for
+use as hypertext link anchors, per node properties and flexible
+view specifications that can be embedded within links or used
+interactively;</p>
+</li>
+<li>
+<p><strong>Programming Library</strong>: a set of programming library classes 
for
+system developers who want to integrate Hyperbole with another
+user interface or as a back-end to a distinct system.  (All of
+Hyperbole is written in Emacs Lisp for ease of modification.
+Hyperbole has been engineered for real-world usage and is well
+structured).</p>
+</li>
+</ol>
+<p>We find Hyperbole's parts are more powerful as one package, i.e. the
+sum is greater than the parts, so we don't offer them separately.
+Hyperbole is free software, however, so you may modify it as you see
+fit.</p>
+<h2>
+<a id="user-content-hyperbole-buttons" class="anchor" 
href="#hyperbole-buttons" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Hyperbole Buttons</h2>
+<p>A Hyperbole hypertext user works with buttons; he may create, modify, move
+or delete buttons.  Each button performs a specific action, such as linking
+to a file or executing a shell command.</p>
+<p>There are three categories of Hyperbole buttons:</p>
+<ol>
+<li>
+<p><em>Explicit Buttons</em>
+created by Hyperbole, accessible from within a single document;</p>
+</li>
+<li>
+<p><em>Global Buttons</em>
+created by Hyperbole, accessible anywhere within a user's
+network of documents;</p>
+</li>
+<li>
+<p><em>Implicit Buttons</em>
+buttons created and managed by other programs or embedded
+within the structure of a document, accessible from within a
+single document.  Hyperbole recognizes implicit buttons by
+contextual patterns given in their type specifications.</p>
+</li>
+</ol>
+<p>Hyperbole buttons may be clicked upon with a mouse to activate them or to
+describe their actions.  Thus, a user can always check how a button will act
+before activating it.  Buttons may also be activated from a keyboard.  (In
+fact, virtually all Hyperbole operations, including menu usage, may be
+performed from any standard terminal interface, so one can use it on distant
+machines that provide limited display access).</p>
+<p>Hyperbole does not enforce any particular hypertext or information
+management model, but instead allows you to organize your information in
+large or small chunks as you see fit, organizing each bit as time allows.
+The Hyperbole Koutliner and HyRolo tools organize textual hierarchies and
+may also contain links to external information sources.</p>
+<h2>
+<a id="user-content-important-features" class="anchor" 
href="#important-features" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Important Features</h2>
+<p>Some of Hyperbole's most important features include:</p>
+<ul>
+<li>
+<p>Buttons may link to information or may execute commands, such as
+computing a complex value or communicating with external programs;</p>
+</li>
+<li>
+<p>Buttons are quick and easy to create with no programming nor
+markup needed.  One simply drags between a button source location
+and a link destination to create or to modify a link button.  The
+same result can be achieved from the keyboard.</p>
+</li>
+<li>
+<p>Buttons may be embedded within email messages and activated from
+Emacs mail readers; hyperlinks may include variables so that they
+work at different locations where the variable settings differ;</p>
+</li>
+<li>
+<p>Koutlines allow rapid browsing, editing and movement of chunks of
+information organized into trees (hierarchies) and offer links
+that include viewspecs which determine how documents are to be
+displayed, e.g. show just the first two lines of all levels in a
+Koutline;</p>
+</li>
+<li>
+<p>Other hypertext and information retrieval systems may be
+encapsulated under a Hyperbole user interface very easily.</p>
+</li>
+</ul>
+<h2>
+<a id="user-content-hyperbole-uses" class="anchor" href="#hyperbole-uses" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Hyperbole Uses</h2>
+<p>Typical Hyperbole applications include:</p>
+<ul>
+<li>
+<p><em>Personal Information Management</em><br>
+Overlapping link paths provide a variety of views into an
+information space.  A single key press activates buttons
+regardless of their types, making navigation easy.</p>
+<p>A search facility locates buttons in context and permits quick
+selection.</p>
+</li>
+<li>
+<p><em>Documentation Browsing</em><br>
+Embedding cross-references in a favorite documentation format.</p>
+<p>Addition of a point-and-click interface to existing documentation.</p>
+<p>Linkage of code and design documents.  Jumping to the definition
+of an identifier from its use within code or its reference within
+documentation.</p>
+</li>
+<li>
+<p><em>Brainstorming</em><br>
+Capture of ideas and then quick reorganization with the Hyperbole
+Koutliner.  Link to related ideas, eliminating the need to copy
+and paste information into a single place.</p>
+</li>
+<li>
+<p><em>Help/Training Systems</em><br>
+Creation of tutorials with embedded buttons that show students how
+things work while explaining the concepts, e.g. an introduction
+to UNIX commands.  This technique can be much more effective than
+descriptions alone.</p>
+</li>
+<li>
+<p><em>Archive Managers</em><br>
+Supplementation of programs that manage archives from incoming
+information stream, having them add topic-based buttons that
+link to the archive holdings.  Users can then search and create
+their own links to archive entries.</p>
+</li>
+</ul>
+<h2>
+<a id="user-content-files" class="anchor" href="#files" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>Files</h2>
+<p>See the <a href="HY-ABOUT">HY-ABOUT</a> file for a description and overview 
of Hyperbole.</p>
+<p>See the <a href="HY-NEWS">HY-NEWS</a> file for a summary of new features in 
this release.</p>
+<p>See the <a href="INSTALL">INSTALL</a> file for installation and invocation 
instructions.</p>
+<p>See the <a href="HY-COPY">HY-COPY</a> and <a href="COPYING">COPYING</a> 
files for license information.</p>
+<p>See the <a href="MANIFEST">MANIFEST</a> file for summaries of Hyperbole 
distribution files.</p>
+<p>See <a href="DEMO">DEMO</a> for a demonstration of standard Hyperbole 
button capabilities.
+This is the best way to initially interactively learn about Hyperbole after
+installing it.</p>
+<p>Various forms of the Hyperbole are below the "man/" subdirectory.</p>
+<h2>
+<a id="user-content-programmer-quick-reference" class="anchor" 
href="#programmer-quick-reference" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Programmer Quick Reference</h2>
+<p><a href="MANIFEST">MANIFEST</a> summarizes most of the files in the 
distribution.</p>
+<p>See <a href="DEMO">DEMO</a> for a demonstration of standard Hyperbole button
+capabilities.  This is the best way to initially interactively learn
+about Hyperbole.  The Hyperbole Manual is a reference manual, not a
+simple introduction.</p>
+<p>Naming conventions:</p>
+<ul>
+<li>
+<p>All Hyperbole-specific code files begin with an 'h', aside from the
+Koutliner files which are in the kotl/ subdirectory and begin with a 'k'.</p>
+</li>
+<li>
+<p>Hyperbole user-interface files begin with 'hui-' or 'hmous'.</p>
+</li>
+<li>
+<p>Files that define implicit button types begin with 'hib'.</p>
+</li>
+<li>
+<p>Encapsulations of foreign systems begin with 'hsys-'.</p>
+</li>
+</ul>
+<p>Most of the standard Emacs user interface for Hyperbole is located in
+<a href="hui.el">hui.el</a>.  Most of the Hyperbole application programming
+interface can be found in <a href="hbut.el">hbut.el</a>.  <a 
href="hbdata.el">hbdata.el</a>
+encapsulates the button attribute storage implemented by Hyperbole.
+<a href="hmail.el">hmail.el</a> provides a basic abstract interface for
+integrating mail readers other than Rmail into Hyperbole.</p>
+<p>See the [Hyperbole Questions and Answers](man/hyperbole.html#Questions
+and Answers) appendix in the Hyperbole manual for information on how
+to alter the default context-sensitive Hyperbole key bindings (Smart
+Keys).</p>
+<h2>
+<a id="user-content-user-quotes" class="anchor" href="#user-quotes" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>User Quotes</h2>
+<p>*** MAN I love Hyperbole!!!  Wow! ***</p>
+<pre><code>                    -- Ken Olstad  
+                       Cheyenne Software, Inc.
+</code></pre>
+<hr>
+<p>I <em>love</em> koutlines.</p>
+<pre><code>                    -- Bob Glickstein  
+                       Z-Code Software Corporation
+</code></pre>
+<hr>
+<p>One of the nicest things about Hyperbole is that it's available
+everywhere. Org-mode is a mode and its features are only available in
+Org files. For instance if you dropped into <code>eshell' or </code>ansi-term' 
and
+did `ls', you can move point to any of the directory's contents, do M-RET
+(or Shift-Button2) and jump to that file.  And that's just one example.
+Note that this means that all Hyperbole functionality is available in
+Org files as well.  To me, except for the Hyperbole outliner, that means
+complementary not conflicting. It's Hyperbole <em>and</em> org-mode, not
+Hyperbole vs. org-mode.</p>
+<p>Additionally, off the bat, I found it very well documented and for me
+that's a proxy for the quality of a package.  The maintainers are quite
+responsive.  There's plenty more functionality that I haven't uncovered yet
+but due to the ease of installation and the quality of the documentation,
+digging into it is actually fun.</p>
+<pre><code>                    -- Aditya Siram  
+</code></pre>
+<hr>
+<p>For me, Emacs isn't Emacs without Hyperbole.  I have depended on Hyperbole
+daily since 1992, when I first started using it to manage my development
+environment.  It didn't take long before I could summon almost any
+information I needed directly from within my editing environment with an
+implicit button. Since I almost never have to slow down to look for
+things--one context-dependent button usually produces exactly what I need
+--I am able to maintain focus on the task I am working on and complete it
+more quickly.  With its gestural interface, seamless integration with other
+Emacs packages and incredibly useful set of core features.  I think that
+Hyperbole is one of the best designed and most easily extensible software
+products I have ever come across.  It is certainly the one which has made
+the biggest improvement in my personal productivity.</p>
+<p>My Hyperbole button file is my start page in Emacs.  It's a quickly
+searchable index with links to countless resources.  We also have a
+library of implicit buttons that enable rapid navigation from references
+in our code to our issue tracking system, so clicking a reference like
+Client6502 opens the relevant conversation.  Hyperbole provides a really
+useful set of power tools.  If Emacs is your preferred productivity
+environment, it's definitely worth getting familiar with it.</p>
+<pre><code>                    -- Chris Nuzum  
+                       Co-founder, Traction Softwarea, Inc.
+</code></pre>
+<hr>
+<p>I've found Hyperbole (in conjunction with XEmacs) to be very useful
+for signal processing algorithm development.</p>
+<p>For me, it has almost completely obsoleted the engineering notebook:
+I keep a set of files with ideas, algorithms, and results, linked
+together and to the implementation in C++ files.  Using XEmacs'
+support for embedding graphics, I've written a mode that accepts
+image tags (formatted like HTML), and reads in GIF files to display
+plots.  I have another program that converts the file to HTML (not
+perfect, but adequate), so I can put any aspect of development on
+our internal web for others to see.</p>
+<pre><code>                    -- Farzin Guilak  
+                       Protocol Systems, Inc., Engineer
+</code></pre>
+<hr>
+<p>I am blind and have been using Hyperbole since 1992.  I used to use a PC as
+a talking terminal attached to a UNIX system, but then I developed
+Emacspeak which lets me use Emacs and Hyperbole from standard UNIX
+workstations with an attached voice synthesizer.</p>
+<p>My main uses are:</p>
+<ol>
+<li>
+<p>Global and implicit buttons for jumping to ftp sites.</p>
+</li>
+<li>
+<p>The contact manager with Emacspeak support.</p>
+</li>
+<li>
+<p>Explicit buttons as part of comments made about a structured document.
+Each button jumps to the document section referred to by the comment.
+This is very, very useful.</p>
+</li>
+<li>
+<p>The Hyperbole Koutliner, which I find a very useful tool.  I've
+implemented Emacspeak extensions to support it.</p>
+<pre><code>              -- TV Raman  
+                 Google Inc.
+</code></pre>
+</li>
+</ol>
+<hr>
+<p>I've been a grateful Hyperbole user for a few years now.  Hyperbole's
+flexibility and ease of use is a marvel.</p>
+<p>Mainly, I write easy little implicit button types (and corresponding action
+types) to make my life easier.  For example, I have an implicit button type
+to bury certain buffers when I click at their bottoms, one that recognizes
+a bug report record in various contexts and edits it, one that links pieces
+of test output in a log file to the corresponding test case source code
+(EXTREMELY helpful in interpreting test output), others that support our
+homegrown test framework, one that handles tree dired mode the way I'd
+like, one that completely handles wico menus (I've also overloaded the
+wconfig actions triggered by diagonal mouse drags with wicos actions), and
+a couple that support interaction with BBDB.</p>
+<p>Other than that, I keep a global button file with 30 or so explicit buttons
+that do various little things, and I index saved mail messages by putting
+explicit link-to-mail buttons in an outline file.</p>
+<pre><code>                    -- Ken Olstad  
+                       Cheyenne Software, Inc.
+</code></pre>
+<hr>
+<p>In general, Hyperbole is an embeddable, highly extensible hypertext
+tool.  As such, I find it very useful. As it stands now, Hyperbole is
+particularly helpful for organizing ill-structured or loosely coupled
+information, in part because there are few tools geared for this purpose.
+Hyperbole also possesses a lot of potential in supporting a wider
+spectrum of structuredness, ranging from unstructured to highly
+structured environments, as well as structural changes over time.</p>
+<p>Major Uses:</p>
+<ul>
+<li>
+<p>Menu interface to our own collaborative support environment called
+CoReView: This interface brings together all top-level user commands
+into a single partitioned screen, and allows the end user to interact
+with the system using simple mouse-clicking instead of the meta-x key.</p>
+</li>
+<li>
+<p>Gateway to internet resources: this includes links to major Internet
+archive sites of various types of information. Links are made at both
+directory and file levels.</p>
+</li>
+<li>
+<p>Alternative directory organizer: The hierarchical nature of the Unix
+file system sometimes makes it difficult to find things quickly and
+easily using directory navigational tools such as dired. Hyperbole
+enables me to create various "profile" views of my directory tree, with
+entries in these views referring to files anywhere in the hierarchy.</p>
+</li>
+<li>
+<p>Organizing and viewing online documentation: using Hyperbole along with
+Hyper-man and Info makes it truly easy to look up online documentation.</p>
+</li>
+<li>
+<p>Other desktop organization tasks: including links to various mail
+folders, saved newsgroup conversation threads, online note-taker,
+emacs-command invocations, etc.</p>
+<pre><code>                -- Dadong Wan  
+                   University of Hawaii
+</code></pre>
+</li>
+</ul>
+<hr>
+<p>Hyperbole is the first hyper-link system I've run across that is
+actually part of the environment I use regularly, namely Emacs. The
+complete flexibility of the links is both impressive and expected -- the
+idea of making the link itself programmable is clever, and given that one
+assumes the full power of Emacs.  Being able to send email with buttons
+in it is a very powerful capability.  Using ange-ftp mode, one can make
+file references "across the world" as easily as normal file references.</p>
+<pre><code>                    -- Mark Eichin  
+                       Cygnus Support
+</code></pre>
+<hr>
+<p>I just wanted to say how much I enjoy using the Hyperbole Koutliner.
+It is a great way to quickly construct very readable technical documents
+that I can pass around to others.   Thanks for the great work.</p>
+<pre><code>                    -- Jeff Fried  
+                       Informix
+</code></pre>
+<hr>
+<p>The Hyperbole system provides a nice interface to exploring corners of
+Unix that I didn't know existed before.</p>
+<pre><code>                    -- Craig Smith  
+</code></pre>
+<h2>
+<a id="user-content-why-was-hyperbole-developed" class="anchor" 
href="#why-was-hyperbole-developed" aria-hidden="true"><span aria-hidden="true" 
class="octicon octicon-link"></span></a>Why was Hyperbole developed?</h2>
+<p>Hyperbole was originally designed to aid in research aimed at Personalized
+Information production/retrieval Environments (PIEs).  Hyperbole was a
+PIE Manager that provided services to PIE Tools.  PIEmail, a mail reader was
+the only PIE Tool developed as part of this research but Hyperbole has
+greatly expanded since then and has long been a production quality toolset.</p>
+<p>An examination of many hypertext environments as background research did
+not turn up any that seemed suitable for the research envisioned, mainly
+due to the lack of rich, portable programmer and user environments.  We also
+tired of trying to manage our own distributed information pools with standard
+UNIX tools.  And so Hyperbole was conceived and raved about until it
+got its name.</p>
+<p>Since then Hyperbole has proved indispensible at improving information
+access and organization in daily use over many years.  Why not start
+improving your information handling efficiency today?</p>
+<p>-- The End --</p>
+
diff --git a/hibtypes.el b/hibtypes.el
index 56a53a0..c018f3c 100644
--- a/hibtypes.el
+++ b/hibtypes.el
@@ -128,9 +128,11 @@ any buffer attached to a file in `hyrolo-file-list', or 
any buffer with
   "Makes a valid pathname display the path entry.
 Also works for delimited and non-delimited remote pathnames,
 Texinfo @file{} entries, and hash-style link references to HTML,
-Markdown or Emacs outline headings.  Emacs Lisp library
-files (filenames without any directory component that end in .el
-and .elc) are looked up using the `load-path' directory list.
+Markdown or Emacs outline headings, and MSWindows paths (see
+\"${hyperb:dir}/DEMO#POSIX and MSWindows Paths\" for details).
+Emacs Lisp library files (filenames without any directory
+component that end in .el and .elc) are looked up using the
+`load-path' directory list.
 
 See `hpath:at-p' function documentation for possible delimiters.
 See `hpath:suffixes' variable documentation for suffixes that are
diff --git a/hmouse-drv.el b/hmouse-drv.el
index 0000049..9d81962 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -363,7 +363,7 @@ magic happen."
        aw-dispatch-alist (delq (assq ?t aw-dispatch-alist)
                                (delq (assq ?r aw-dispatch-alist)
                                      (delq (assq ?i aw-dispatch-alist) 
aw-dispatch-alist))))
-  (push '(?i hkey-drag-to "Hyperbole: Drag To") aw-dispatch-alist)
+  (push '(?i hkey-drag-item "Hyperbole: Drag Item") aw-dispatch-alist)
   ;; Ace-window includes ?m as the swap windows key, so it is not added here.
   (push '(?r hkey-replace "Hyperbole: Replace Here") aw-dispatch-alist)
   (push '(?t hkey-throw   "Hyperbole: Throw To") aw-dispatch-alist)
@@ -417,6 +417,38 @@ Works only when running under a window system, not from a 
dumb terminal."
        (hypb:select-window-frame start-window)))))
 
 ;;;###autoload
+(defun hkey-drag-item (release-window)
+  "Emulate Smart Mouse Key drag from an item in a selected window to 
RELEASE-WINDOW, interactively chosen via ace-window.
+RELEASE-WINDOW is left selected unless point is not on an item, in
+which case, an error is signalled.
+
+Optional prefix arg non-nil means emulate Assist Key rather than the
+Action Key.
+
+Works only when running under a window system, not from a dumb terminal."
+  (interactive
+   (list (let ((mode-line-text (concat " Ace - " (nth 2 (assq ?i 
aw-dispatch-alist)))))
+          (aw-select mode-line-text))))
+  (let ((start-window (if (and (boundp 'start-window) (window-live-p 
start-window))
+                         start-window
+                       (if current-prefix-arg
+                           assist-key-depress-window
+                         action-key-depress-window)))
+       at-item-flag)
+    (unless (window-live-p start-window)
+      (setq start-window (selected-window)))
+    (cond ((and (setq at-item-flag (hmouse-at-item-p))
+               (window-live-p release-window))
+          (hkey-drag release-window)
+          ;; Leave release-window selected
+          (when (window-live-p release-window)
+            (hypb:select-window-frame release-window)))
+         (at-item-flag
+          (error "(hkey-drag-item): No listing item at point"))
+         (t ;; No item at point or selected release is invalid
+          (error "(hkey-drag-item): Invalid final window, %s" 
release-window)))))
+
+;;;###autoload
 (defun hkey-drag-to (release-window)
   "Emulate Smart Mouse Key drag from a selected window to RELEASE-WINDOW, 
interactively chosen via ace-window.
 If an item is dragged to RELEASE-WINDOW, then RELEASE-WINDOW is selected;
@@ -575,6 +607,14 @@ The selected window does not change."
   (hmouse-choose-windows #'hkey-drag-stay))
 
 ;;;###autoload
+(defun hmouse-click-to-drag-item ()
+  "Mouse click on start and end windows for use with `hkey-drag-item'.
+Emulate {M-o i} from start window to end window.
+After the drag, the end window is the selected window."
+  (interactive)
+  (hmouse-choose-windows #'hkey-drag-item))
+
+;;;###autoload
 (defun hmouse-click-to-drag-to ()
   "Mouse click on start and end windows for use with `hkey-drag-to'.
 Emulate Smart Mouse Key drag from start window to end window.
diff --git a/hmouse-tag.el b/hmouse-tag.el
index 49e9046..1f9f3c3 100644
--- a/hmouse-tag.el
+++ b/hmouse-tag.el
@@ -771,23 +771,35 @@ If key is pressed:
             (buffer-substring-no-properties (match-beginning 2) (match-end 2))
             (match-beginning 2) (match-end 2)))))))
 
+(defun smart-jedi-find-file (file line column other-window)
+  "Function that reads a source file for jedi navigation.
+It takes these arguments: (file-to-read other-window-flag line_number 
column_number)."
+  (hpath:display-buffer (find-file file) other-window)
+  (jedi:goto--line-column line column))
 
 (defun smart-python-jedi-to-definition-p ()
   "If the Jedi Python identifier server is running, test and use it to jump to 
the definition.
 See https://tkf.github.io/emacs-jedi/latest/.";
   ;; Use functions from jedi-core.el only, not from jedi.el, since
   ;; company-jedi.el users will have loaded only jedi-core.el.
-  (when (featurep 'jedi-core)
+  (when (and (featurep 'jedi-core) jedi-mode)
     (let* ((servers (jedi:-get-servers-in-use))
           (proc (epc:manager-server-process (car servers))))
       (and servers (processp proc)
           (eq 'run (process-status (process-buffer proc)))
           ;; The goto is performed asynchronously.
           ;; It reports in the minibuffer when a definition is not found.
-          (progn (jedi:goto-definition t)
-                 ;; For use as a predicate, always return t if the Jedi server
-                 ;; is running  so other lookup techniques are not tried.
-                 t)))))
+          ;; !! Only works on tag at point, not the tagname passed in as jedi
+          ;; does not accept a tag parameter.
+          ;;
+          ;; jedi:find-file-function is an RSW custom
+          ;; modification that allows display-where to work;
+          ;; otherwise, will just display in another window.
+          (let ((jedi:find-file-function #'smart-jedi-find-file))
+            (jedi:goto-definition hpath:display-where)
+            ;; For use as a predicate, always return t if the Jedi server
+            ;; is running  so other lookup techniques are not tried.
+            t)))))
 
 ;;;###autoload
 (defun smart-python (&optional identifier next)
@@ -1289,7 +1301,7 @@ See the \"${hyperb:dir}/smart-clib-sym\" script for more 
information."
               (with-no-warnings (find-tag tag))))
       ;; Signals an error if tag is not found which is caught by
       ;; many callers of this function.
-      (with-no-warnings        (find-tag tag)))))
+      (with-no-warnings (find-tag tag)))))
 
 ;;;###autoload
 (defun smart-tags-file-path (file)
diff --git a/hpath.el b/hpath.el
index ebc17b0..f31c9ed 100644
--- a/hpath.el
+++ b/hpath.el
@@ -80,6 +80,13 @@ If the value of 'hpath:mswindows-mount-prefix' changes, then 
re-initialize this
 (defconst hpath:mswindows-path-regexp "\\`.*\\.*[a-zA-Z0-9_.]"
   "Regular expression matching the start of an MSWindows path that does not 
start with a drive letter but contains directory separators.")
 
+(defvar hpath:mswindows-path-posix-mount-alist nil
+  "Automatically set alist of (window-path-prefix . posix-mount-point) 
elements.")
+
+(defvar hpath:directory-expand-alist nil
+  "Automatically set alist of (posix-mount-point . window-path-prefix) 
elements.
+   Used to expand windows prefixes to posix mount points during 
mswindows-to-posix.")
+
 ;;;###autoload
 (defun hpath:mswindows-to-posix (path)
   "Convert a recognizable MSWindows PATH to a Posix-style path or return the 
path unchanged.
@@ -102,10 +109,10 @@ If path begins with an MSWindows drive letter, prefix the 
converted path with th
   path)
 
 (defun hpath:mswindows-to-posix-separators (path)
-  "Replace all backslashes with forward slashes in PATH and abbreviate the 
path if possible.
-Path must be a string or an error will be triggered.  See
-'abbreviate-file-name' for how path abbreviation is handled."
-  (abbreviate-file-name (replace-regexp-in-string "\\\\" "/" path)))
+  "Replace all backslashes with forward slashes in PATH and expand the path 
against `directory-abbrev-alist', if possible.
+Path must be a string or an error will be triggered."
+  (let ((directory-abbrev-alist hpath:directory-expand-alist))
+    (replace-regexp-in-string "\\\\" "/" (abbreviate-file-name path))))
 
 ;;;###autoload
 (defun hpath:posix-to-mswindows (path)
@@ -131,7 +138,6 @@ If path begins with an optional mount prefix, 
'hpath:mswindows-mount-prefix', fo
                             rest-of-path))))))
   path)
 
-
 (defun hpath:posix-to-mswindows-separators (path)
   "Replace all forward slashes with backslashes in PATH and abbreviate the 
path if possible.
 Path must be a string or an error will be triggered.  See
@@ -169,36 +175,40 @@ Path must be a string or an error will be triggered.  See
       (hpath:mswindows-to-posix path))))
 
 ;;;###autoload
-(defun hpath:map-plist (func plist)
-  "Returns result of applying FUNC of two args, key and value, to key-value 
pairs in PLIST, a property list."
-  (cl-loop for (k v) on plist by #'cddr
-          collect (funcall func k v) into result
-          finally return result))
-
-;;;###autoload
 (defun hpath:cache-mswindows-mount-points ()
   "Cache valid MSWindows mount points in 'directory-abbrev-alist' when under a 
non-MSWindows operating system, e.g. WSL.
 Call this function manually if mount points change after Hyperbole is loaded."
   (interactive)
   (when (not hyperb:microsoft-os-p)
-    (let (path mount-point)
+    (let ((mount-points-to-add
+          ;; Sort alist of (path-mounted . mount-point) elements from shortest
+          ;; to longest path so that the longest path is selected first within
+          ;; 'directory-abbrev-alist' (elements are added in reverse order).
+          (sort
+           ;; Convert plist to alist for sorting.
+           (hypb:map-plist (lambda (path mount-point)
+                              (if (string-match "\\`\\([a-zA-Z]\\):\\'" path)
+                                  ;; Drive letter must be downcased
+                                  ;; in order to work when converted back to 
Posix.
+                                  (setq path (concat "/" (downcase 
(match-string 1 path)))))
+                              ;; Assume all mounted Windows paths are
+                              ;; lowercase for now.
+                              (cons (downcase path) mount-point))
+                            ;; Return a plist of MSWindows path-mounted 
mount-point pairs.
+                            (split-string (shell-command-to-string (format "df 
-a -t drvfs 2> /dev/null | sort | uniq | grep -v '%s' | sed -e 's+ .*[-%%] /+ 
/+g'" hpath:posix-mount-points-regexp))))
+           (lambda (cons1 cons2) (<= (length (car cons1)) (length (car 
cons2))))))
+         path mount-point)
       (mapcar (lambda (path-and-mount-point)
                (setq path (car path-and-mount-point)
                      mount-point (cdr path-and-mount-point))
                (add-to-list 'directory-abbrev-alist (cons (format "\\`%s" 
(regexp-quote path))
                                                           mount-point)))
-             ;; Sort alist of (path-mounted . mount-point) elements from 
shortest
-             ;; to longest path so that the longest path is selected first 
within
-             ;; 'directory-abbrev-alist' (elements are added in reverse order).
-             (sort
-              ;; Convert plist to alist for sorting.
-              (hpath:map-plist (lambda (path mount-point)
-                                (if (string-match "\\`\\([a-zA-Z]\\):\\'" path)
-                                    (setq path (concat "/" (downcase 
(match-string 1 path)))))
-                                (cons path mount-point))
-                              ;; Return a plist of MSWindows path-mounted 
mount-point pairs.
-                              (split-string (shell-command-to-string (format 
"df -a -t drvfs 2> /dev/null | sort | uniq | grep -v '%s' | sed -e 's+ .*[-%%] 
/+ /+g'" hpath:posix-mount-points-regexp))))
-              (lambda (cons1 cons2) (<= (length (car cons1)) (length (car 
cons2)))))))))
+             mount-points-to-add)
+      (setq hpath:directory-expand-alist
+           ;; Save the reverse of each mount-points-to-add so
+           ;; can expand paths when going from posix-to-mswindows.
+           (mapcar (lambda (elt) (cons (cdr elt) (car elt))) 
mount-points-to-add))
+      mount-points-to-add)))
 
 
 ;;; ************************************************************************
@@ -793,17 +803,17 @@ program)."
     (if (string-match hpath:prefix-regexp filename)
        (setq modifier (aref filename 0)
              filename (substring filename (match-end 0))))
-    (setq filename (hpath:substitute-value filename)
+    (setq path (hpath:substitute-value
+               (if (string-match hpath:markup-link-anchor-regexp filename)
+                   (progn (setq hash t
+                                anchor (match-string 3 filename))
+                          (substring filename 0 (match-end 1)))
+                 filename))
          loc (hattr:get 'hbut:current 'loc)
          dir (file-name-directory
               ;; Loc may be a buffer without a file
               (if (stringp loc) loc default-directory))
-         filename (hpath:absolute-to filename dir)
-         path (if (string-match hpath:markup-link-anchor-regexp filename)
-                  (progn (setq hash t
-                               anchor (match-string 3 filename))
-                         (substring filename 0 (match-end 1)))
-                filename))
+         filename (hpath:absolute-to path dir))
     (let ((remote-filename (hpath:remote-p path)))
       (or modifier remote-filename
          (file-exists-p path)
diff --git a/hui-mouse.el b/hui-mouse.el
index 8f4f94b..146860d 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -246,8 +246,8 @@ Its default value is #'smart-scroll-down."
     ((and (or (and (eq major-mode 'python-mode) buffer-file-name)
              (let ((case-fold-search))
                (string-match "\\`\\(Pydoc:\\|\\*?Python\\)" (buffer-name))))
-         (smart-python-at-tag-p)) .
-         ((smart-python) . (smart-python nil 'next-tag)))
+         (setq hkey-value (smart-python-at-tag-p))) .
+         ((smart-python hkey-value) . (smart-python hkey-value 'next-tag)))
     ;;
     ;; Imenu listing in GNU Emacs
     ((smart-imenu-item-at-p)
diff --git a/hversion.el b/hversion.el
index 5329608..9470edb 100644
--- a/hversion.el
+++ b/hversion.el
@@ -23,7 +23,7 @@
 ;;; Public variables
 ;;; ************************************************************************
 
-(defconst hyperb:version "7.0.2c" "GNU Hyperbole revision number.")
+(defconst hyperb:version "7.0.3" "GNU Hyperbole revision number.")
 
 ;;;###autoload
 (defvar hyperb:microsoft-os-p
diff --git a/hypb.el b/hypb.el
index a385e00..c0d0595 100644
--- a/hypb.el
+++ b/hypb.el
@@ -471,6 +471,13 @@ INACTIVE-P is unused, it is for compatibility with XEmacs' 
version of
 mark-marker."
     (mark-marker)))
 
+;;;###autoload
+(defun hypb:map-plist (func plist)
+  "Returns result of applying FUNC of two args, key and value, to key-value 
pairs in PLIST, a property list."
+  (cl-loop for (k v) on plist by #'cddr
+          collect (funcall func k v) into result
+          finally return result))
+
 (defun hypb:map-sublists (func list)
   "Applies FUNC to every atom found at any level of LIST.
 FUNC must take two arguments, an atom and a list in which the atom is found.
diff --git a/hyperbole-pkg.el b/hyperbole-pkg.el
index 5ca5087..71907c9 100644
--- a/hyperbole-pkg.el
+++ b/hyperbole-pkg.el
@@ -1,5 +1,5 @@
 ;; -*- no-byte-compile: t -*-
-(define-package "hyperbole" "7.0.2c" "GNU Hyperbole: The Everyday Hypertextual 
Information Manager"
+(define-package "hyperbole" "7.0.3" "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 dd431c4..4aa427d 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:         21-Jan-19
-;; Version:          7.0.2c
+;; Version:          7.0.3
 ;; Keywords:         comm, convenience, files, frames, hypermedia, languages, 
mail, matching, mouse, multimedia, outlines, tools, wp
 ;; Package:          hyperbole
 ;; Package-Requires: ((emacs "24.4"))
diff --git a/man/hkey-help.txt b/man/hkey-help.txt
index 492d75c..c567c6d 100644
--- a/man/hkey-help.txt
+++ b/man/hkey-help.txt
@@ -9,7 +9,7 @@ Hyperbole
     1st press at an arg value   Value copied to minibuffer <- same
     2nd press at an arg value   Value used as argument     <- same
     In minibuffer               Accepts minibuffer arg     Completion help
-  On an implicit button         Activates button           Button help
+  On an implicit button/path    Activates button           Button help
   Within a koutline cell        Collapses and expands      Shows tree props
   Left of a koutline cell       Creates a klink            Moves a tree
   HyRolo Match Buffer           Edits entries and mails to e-mail addresses
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 9ea74f5..6aa4874 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.2c, Published April 21, 2019).
+(Edition 7.0.3, Published May 11, 2019).
 
 Copyright (C) 1989-2019  Free Software Foundation, Inc.
 
@@ -329,6 +329,9 @@ Next: <a href="#Introduction" accesskey="n" 
rel="next">Introduction</a>, Previou
 
 <CENTER><H2>The Everyday Hypertextual Information Manager</H2></CENTER>
 
+<CENTER><H3><A HREF="https://saythanks.io/to/rswgnu";>Say thanks if you like 
Hyperbole.</A></H3></CENTER>
+
+
 <P>Copyright &copy; 1989-2019  Free Software Foundation, Inc.</P>
 
 <P>GNU Hyperbole is available for use, modification, and distribution under
@@ -341,8 +344,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 7.0.2c
-Printed April 21, 2019.
+Edition 7.0.3
+Printed May 11, 2019.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -791,7 +794,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.2c or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+7.0.3 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,
@@ -1295,7 +1298,7 @@ Hyperbole
     1st press at an arg value   Value copied to minibuffer &lt;- same
     2nd press at an arg value   Value used as argument     &lt;- same
     In minibuffer               Accepts minibuffer arg     Completion help
-  On an implicit button         Activates button           Button help
+  On an implicit button/path    Activates button           Button help
   Within a koutline cell        Collapses and expands      Shows tree props
   Left of a koutline cell       Creates a klink            Moves a tree
   HyRolo Match Buffer           Edits entries and mails to e-mail addresses
@@ -2053,10 +2056,9 @@ for <code>ace-window</code>, then just ensure it is 
initialized by calling
 <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 command to create explicit button links to other window buffers when in 
an editable
-buffer rather than on an item.  If you want to display multiple items in 
different
-windows, instead use the <kbd>{M-o t 
&lt;id-of-window-to-display-item-in&gt;}</kbd> key sequence to
+&lt;id-of-window-to-display-item-in&gt;}</kbd> and watch the magic happen.  If 
you
+want to display multiple items in different windows, instead use
+the <kbd>{M-o t &lt;id-of-window-to-display-item-in&gt;}</kbd> key sequence to
 <em>throw</em> the item to the window.  To <em>replace</em>
 the selected window&rsquo;s buffer with that of another window, use
 <kbd>{M-o r &lt;id-of-window-displaying-desired-buffer&gt;}</kbd>.  To instead
@@ -2067,8 +2069,7 @@ use <kbd>{M-o m &lt;id-of-window-to-swap-with&gt;}</kbd>.
 </p><dl compact="compact">
 <dt>M-o i &lt;window&gt;</dt>
 <dd><p>insert listing item at point into &lt;window&gt;; if not on a listing 
item,
-prompt for a name to give to a new explicit button at point that will
-link to the current position in &lt;window&gt;
+trigger an error
 </p>
 </dd>
 <dt>M-o m &lt;window&gt;</dt>
@@ -2322,10 +2323,10 @@ type</em> identifies a pattern or state that when 
matched triggers
 an <em>action</em> associated with the implicit button type.  The action
 is specified by either a Hyperbole action type (see <a 
href="#Action-Types">Action Types</a>)
 or an Emacs Lisp function.  Implicit button types may use the same
-action types that explicit buttons use.  As an example, a pathname
-implicit button type would match to any existing local filename or
-directory name and its action would be to display the associated file
-or directory, typically in another window.
+action types that explicit buttons use.  As an example, the pathname
+implicit button type matches to any existing local filename or
+directory name and its action displays the associated file or
+directory, typically in another window.
 </p>
 <a name="index-file_002c-hibtypes_002eel"></a>
 <a name="index-context"></a>
@@ -2850,11 +2851,12 @@ at line-num and optional column-num.  Also works for 
remote pathnames.
 </dd>
 <dt><code>pathname</code></dt>
 <dd><p>Makes a valid pathname display the path entry.  Also works for
-delimited and non-delimited remote pathnames, Texinfo <samp></samp> entries,
-and hash-style link references to HTML, Markdown or Emacs outline
-headings.  Emacs Lisp library files (filenames without any directory
-component that end in .el and .elc) are looked up using
-the <code>load-path</code> directory list.
+delimited and non-delimited remote pathnames, Texinfo @file{}
+entries, and hash-style link references to HTML, Markdown or Emacs
+outline headings, and MSWindows paths (see <samp>${hyperb:dir}/DEMO#POSIX
+and MSWindows Paths</samp> for details).  Emacs Lisp library files
+(filenames without any directory component that end in .el and .elc)
+are looked up using the <code>load-path</code> directory list.
 </p>
 <p>See the function documentation for <code>hpath:at-p</code> for possible
 delimiters.  See the variable documentation for <code>hpath:suffixes</code> for
@@ -7949,14 +7951,7 @@ for each available window system: 
<code>hpath:external-display-alist-macos</code
 <code>hpath:external-display-alist-x</code>.  Examine and modify these
 values to suit your needs.
 </p>
-<a name="index-MIME"></a>
-<a name="index-mailcap"></a>
-<a name="index-external-viewer-1"></a>
-<p>On systems that have a MIME mailcap file (see
-<samp>www.wikiwand.com/en/Mailcap</samp>), this is used as a fallback
-set of external viewer associations when none are found
-within <code>hpath:get-external-display-alist</code>.
-</p>
+
 <hr>
 <a name="Link-Variable-Substitution"></a>
 <div class="header">
@@ -9987,10 +9982,11 @@ Next: <a href="#Smart-Key-_002d-C-Source-Code" 
accesskey="n" rel="next">Smart Ke
 <h4 class="subsection">E.2.18 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.
-It requires either Emacs&rsquo; imenu or XEmacs&rsquo; func-menu library and 
it requires that an index of
-identifiers has been built for the current buffer.  Other handlers handle 
identifier references
-and definitions across multiple files.
+<pre class="format">This works only for identifiers defined within the same 
source file in
+which they are referenced.  It requires either Emacs&rsquo; imenu or 
XEmacs&rsquo;
+func-menu library and it requires that an index of identifiers has
+been built for the current buffer.  Other handlers handle identifier
+references and definitions across multiple files.
 
 When pressed on an identifier name after an identifier index has been 
generated:
   ACTION KEY
@@ -11019,10 +11015,8 @@ providing sketches of possible additions;
 </li><li> and to acknowledge known weaknesses in the current system.
 </li></ul>
 
-<p>If you would like to see some of this work done, consider funding
-its development.  Without any serious interest from users, progress
-on these fronts will be slow.  Here are some new features we have
-in mind, however.
+<p>Without any serious interest from users, progress on these fronts will
+be slow.  Here are some new features we have in mind, however.
 </p>
 <dl compact="compact">
 <dt>Button Copying, Killing, and Yanking</dt>
@@ -12742,7 +12736,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-external-klink">external 
klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-external-program">external 
program</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-external-viewer">external 
viewer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-external-viewer-1">external 
viewer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-extracting-from-tar-files">extracting from tar 
files</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Tar-File-Mode">Smart Key - Tar File Mode</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-F">F</a></th><td></td><td></td></tr>
@@ -13015,7 +13008,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-mail-hooks">mail 
hooks</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-mail-inclusion">mail 
inclusion</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-mail-reader">mail 
reader</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-mailcap">mailcap</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mailer-initialization">mailer 
initialization</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-mailing-an-outline">mailing an 
outline</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-mailing-buttons">mailing 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
@@ -13112,7 +13104,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Messages-buffer">Messages 
buffer</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-MH_002de">MH-e</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-middle-mouse-key">middle mouse 
key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Smart-Keys">Smart 
Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-MIME">MIME</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-minibuffer-menu">minibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-minibuffer-menu-1">minibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-minibuffer-menus">minibuffer 
menus</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index 06616b5..ed1205e 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 6931d14..549179c 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 6b6853b..4b3c352 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -139,6 +139,9 @@ Texinfo markup language.
 
 <CENTER><H2>The Everyday Hypertextual Information Manager</H2></CENTER>
 
+<CENTER><H3><A HREF="https://saythanks.io/to/rswgnu";>Say thanks if you like 
Hyperbole.</A></H3></CENTER>
+
+
 <P>Copyright &copy; 1989-2019  Free Software Foundation, Inc.</P>
 
 <P>GNU Hyperbole is available for use, modification, and distribution under
@@ -151,8 +154,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 7.0.2c
-Printed April 21, 2019.
+Edition 7.0.3
+Printed May 11, 2019.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -176,7 +179,7 @@ Printed April 21, 2019.
 
 @center The Everyday Hypertextual Information Manager
 
address@hidden Edition 7.0.2c, April 21, 2019.
address@hidden Say thanks: https://saythanks.io/to/rswgnu
 
 @sp 2
 @noindent
@@ -193,6 +196,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 @sp 2
 
 @example
+Edition 7.0.3
+May 11, 2019
+
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
   E-mail:    <hyperbole-users@@gnu.org>  (This is a mail list).
@@ -463,7 +469,7 @@ Smart Keyboard Keys
 @chapter Introduction
 
 This edition of the GNU Hyperbole Manual is for use with any version
-7.0.2c or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+7.0.3 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,
@@ -1488,10 +1494,9 @@ for @code{ace-window}, then just ensure it is 
initialized by calling
 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 command to create explicit button links to other window buffers when in 
an editable
-buffer rather than on an item.  If you want to display multiple items in 
different
-windows, instead use the @bkbd{M-o t <id-of-window-to-display-item-in>} key 
sequence to
+<id-of-window-to-display-item-in>} and watch the magic happen.  If you
+want to display multiple items in different windows, instead use
+the @bkbd{M-o t <id-of-window-to-display-item-in>} key sequence to
 @emph{throw} the item to the window.  To @emph{replace}
 the selected window's buffer with that of another window, use
 @bkbd{M-o r <id-of-window-displaying-desired-buffer>}.  To instead
@@ -1502,8 +1507,7 @@ In summary:
 @table @asis
 @item M-o i <window>
 insert listing item at point into <window>; if not on a listing item,
-prompt for a name to give to a new explicit button at point that will
-link to the current position in <window>
+trigger an error
 
 @item M-o m <window>
 swap the buffers in the selected window and <window>
@@ -1752,10 +1756,10 @@ type} identifies a pattern or state that when matched 
triggers
 an @emph{action} associated with the implicit button type.  The action
 is specified by either a Hyperbole action type (@pxref{Action Types})
 or an Emacs Lisp function.  Implicit button types may use the same
-action types that explicit buttons use.  As an example, a pathname
-implicit button type would match to any existing local filename or
-directory name and its action would be to display the associated file
-or directory, typically in another window.
+action types that explicit buttons use.  As an example, the pathname
+implicit button type matches to any existing local filename or
+directory name and its action displays the associated file or
+directory, typically in another window.
 
 @vindex file, hibtypes.el
 @cindex context
@@ -2242,11 +2246,12 @@ at line-num and optional column-num.  Also works for 
remote pathnames.
 @cindex link, pathname
 @item pathname
 Makes a valid pathname display the path entry.  Also works for
-delimited and non-delimited remote pathnames, Texinfo @file{} entries,
-and hash-style link references to HTML, Markdown or Emacs outline
-headings.  Emacs Lisp library files (filenames without any directory
-component that end in .el and .elc) are looked up using
-the @code{load-path} directory list.
+delimited and non-delimited remote pathnames, Texinfo @@address@hidden@}
+entries, and hash-style link references to HTML, Markdown or Emacs
+outline headings, and MSWindows paths (see 
@address@hidden:address@hidden/DEMO#POSIX
+and MSWindows Paths} for details).  Emacs Lisp library files
+(filenames without any directory component that end in .el and .elc)
+are looked up using the @code{load-path} directory list.
 
 @noindent
 See the function documentation for @code{hpath:at-p} for possible
@@ -6611,13 +6616,13 @@ for each available window system: 
@code{hpath:external-display-alist-macos},
 @code{hpath:external-display-alist-x}.  Examine and modify these
 values to suit your needs.
 
address@hidden MIME
address@hidden mailcap
address@hidden external viewer
-On systems that have a MIME mailcap file (see
address@hidden/en/Mailcap}), this is used as a fallback
-set of external viewer associations when none are found
-within @code{hpath:get-external-display-alist}.
address@hidden @cindex MIME
address@hidden @cindex mailcap
address@hidden @cindex external viewer
address@hidden On systems that have a MIME mailcap file (see
address@hidden @file{www.wikiwand.com/en/Mailcap}), this is used as a fallback
address@hidden set of external viewer associations when none are found
address@hidden within @code{hpath:get-external-display-alist}.
 
 @node Link Variable Substitution, Web Search Engines, External Viewers, 
Customization
 @subsection  Link Variable Substitution
@@ -8326,6 +8331,7 @@ When pressed on a pages-directory-mode entry line:
 @end group
 @end format
 
address@hidden
 @node Smart Key - Python Source Code, Smart Key - Identifier Menu Mode , Smart 
Key - Pages Directory Mode, Smart Keyboard Keys
 @subsection Smart Key - Python Source Code
 @format
@@ -8355,16 +8361,16 @@ When pressed within a Python source code file (without 
the OO-Browser):
 @end group
 @end format
 
address@hidden
 @node Smart Key - Identifier Menu Mode , Smart Key - C Source Code, Smart Key 
- Python Source Code, Smart Keyboard Keys
 @subsection Smart Key - Identifier Menu Mode 
 
 @format
 @group
-This works only for identifiers defined within the same source file in which 
they are referenced.
-It requires either Emacs' imenu or XEmacs' func-menu library and it requires 
that an index of
-identifiers has been built for the current buffer.  Other handlers handle 
identifier references
-and definitions across multiple files.
+This works only for identifiers defined within the same source file in
+which they are referenced.  It requires either Emacs' imenu or XEmacs'
+func-menu library and it requires that an index of identifiers has
+been built for the current buffer.  Other handlers handle identifier
+references and definitions across multiple files.
 
 @noindent
 When pressed on an identifier name after an identifier index has been 
generated:
@@ -8376,6 +8382,7 @@ When pressed on an identifier name after an identifier 
index has been generated:
 @end group
 @end format
 
address@hidden
 @node Smart Key - C Source Code, Smart Key - C++ Source Code, Smart Key - 
Identifier Menu Mode , Smart Keyboard Keys
 @subsection Smart Key - C Source Code
 
@@ -8404,7 +8411,6 @@ When pressed within a C source code file:
 @end group
 @end format
 
address@hidden
 @node Smart Key - C++ Source Code, Smart Key - Assembly Source Code, Smart Key 
- C Source Code, Smart Keyboard Keys
 @subsection Smart Key - C++ Source Code
 
@@ -8434,6 +8440,7 @@ buffer:
 @end group
 @end format
 
address@hidden
 @format
 @group
 When pressed within a C++ source code file (without the OO-Browser):
@@ -8456,7 +8463,6 @@ When pressed within a C++ source code file (without the 
OO-Browser):
 @end group
 @end format
 
address@hidden
 @node Smart Key - Assembly Source Code, Smart Key - Lisp Source Code, Smart 
Key - C++ Source Code, Smart Keyboard Keys
 @subsection Smart Key - Assembly Source Code
 
@@ -9346,10 +9352,8 @@ to direct further development effort towards known needs;
 and to acknowledge known weaknesses in the current system.
 @end itemize
 
-If you would like to see some of this work done, consider funding
-its development.  Without any serious interest from users, progress
-on these fronts will be slow.  Here are some new features we have
-in mind, however.
+Without any serious interest from users, progress on these fronts will
+be slow.  Here are some new features we have in mind, however.
 
 @table @asis
 
diff --git a/man/version.texi b/man/version.texi
index f9995b0..085a4d0 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED April 21, 2019
address@hidden UPDATED-MONTH Apr 2019
address@hidden EDITION 7.0.2c
address@hidden VERSION 7.0.2c
address@hidden UPDATED May 11, 2019
address@hidden UPDATED-MONTH May 2019
address@hidden EDITION 7.0.3
address@hidden VERSION 7.0.3



reply via email to

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