[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 "~/.emacs". 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 'package)
+(setq package-enable-at-startup nil) ;; Prevent double loading of libraries
+(package-initialize)
+(unless (package-installed-p 'hyperbole)
+ (package-refresh-contents)
+ (package-install 'hyperbole))
+(require 'hyperbole)</code></pre></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'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'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'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 most of HyControl'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 "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 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', 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'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'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'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 "man/"
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 '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 <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'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>
+
+<div><pre><code class="language-none"> -- Chris Nuzum
+ Co-founder, Traction Software, Inc.</code></pre></div>
+
+<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>
+
+<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'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'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>
+
+<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 "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>
+
+<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'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>
+
+<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'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
- [elpa] externals/hyperbole e28b8bf 02/20: * HY-ANNOUNCE (About):, (continued)
- [elpa] externals/hyperbole e28b8bf 02/20: * HY-ANNOUNCE (About):, Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 6e38a4b 17/20: Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole., Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole ab16a35 06/20: * Changes: Renamed this file from ChangeLog since Elpa release builds, Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole a2b8a90 04/20: * hyperbole.el: Updated the header fields to better match GNU standards for use, Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 7e1675e 05/20: * README.md: Added menu images and screenshots for easy access., Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 275331f 16/20: Updated package, release and elpa targets., Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 390a976 01/20: * hload-path.el (hyperb:dir): If the Emacs Package Manager has already added this, Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole df14034 20/20: Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole, Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 12651d8 19/20: Upcased mistyped HYPB_VERSION in release target., Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole ad7a089 13/20: * hys-org.el (defib org-mode, org-mode:help): Ensured trigger only in org-mode and simplified logic., Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 77a075f 07/20: * README.md.html - Added.,
Robert Weiner <=
- [elpa] externals/hyperbole 71b8e73 08/20: 2016-08-05 Bob Weiner <address@hidden>, Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 62547e0 12/20: * hmouse-tag.el (smart-asm-include-file, smart-c-include-file): Simplified conditionals a bit., Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 72833c9 15/20: Merge branch 'master' V6.0.2 of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole, Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole cc0493a 14/20: * hactypes.el (link-to-web-search): Added so Hyperbole global and explicit buttons can execute web searches., Robert Weiner, 2016/08/09
- [elpa] externals/hyperbole 1f27deb 09/20: * hibtypes.el (annot-bib): Added markdown-mode to the excluded list to avoid conflict with its links., Robert Weiner, 2016/08/09