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

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

[elpa] externals/hyperbole 77a075f 07/20: * README.md.html - Added.


From: Robert Weiner
Subject: [elpa] externals/hyperbole 77a075f 07/20: * README.md.html - Added.
Date: Tue, 9 Aug 2016 19:17:07 +0000 (UTC)

branch: externals/hyperbole
commit 77a075f9d709f3f324b3b5861bbefe3dfe5147ed
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>

    * README.md.html - Added.
    
    2016-08-01  Bob Weiner  <address@hidden>
    
    * hui-menu.el (hui-menu-browser): Added to allow setting of
        hyperbole-web-search-browser-function.
                  (infodock-hyperbole-menu): Added missing quote in 
Display-Referents-in setq,
        fixing invalid code generation.
    
    * README.md (Invocation):
      HY-ANNOUNCE (Invocation):
      INSTALL (Invocation):
      README (Files):
      DEMO (HyControl): Added pointer to HyControl video and {C-c \} binding.
      hyperbole.texi (HyControl): Updated {C-c \} binding description.
    
    * hycontrol.el (hycontrol-frames, hycontrol-windows): Added ESC as an 
additional key
        that quits form HyControl.
    
    * man/hyperbole.texi (Global Key Bindings): Documented {C-c /} prefix key.
                         (Menus): Added Find/Web menu.
---
 .gitignore         |    3 +
 Changes            |   24 ++
 DEMO               |   13 +-
 HY-ANNOUNCE        |   15 +-
 INSTALL            |    5 +-
 MANIFEST           |    1 +
 Makefile           |    2 +-
 README             |   15 +-
 README.md          |   15 +-
 README.md.html     |  951 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 hsettings.el       |   14 +-
 hui-menu.el        |  314 +++++++++--------
 hycontrol.el       |    4 +-
 man/hyperbole.texi |   32 +-
 14 files changed, 1212 insertions(+), 196 deletions(-)

diff --git a/.gitignore b/.gitignore
index 2a6fff3..751c293 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,6 @@ TODO*
 
 # Programming support
 TAGS
+
+# Video Demos
+videos
diff --git a/Changes b/Changes
index fdfbf54..963b944 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,29 @@
 -- Almost all changes listed herein are new as of 2016. --
 
+2016-08-02  Bob Weiner  <address@hidden>
+
+* README.md.html - Added.
+
+2016-08-01  Bob Weiner  <address@hidden>
+
+* hui-menu.el (hui-menu-browser): Added to allow setting of
+    hyperbole-web-search-browser-function.
+              (infodock-hyperbole-menu): Added missing quote in 
Display-Referents-in setq,
+    fixing invalid code generation.
+
+* README.md (Invocation):
+  HY-ANNOUNCE (Invocation):
+  INSTALL (Invocation):
+  README (Files):
+  DEMO (HyControl): Added pointer to HyControl video and {C-c \} binding.
+  hyperbole.texi (HyControl): Updated {C-c \} binding description.
+
+* hycontrol.el (hycontrol-frames, hycontrol-windows): Added ESC as an 
additional key
+    that quits form HyControl.
+
+* man/hyperbole.texi (Global Key Bindings): Documented {C-c /} prefix key.
+                     (Menus): Added Find/Web menu.
+
 2016-07-31  Bob Weiner  <address@hidden>
 
 * Changes: Renamed this file from ChangeLog since Elpa release builds
diff --git a/DEMO b/DEMO
index 0f22ea1..a3771d6 100644
--- a/DEMO
+++ b/DEMO
@@ -150,9 +150,10 @@ alphabetical order the Koutliner commands which are bound 
to keys.
 * HyControl
 
 Hyperbole includes the fastest, easiest-to-use Emacs window and frame
-management system available, HyControl, found under the Hyperbole
-Screen menu.  If you use a lot of Emacs windows or frames (typically,
-window system windows) then this tool is for you.
+management system available, HyControl, found under the Hyperbole Screen
+menu.  If you use a lot of Emacs windows or frames (typically, window system
+windows) then this tool is for you.  A long video demonstrating most of
+HyControl's features is available at: https://youtu.be/M3-aMh1ccJk.
 
 HyControl interactively adjusts the layout of your windows and frames
 down to the pixel-level if desired.  You adjust the location, size and
@@ -162,9 +163,9 @@ avoid covering toolbars anchored at the edges of your 
screen and allows you
 to quickly set numeric arguments to apply to operations, like resizing a
 frame to a percentage of your screen size.
 
-Hyperbole typically binds the key {C-c \} to invoke HyControl window control;
-otherwise, the Screen/WindowsControl minibuffer menu item, {C-h h s w}, will
-do the same thing.
+Hyperbole binds {C-c \} to invoke HyControl window control; otherwise, the
+Hyperbole minibuffer menu item, Screen/WindowsControl {C-h h s w}, will do
+the same thing.
 
 Once in HyControl, your minibuffer window at the bottom of the selected frame
 will display a summary of keys you may use to adjust your windows until you
diff --git a/HY-ANNOUNCE b/HY-ANNOUNCE
index c5fa55b..17e857b 100644
--- a/HY-ANNOUNCE
+++ b/HY-ANNOUNCE
@@ -11,11 +11,11 @@ on the internet.  People who get used to Hyperbole find it 
helps them so much
 that they prefer never to use Emacs without it.
 
 Hyperbole includes easy-to-use, powerful hypertextual button types and links
-that can be made without the need to learn a markup language.  without the need
-to learn a markup language.  It also includes a hierarchical, record-based
-contact manager, a rapid window and frame control system and a powerful
-multi-level auto-numbered outliner.  All features are aimed at making textual
-information management and display fast and easy.
+that can be made without the need to learn a markup language.  It also
+includes a hierarchical, record-based contact manager, a rapid window and
+frame control system and a powerful multi-level auto-numbered outliner.  All
+features are aimed at making textual information management and display fast
+and easy.
 
 Hyperbole embeds hypertext buttons within unstructured and structured files,
 mail messages and news articles.  It offers intuitive keyboard and mouse-based
@@ -156,7 +156,10 @@ Hyperbole's multi-level autonumbered hypertextual outliner.
 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.
+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 most of HyControl's features
+is available at: https://youtu.be/M3-aMh1ccJk.
 
 The above are the best interactive ways to learn about Hyperbole.  The
 Hyperbole Manual is a reference manual, not a simple introduction.  It is
diff --git a/INSTALL b/INSTALL
index 19f4357..69680b2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -79,7 +79,10 @@ Hyperbole's multi-level autonumbered hypertextual outliner.
 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.
+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 most of HyControl's
+features is available at: https://youtu.be/M3-aMh1ccJk.
 
 The above are the best interactive ways to learn about Hyperbole.  The
 Hyperbole Manual is a reference manual, not a simple introduction.  It is
diff --git a/MANIFEST b/MANIFEST
index 94fa5a9..fa43c27 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -10,6 +10,7 @@ INSTALL             - GNU Hyperbole installation and 
invocation instructions
 Makefile            - Build GNU Hyperbole directories and distributions
 README              - Information GNU Hyperbole users and maintainers should 
read
 README.md           - Markdown formatted introduction combining README, 
INSTALL and HY-ABOUT
+README.md.html      - HTML formatted introduction combining README, INSTALL 
and HY-ABOUT
 hversion.el         - GNU Hyperbole version and system information setup
 hyperbole.el        - Loads and initializes GNU Hyperbole
 ChangeLog           - Summary of changes in recent GNU Hyperbole releases
diff --git a/Makefile b/Makefile
index ca13f08..bcb13f4 100644
--- a/Makefile
+++ b/Makefile
@@ -277,7 +277,7 @@ $(pkg_dir)/hyperbole-$(HYPB_VERSION).tar: $(HYPERBOLE_FILES)
 pkgclean: packageclean
 packageclean:
        if [ -d $(pkg_hyperbole) ]; then \
-         cd $(pkg_hyperbole) && $(RM) -r .git* ChangeLog.* *autoloads.* *.elc 
TAGS TODO* .DS_Store \
+         cd $(pkg_hyperbole) && $(RM) -r .git* videos ChangeLog.* *autoloads.* 
*.elc TAGS TODO* .DS_Store \
            core .place* ._* .*~ *~ *\# *- *.orig *.rej .nfs* CVS .cvsignore 
GNUmakefile.id; fi
        if [ -d $(pkg_hyperbole)/kotl ]; then \
          cd $(pkg_hyperbole)/kotl && $(RM) -r *autoloads.* *.elc TAGS TODO* 
.DS_Store \
diff --git a/README b/README
index 4062836..240af9d 100644
--- a/README
+++ b/README
@@ -28,9 +28,17 @@ containing this file wherever it may be of use.
 
 See the "HY-ABOUT" file for a description and overview of Hyperbole.
 
+See "DEMO" for a demonstration of standard Hyperbole button capabilities.
+This is the best way to initially interactively learn about Hyperbole after
+installing it.
+
 "man/im/demo.png", "man/im/hyperbole-cv.png" and "koutline.png" are
 screenshots of Hyperbole in action.
 
+HyControl is Hyperbole's frame and window manager; a long video
+demonstrating most of HyControl's features is available at:
+https://youtu.be/M3-aMh1ccJk.
+
 See the "HY-NEWS" file for a summary of new features in this release.
 
 See the "INSTALL" file for installation and invocation instructions.
@@ -39,11 +47,8 @@ See the "HY-COPY" and "COPYING" files for license 
information.
 
 See the "MANIFEST" file for summaries of Hyperbole distribution files.
 
-See "DEMO" for a demonstration of standard Hyperbole button capabilities.
-This is the best way to initially interactively learn about Hyperbole after
-installing it.
-
-Various forms of the Hyperbole are below the "man/" subdirectory.
+Various forms of the reference manual for Hyperbole are below the
+"man/" subdirectory.
 
 ===========================================================================
 *                   Programmer Quick Reference
diff --git a/README.md b/README.md
index 1c073bf..60739b4 100644
--- a/README.md
+++ b/README.md
@@ -108,12 +108,15 @@ Hyperbole's multi-level autonumbered hypertextual 
outliner.
 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.
-
-The above are the best interactive ways to learn about Hyperbole.  The
-Hyperbole Manual is a reference manual, not a simple introduction.  It is
-included in the "man/" subdirectory of the Hyperbole package directory in
-four forms:
+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 most of HyControl's
+features is available at: https://youtu.be/M3-aMh1ccJk.
+
+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:
 
 [hyperbole.info](man/hyperbole.info)   - online Info browser version  
 [hyperbole.html](man/hyperbole.html)   - web HTML version  
diff --git a/README.md.html b/README.md.html
new file mode 100644
index 0000000..8473eb8
--- /dev/null
+++ b/README.md.html
@@ -0,0 +1,951 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+
+<meta charset="utf-8">
+<title>README</title>
+
+
+<style type="text/css">
+body {
+  font-family: Helvetica, arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.6;
+  padding-top: 10px;
+  padding-bottom: 10px;
+  background-color: white;
+  padding: 30px; }
+
+body > *:first-child {
+  margin-top: 0 !important; }
+body > *:last-child {
+  margin-bottom: 0 !important; }
+
+a {
+  color: #4183C4; }
+a.absent {
+  color: #cc0000; }
+a.anchor {
+  display: block;
+  padding-left: 30px;
+  margin-left: -30px;
+  cursor: pointer;
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0; }
+
+h1, h2, h3, h4, h5, h6 {
+  margin: 20px 0 10px;
+  padding: 0;
+  font-weight: bold;
+  -webkit-font-smoothing: antialiased;
+  cursor: text;
+  position: relative; }
+
+h1 tt, h1 code {
+  font-size: inherit; }
+
+h2 tt, h2 code {
+  font-size: inherit; }
+
+h3 tt, h3 code {
+  font-size: inherit; }
+
+h4 tt, h4 code {
+  font-size: inherit; }
+
+h5 tt, h5 code {
+  font-size: inherit; }
+
+h6 tt, h6 code {
+  font-size: inherit; }
+
+h1 {
+  font-size: 28px;
+  color: black; }
+
+h2 {
+  font-size: 24px;
+  border-bottom: 1px solid #cccccc;
+  color: black; }
+
+h3 {
+  font-size: 18px; }
+
+h4 {
+  font-size: 16px; }
+
+h5 {
+  font-size: 14px; }
+
+h6 {
+  color: #777777;
+  font-size: 14px; }
+
+p, blockquote, ul, ol, dl, li, table, pre {
+  margin: 15px 0; }
+
+hr {
+  background: transparent 
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4g
 [...]
+  border: 0 none;
+  color: #cccccc;
+  height: 4px;
+  padding: 0;
+}
+
+body > h2:first-child {
+  margin-top: 0;
+  padding-top: 0; }
+body > h1:first-child {
+  margin-top: 0;
+  padding-top: 0; }
+  body > h1:first-child + h2 {
+    margin-top: 0;
+    padding-top: 0; }
+body > h3:first-child, body > h4:first-child, body > h5:first-child, body > 
h6:first-child {
+  margin-top: 0;
+  padding-top: 0; }
+
+a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, 
a:first-child h5, a:first-child h6 {
+  margin-top: 0;
+  padding-top: 0; }
+
+h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
+  margin-top: 0; }
+
+li p.first {
+  display: inline-block; }
+li {
+  margin: 0; }
+ul, ol {
+  padding-left: 30px; }
+
+ul :first-child, ol :first-child {
+  margin-top: 0; }
+
+dl {
+  padding: 0; }
+  dl dt {
+    font-size: 14px;
+    font-weight: bold;
+    font-style: italic;
+    padding: 0;
+    margin: 15px 0 5px; }
+    dl dt:first-child {
+      padding: 0; }
+    dl dt > :first-child {
+      margin-top: 0; }
+    dl dt > :last-child {
+      margin-bottom: 0; }
+  dl dd {
+    margin: 0 0 15px;
+    padding: 0 15px; }
+    dl dd > :first-child {
+      margin-top: 0; }
+    dl dd > :last-child {
+      margin-bottom: 0; }
+
+blockquote {
+  border-left: 4px solid #dddddd;
+  padding: 0 15px;
+  color: #777777; }
+  blockquote > :first-child {
+    margin-top: 0; }
+  blockquote > :last-child {
+    margin-bottom: 0; }
+
+table {
+  padding: 0;border-collapse: collapse; }
+  table tr {
+    border-top: 1px solid #cccccc;
+    background-color: white;
+    margin: 0;
+    padding: 0; }
+    table tr:nth-child(2n) {
+      background-color: #f8f8f8; }
+    table tr th {
+      font-weight: bold;
+      border: 1px solid #cccccc;
+      margin: 0;
+      padding: 6px 13px; }
+    table tr td {
+      border: 1px solid #cccccc;
+      margin: 0;
+      padding: 6px 13px; }
+    table tr th :first-child, table tr td :first-child {
+      margin-top: 0; }
+    table tr th :last-child, table tr td :last-child {
+      margin-bottom: 0; }
+
+img {
+  max-width: 100%; }
+
+span.frame {
+  display: block;
+  overflow: hidden; }
+  span.frame > span {
+    border: 1px solid #dddddd;
+    display: block;
+    float: left;
+    overflow: hidden;
+    margin: 13px 0 0;
+    padding: 7px;
+    width: auto; }
+  span.frame span img {
+    display: block;
+    float: left; }
+  span.frame span span {
+    clear: both;
+    color: #333333;
+    display: block;
+    padding: 5px 0 0; }
+span.align-center {
+  display: block;
+  overflow: hidden;
+  clear: both; }
+  span.align-center > span {
+    display: block;
+    overflow: hidden;
+    margin: 13px auto 0;
+    text-align: center; }
+  span.align-center span img {
+    margin: 0 auto;
+    text-align: center; }
+span.align-right {
+  display: block;
+  overflow: hidden;
+  clear: both; }
+  span.align-right > span {
+    display: block;
+    overflow: hidden;
+    margin: 13px 0 0;
+    text-align: right; }
+  span.align-right span img {
+    margin: 0;
+    text-align: right; }
+span.float-left {
+  display: block;
+  margin-right: 13px;
+  overflow: hidden;
+  float: left; }
+  span.float-left span {
+    margin: 13px 0 0; }
+span.float-right {
+  display: block;
+  margin-left: 13px;
+  overflow: hidden;
+  float: right; }
+  span.float-right > span {
+    display: block;
+    overflow: hidden;
+    margin: 13px auto 0;
+    text-align: right; }
+
+code, tt {
+  margin: 0 2px;
+  padding: 0 5px;
+  white-space: nowrap;
+  border: 1px solid #eaeaea;
+  background-color: #f8f8f8;
+  border-radius: 3px; }
+
+pre code {
+  margin: 0;
+  padding: 0;
+  white-space: pre;
+  border: none;
+  background: transparent; }
+
+.highlight pre {
+  background-color: #f8f8f8;
+  border: 1px solid #cccccc;
+  font-size: 13px;
+  line-height: 19px;
+  overflow: auto;
+  padding: 6px 10px;
+  border-radius: 3px; }
+
+pre {
+  background-color: #f8f8f8;
+  border: 1px solid #cccccc;
+  font-size: 13px;
+  line-height: 19px;
+  overflow: auto;
+  padding: 6px 10px;
+  border-radius: 3px; }
+  pre code, pre tt {
+    background-color: transparent;
+    border: none; }
+
+sup {
+    font-size: 0.83em;
+    vertical-align: super;
+    line-height: 0;
+}
+* {
+       -webkit-print-color-adjust: exact;
+}
address@hidden screen and (min-width: 914px) {
+    body {
+        width: 854px;
+        margin:0 auto;
+    }
+}
address@hidden print {
+       table, pre {
+               page-break-inside: avoid;
+       }
+       pre {
+               word-wrap: break-word;
+       }
+}
+</style>
+
+<style type="text/css">
+
+code[class*="language-"],
+pre[class*="language-"] {
+       color: black;
+       background: none;
+       text-shadow: 0 1px white;
+       font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+       text-align: left;
+       white-space: pre;
+       word-spacing: normal;
+       word-break: normal;
+       word-wrap: normal;
+       line-height: 1.5;
+
+       -moz-tab-size: 4;
+       -o-tab-size: 4;
+       tab-size: 4;
+
+       -webkit-hyphens: none;
+       -moz-hyphens: none;
+       -ms-hyphens: none;
+       hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] 
::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] 
::-moz-selection {
+       text-shadow: none;
+       background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+       text-shadow: none;
+       background: #b3d4fc;
+}
+
address@hidden print {
+       code[class*="language-"],
+       pre[class*="language-"] {
+               text-shadow: none;
+       }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+       padding: 1em;
+       margin: .5em 0;
+       overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+       background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+       padding: .1em;
+       border-radius: .3em;
+       white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+       color: slategray;
+}
+
+.token.punctuation {
+       color: #999;
+}
+
+.namespace {
+       opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+       color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+       color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+       color: #a67f59;
+       background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+       color: #07a;
+}
+
+.token.function {
+       color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+       color: #e90;
+}
+
+.token.important,
+.token.bold {
+       font-weight: bold;
+}
+.token.italic {
+       font-style: italic;
+}
+
+.token.entity {
+       cursor: help;
+}
+</style>
+
+
+</head>
+
+<body>
+
+<h1 id="toc_0">GNU Hyperbole</h1>
+
+<!-- START doctoc generated TOC -->
+
+<p><strong>Table of Contents</strong></p>
+
+<ul>
+<li><a href="#summary">Summary</a></li>
+<li><a href="#installation">Installation</a></li>
+<li><a href="#invocation">Invocation</a></li>
+<li><a href="#details">Details</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>
+
+<!-- END doctoc generated TOC -->
+
+<h2 id="toc_1">Summary</h2>
+
+<p><code>GNU Hyperbole</code> (pronounced Ga-new Hi-per-bo-lee), or just
+<code>Hyperbole</code>, is an efficient and programmable hypertextual 
information
+management system implemented as a GNU Emacs package.  It works well
+on GNU Emacs 24.4 or above.  It is designed and written by Bob Weiner.
+Its main distribution site is: <a 
href="https://www.gnu.org/software/hyperbole/";>https://www.gnu.org/software/hyperbole/</a>.</p>
+
+<p>It includes easy-to-use, powerful hypertextual button types without
+the need to learn a markup language; a hierarchical, record-based
+contact manager; a rapid window and frame control system; and a
+powerful multi-level auto-numbered outliner.  All features are aimed
+at making textual information management and display fast and easy.</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>The <a href="https://www.emacswiki.org/emacs/Hyperbole";>Hyperbole wiki 
page</a>
+explains the many ways it differs from and is complementary to Org mode.</p>
+
+<p><img src="man/im/hyperbole-cv.png" alt="Hyperbole screenshot of the 
Koutliner, DEMO file and HyRolo"></p>
+
+<h2 id="toc_2">Installation</h2>
+
+<p>Once you have Emacs set up at your site, GNU Hyperbole may be
+installed by using the Emacs Package Manager.  If you are not
+familiar with it, see the Packages section of the GNU Emacs Manual,
+<a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html";>Emacs
 Packages</a>. </p>
+
+<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 &quot;~/.emacs&quot;.  For further details, see <a 
href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html";>Emacs
 Init
+File</a>.</p>
+
+<p>Below are the lines to add:</p>
+
+<div><pre><code class="language-none">(require &#39;package)
+(setq package-enable-at-startup nil) ;; Prevent double loading of libraries
+(package-initialize)
+(unless (package-installed-p &#39;hyperbole)
+  (package-refresh-contents)
+  (package-install &#39;hyperbole))
+(require &#39;hyperbole)</code></pre></div>
+
+<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 id="toc_3">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><img src="man/im/menu-hyperbole.png" alt="Hyperbole Menubar Menu"></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&#39;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><img src="man/im/demo.png" alt="Hyperbole screenshot of the DEMO"></p>
+
+<p>{C-h h k e} offers a interactive demonstration of the Koutliner,
+Hyperbole&#39;s multi-level autonumbered hypertextual outliner.</p>
+
+<p><img src="man/im/koutliner.png" alt="Hyperbole screenshot of the 
Koutliner"></p>
+
+<p>To try out HyControl, Hyperbole&#39;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&#39;s
+window control menu if it was not already bound prior to Hyperbole&#39;s
+initialization.  A long video demonstrating most of HyControl&#39;s
+features is available at: https://youtu.be/M3-aMh1ccJk.</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 &quot;man/&quot; 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 &quot;${hyperb:dir}/man/hyperbole.html&quot;,
+wherever the Hyperbole package directory is on your system; often this is:
+&quot;~/.emacs.d/elpa/hyperbole-${hyperb:version}/&quot;.</p>
+
+<h2 id="toc_4">Details</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>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&#39;, 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 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><img src="man/im/menu-rolo.png" alt="HyRolo Menubar Menu"></p></li>
+<li><p><strong>Screen Control</strong>: 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&#39;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></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>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&#39;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>
+
+<p>Some of Hyperbole&#39;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>
+
+<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 id="toc_5">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-ABOUT">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 &quot;man/&quot; 
subdirectory.</p>
+
+<h2 id="toc_6">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 &#39;h&#39;, aside from 
the
+Koutliner files which are in the kotl/ subdirectory and begin with a 
&#39;k&#39;.</p></li>
+<li><p>Hyperbole user-interface files begin with &#39;hui-&#39; or 
&#39;hmous&#39;.</p></li>
+<li><p>Files that define implicit button types begin with 
&#39;hib&#39;.</p></li>
+<li><p>Encapsulations of foreign systems begin with &#39;hsys-&#39;.</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 <a href="man/hyperbole.html#Questions%0Aand%20Answers">Hyperbole 
Questions and Answers</a> appendix in the Hyperbole manual for information on 
how
+to alter the default context-sensitive Hyperbole key bindings (Smart
+Keys).</p>
+
+<h2 id="toc_7">User Quotes</h2>
+
+<p>*** MAN I love Hyperbole!!!  Wow! ***</p>
+
+<div><pre><code class="language-none">                    -- Ken Olstad  
+                       Cheyenne Software, Inc.</code></pre></div>
+
+<hr>
+
+<p>I <em>love</em> koutlines.</p>
+
+<div><pre><code class="language-none">                    -- Bob Glickstein  
+                       Z-Code Software Corporation</code></pre></div>
+
+<hr>
+
+<p>For me, Emacs isn&#39;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&#39;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>
+
+<div><pre><code class="language-none">                    -- Chris Nuzum  
+                       Co-founder, Traction Software, Inc.</code></pre></div>
+
+<hr>
+
+<p>I&#39;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&#39;
+  support for embedding graphics, I&#39;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>
+
+<div><pre><code class="language-none">                    -- Farzin Guilak  
+                       Protocol Systems, Inc., Engineer</code></pre></div>
+
+<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&#39;ve
+  implemented Emacspeak extensions to support it.</p>
+
+<div><pre><code class="language-none">                -- TV Raman  
+                   Google Inc.</code></pre></div></li>
+</ol>
+
+<hr>
+
+<p>I&#39;ve been a grateful Hyperbole user for a few years now.  
Hyperbole&#39;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&#39;d
+  like, one that completely handles wico menus (I&#39;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>
+
+<div><pre><code class="language-none">                    -- Ken Olstad  
+                       Cheyenne Software, Inc.</code></pre></div>
+
+<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 &quot;profile&quot; 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>
+
+<div><pre><code class="language-none">                -- Dadong Wan  
+                   University of Hawaii</code></pre></div></li>
+</ul>
+
+<hr>
+
+<p>Hyperbole is the first hyper-link system I&#39;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 &quot;across the world&quot; as easily as normal file 
references.</p>
+
+<div><pre><code class="language-none">                    -- Mark Eichin  
+                       Cygnus Support</code></pre></div>
+
+<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>
+
+<div><pre><code class="language-none">                    -- Jeff Fried  
+                       Informix</code></pre></div>
+
+<hr>
+
+<p>The Hyperbole system provides a nice interface to exploring corners of
+   Unix that I didn&#39;t know existed before.</p>
+
+<div><pre><code class="language-none">                    -- Craig Smith  
</code></pre></div>
+
+<h2 id="toc_8">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>
+
+</body>
+
+</html>
diff --git a/hsettings.el b/hsettings.el
index 719ed54..9444e61 100644
--- a/hsettings.el
+++ b/hsettings.el
@@ -127,8 +127,9 @@ down a windowful."
     ("Youtube" . "https://www.youtube.com/results?search_query=%s";))
   "*Alist of (web-service-name . url-with-%s-parameter) elements.
 The first character of each web-service-name must be unique.
-This is used in the Hyperbole Find/Web menu where the %s parameter is
-replaced with an interactively obtained search string."
+This custom option is used in the Hyperbole Find/Web menu where
+the %s in the url-with-%s-parameter is replaced with an interactively
+obtained search string."
   :type '(alist :key-type string :value-type string)
   :group 'hyperbole-commands)
 
@@ -138,10 +139,11 @@ Both arguments are optional and are prompted for when not 
given or when null.
 Uses `hyperbole-web-search-alist' to match each service to its search url.
 Uses `hyperbole-web-search-browser-function' and the `browse-url'
 package to display search results."
-  (interactive (list nil nil))
-  (while (or (not (stringp service-name)) (equal service-name ""))
-    (setq service-name (completing-read "Search service: " 
hyperbole-web-search-alist
-                                       nil t)))
+  (interactive)
+  (let ((completion-ignore-case t))
+    (while (or (not (stringp service-name)) (equal service-name ""))
+      (setq service-name (completing-read "Search service: " 
hyperbole-web-search-alist
+                                         nil t))))
   (while (or (not (stringp search-term)) (equal search-term ""))
     (setq search-term (read-string (format "Search %s for: " service-name))))
   (if (assoc service-name hyperbole-web-search-alist)
diff --git a/hui-menu.el b/hui-menu.el
index 259c960..5f96c2b 100644
--- a/hui-menu.el
+++ b/hui-menu.el
@@ -18,34 +18,134 @@
 
 (eval-and-compile (mapc #'require '(hpath hui-jmenu hyrolo-menu browse-url 
easymenu)))
 
+
 ;;; ************************************************************************
-;;; Public functions
+;;; Private functions
 ;;; ************************************************************************
 
-;; Add Hyperbole menu to menubar.
-(defun hyperbole-menubar-menu ()
-  "Add to or update the Hyperbole menu on the global menubar."
-  (cond ((boundp 'menubar-configuration)
-        (unless (memq 'Hyperbole menubar-configuration)
-          ;; Hyperbole may be included as part of the menubar but
-          ;; may be invisible due to a menubar configuration
-          ;; setting.  Make it visible here.
-          (if (fboundp 'customize-set-variable)
-              (customize-set-variable 'menubar-configuration
-                                      (cons 'Hyperbole menubar-configuration))
-            (setq menubar-configuration
-                  (cons 'Hyperbole menubar-configuration))))
-        (set-menubar-dirty-flag))
-       (t (let ((add-before (cond ((and (boundp 'infodock-menubar-type)
-                                        (eq infodock-menubar-type 
'menubar-infodock))
-                                   "Key")
-                                  ((global-key-binding [menu-bar Koutline])
-                                   "Koutline")
-                                  ((global-key-binding [menu-bar OO-Browser])
-                                   "OO-Browser"))))
-            (add-submenu nil (infodock-hyperbole-menu) add-before))))
-  ;; Force a menu-bar update.
-  (force-mode-line-update))
+(defmacro hui-menu-browser (title browser-option)
+  `(list
+    (list ,title
+         ["Chrome (Google)"
+          (setq ,browser-option #'browse-url-chrome)
+          :style radio
+          :selected (eq ,browser-option #'browse-url-chrome)]
+         ["Chromium"
+          (setq ,browser-option #'browse-url-chromium)
+          :style radio
+          :selected (eq ,browser-option #'browse-url-chromium)]
+         ["Default (System wide)"
+          (setq ,browser-option
+               (if (and (boundp 'browse-url-generic-program) (stringp 
browse-url-generic-program))
+                   #'browse-url-generic
+                 #'browse-url-default-browser))
+          :style radio
+          :selected (eq ,browser-option #'browse-url-default-browser)]
+         ["EWW (Emacs)"
+          (setq ,browser-option #'eww-browse-url)
+          :style radio
+          :selected (eq ,browser-option #'eww-browse-url)]
+         ;; Whatever browse-url-text-browser is set to, default is Lynx
+         ["Emacs Text Browser"
+          (setq ,browser-option #'browse-url-text-emacs)
+          :style radio
+          :selected (eq ,browser-option #'browse-url-text-emacs)]
+         ["Firefox"
+          (setq ,browser-option #'browse-url-firefox)
+          :style radio
+          :selected (eq ,browser-option #'browse-url-firefox)]
+         ["KDE"
+          (setq ,browser-option #'browse-url-kde)
+          :style radio
+          :selected (eq ,browser-option #'browse-url-kde)]
+         ["XTerm Text Browser"
+          (setq ,browser-option #'browse-url-text-xterm)
+          :style radio
+          :selected (eq ,browser-option #'browse-text-xterm)]
+         "----"
+         ["Toggle-URLs-in-New-Window"
+          (setq browse-url-new-window-flag (not browse-url-new-window-flag))
+          :style toggle
+          :selected browse-url-new-window-flag]
+         )))
+
+;; List explicit buttons in the current buffer for menu activation.
+(defun hui-menu-explicit-buttons (rest-of-menu)
+  (delq nil
+       (append
+        '(["Manual"   (id-info "(hyperbole)Explicit Buttons") t]
+          "----")
+        (let ((labels (ebut:list))
+              (cutoff))
+          (if labels
+              (progn
+                ;; Cutoff list if too long.
+                (if (setq cutoff (nthcdr (1- hui-menu-max-list-length) labels))
+                    (setcdr cutoff nil))
+                (delq nil
+                      (append
+                       '("----"
+                         ["Alphabetize-List"
+                          (setq hui-menu-order-explicit-buttons 
+                                (not hui-menu-order-explicit-buttons))
+                          :style toggle :selected 
hui-menu-order-explicit-buttons]
+                         "Activate:")
+                       (mapcar (lambda (label) (vector label `(ebut:act 
,label) t))
+                               (if hui-menu-order-explicit-buttons
+                                   (sort labels 'string-lessp)
+                                 labels))
+                       (if cutoff '(". . ."))
+                       '("----" "----"))))))
+        rest-of-menu)))
+
+(defun hui-menu-cutoff-list (lst)
+  "If list LST is longer than, `hui-menu-max-list-length', then cut it off 
there.
+Return t if cutoff, else nil."
+  (let ((cutoff))
+    (if (setq cutoff (nthcdr (1- hui-menu-max-list-length) lst))
+       (setcdr cutoff nil))
+    (if cutoff t)))
+
+;; List existing global buttons for menu activation.
+(defun hui-menu-global-buttons (rest-of-menu)
+  (delq nil
+       (append
+        '(["Manual" (id-info "(hyperbole)Global Buttons") t]
+          "----")
+        (let ((labels (gbut:label-list))
+              (cutoff))
+          (when labels
+            ;; Cutoff list if too long.
+            (setq cutoff (hui-menu-cutoff-list labels))
+            (delq nil (append
+                       '("----" "Activate:")
+                       (mapcar (lambda (label) (vector label `(gbut:act 
,label) t))
+                               (sort labels 'string-lessp))
+                       (if cutoff '(". . ."))
+                       '("----" "----")))))
+        rest-of-menu)))
+
+;; Dynamically compute submenus for Screen menu
+(defun hui-menu-screen (_ignored)
+  (list
+   ["Manual" (id-info "(hyperbole)HyControl") t]
+   "----"
+   ["Frames-Control"  hycontrol-frames t]
+   ["Windows-Control" hycontrol-windows t]
+   "----"
+   (hui-menu-of-buffers)
+   (hui-menu-of-frames)
+   (hui-menu-of-windows)))
+
+(defun hui-menu-web-search ()
+  ;; Pulldown menu
+  (let ((web-pulldown-menu
+        (mapcar (lambda (service)
+                  (vector service
+                          (list #'hyperbole-web-search service nil)
+                          t))
+                (mapcar 'car hyperbole-web-search-alist))))
+    web-pulldown-menu))
 
 ;;; ************************************************************************
 ;;; Public variables
@@ -65,54 +165,6 @@
             (expand-file-name "HY-ABOUT" hyperb:dir))
          t))
 
-(defconst hui-menu-url-options
-  '("Display-URLs-in"
-    "----"
-    "----"
-    ["Chrome (Google)"
-     (setq browse-url-browser-function #'browse-url-chrome)
-     :style radio
-     :selected (eq browse-url-browser-function #'browse-url-chrome)]
-    ["Chromium"
-     (setq browse-url-browser-function #'browse-url-chromium)
-     :style radio
-     :selected (eq browse-url-browser-function #'browse-url-chromium)]
-    ["Default (System wide)"
-     (setq browse-url-browser-function
-          (if (and (boundp 'browse-url-generic-program) (stringp 
browse-url-generic-program))
-              #'browse-url-generic
-            #'browse-url-default-browser))
-     :style radio
-     :selected (eq browse-url-browser-function #'browse-url-default-browser)]
-    ["EWW (Emacs)"
-     (setq browse-url-browser-function #'eww-browse-url)
-     :style radio
-     :selected (eq browse-url-browser-function #'eww-browse-url)]
-    ;; Whatever browse-url-text-browser is set to, default is Lynx
-    ["Emacs Text Browser"
-     (setq browse-url-browser-function #'browse-url-text-emacs)
-     :style radio
-     :selected (eq browse-url-browser-function #'browse-url-text-emacs)]
-    ["Firefox"
-     (setq browse-url-browser-function #'browse-url-firefox)
-     :style radio
-     :selected (eq browse-url-browser-function #'browse-url-firefox)]
-    ["KDE"
-     (setq browse-url-browser-function #'browse-url-kde)
-     :style radio
-     :selected (eq browse-url-browser-function #'browse-url-kde)]
-    ["XTerm Text Browser"
-     (setq browse-url-browser-function #'browse-url-text-xterm)
-     :style radio
-     :selected (eq browse-url-browser-function #'browse-text-xterm)]
-    "----"
-    ["Toggle-URLs-in-New-Window"
-     (setq browse-url-new-window-flag (not browse-url-new-window-flag))
-     :style toggle
-     :selected browse-url-new-window-flag]
-    )
-  "Menu of Hyperbole URL display options.")
-
 (defconst hui-menu-options
   (append '(["All-Hyperbole-Options" (customize-browse 'hyperbole) t]
             "----"
@@ -160,12 +212,14 @@
                      (mapcar (lambda (sym)
                                (vector
                                 (capitalize (symbol-name sym))
-                                `(setq hpath:display-where 'sym)
+                                `(setq hpath:display-where ',sym)
                                 :style 'radio
                                 :selected `(eq hpath:display-where ',sym)))
                              (mapcar 'car hpath:display-where-alist))))
          '("----")
-         (list hui-menu-url-options)
+         (hui-menu-browser "Display-URLs-in" browse-url-browser-function)
+         '("----")
+         (hui-menu-browser "Display-Web-Searches-in" 
hyperbole-web-search-browser-function)
          '("----")
          '(("Smart-Key-Press-at-Eol"
             "----"
@@ -200,13 +254,37 @@
            ))
   "Untitled menu of Hyperbole options.")
 
-;; Force reinitialization whenever this file is reloaded.
 (defvar infodock-hyperbole-menu nil)
 
 ;;; ************************************************************************
 ;;; Public functions
 ;;; ************************************************************************
 
+;; Add Hyperbole menu to menubar.
+(defun hyperbole-menubar-menu ()
+  "Add to or update the Hyperbole menu on the global menubar."
+  (cond ((boundp 'menubar-configuration)
+        (unless (memq 'Hyperbole menubar-configuration)
+          ;; Hyperbole may be included as part of the menubar but
+          ;; may be invisible due to a menubar configuration
+          ;; setting.  Make it visible here.
+          (if (fboundp 'customize-set-variable)
+              (customize-set-variable 'menubar-configuration
+                                      (cons 'Hyperbole menubar-configuration))
+            (setq menubar-configuration
+                  (cons 'Hyperbole menubar-configuration))))
+        (set-menubar-dirty-flag))
+       (t (let ((add-before (cond ((and (boundp 'infodock-menubar-type)
+                                        (eq infodock-menubar-type 
'menubar-infodock))
+                                   "Key")
+                                  ((global-key-binding [menu-bar Koutline])
+                                   "Koutline")
+                                  ((global-key-binding [menu-bar OO-Browser])
+                                   "OO-Browser"))))
+            (add-submenu nil (infodock-hyperbole-menu) add-before))))
+  ;; Force a menu-bar update.
+  (force-mode-line-update))
+
 (defun hyperbole-popup-menu ()
   "Popup the Hyperbole menubar menu."
   (interactive)
@@ -382,7 +460,7 @@
                   hui-menu-hywconfig)))))
 
 ;;; ************************************************************************
-;;; Private functions
+;;; Private variables
 ;;; ************************************************************************
 
 (defvar hui-menu-max-list-length 24
@@ -393,88 +471,6 @@
 Otherwise, explicit buttons are listed in their order of appearance within
 the current buffer.")
 
-;; List explicit buttons in the current buffer for menu activation.
-(defun hui-menu-explicit-buttons (rest-of-menu)
-  (delq nil
-       (append
-        '(["Manual"   (id-info "(hyperbole)Explicit Buttons") t]
-          "----")
-        (let ((labels (ebut:list))
-              (cutoff))
-          (if labels
-              (progn
-                ;; Cutoff list if too long.
-                (if (setq cutoff (nthcdr (1- hui-menu-max-list-length) labels))
-                    (setcdr cutoff nil))
-                (delq nil
-                      (append
-                       '("----"
-                         ["Alphabetize-List"
-                          (setq hui-menu-order-explicit-buttons 
-                                (not hui-menu-order-explicit-buttons))
-                          :style toggle :selected 
hui-menu-order-explicit-buttons]
-                         "Activate:")
-                       (mapcar (lambda (label) (vector label `(ebut:act 
,label) t))
-                               (if hui-menu-order-explicit-buttons
-                                   (sort labels 'string-lessp)
-                                 labels))
-                       (if cutoff '(". . ."))
-                       '("----" "----"))))))
-        rest-of-menu)))
-
-(defun hui-menu-cutoff-list (lst)
-  "If list LST is longer than, `hui-menu-max-list-length', then cut it off 
there.
-Return t if cutoff, else nil."
-  (let ((cutoff))
-    (if (setq cutoff (nthcdr (1- hui-menu-max-list-length) lst))
-       (setcdr cutoff nil))
-    (if cutoff t)))
-
-;; List existing global buttons for menu activation.
-(defun hui-menu-global-buttons (rest-of-menu)
-  (delq nil
-       (append
-        '(["Manual" (id-info "(hyperbole)Global Buttons") t]
-          "----")
-        (let ((labels (gbut:label-list))
-              (cutoff))
-          (when labels
-            ;; Cutoff list if too long.
-            (setq cutoff (hui-menu-cutoff-list labels))
-            (delq nil (append
-                       '("----" "Activate:")
-                       (mapcar (lambda (label) (vector label `(gbut:act 
,label) t))
-                               (sort labels 'string-lessp))
-                       (if cutoff '(". . ."))
-                       '("----" "----")))))
-        rest-of-menu)))
-
-;; Dynamically compute submenus for Screen menu
-(defun hui-menu-screen (_ignored)
-  (list
-   ["Manual" (id-info "(hyperbole)HyControl") t]
-   "----"
-   ["Frames-Control"  hycontrol-frames t]
-   ["Windows-Control" hycontrol-windows t]
-   "----"
-   (hui-menu-of-buffers)
-   (hui-menu-of-frames)
-   (hui-menu-of-windows)))
-
-(defun hui-menu-web-search ()
-  ;; Pulldown menu
-  (let ((web-pulldown-menu
-        (mapcar (lambda (service)
-                  (vector service
-                          (list #'hyperbole-web-search service nil)
-                          t))
-                (mapcar 'car hyperbole-web-search-alist))))
-    web-pulldown-menu))
-
-;;; ************************************************************************
-;;; Private variables
-;;; ************************************************************************
-
 (provide 'hui-menu)
 
 ;;; hui-menu.el ends here
diff --git a/hycontrol.el b/hycontrol.el
index 2c4ea00..d006612 100644
--- a/hycontrol.el
+++ b/hycontrol.el
@@ -194,7 +194,7 @@ set to 1.  If it is > `hycontrol-maximum-units', it is set 
to
                   ((eq e ?n) (set-frame-width nil (- (frame-width) arg)))
                   ((eq e ?o) (setq w (selected-window)) (other-window arg) (if 
(eq w (selected-window)) (other-window 1)))
                   ((eq e ?O) (setq w (selected-window)) (other-frame arg) (if 
(eq w (selected-window)) (other-frame 1)))
-                  ((eq e ?q) (throw 'done t))
+                  ((memq e (list ?q (aref (kbd "<escape>") 0))) (throw 'done 
t))
                   ((eq e ?s) (set-frame-height nil (- (frame-height) arg)))
                   ((eq e ?t) (throw 'done nil))
                   ((eq e ?u) (unbury-buffer))
@@ -279,7 +279,7 @@ set to 1.  If it is > `hycontrol-maximum-units', it is set 
to
                   ((eq e ?n) (shrink-window-horizontally arg))
                   ((eq e ?o) (setq w (selected-window)) (other-window arg) (if 
(eq w (selected-window)) (other-window 1)))
                   ((eq e ?O) (setq w (selected-window)) (other-frame arg) (if 
(eq w (selected-window)) (other-frame 1)))
-                  ((eq e ?q) (throw 'done t))
+                  ((memq e (list ?q (aref (kbd "<escape>") 0))) (throw 'done 
t))
                   ((eq e ?s) (shrink-window arg))
                   ((eq e ?t) (throw 'done nil))
                   ((eq e ?u) (unbury-buffer))
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index d04272f..fe99d7d 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -2640,12 +2640,17 @@ Below are each of the commands on the Find menu.
 @cindex remove lines
 @cindex save lines
 @cindex locate files
address@hidden grep files
 @cindex menu item, GrepFile
 @cindex menu item, LocateFiles
 @cindex menu item, MatchFileBuffers
 @cindex menu item, OccurHere
 @cindex menu item, RemoveLines
 @cindex menu item, SaveLines
address@hidden menu, Find/Web
address@hidden searching the web
address@hidden web search
address@hidden C-c /
 @vindex hypb:rgrep-command
 @vindex locate-command
 @itemize @bullet
@@ -2672,6 +2677,10 @@ OccurHere -        Show numbered line matches for regexp 
from this buffer.
 RemoveLines -      Following point, remove all lines that match regexp.
 @item
 SaveLines -        Following point, keep only lines that match regexp.
address@hidden
+Web/ -             Select a search engine and term and search with them.
+                   Hyperbole typically binds the key @bkbd{C-c /} for
+                   quick access to this menu.
 @end itemize
 
 @cindex menu, Global-Button
@@ -2743,8 +2752,9 @@ and then simply quit HyControl and go back to work.
 @kindex C-c \
 @kindex screen, C-c \
 @cindex menu item, WindowsControl
-Hyperbole typically binds the key @bkbd{C-c \\} to invoke HyControl
-window control; otherwise, the Screen/WindowsControl minibuffer menu
+Hyperbole binds the key @bkbd{C-c \\} for quick access to HyControl's
+window control menu, if it was not already bound prior to Hyperbole's
+initialization; otherwise, the Screen/WindowsControl minibuffer menu
 item, @bkbd{C-h h s w}, will do the same thing.
 
 @cindex submodes
@@ -2954,7 +2964,7 @@ Quit from HyControl mode and restore normal key bindings.
 @sp 1
 The rest of this section goes into some technicalities about HyControl
 settings.  You may ignore it if you are not familiar with Emacs
-variables and functions.
+variables and functions or with customized Emacs.
 
 @vindex hycontrol-screen-offset-alist
 @findex hycontrol-set-screen-offsets
@@ -5596,7 +5606,11 @@ Hyperbole's multi-level autonumbered hypertextual 
outliner.
 To try out HyControl, Hyperbole's interactive frame and window control
 system, use @bkbd{C-h h s w} for window control or @bkbd{C-h h s f}
 for frame control.  Pressing @bkbd{t} switches between window and
-frame control once in HyControl.
+frame control once in HyControl.  Hyperbole also binds @bkbd{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 most of HyControl's features is available at:
address@hidden://youtu.be/M3-aMh1ccJk}.
 
 @vindex Info-directory-list
 @vindex hyperb:dir
@@ -5935,6 +5949,16 @@ a C, Java or Javascript function, this marks the whole 
function.  This
 binding is made only if the key is not bound prior to loading
 Hyperbole.
 
address@hidden C-c /
address@hidden menu, Find/Web
address@hidden searching the web
address@hidden web search
+Search the Web: Displays a selectable list of web search engines, then
+prompts for a search term and performs the associated search.
+Hyperbole typically binds the key @bkbd{C-c /} for quick access to
+this list; otherwise, the Find/Web minibuffer menu item, @bkbd{C-h h f
+w}, will do the same thing.
+
 @cindex key binding, C-c .
 @kitem C-c .
 Delimited Thing Jump: Jumps between the start and end of a delimited



reply via email to

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