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

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

[elpa] externals/hyperbole 01569bd: GNU Hyperbole 8.0.0 Pre-release


From: ELPA Syncer
Subject: [elpa] externals/hyperbole 01569bd: GNU Hyperbole 8.0.0 Pre-release
Date: Mon, 3 May 2021 02:57:11 -0400 (EDT)

branch: externals/hyperbole
commit 01569bdf58cb3c6aaba186df75d9ab2b9837d1b5
Author: Bob Weiner <rsw@gnu.org>
Commit: Bob Weiner <rsw@gnu.org>

    GNU Hyperbole 8.0.0 Pre-release
---
 ChangeLog          |  17 +-
 HY-ABOUT           |   2 +-
 HY-NEWS            |  42 ++--
 INSTALL            |  36 +++-
 Makefile           |   2 +-
 README             |  54 ++++-
 README.md          | 124 ++++++-----
 README.md.html     | 619 -----------------------------------------------------
 hmouse-tag.el      |  89 ++++----
 hsys-org.el        |   2 +-
 hversion.el        |   2 +-
 hyperbole.el       |   4 +-
 man/hyperbole.html | 210 +++++++++++++++---
 man/hyperbole.info | Bin 545274 -> 553050 bytes
 man/hyperbole.pdf  | Bin 1300307 -> 1307229 bytes
 man/hyperbole.texi | 190 +++++++++++++---
 man/version.texi   |   8 +-
 17 files changed, 602 insertions(+), 799 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2504042..d2e0779 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2021-05-02  Bob Weiner  <rsw@gnu.org>
+
+* Update release number to 8.0.0pre (pre-release) as not all the
+    documentation is finished yet.
+
+* INSTALL:
+  man/hyperbole.texi: Made Installation subsections for Stable Release
+    Installation and Git Pre-release Installation with the Straight
+    package manager.
+
+* hmouse-tag.el (smart-tags-display): Fix to never prompt for a tag
+    table if none are found from automatic searches.  This prevents
+    prompting when the Action Key is pressed on a potential identifier
+    that could be anything.
+
 2021-05-02  Mats Lidell  <matsl@gnu.org>
 
 * hui-em-but.el (hbut-face): Add face for hbuts.
@@ -1033,7 +1048,7 @@ absolute paths.
   Makefile (EL_COMPILE, ELC_COMPILE): Added hib-org.el{c}.
 
 ==============================================================================
-V7.1.4 changes ^^^^:
+V8.0.0 changes ^^^^:
 ==============================================================================
 
 2020-09-21  Bob Weiner  <rsw@gnu.org>
diff --git a/HY-ABOUT b/HY-ABOUT
index d15d94f..9c0747e 100644
--- a/HY-ABOUT
+++ b/HY-ABOUT
@@ -3,7 +3,7 @@
                    Designed and Written by Bob Weiner
                 Maintained by Mats Lidell and Bob Weiner
                  https://www.gnu.org/software/hyperbole/
-                            Version 7.1.4
+                            Version 8.0.0
 
          Say thanks or send a testimonial if you like Hyperbole:
                         Email: <rsw@gnu.org>
diff --git a/HY-NEWS b/HY-NEWS
index e72e384..ee4205b 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -2,9 +2,20 @@
                                 by Bob Weiner
 
 ===========================================================================
-*                                   V7.1.4
+*                                   V8.0.0
 ===========================================================================
 
+  HYPERBOLE SYSTEM
+
+   - Hyperbole is now a global minor mode that can be toggled with
+     {M-x hyperbole-mode RET}, meaning all of its key bindings can
+     easily be enabled or disabled whenever desired.  Your init file
+     needs to have (hyperbole-mode 1) in it instead of
+     (require 'hyperbole) or Hyperbole will not be enabled upon startup.
+
+     In the modeline where minor modes are shown, "Hypb" now appears
+     whenever Hyperbole is active.
+
   PROGRAMMING
 
    - Simple Action Link Button Type Creation: `defal' is a new,
@@ -97,11 +108,6 @@
       handles single line log entries that begin with the word 'commit' ,
       displaying their commits even from shell and compilation buffers.
 
-    - Org Mode: Lowered to near bottom implicit button priority so that all
-      implicit button types will work in Org mode.  Replaced 'inhibit-hsys-org'
-      setting with 'hsys-org-enable-smart-keys'.  See its documentation for
-      details.
-
     - Debugger Source: In Python tracebacks, may be on a line just below the
       source reference line so if not on a Hyperbole button, move back a line
       before checking.
@@ -115,12 +121,23 @@
 
   ORG MODE
 
+    - M-RET: Reworked M-RET interface so can control how much or little of
+      Hyperbole works in Org mode when Hyperbole minor mode is enabled.
+
     - hsys-org-enable-smart-keys: New customization to replace 
'inhibit-hsys-org'.
       This applies only in Org major/minor modes when hyperbole-mode is active.
       t means enable Smart Key support everywhere.  The symbol, buttons, is the
       default; it means the Smart Keys are active only when point is within a
       Hyperbole button.  A nil value means no Smart Key support so {M-RET} 
behaves
-      just as it does normally in Org mode.
+      just as it does normally in Org mode.  This table summarizes the 
operation:
+
+      
|--------------+-------------------+------------------+----------+------------------|
+      | Set To       | Smart Key Context | Hyperbole Button | Org Link | 
Fallback Command |
+      
|--------------+-------------------+------------------+----------+------------------|
+      | buttons      | Ignore            | Activate         | Activate | 
org-meta-return  |
+      | nil          | Ignore            | Ignore           | Ignore   | 
org-meta-return  |
+      | t            | Activate          | Activate         | Activate | None  
           |
+      
|--------------+-------------------+------------------+----------+------------------|
 
   ACE WINDOW PACKAGE INTEGRATION - fast window and buffer switching
 
@@ -135,12 +152,11 @@
 
   TEST CASES
 
-    - Hyperbole Automated Testing: Git-based distributions of Hyperbole now
-      include a test subdirectory with many tests of hyperbole's button
-      types.  Simply run 'make test' or 'make test-all' from the command-line
-      when in the Hyperbole source directory and you should see all tests
-      pass.  If any fail, you can press the Action Key to see the source of
-      the failure.
+    - Hyperbole Automated Testing: Hyperbole now includes over 130 test cases
+      in the test/ subdirectory.  Simply run 'make test' or 'make test-all'
+      from the command-line when in the Hyperbole source directory and you
+      should see all tests pass.  If any fail, you can press the Action Key
+      to see the source of the failure.
 
     - Defal implicit buttons hypb-ert-sym and hypb-ert-sel: For running
       hyperbole ert test from hyperbole source files.
diff --git a/INSTALL b/INSTALL
index d4b8824..c17cde0 100644
--- a/INSTALL
+++ b/INSTALL
@@ -18,7 +18,7 @@
 There are multiple package managers you can use to install Hyperbole once
 you have GNU Emacs set up at your site.
 
-** The built-in Emacs package manager
+** The Built-in Emacs Package Manager
 
 The Emacs Package Manager installs the latest stable version release
 of GNU Hyperbole.  If you are not familiar with it, see the Packages
@@ -46,14 +46,42 @@ Below are the lines to add:
   (package-install 'hyperbole))
 (hyperbole-mode 1)
 
-----
-
 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.
 
-**
+
+** The Straight Package Manager (direct from Git Sources)
+
+If you prefer to track Hyperbole development between releases and like to try 
out new features
+still in testing, then use the Straight package manager instead of the above, 
which pulls the
+latest Hyperbole source code from its git repository.  This also gives you a 
cleaner installation
+process without showing you any byte compilation warnings.
+
+;; Use this in your Emacs init file to install Straight
+(progn
+  (defvar bootstrap-version)
+  (setq package-enable-at-startup nil)
+  (let ((bootstrap-file
+         (expand-file-name "straight/repos/straight.el/bootstrap.el" 
user-emacs-directory))
+        (bootstrap-version 5))
+    (unless (file-exists-p bootstrap-file)
+      (with-current-buffer
+          (url-retrieve-synchronously
+           
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el";
+           'silent 'inhibit-cookies)
+        (goto-char (point-max))
+        (eval-print-last-sexp)))
+    (load bootstrap-file nil 'nomessage)))
+
+;; Then use this to install Hyperbole
+(straight-use-package
+ '(hyperbole
+   :host nil
+   :repo "https://git.savannah.gnu.org/git/hyperbole.git";
+   :config (hyperbole-mode 1)))
+
 
 ===========================================================================
 *                       Browsing the Source
diff --git a/Makefile b/Makefile
index 61e4b02..72e1462 100644
--- a/Makefile
+++ b/Makefile
@@ -63,7 +63,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.1.4
+HYPB_VERSION = 8.0.0
 
 # Emacs executable used to byte-compile .el files into .elc's.
 # Possibilities include: emacs, infodock, etc.
diff --git a/README b/README
index 580afbc..e901964 100644
--- a/README
+++ b/README
@@ -4,7 +4,7 @@
 #
 # Orig-Date:    19-Oct-91 at 03:27:47
 #
-# Copyright (C) 1989-2016  Free Software Foundation, Inc.
+# Copyright (C) 1989-2021  Free Software Foundation, Inc.
 # See the "HY-COPY" file for license information.
 #
 # This file is part of GNU Hyperbole.
@@ -26,14 +26,50 @@ written by Bob Weiner.  It is maintained by him and Mats 
Lidell.
 *                         Summary
 ===========================================================================
 
-GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, 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.
-
-Hyperbole lets you:
+GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is like
+Markdown for hypertext.  Hyperbole automatically recognizes dozens of
+common, pre-existing patterns in any buffer regardless of mode and can
+instantly activate them as hyperbuttons with a single key: email addresses,
+URLs, grep -n outputs, programming backtraces, sequences of Emacs keys,
+programming identifiers, Texinfo and Info cross-references, Org links,
+Markdown links and on and on.  All you do is load Hyperbole and then your
+text comes to life with no extra effort or complex formatting.
+
+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.
+
+Hyperbole comes pre-built with most of the implicit button types you will
+need but with a little extra effort and a few lines of code (or even just a
+few words), you can define your own implicit button types to recognize your
+specific buttons and then activate them anywhere in Emacs.  You press a
+single key, {M-RET} by default, on any kind of Hyperbole button to activate
+it, so you can rely on your muscle memory and let the computer do the hard
+work of figuring out what to do.  {C-u M-RET} shows you what any button will
+do in any context before you activate it, so you can always be sure of what
+you are doing when needed or if some emails you a button (you can do that
+too).
+
+Hyperbole is something to be experienced and interacted with, not understood
+from reading alone.  It installs normally as a single Emacs package with no
+dependencies outside of standard Emacs libraries.  Most of Hyperbole is a
+single global minor mode that you can activate and deactivate at will.  And
+it can be uninstalled quickly as well if need be, so there is no risk to
+giving it a spin.
+
+Once you have it installed and activated {C-u M-x hyperbole-mode RET}, try
+the interactive demo with {C-h h d d}.  In fact, if you have Hyperbole
+loaded, you can press {M-RET} inside any of the brace delimited series of
+keys you see in this document and it will execute them on-the-fly (easy
+keyboard-macro style buttons in any text).
+
+Hyperbole can dramatically increase your productivity and greatly reduce the
+number of keyboard/mouse keys you'll need to work efficiently.
+
+In short, Hyperbole lets you:
 
 1. Quickly create hyperlink buttons either from the keyboard or by dragging
 between a source and destination window with a mouse button depressed.
diff --git a/README.md b/README.md
index 28d9601..e38ac64 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,8 @@
-# GNU Hyperbole 7.1.4 - The Everyday Hypertextual Information Manager
+# GNU Hyperbole 8.0.0 - The Everyday Hypertextual Information Manager
 
-[Say thanks or send a testimonial if you like Hyperbole.(mailto:rsw@gnu.org)]
+[We work on Hyperbole as a gift to the Emacs community and request you
+ send us a thank you or a testimonial describing your usage if you like
+ Hyperbole (mailto:rsw@gnu.org)].
 
 <!-- START doctoc generated TOC -->
 **Table of Contents**
@@ -25,14 +27,50 @@
 
 ## Summary
 
-`GNU Hyperbole` (pronounced Ga-new Hi-per-bo-lee), or just `Hyperbole`,
-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.
-
-Hyperbole lets you:
+`GNU Hyperbole` (pronounced Ga-new Hi-per-bo-lee), or just `Hyperbole`, is
+like Markdown for hypertext.  Hyperbole automatically recognizes dozens of
+common, pre-existing patterns in any buffer regardless of mode and can
+instantly activate them as hyperbuttons with a single key: email addresses,
+URLs, grep -n outputs, programming backtraces, sequences of Emacs keys,
+programming identifiers, Texinfo and Info cross-references, Org links,
+Markdown links and on and on.  All you do is load Hyperbole and then your
+text comes to life with no extra effort or complex formatting.
+
+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.
+
+Hyperbole comes pre-built with most of the implicit button types you will
+need but with a little extra effort and a few lines of code (or even just a
+few words), you can define your own implicit button types to recognize your
+specific buttons and then activate them anywhere in Emacs.  You press a
+single key, {M-RET} by default, on any kind of Hyperbole button to activate
+it, so you can rely on your muscle memory and let the computer do the hard
+work of figuring out what to do.  {C-u M-RET} shows you what any button will
+do in any context before you activate it, so you can always be sure of what
+you are doing when needed or if some emails you a button (you can do that
+too).
+
+Hyperbole is something to be experienced and interacted with, not understood
+from reading alone.  It installs normally as a single Emacs package with no
+dependencies outside of standard Emacs libraries.  Most of Hyperbole is a
+single global minor mode that you can activate and deactivate at will.  And
+it can be uninstalled quickly as well if need be, so there is no risk to
+giving it a spin.
+
+Once you have it installed and activated {C-u M-x hyperbole-mode RET}, try
+the interactive demo with {C-h h d d}.  In fact, if you have Hyperbole
+loaded, you can press {M-RET} inside any of the brace delimited series of
+keys you see in this document and it will execute them on-the-fly (easy
+keyboard-macro style buttons in any text).
+
+Hyperbole can dramatically increase your productivity and greatly reduce the
+number of keyboard/mouse keys you'll need to work efficiently.
+
+In short, Hyperbole lets you:
 
    1. Quickly create hyperlink buttons either from the keyboard or by dragging
       between a source and destination window with a mouse button depressed.
@@ -49,10 +87,11 @@ Hyperbole lets you:
       outline.  Each node also has a permanent hyperlink anchor that you can
       reference from any other node;
 
-   4. 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;
+   4. Manage all your contacts or record-based, unstructured nodes quickly
+         with hierarchical categories; each entry can have embedded
+         hyperbuttons of any type.  Or create an archive of documents with
+         hierarchical entries and use the same search mechanism to quickly find
+         any matching entry;
 
    5. Use single keys to easily manage your Emacs windows or frames and
       quickly retrieve saved window and frame configurations;
@@ -60,40 +99,27 @@ Hyperbole lets you:
    6. Search for things in your current buffers, in a directory tree or
          across major web search engines with the touch of a few keys.
 
-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 [Hyperbole wiki page](https://www.emacswiki.org/emacs/Hyperbole)
-explains the many ways it differs from and is complementary to Org
-mode.
-
-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.
-
-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.
-
-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.
-
-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: <https://www.gnu.org/software/hyperbole/>.
-If any term in here is new or unfamiliar to you, you can look it up in the
+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 [Hyperbole wiki
+page](https://www.emacswiki.org/emacs/Hyperbole) explains the many ways it
+differs from and is complementary to Org mode.  Hyperbole is designed to
+work with Org mode, so use them both across your tasks.
+
+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.
+
+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: <https://www.gnu.org/software/hyperbole/>.  If any
+term in here is new or unfamiliar to you, you can look it up in the
 [Hyperbole Glossary](man/hyperbole.html#Glossary).
 
 Hyperbole is available for [download and installation](#installation)
@@ -164,7 +190,7 @@ Below are the lines to add:
 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.
+can be safely ignored and have no impact on Hyperbole's performance.
 
 ## Invocation
 
diff --git a/README.md.html b/README.md.html
deleted file mode 100644
index 9cf2c6b..0000000
--- a/README.md.html
+++ /dev/null
@@ -1,619 +0,0 @@
-<h1>
-  <a 
id="user-content-gnu-hyperbole-713---the-everyday-hypertextual-information-manager"
 class="anchor" 
href="#gnu-hyperbole-713---the-everyday-hypertextual-information-manager" 
aria-hidden="true"><span aria-hidden="true" class="octicon 
octicon-link"></span></a>GNU Hyperbole 7.1.4 - The Everyday Hypertextual 
Information Manager</h1>
-<p>[Say thanks or send a testimonial if you like Hyperbole.(mailto:<a 
href="mailto:rsw@gnu.org";>rsw@gnu.org</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:hyperbole-users@gnu.org";>hyperbole-users@gnu.org</a></strong> - 
User list for GNU Hyperbole</p>
-  </li>
-  <li>
-    <p><strong><a 
href="mailto:bug-hyperbole@gnu.org";>bug-hyperbole@gnu.org</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))
-(hyperbole-mode 1)
-</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/hmouse-tag.el b/hmouse-tag.el
index a49cf04..4055554 100644
--- a/hmouse-tag.el
+++ b/hmouse-tag.el
@@ -154,7 +154,7 @@ If:
            (progn
              (smart-tags-display tag next)
              (message "Found definition for `%s'" tag))
-         (error (message "`%s' not found in tag tables" tag)
+         (error (message "`%s' definition not found in identifier lookup/tag 
tables" tag)
                 (beep))))))
 
 ;;;###autoload
@@ -211,7 +211,7 @@ Otherwise:
       (error
        (if (or (not smart-c-use-lib-man)
               (not (file-readable-p "~/.CLIBS-LIST")))
-          (progn (message "`%s' not found in tag tables" tag)
+          (progn (message "`%s' definition not found in identifier lookup/tag 
tables" tag)
                  (beep)
                  nil)
         (message "Checking if `%s' is a C++ library function..." tag)
@@ -219,7 +219,7 @@ Otherwise:
             (progn (message "Displaying C++ library man page for `%s'" tag)
                    (manual-entry tag)
                    t)
-          (message "`%s' not found in tag tables or C++ libraries" tag)
+          (message "`%s' definition not found in identifier lookup/tag tables 
or C++ libraries" tag)
           (beep)
           nil))))))
 
@@ -291,13 +291,13 @@ If:
          (error
           (if (or (not smart-c-use-lib-man)
                   (not (file-readable-p "~/.CLIBS-LIST")))
-              (progn (message "`%s' not found in tag tables" tag)
+              (progn (message "`%s' definition not found in identifier 
lookup/tag tables" tag)
                      (beep))
             (message "Checking if `%s' is a C library function..." tag)
             (if (smart-library-symbol tag)
                 (progn (message "Displaying C library man page for `%s'" tag)
                        (manual-entry tag))
-              (message "`%s' not found in tag tables or C libraries" tag)
+              (message "`%s' definition not found in identifier lookup/tag 
tables or C libraries" tag)
               (beep))))))))
 
 (defconst smart-c-keywords
@@ -374,7 +374,7 @@ in the current directory or any of its ancestor 
directories."
          (smart-tags-display tag next)
          (message "Found definition for `%s'" tag))
       (error
-       (message "`%s' not found in tag tables" tag)
+       (message "`%s' definition not found in identifier lookup/tag tables" 
tag)
        (beep)))))
 
 (defconst smart-fortran-keywords
@@ -443,7 +443,7 @@ Otherwise:
        (progn
          (smart-tags-display tag next)
          (message "Found definition for `%s'" tag))
-      (error (progn (message "`%s' not found in tag tables" tag)
+      (error (progn (message "`%s' definition not found in identifier 
lookup/tag tables" tag)
                    (beep))))))
 
 ;;; The following should be called only if the OO-Browser is available.
@@ -512,7 +512,7 @@ in the current directory or any of its ancestor 
directories."
          (smart-tags-display tag next)
          (message "Found definition for `%s'" tag))
       (error
-       (message "`%s' not found in tag tables" tag)
+       (message "`%s' definition not found in identifier lookup/tag tables" 
tag)
        (beep)))))
 
 (defconst smart-javascript-keywords
@@ -747,7 +747,7 @@ Otherwise:
       (error
        (if (or (not smart-c-use-lib-man)
               (not (file-readable-p "~/.CLIBS-LIST")))
-          (progn (message "`%s' not found in tag tables" tag)
+          (progn (message "`%s' definition not found in identifier lookup/tag 
tables" tag)
                  (beep))
         (message
          "Checking if `%s' is an Objective-C library function..." tag)
@@ -756,7 +756,7 @@ Otherwise:
               (message
                "Displaying Objective-C library man page for `%s'" tag)
               (manual-entry tag))
-          (message "`%s' not found in tag tables or Objective-C libraries"
+          (message "`%s' definition not found in identifier lookup/tag tables 
or Objective-C libraries"
                    tag)
           (beep)))))))
 
@@ -865,7 +865,7 @@ in the current directory or any of its ancestor 
directories."
        (progn
          (smart-tags-display tag next)
          (message "Found definition for `%s'" tag))
-      (error (progn (message "`%s' not found in tag tables" tag)
+      (error (progn (message "`%s' definition not found in identifier 
lookup/tag tables" tag)
                    (beep))))))
 
 ;;; The following should be called only if the OO-Browser is available.
@@ -1300,9 +1300,8 @@ See the \"${hyperb:dir}/smart-clib-sym\" script for more 
information."
         ;; Identifier searches should almost always be case-sensitive today
         (tags-case-fold-search nil)
         (func (smart-tags-noselect-function))
-        (tags-file-name (if tags-table-list
-                            nil
-                          (and (boundp 'tags-file-name) tags-file-name)))
+        (tags-file-name (unless tags-table-list
+                          (when (boundp 'tags-file-name) tags-file-name)))
         find-tag-result
         ;; For InfoDock and XEmacs
         (tags-always-exact t)
@@ -1315,28 +1314,31 @@ See the \"${hyperb:dir}/smart-clib-sym\" script for 
more information."
     ;; when `next' is false (otherwise tag would = nil and the following
     ;; stringp test would fail).
     (and (featurep 'infodock) (stringp tag) (setq tag (list tag)))
-    (if (and func (setq find-tag-result (funcall func tag)))
-       (cond ((eq func 'find-tag-internal)
-              ;; InfoDock and XEmacs
-              (hpath:display-buffer (car find-tag-result))
-              (goto-char (cdr find-tag-result)))
-             ((vectorp find-tag-result)
-              ;; Newer GNU Emacs with xref.el
-              (hpath:display-buffer (xref-item-buffer find-tag-result))
-              (goto-char (xref-item-position find-tag-result)))
-             ((bufferp find-tag-result)
-              ;; Older GNU Emacs
-              (hpath:display-buffer find-tag-result))
-             (t
-              ;; Emacs with some unknown version of tags.
-              ;; Signals an error if tag is not found which is caught by
-              ;; many callers of this function.
-              ;; Find exact identifier matches only.
-              (with-no-warnings (find-tag (concat "\\`" (regexp-quote tag) 
"\\'") nil t))))
-      ;; Signals an error if tag is not found which is caught by
-      ;; many callers of this function.
-      ;; Find exact identifier matches only.
-      (with-no-warnings (find-tag (concat "\\`" (regexp-quote tag) "\\'") nil 
t)))))
+    (cond ((and func (or tags-table-list tags-file-name) (setq find-tag-result 
(funcall func tag)))
+          (cond ((eq func 'find-tag-internal)
+                 ;; InfoDock and XEmacs
+                 (hpath:display-buffer (car find-tag-result))
+                 (goto-char (cdr find-tag-result)))
+                ((vectorp find-tag-result)
+                 ;; Newer GNU Emacs with xref.el
+                 (hpath:display-buffer (xref-item-buffer find-tag-result))
+                 (goto-char (xref-item-position find-tag-result)))
+                ((bufferp find-tag-result)
+                 ;; Older GNU Emacs
+                 (hpath:display-buffer find-tag-result))
+                (t
+                 ;; Emacs with some unknown version of tags.
+                 ;; Signals an error if tag is not found which is caught by
+                 ;; many callers of this function.
+                 ;; Find exact identifier matches only.
+                 (with-no-warnings (find-tag (concat "\\`" (regexp-quote tag) 
"\\'") nil t)))))
+         ((or tags-table-list tags-file-name)
+          ;; Signals an error if tag is not found which is caught by
+          ;; many callers of this function.
+          ;; Find exact identifier matches only.
+          (with-no-warnings (find-tag (concat "\\`" (regexp-quote tag) "\\'") 
nil t)))
+         (t
+          (error "No existing tag tables in which to find `%s'" tag)))))
 
 ;;;###autoload
 (defun smart-tags-file-path (file)
@@ -1376,11 +1378,12 @@ to look.  If no tags file is found, an error is 
signaled."
             smart-emacs-tags-file
             (smart-emacs-lisp-mode-p)
             (let ((path (file-name-directory curr-dir-or-filename)))
-              (and path (delq nil (mapcar
-                                   (lambda (p)
-                                     (and p (equal (file-name-as-directory p)
-                                                   path)))
-                                   load-path)))))
+              (when path
+                (delq nil (mapcar
+                           (lambda (p)
+                             (when p
+                               (equal (file-name-as-directory p) path)))
+                           load-path)))))
        (setq tags-table-list (list smart-emacs-tags-file)))
     ;; Return the appropriate tags file list.
     (cond (tags-table-list
@@ -1393,10 +1396,10 @@ to look.  If no tags file is found, an error is 
signaled."
          ((fboundp 'buffer-tag-table-list)
           ;; InfoDock and XEmacs
           (buffer-tag-table-list))
-         ((and (boundp 'buffer-tag-table) buffer-tag-table)
+         ((when (boundp 'buffer-tag-table) buffer-tag-table)
           ;; InfoDock and XEmacs
           (list buffer-tag-table))
-         ((and (boundp 'tags-file-name) tags-file-name)
+         ((when (boundp 'tags-file-name) tags-file-name)
           (list tags-file-name))
          (t (error "Needed tags file not found; see `man etags' for how to 
build one")))))
 
diff --git a/hsys-org.el b/hsys-org.el
index 0a1e178..c97994c 100644
--- a/hsys-org.el
+++ b/hsys-org.el
@@ -43,7 +43,7 @@ with different settings of this option.  For example, a nil 
value makes
 
|---------------------+-------------------+------------------+----------+------------------|
 | This Option Setting | Smart Key Context | Hyperbole Button | Org Link | 
Fallback Command |
 
|---------------------+-------------------+------------------+----------+------------------|
-| buttons             | Ignore            | Activate         | Ignore   | 
org-meta-return  |
+| buttons             | Ignore            | Activate         | Activate | 
org-meta-return  |
 | nil                 | Ignore            | Ignore           | Ignore   | 
org-meta-return  |
 | t                   | Activate          | Activate         | Activate | None 
            |
 
|---------------------+-------------------+------------------+----------+------------------|"
diff --git a/hversion.el b/hversion.el
index a97809b..6f3f178 100644
--- a/hversion.el
+++ b/hversion.el
@@ -23,7 +23,7 @@
 ;;; Public variables
 ;;; ************************************************************************
 
-(defconst hyperb:version "7.1.4" "GNU Hyperbole revision number.")
+(defconst hyperb:version "8.0.0pre" "GNU Hyperbole revision number.")
 
 ;;;###autoload
 (defvar hyperb:microsoft-os-p
diff --git a/hyperbole.el b/hyperbole.el
index 9feaf16..5aa4526 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -5,8 +5,8 @@
 ;; Author:           Bob Weiner
 ;; Maintainer:       Bob Weiner <rsw@gnu.org>, Mats Lidell <matsl@gnu.org>
 ;; Created:          06-Oct-92 at 11:52:51
-;; Released:         27-Apr-21
-;; Version:          7.1.4pre
+;; Released:         03-May-21
+;; Version:          8.0.0pre
 ;; 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/hyperbole.html b/man/hyperbole.html
index 5323c7b..df81aa7 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.1.4, Published April, 2021).
+(Edition 8.0.0, Published May, 2021).
 
 Copyright (C) 1989-2021  Free Software Foundation, Inc.
 
@@ -231,7 +231,11 @@ ul.no-bullet {list-style: none}
 <li><a id="toc-Glossary-1" href="#Glossary">Appendix A Glossary</a></li>
 <li><a id="toc-Setup-1" href="#Setup">Appendix B Setup</a>
 <ul class="no-bullet">
-  <li><a id="toc-Installation-1" href="#Installation">B.1 Installation</a></li>
+  <li><a id="toc-Installation-1" href="#Installation">B.1 Installation</a>
+  <ul class="no-bullet">
+    <li><a 
id="toc-Stable-Release-Installation-_0028Emacs-Package-Manager_0029" 
href="#Stable-Release-Installation">B.1.1 Stable Release Installation (Emacs 
Package Manager)</a></li>
+    <li><a 
id="toc-Git-Pre_002drelease-Installation-_0028Straight-Package-Manager_0029" 
href="#Git-Pre_002drelease-Installation">B.1.2 Git Pre-release Installation 
(Straight Package Manager)</a></li>
+  </ul></li>
   <li><a id="toc-Invocation-1" href="#Invocation">B.2 Invocation</a></li>
   <li><a id="toc-Customization-1" href="#Customization">B.3 Customization</a>
   <ul class="no-bullet">
@@ -352,8 +356,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 7.1.4
-Printed April 28, 2021.
+Edition 8.0.0
+Printed May 3, 2021.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -838,7 +842,7 @@ Next: <a href="#Smart-Keys" accesskey="n" rel="next">Smart 
Keys</a>, Previous: <
 <span id="Introduction-1"></span><h2 class="chapter">1 Introduction</h2>
 
 <p>This edition of the GNU Hyperbole Manual is for use with any version
-7.1.4 or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+8.0.0 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,
@@ -848,6 +852,36 @@ explains how to subscribe to its mail lists.
 <p>Throughout this manual, sequences of keystrokes are delimited by curly
 braces <kbd>{ }</kbd>, function and variable names use this 
<code>typeface</code>.
 </p>
+<p>In brief, Hyperbole lets you:
+</p>
+<ul>
+<li> 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.
+
+</li><li> Activate many kinds of <em>implicit buttons</em> 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.
+
+</li><li> 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;
+
+</li><li> Manage all your contacts or record-based, unstructured nodes quickly 
with
+hierarchical categories; each entry can have embedded hyperbuttons of any
+type.  Or create an archive of documents with hierarchical entries and use
+the same search mechanism to quickly find any matching entry;
+
+</li><li> Use single keys to easily manage your Emacs windows or frames and 
quickly
+retrieve saved window and frame configurations;
+
+</li><li> Search for things in your current buffers, in a directory tree or 
across
+major web search engines with the touch of a few keys.
+</li></ul>
+
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#Manual-Overview" 
accesskey="1">Manual Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
@@ -866,6 +900,14 @@ Next: <a href="#Motivation" accesskey="n" 
rel="next">Motivation</a>, Previous: <
 </div>
 <span id="Manual-Overview-1"></span><h3 class="section">1.1 Manual 
Overview</h3>
 
+<p>Hyperbole is an efficient, programmable hypertextual information
+management system.  It is intended for everyday work on any GNU Emacs
+platform.  Hyperbole allows hypertext buttons to be embedded within
+unstructured and structured files, mail messages and news articles.
+It offers intuitive mouse-based control of information display within
+multiple windows.  It also provides point-and-click access to Info
+manuals, ftp archives, and the World-Wide Web (WWW).
+</p>
 <span id="index-file_002c-DEMO"></span>
 <span id="index-Hyperbole-demo"></span>
 <span id="index-demo-file"></span>
@@ -985,26 +1027,59 @@ Next: <a href="#Mail-Lists" accesskey="n" 
rel="next">Mail Lists</a>, Previous: <
 <span id="index-Emacs-Lisp"></span>
 <span id="index-Emacs"></span>
 <p>GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
-an efficient, programmable hypertextual information management
-system.  It is intended for everyday work on any GNU Emacs platform.
-Hyperbole allows hypertext buttons to be embedded within unstructured
-and structured files, mail messages and news articles.  It offers
-intuitive mouse-based control of information display within multiple
-windows.  It also provides point-and-click access to Info manuals, ftp
-archives, and the World-Wide Web (WWW).
+like Markdown for hypertext.  Hyperbole automatically recognizes dozens of
+common, pre-existing patterns in any buffer regardless of mode and can
+instantly activate them as hyperbuttons with a single key: email addresses,
+URLs, grep -n outputs, programming backtraces, sequences of Emacs keys,
+programming identifiers, Texinfo and Info cross-references, Org links,
+Markdown links and on and on.  All you do is load Hyperbole and then your
+text comes to life with no extra effort or complex formatting.
+</p>
+<p>Hyperbole includes easy-to-use, powerful hypertextual button types without
+the need to learn a markup language.  Hyperbole&rsquo;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 comes pre-built with most of the implicit button types you will
+need but with a little extra effort and a few lines of code (or even just
+a few words), you can define your own implicit button types to recognize
+your specific buttons and then activate them anywhere in Emacs.  You press
+a single key, <kbd>{M-<span class="key">RET</span>}</kbd> by default, on any 
kind of Hyperbole
+button to activate it, so you can rely on your muscle memory and let the
+computer do the hard work of figuring out what to do.  <kbd>{C-u
+M-<span class="key">RET</span>}</kbd> shows you what any button will do in any 
context before you
+activate it, so you can always be sure of what you are doing when needed
+or if some emails you a button (you can do that too).
+</p>
+<p>Hyperbole is something to be experienced and interacted with, not understood
+from reading alone.  It installs normally as a single Emacs package with no
+dependencies outside of standard Emacs libraries.  Most of Hyperbole is a
+single global minor mode that you can activate and deactivate at will.  And
+it can be uninstalled quickly as well if need be, so there is no risk to
+giving it a spin.
+</p>
+<p>Once you have it installed and activated <kbd>{C-u M-x hyperbole-mode <span 
class="key">RET</span>}</kbd>,
+try the interactive demo with <kbd>{C-h h d d}</kbd>.  In fact, if you
+have Hyperbole loaded, you can press <kbd>{M-<span 
class="key">RET</span>}</kbd> inside any of the
+brace delimited series of keys you see in this document and it will
+execute them on-the-fly (easy keyboard-macro style buttons in any text).
+</p>
+<p>Hyperbole can dramatically increase your productivity and greatly reduce
+the number of keyboard/mouse keys you&rsquo;ll need to work efficiently.
 </p>
 <p>Hyperbole consists of five parts:
 </p>
 <dl compact="compact">
 <dt><em>Buttons and Smart Keys</em></dt>
-<dd><p>Hyperbole hyperlink and other kinds of buttons (explicit buttons) may be
-added to documents with a simple drag between windows, no markup language
-needed.  Implicit buttons are patterns automatically recognized within
-existing text that perform actions, e.g. bug#24568 displays the bug status
-information for that Emacs bug number, without the need for any additional
-markup.  Global buttons are buttons that are activated by name from
-anywhere within Emacs.
-See <a href="#Buttons">Buttons</a>.
+<dd><p>Hyperbole hyperlink and other kinds of buttons <em>explicit 
buttons</em> may
+be added to documents with a simple drag between windows, no markup
+language needed.  <em>Implicit buttons</em> are patterns automatically
+recognized within existing text that perform actions, e.g. bug#24568
+displays the bug status information for that Emacs bug number, without the
+need for any additional markup.  <em>Global buttons</em> are buttons that are
+activated by name from anywhere within Emacs.  See <a 
href="#Buttons">Buttons</a>.
 </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.
@@ -3097,10 +3172,20 @@ of <kbd>{C-c C-c}</kbd>, <code>org-ctrl-c-ctrl-c</code>.
 <p>In any other context besides the end of a line, the Action Key invokes
 the Org-mode standard binding of <kbd>{M-<span class="key">RET</span>}</kbd>, 
<code>org-meta-return</code>.
 </p>
-<p>To disable ALL Hyperbole support within Org major and minor modes, set
+<p>To disable Hyperbole support within Org major and minor modes, set
 the custom option <code>hsys-org-enable-smart-keys</code> to <code>nil</code>. 
 Then in
 Org modes, the Action Key will simply invoke <code>org-meta-return</code>.
 </p>
+<div class="example">
+<pre 
class="example">|--------------+-------------------+------------------+----------+------------------|
+| This Setting | Smart Key Context | Hyperbole Button | Org Link | Fallback 
Command |
+|--------------+-------------------+------------------+----------+------------------|
+| buttons      | Ignore            | Activate         | Activate | 
org-meta-return  |
+| nil          | Ignore            | Ignore           | Ignore   | 
org-meta-return  |
+| t            | Activate          | Activate         | Activate | None        
     |
+|--------------+-------------------+------------------+----------+------------------|
+</pre></div>
+
 </dd>
 </dl>
 
@@ -8093,7 +8178,27 @@ Next: <a href="#Invocation" accesskey="n" 
rel="next">Invocation</a>, Previous: <
 </div>
 <span id="Installation-1"></span><h3 class="section">B.1 Installation</h3>
 
+<p>There are multiple package managers you can use to install Hyperbole once
+you have GNU Emacs set up at your site.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a 
href="#Stable-Release-Installation" accesskey="1">Stable Release Installation 
(Emacs Package Manager)</a></td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#Git-Pre_002drelease-Installation" accesskey="2">Git Pre-release 
Installation (Straight Package Manager)</a></td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<span id="Stable-Release-Installation"></span><div class="header">
+<p>
+Next: <a href="#Git-Pre_002drelease-Installation" accesskey="n" rel="next">Git 
Pre-release Installation</a>, Up: <a href="#Installation" accesskey="u" 
rel="up">Installation</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
+</div>
+<span 
id="Stable-Release-Installation-_0028Emacs-Package-Manager_0029"></span><h4 
class="subsection">B.1.1 Stable Release Installation (Emacs Package 
Manager)</h4>
+
 <span id="index-installation"></span>
+<span id="index-Emacs-package-manager"></span>
+<span id="index-stable-release-installation"></span>
+<span id="index-installation_002c-stable"></span>
 <span id="index-obtaining-Hyperbole"></span>
 <span id="index-Hyperbole_002c-obtaining-1"></span>
 <p>Once you have Emacs set up at your site, GNU Hyperbole may be
@@ -8127,6 +8232,50 @@ 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>
+<hr>
+<span id="Git-Pre_002drelease-Installation"></span><div class="header">
+<p>
+Previous: <a href="#Stable-Release-Installation" accesskey="p" 
rel="prev">Stable Release Installation</a>, Up: <a href="#Installation" 
accesskey="u" rel="up">Installation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index" 
title="Index" rel="index">Index</a>]</p>
+</div>
+<span 
id="Git-Pre_002drelease-Installation-_0028Straight-Package-Manager_0029"></span><h4
 class="subsection">B.1.2 Git Pre-release Installation (Straight Package 
Manager)</h4>
+
+<span id="index-Straight-package-manager"></span>
+<span id="index-pre_002drelease-installation"></span>
+<span id="index-installation_002c-pre_002drelease"></span>
+<span id="index-installation_002c-from-git"></span>
+<p>If you prefer to track Hyperbole development between releases and like to
+try out new features still in testing, then use the Straight package
+manager instead of the above, which pulls the latest Hyperbole source code
+from its git repository.  This also gives you a cleaner installation
+process without showing you any byte compilation warnings.
+</p>
+<div class="lisp">
+<pre class="lisp">;; Use this in your Emacs init file to install Straight
+(progn
+  (defvar bootstrap-version)
+  (setq package-enable-at-startup nil)
+  (let ((bootstrap-file
+         (expand-file-name &quot;straight/repos/straight.el/bootstrap.el&quot; 
user-emacs-directory))
+        (bootstrap-version 5))
+    (unless (file-exists-p bootstrap-file)
+      (with-current-buffer
+          (url-retrieve-synchronously
+           
&quot;https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el&quot;
+           'silent 'inhibit-cookies)
+        (goto-char (point-max))
+        (eval-print-last-sexp)))
+    (load bootstrap-file nil 'nomessage)))
+</pre><pre class="lisp">
+
+</pre><pre class="lisp">;; Then use this to install Hyperbole
+(straight-use-package
+ '(hyperbole
+   :host nil
+   :repo &quot;https://git.savannah.gnu.org/git/hyperbole.git&quot;
+   :config (hyperbole-mode 1)))
+</pre></div>
+
+
 <p>Now read the next section on Invocation.
 </p>
 <hr>
@@ -11459,13 +11608,13 @@ It did not exist when Hyperbole was first developed.
 <span id="index-hsys_002dorg_002denable_002dsmart_002dkeys-1"></span>
 <p>Smart Key support for Org-mode is already in Hyperbole.  Use the
 <code>hsys-org-enable-smart-keys</code> customization variable to control
-the Smart Keys and <kbd>{M-RET}</kbd> when in Org-mode with
+the Smart Keys and <kbd>{M-<span class="key">RET</span>}</kbd> when in 
Org-mode with
 <code>hyperbole-mode</code> active.  <code>t</code> enables Smart Key support
 everywhere.  The symbol, <code>buttons</code>, is the default; it means the
 Smart Keys are active only when point is within a Hyperbole button.  A
 <code>nil</code> value means no Smart Key support; Hyperbole gives Org
-complete control over <kbd>{M-RET}</kbd> so that it behaves just as it does
-normally in Org mode.
+complete control over <kbd>{M-<span class="key">RET</span>}</kbd> so that it 
behaves just as it
+does normally in Org mode.
 </p>
 </li><li> <span id="index-Smart-Key-2"></span>
 <span id="index-mouse-key-bindings"></span>
@@ -13289,6 +13438,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Emacs-Lisp-variables">Emacs Lisp 
variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Emacs-Lisp-variables-1">Emacs 
Lisp variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Link-Variable-Substitution">Link Variable Substitution</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-emacs-outline">emacs 
outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Emacs-package-manager">Emacs 
package manager</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Stable-Release-Installation">Stable Release Installation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Emacs-support">Emacs 
support</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Colors">Button Colors</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-emulation_002c-drag">emulation, 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-enable-org_002dmode-support">enable org-mode 
support</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -13440,7 +13590,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-version">Hyperbole 
version</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Suggestion-or-Bug-Reporting">Suggestion or Bug Reporting</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole_002c-embedding">Hyperbole, 
embedding</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Embedding-Hyperbole">Embedding Hyperbole</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole_002c-obtaining">Hyperbole, 
obtaining</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Top">Top</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Hyperbole_002c-obtaining-1">Hyperbole, 
obtaining</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Installation">Installation</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-Hyperbole_002c-obtaining-1">Hyperbole, 
obtaining</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Stable-Release-Installation">Stable Release Installation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole_002c-starting">Hyperbole, 
starting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole_002c-system-encapsulation">Hyperbole, system 
encapsulation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Encapsulating-Systems">Encapsulating Systems</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyperlink">hyperlink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
@@ -13495,7 +13645,10 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-insert-item">insert 
item</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-inserting-tabs">inserting 
tabs</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-insertion">insertion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-installation">installation</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Installation">Installation</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-installation">installation</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Stable-Release-Installation">Stable Release 
Installation</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-installation_002c-from-git">installation, from 
git</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Git-Pre_002drelease-Installation">Git Pre-release 
Installation</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-installation_002c-pre_002drelease">installation, 
pre-release</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Git-Pre_002drelease-Installation">Git Pre-release 
Installation</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-installation_002c-stable">installation, 
stable</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Stable-Release-Installation">Stable Release Installation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-instance-number">instance 
number</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Menu">By 
Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-interactive-cmd-char_002c-_002bI">interactive cmd char, 
+I</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Action-Types">Creating Action Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-interactive-cmd-char_002c-_002bK">interactive cmd char, 
+K</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Action-Types">Creating Action Types</a></td></tr>
@@ -13772,7 +13925,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th id="Concept-Index_cp_letter-O">O</th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-object_002doriented-code-browsing">object-oriented code 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-The-OO_002dBrowser">Smart Key - The 
OO-Browser</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-obtaining-Hyperbole">obtaining 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Installation">Installation</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-obtaining-Hyperbole">obtaining 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Stable-Release-Installation">Stable Release Installation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-online-library">online 
library</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-OO_002dBrowser">OO-Browser</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Smart-Key-_002d-The-OO_002dBrowser">Smart Key - The 
OO-Browser</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-option-setting">option 
setting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Customization">Customization</a></td></tr>
@@ -13833,6 +13986,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-popup-menu_002c-Rolo">popup 
menu, Rolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-posting-buttons">posting 
buttons</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-posting-news">posting 
news</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-News">Buttons in News</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-pre_002drelease-installation">pre-release 
installation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Git-Pre_002drelease-Installation">Git Pre-release 
Installation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-precedence_002c-buttons">precedence, 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Button-Type-Precedence">Button Type Precedence</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-programming-interface">programming 
interface</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Embedding-Hyperbole">Embedding Hyperbole</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-promotion">promotion</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
@@ -13953,12 +14107,14 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-social-reference">social 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-source-line">source 
line</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-splitting-a-cell">splitting a 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-stable-release-installation">stable release 
installation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Stable-Release-Installation">Stable Release Installation</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-stack-frame">stack 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-stack-frame-1">stack 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-star-outline">star 
outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-starting-HyControl">starting 
HyControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-starting-Hyperbole">starting 
Hyperbole</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-storage-manager">storage 
manager</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Operational-and-Storage-Formats">Operational and Storage 
Formats</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-Straight-package-manager">Straight package 
manager</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Git-Pre_002drelease-Installation">Git Pre-release 
Installation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-string">string</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-string-1">string</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-submenus">submenus</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 f669e41..47066c1 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 9a03f85..05a68f5 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index e552c05..e882ce8 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -154,8 +154,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
-Edition 7.1.4
-Printed April 28, 2021.
+Edition 8.0.0
+Printed May 3, 2021.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -196,8 +196,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 @sp 2
 
 @example
-Edition 7.1.4
-April 28, 2021
+Edition 8.0.0
+May 3, 2021
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -491,7 +491,7 @@ Smart Keyboard Keys
 @chapter Introduction
 
 This edition of the GNU Hyperbole Manual is for use with any version
-7.1.4 or greater of GNU Hyperbole.  Hyperbole runs atop GNU Emacs 24.3
+8.0.0 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,
@@ -501,6 +501,43 @@ explains how to subscribe to its mail lists.
 Throughout this manual, sequences of keystrokes are delimited by curly
 braces @kbd{@{ @}}, function and variable names use this @code{typeface}.
 
+@noindent
+In brief, Hyperbole lets you:
+
+@itemize @bullet
+@item
+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.
+
+@item
+Activate many kinds of @emph{implicit buttons} 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.
+
+@item
+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;
+
+@item
+Manage all your contacts or record-based, unstructured nodes quickly with
+hierarchical categories; each entry can have embedded hyperbuttons of any
+type.  Or create an archive of documents with hierarchical entries and use
+the same search mechanism to quickly find any matching entry;
+
+@item
+Use single keys to easily manage your Emacs windows or frames and quickly
+retrieve saved window and frame configurations;
+
+@item
+Search for things in your current buffers, in a directory tree or across
+major web search engines with the touch of a few keys.
+@end itemize
+
 @menu
 * Manual Overview::
 * Motivation::
@@ -511,6 +548,14 @@ braces @kbd{@{ @}}, function and variable names use this 
@code{typeface}.
 @node Manual Overview, Motivation, Introduction, Introduction
 @section   Manual Overview
 
+Hyperbole is an efficient, programmable hypertextual information
+management system.  It is intended for everyday work on any GNU Emacs
+platform.  Hyperbole allows hypertext buttons to be embedded within
+unstructured and structured files, mail messages and news articles.
+It offers intuitive mouse-based control of information display within
+multiple windows.  It also provides point-and-click access to Info
+manuals, ftp archives, and the World-Wide Web (WWW).
+
 @cindex file, DEMO
 @cindex Hyperbole demo
 @cindex demo file
@@ -623,13 +668,47 @@ start moving further, faster.
 @cindex Emacs Lisp
 @cindex Emacs
 GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
-an efficient, programmable hypertextual information management
-system.  It is intended for everyday work on any GNU Emacs platform.
-Hyperbole allows hypertext buttons to be embedded within unstructured
-and structured files, mail messages and news articles.  It offers
-intuitive mouse-based control of information display within multiple
-windows.  It also provides point-and-click access to Info manuals, ftp
-archives, and the World-Wide Web (WWW).
+like Markdown for hypertext.  Hyperbole automatically recognizes dozens of
+common, pre-existing patterns in any buffer regardless of mode and can
+instantly activate them as hyperbuttons with a single key: email addresses,
+URLs, grep -n outputs, programming backtraces, sequences of Emacs keys,
+programming identifiers, Texinfo and Info cross-references, Org links,
+Markdown links and on and on.  All you do is load Hyperbole and then your
+text comes to life with no extra effort or complex formatting.
+
+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.
+
+Hyperbole comes pre-built with most of the implicit button types you will
+need but with a little extra effort and a few lines of code (or even just
+a few words), you can define your own implicit button types to recognize
+your specific buttons and then activate them anywhere in Emacs.  You press
+a single key, @bkbd{M-@key{RET}} by default, on any kind of Hyperbole
+button to activate it, so you can rely on your muscle memory and let the
+computer do the hard work of figuring out what to do.  @bkbd{C-u
+M-@key{RET}} shows you what any button will do in any context before you
+activate it, so you can always be sure of what you are doing when needed
+or if some emails you a button (you can do that too).
+
+Hyperbole is something to be experienced and interacted with, not understood
+from reading alone.  It installs normally as a single Emacs package with no
+dependencies outside of standard Emacs libraries.  Most of Hyperbole is a
+single global minor mode that you can activate and deactivate at will.  And
+it can be uninstalled quickly as well if need be, so there is no risk to
+giving it a spin.
+
+Once you have it installed and activated @bkbd{C-u M-x hyperbole-mode 
@key{RET}},
+try the interactive demo with @bkbd{C-h h d d}.  In fact, if you
+have Hyperbole loaded, you can press @bkbd{M-@key{RET}} inside any of the
+brace delimited series of keys you see in this document and it will
+execute them on-the-fly (easy keyboard-macro style buttons in any text).
+
+Hyperbole can dramatically increase your productivity and greatly reduce
+the number of keyboard/mouse keys you'll need to work efficiently.
 
 @page
 @noindent
@@ -637,14 +716,13 @@ Hyperbole consists of five parts:
 
 @table @emph
 @item Buttons and Smart Keys
-Hyperbole hyperlink and other kinds of buttons (explicit buttons) may be
-added to documents with a simple drag between windows, no markup language
-needed.  Implicit buttons are patterns automatically recognized within
-existing text that perform actions, e.g. bug#24568 displays the bug status
-information for that Emacs bug number, without the need for any additional
-markup.  Global buttons are buttons that are activated by name from
-anywhere within Emacs.
-@xref{Buttons}.
+Hyperbole hyperlink and other kinds of buttons @dfn{explicit buttons} may
+be added to documents with a simple drag between windows, no markup
+language needed.  @dfn{Implicit buttons} are patterns automatically
+recognized within existing text that perform actions, e.g. bug#24568
+displays the bug status information for that Emacs bug number, without the
+need for any additional markup.  @dfn{Global buttons} are buttons that are
+activated by name from anywhere within Emacs.  @xref{Buttons}.
 
 Buttons are accessed by clicking on them or referenced by name (global
 buttons), so they can be activated regardless of what is on screen.
@@ -2497,10 +2575,22 @@ of @bkbd{C-c C-c}, @code{org-ctrl-c-ctrl-c}.
 In any other context besides the end of a line, the Action Key invokes
 the Org-mode standard binding of @bkbd{M-@key{RET}}, @code{org-meta-return}.
 
-To disable ALL Hyperbole support within Org major and minor modes, set
+To disable Hyperbole support within Org major and minor modes, set
 the custom option @code{hsys-org-enable-smart-keys} to @code{nil}.  Then in
 Org modes, the Action Key will simply invoke @code{org-meta-return}.
 
+@example
+@group
+|--------------+-------------------+------------------+----------+------------------|
+| This Setting | Smart Key Context | Hyperbole Button | Org Link | Fallback 
Command |
+|--------------+-------------------+------------------+----------+------------------|
+| buttons      | Ignore            | Activate         | Activate | 
org-meta-return  |
+| nil          | Ignore            | Ignore           | Ignore   | 
org-meta-return  |
+| t            | Activate          | Activate         | Activate | None        
     |
+|--------------+-------------------+------------------+----------+------------------|
+@end group
+@end example
+
 @end table
 
 
@@ -6873,7 +6963,16 @@ invocation instructions in this appendix.
 @node Installation, Invocation, Setup, Setup
 @section   Installation
 
+There are multiple package managers you can use to install Hyperbole once
+you have GNU Emacs set up at your site.
+
+@node Stable Release Installation
+@subsection Stable Release Installation (Emacs Package Manager)
+
 @cindex installation
+@cindex Emacs package manager
+@cindex stable release installation
+@cindex installation, stable
 @cindex obtaining Hyperbole
 @cindex Hyperbole, obtaining
 Once you have Emacs set up at your site, GNU Hyperbole may be
@@ -6909,6 +7008,49 @@ 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.
 
+@node Git Pre-release Installation
+@subsection Git Pre-release Installation (Straight Package Manager)
+
+@cindex Straight package manager
+@cindex pre-release installation
+@cindex installation, pre-release
+@cindex installation, from git
+If you prefer to track Hyperbole development between releases and like to
+try out new features still in testing, then use the Straight package
+manager instead of the above, which pulls the latest Hyperbole source code
+from its git repository.  This also gives you a cleaner installation
+process without showing you any byte compilation warnings.
+
+@lisp
+@group
+;; Use this in your Emacs init file to install Straight
+(progn
+  (defvar bootstrap-version)
+  (setq package-enable-at-startup nil)
+  (let ((bootstrap-file
+         (expand-file-name "straight/repos/straight.el/bootstrap.el" 
user-emacs-directory))
+        (bootstrap-version 5))
+    (unless (file-exists-p bootstrap-file)
+      (with-current-buffer
+          (url-retrieve-synchronously
+           
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el";
+           'silent 'inhibit-cookies)
+        (goto-char (point-max))
+        (eval-print-last-sexp)))
+    (load bootstrap-file nil 'nomessage)))
+@end group
+
+@group
+;; Then use this to install Hyperbole
+(straight-use-package
+ '(hyperbole
+   :host nil
+   :repo "https://git.savannah.gnu.org/git/hyperbole.git";
+   :config (hyperbole-mode 1)))
+@end group
+@end lisp
+
+
 @noindent
 Now read the next section on Invocation.
 
@@ -9992,13 +10134,13 @@ It did not exist when Hyperbole was first developed.
 @vindex hsys-org-enable-smart-keys
 Smart Key support for Org-mode is already in Hyperbole.  Use the
 @code{hsys-org-enable-smart-keys} customization variable to control
-the Smart Keys and @bkbd{M-RET} when in Org-mode with
+the Smart Keys and @bkbd{M-@key{RET}} when in Org-mode with
 @code{hyperbole-mode} active.  @code{t} enables Smart Key support
 everywhere.  The symbol, @code{buttons}, is the default; it means the
 Smart Keys are active only when point is within a Hyperbole button.  A
 @code{nil} value means no Smart Key support; Hyperbole gives Org
-complete control over @bkbd{M-RET} so that it behaves just as it does
-normally in Org mode.
+complete control over @bkbd{M-@key{RET}} so that it behaves just as it
+does normally in Org mode.
 
 @cindex Smart Key
 @cindex mouse key bindings
diff --git a/man/version.texi b/man/version.texi
index e5ce104..c514998 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED April, 2021
-@set UPDATED-MONTH April 2021
-@set EDITION 7.1.4
-@set VERSION 7.1.4
+@set UPDATED May, 2021
+@set UPDATED-MONTH May 2021
+@set EDITION 8.0.0
+@set VERSION 8.0.0



reply via email to

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