[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hyperbole 71b8e73 08/20: 2016-08-05 Bob Weiner <address
From: |
Robert Weiner |
Subject: |
[elpa] externals/hyperbole 71b8e73 08/20: 2016-08-05 Bob Weiner <address@hidden> |
Date: |
Tue, 9 Aug 2016 19:17:07 +0000 (UTC) |
branch: externals/hyperbole
commit 71b8e7368f9b1c78473943d6fd271df938f03aa7
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>
2016-08-05 Bob Weiner <address@hidden>
* hib-social.el (social-reference): Disabled this implicit button type in
html and related modes so
in-file link references are not matched as social hash tags and made
the list of modes a variable,
hpath.el (hpath:to-html-anchor): Added.
(hpath:find): Rewrote to follow HTML in-file anchor references.
2016-08-04 Bob Weiner <address@hidden>
* hpath.el (hpath:html-suffix-regexp, hpath:html-anchor-id-pattern,
hpath:html-link-anchor-regexp): Added.
* README, README.md, README.md.html: Added a new testimonial.
* Makefile (elpa, ftp): Added these targets to install Hyperbole releases
for ELPA or ftp download.
Changed so release target depends on package target so you can build a
package prior to a release.
* hpath.el (hpath:remote-available-p): Fixed tramp package check prior to
loading by adding a test for
tramp-autoload-file-name-handler.
* README.md.html: Fixed bookmarks/in-file link ids.
2016-08-03 Bob Weiner <address@hidden>
* hsettings.el (hyperbole-web-search-alist): Made any edit update all
Hyperbole menus with the new value.
DEMO (Hyperbole Menus): Added description and exercise using the new
Find/Web menu.
hui-mini.el (Cust/Web-Search): Added to allow setting of
hyperbole-web-search-browser-function.
hui-menu.el (infodock-hyperbole-menu): Added optional rebuild-flag to
force rebuilding of the
Hyperbole menubar menu.
* man/hyperbole.texi (HyControl): Documented ESC as a way to quit from
HyControl.
---
Changes | 32 +++++
DEMO | 12 +-
HY-ANNOUNCE | 2 +-
INSTALL | 2 +-
Makefile | 32 ++++-
README | 21 +++-
README.md | 22 +++-
README.md.html | 100 +++++++++-------
hib-social.el | 5 +-
hpath.el | 96 +++++++++------
hsettings.el | 53 +++++----
hsys-w3.el | 5 +-
hui-menu.el | 328 ++++++++++++++++++++++++++--------------------------
hui-mini.el | 26 ++++-
man/hyperbole.html | 111 +++++++++++++-----
man/hyperbole.info | Bin 429310 -> 431672 bytes
man/hyperbole.pdf | Bin 791819 -> 793823 bytes
man/hyperbole.texi | 90 ++++++++------
18 files changed, 597 insertions(+), 340 deletions(-)
diff --git a/Changes b/Changes
index 963b944..b02e77c 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,37 @@
-- Almost all changes listed herein are new as of 2016. --
+2016-08-05 Bob Weiner <address@hidden>
+
+* hib-social.el (social-reference): Disabled this implicit button type in html
and related modes so
+ in-file link references are not matched as social hash tags and made the
list of modes a variable,
+
+ hpath.el (hpath:to-html-anchor): Added.
+ (hpath:find): Rewrote to follow HTML in-file anchor references.
+
+2016-08-04 Bob Weiner <address@hidden>
+
+* hpath.el (hpath:html-suffix-regexp, hpath:html-anchor-id-pattern,
hpath:html-link-anchor-regexp): Added.
+
+* README, README.md, README.md.html: Added a new testimonial.
+
+* Makefile (elpa, ftp): Added these targets to install Hyperbole releases for
ELPA or ftp download.
+ Changed so release target depends on package target so you can build a
package prior to a release.
+
+* hpath.el (hpath:remote-available-p): Fixed tramp package check prior to
loading by adding a test for
+ tramp-autoload-file-name-handler.
+
+* README.md.html: Fixed bookmarks/in-file link ids.
+
+2016-08-03 Bob Weiner <address@hidden>
+
+* hsettings.el (hyperbole-web-search-alist): Made any edit update all
Hyperbole menus with the new value.
+ DEMO (Hyperbole Menus): Added description and exercise using the new
Find/Web menu.
+ hui-mini.el (Cust/Web-Search): Added to allow setting of
hyperbole-web-search-browser-function.
+ hui-menu.el (infodock-hyperbole-menu): Added optional rebuild-flag to force
rebuilding of the
+ Hyperbole menubar menu.
+
+* man/hyperbole.texi (HyControl): Documented ESC as a way to quit from
HyControl.
+
2016-08-02 Bob Weiner <address@hidden>
* README.md.html - Added.
diff --git a/DEMO b/DEMO
index a3771d6..a679294 100644
--- a/DEMO
+++ b/DEMO
@@ -104,6 +104,16 @@ Let's try a menu item that displays the Hyperbole Glossary
of terms. Use
glossary. {C-h h d RET} would simply exit the menu and {C-h h d C-t} would
redisplay the top Hyperbole menu.
+What if we want to do a web search for GNU Hyperbole? Then we use the
+Find/Web menu, typically bound to {C-c /} or if not, then use {C-h h f w}.
+Then type {g} for Google and enter "GNU Hyperbole", including the quote marks
+so that it is searched for as a phrase. Your standard web browser will be
+used to return the search results.
+
+You can change which browser is used with {C-h h c w}, the Cust/Web-Search
+menu. Advanced users can change the search engines listed by editing the
+option, hyperbole-web-search-alist.
+
** Help Buffers
Since the Smart Keys do so many things, it is helpful to see what they will
@@ -153,7 +163,7 @@ 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. A long video demonstrating most of
-HyControl's features is available at: https://youtu.be/M3-aMh1ccJk.
+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
diff --git a/HY-ANNOUNCE b/HY-ANNOUNCE
index 17e857b..ef6baa4 100644
--- a/HY-ANNOUNCE
+++ b/HY-ANNOUNCE
@@ -159,7 +159,7 @@ control. {t} switches between window and frame control
once in one of
them. Hyperbole also binds {C-c \} for quick access to HyControl's
window control menu if it was not already bound prior to Hyperbole's
initialization. A long video demonstrating most of HyControl's features
-is available at: https://youtu.be/M3-aMh1ccJk.
+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 69680b2..3d316c9 100644
--- a/INSTALL
+++ b/INSTALL
@@ -82,7 +82,7 @@ control. {t} switches between window and frame control once
in one of
them. Hyperbole also binds {C-c \} for quick access to HyControl's
window control menu if it was not already bound prior to Hyperbole's
initialization. A long video demonstrating most of HyControl's
-features is available at: https://youtu.be/M3-aMh1ccJk.
+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/Makefile b/Makefile
index bcb13f4..fb97328 100644
--- a/Makefile
+++ b/Makefile
@@ -33,8 +33,10 @@
# make help
#
# For OO-Browser maintainers:
-# To assemble the Hyperbole Emacs package for release:
+# To assemble a Hyperbole Emacs package for testing:
# make pkg
+# To release a Hyperbole Emacs package to ELPA and ftp.gnu.org:
+# make release
#
# The Hyperbole Manual is included in the package in four forms:
#
@@ -97,17 +99,20 @@ html_dir = $(id_dir)/id-html
# Shell used to process this Makefile. Bourne shell syntax is required.
SHELL = /bin/sh
-# UNIX commands you may want to change for your particular system.
+# Shell commands you may want to change for your particular system.
CP = \cp -p
ETAGS = \etags
+GNUFTP = \gnupload --to ftp.gnu.org:hyperbole
+GPG = \gpg
+GZIP = \gzip -c
INSTALL = \install -m 644 -c
MKDIR = \mkdir -p
MAKE = \make
RM = \rm -f
TAR = \tar
-GPG = \gpg
ZIP = \zip -qry
+
# Directory in which to create new package distributions of Hyperbole.
pkg_dir = /tmp
pkg_hyperbole = $(pkg_dir)/hyperbole-$(HYPB_VERSION)
@@ -250,15 +255,30 @@ $(man_dir)/hyperbole.pdf: $(man_dir)/hyperbole.texi
$(man_dir)/version.texi $(ma
# Generate a Hyperbole package suitable for distribution via the Emacs package
manager.
pkg: package
-package: release $(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.sig
+package: doc kotl/kotl-loaddefs.el $(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.sig
-# Generate a Hyperbole release suitable for distribution via GNU ELPA.
+# Generate and distribute a Hyperbole release to GNU ELPA and ftp.gnu.org.
# One step in this is to generate an autoloads file for the Koutliner,
kotl/kotl-loaddefs.el.
-release: doc kotl/kotl-loaddefs.el
+release: package $(pkg_dir)/hyperbole-$(hypb_version).tar.gz elpa ftp
+
+# Once the release version number is updated in hyperbole.el and the release
is pushed to
+# git, ELPA will automatically check and build its Hyperbole archive, allowing
users to
+# update their packages of Hyperbole. ELPA does this twice a day now.
+elpa: package
+ git tag -s hyperbole-$(HYPB_VERSION) && git push
+
+# Send compressed tarball for uploading to GNU ftp site; this must be done
from the directory
+# containing the tarball to upload.
+ftp: package
+ cd $(pkg_dir) && $(GNUFTP) hyperbole-$(HYPB_VERSION).tar.gz
kotl/kotl-loaddefs.el: $(EL_KOTL)
$(EMACS) $(BATCHFLAGS) -eval '(progn (let ((generated-autoload-file
(expand-file-name "kotl/kotl-loaddefs.el"))) (update-directory-autoloads
(expand-file-name "kotl/"))))' && sed -i '3 i ;; Copyright (C) 2016 Free
Software Foundation, Inc.\n;;' $@ && $(RM) kotl/kotl-loaddefs.el~
+# Used for ftp.gnu.org tarball distributions.
+$(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.gz:
+ cd $(pkg_dir) && $(GZIP) hyperbole-$(HYPB_VERSION).tar >
hyperbole-$(HYPB_VERSION).tar.gz
+
$(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.sig:
$(pkg_dir)/hyperbole-$(HYPB_VERSION).tar
cd $(pkg_dir) && $(GPG) -ba -o hyperbole-$(HYPB_VERSION).tar.sig
hyperbole-$(HYPB_VERSION).tar
@ echo; echo "Hyperbole package built successfully:"
diff --git a/README b/README
index 240af9d..d8d1a31 100644
--- a/README
+++ b/README
@@ -36,7 +36,7 @@ installing it.
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:
+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.
@@ -100,6 +100,25 @@ Hyperbole key bindings (Smart Keys).
-------
+ One of the nicest things about Hyperbole is that it's available
+ everywhere. Org-mode is a mode and its features are only available in
+ *.org files. For instance if you dropped into `eshell' or `ansi-term' and
+ did `ls', you can move point to any of the directory's contents, do M-RET
+ (or Shift-Button2) and jump to that file. And that's just one example.
+ Note that this means that all Hyperbole functionality is available in
+ *.org files as well. To me, except for the Hyperbole outliner, that means
+ complementary not conflicting. It's Hyperbole *and* org-mode, not
+ Hyperbole vs. org-mode.
+
+ Additionally, off the bat, I found it very well documented and for me
+ that's a proxy for the quality of a package. The maintainers are quite
+ responsive. There's plenty more functionality that I haven't uncovered yet
+ but due to the ease of installation and the quality of the documentation,
+ digging into it is actually fun.
+
+ -- Aditya Siram
+-------
+
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
diff --git a/README.md b/README.md
index 60739b4..19076b2 100644
--- a/README.md
+++ b/README.md
@@ -111,7 +111,7 @@ control. {t} switches between window and frame control
once in one of
them. Hyperbole also binds {C-c \} for quick access to HyControl's
window control menu if it was not already bound prior to Hyperbole's
initialization. A long video demonstrating most of HyControl's
-features is available at: https://youtu.be/M3-aMh1ccJk.
+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,
@@ -346,6 +346,26 @@ Keys).
-------
+ One of the nicest things about Hyperbole is that it's available
+ everywhere. Org-mode is a mode and its features are only available in
+ *.org files. For instance if you dropped into `eshell' or `ansi-term' and
+ did `ls', you can move point to any of the directory's contents, do M-RET
+ (or Shift-Button2) and jump to that file. And that's just one example.
+ Note that this means that all Hyperbole functionality is available in
+ *.org files as well. To me, except for the Hyperbole outliner, that means
+ complementary not conflicting. It's Hyperbole *and* org-mode, not
+ Hyperbole vs. org-mode.
+
+ Additionally, off the bat, I found it very well documented and for me
+ that's a proxy for the quality of a package. The maintainers are quite
+ responsive. There's plenty more functionality that I haven't uncovered yet
+ but due to the ease of installation and the quality of the documentation,
+ digging into it is actually fun.
+
+ -- Aditya Siram
+
+-------
+
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
diff --git a/README.md.html b/README.md.html
index 8473eb8..65f8e48 100644
--- a/README.md.html
+++ b/README.md.html
@@ -462,7 +462,7 @@ pre[class*="language-"] {
<!-- END doctoc generated TOC -->
-<h2 id="toc_1">Summary</h2>
+<h2 id="summary">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
@@ -487,7 +487,7 @@ 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>
+<h2 id="installation">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
@@ -507,13 +507,13 @@ File</a>.</p>
<p>Below are the lines to add:</p>
-<div><pre><code class="language-none">(require 'package)
+<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)
+(unless (package-installed-p 'hyperbole)
(package-refresh-contents)
- (package-install 'hyperbole))
-(require 'hyperbole)</code></pre></div>
+ (package-install 'hyperbole))
+(require 'hyperbole)</code></pre></div>
<hr>
@@ -522,7 +522,7 @@ 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>
+<h2 id="invocation">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
@@ -537,7 +537,7 @@ quick keyboard-based selection.</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}
+ 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
@@ -549,17 +549,17 @@ 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>
+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
+<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>
+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,
@@ -578,7 +578,7 @@ 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>
+<h2 id="details">Details</h2>
<p>Hyperbole consists of five parts:</p>
@@ -597,7 +597,7 @@ wherever the Hyperbole package directory is on your system;
often this is:
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
+<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
@@ -615,7 +615,7 @@ wherever the Hyperbole package directory is on your system;
often this is:
<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
+ 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>
@@ -642,7 +642,7 @@ to a file or executing a shell command.</p>
<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
+ 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
@@ -664,7 +664,7 @@ 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>
+<p>Some of Hyperbole's most important features include:</p>
<ul>
<li><p>Buttons may link to information or may execute commands, such as
@@ -719,7 +719,7 @@ 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>
+<h2 id="files">Files</h2>
<p>See the <a href="HY-ABOUT">HY-ABOUT</a> file for a description and overview
of Hyperbole.</p>
@@ -737,7 +737,7 @@ installing it.</p>
<p>Various forms of the Hyperbole are below the "man/"
subdirectory.</p>
-<h2 id="toc_6">Programmer Quick Reference</h2>
+<h2 id="programmer-quick-reference">Programmer Quick Reference</h2>
<p><a href="MANIFEST">MANIFEST</a> summarizes most of the files in the
distribution.</p>
@@ -749,11 +749,11 @@ 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>
+<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
@@ -763,11 +763,11 @@ 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
+<p>See the <a href="man/hyperbole.html#Questions-and-Answers">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>
+<h2 id="user-quotes">User Quotes</h2>
<p>*** MAN I love Hyperbole!!! Wow! ***</p>
@@ -783,9 +783,29 @@ Keys).</p>
<hr>
-<p>For me, Emacs isn't Emacs without Hyperbole. I have depended on
Hyperbole
+<p>One of the nicest things about Hyperbole is that it's available
+ everywhere. Org-mode is a mode and its features are only available in
+ *.org files. For instance if you dropped into `eshell' or `ansi-term' and
+ did `ls', you can move point to any of the directory's contents, do M-RET
+ (or Shift-Button2) and jump to that file. And that's just one example.
+ Note that this means that all Hyperbole functionality is available in
+ *.org files as well. To me, except for the Hyperbole outliner, that means
+ complementary not conflicting. It's Hyperbole *and* org-mode, not
+ Hyperbole vs. org-mode.
+
+<p>Additionally, off the bat, I found it very well documented and for me
+ that's a proxy for the quality of a package. The maintainers are quite
+ responsive. There's plenty more functionality that I haven't uncovered yet
+ but due to the ease of installation and the quality of the documentation,
+ digging into it is actually fun.</p>
+
+<div><pre><code class="language-none"> -- Aditya Siram
+</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
+ 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
@@ -801,13 +821,13 @@ Keys).</p>
<hr>
-<p>I've found Hyperbole (in conjunction with XEmacs) to be very useful
+<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
+ 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
@@ -831,7 +851,7 @@ Keys).</p>
<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
+<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
@@ -840,7 +860,7 @@ Keys).</p>
<hr>
-<p>I've been a grateful Hyperbole user for a few years now.
Hyperbole's
+<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
@@ -849,8 +869,8 @@ Keys).</p>
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
+ 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>
@@ -898,7 +918,7 @@ emacs-command invocations, etc.</p>
<hr>
-<p>Hyperbole is the first hyper-link system I've run across that is
+<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
@@ -921,11 +941,11 @@ emacs-command invocations, etc.</p>
<hr>
<p>The Hyperbole system provides a nice interface to exploring corners of
- Unix that I didn't know existed before.</p>
+ 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>
+<h2 id="why-was-hyperbole-developed">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
diff --git a/hib-social.el b/hib-social.el
index acd0a9e..55d8fe3 100644
--- a/hib-social.el
+++ b/hib-social.el
@@ -64,6 +64,9 @@
"Regular expression that matches a social media hashtag or username
reference.
See `ibtypes::social-reference' for format details.")
+(defvar hibtypes-social-inhibit-modes '(html-mode web-mode xml-mode sgml-mode
texinfo-mode para-mode)
+ "*List of major modes in which to inhibit any possible social media tag
matches.")
+
;;; ************************************************************************
;;; Public Button Types
;;; ************************************************************************
@@ -78,7 +81,7 @@ The first part of the label for a button of this type is the
social
media service name. The service name defaults to the value of
`hibtypes-social-default-service' (default value of \"twitter\")
when not given, so #hashtag would be the same as twitter#hashtag."
- (when (and (not (memq major-mode '(texinfo-mode para-mode)))
+ (when (and (not (memq major-mode hibtypes-social-inhibit-modes))
(save-excursion
(if (looking-at "address@hidden:alnum:]]")
(skip-chars-backward "address@hidden:alnum:]"))
diff --git a/hpath.el b/hpath.el
index edf7119..ea3a41b 100644
--- a/hpath.el
+++ b/hpath.el
@@ -278,6 +278,30 @@ See the documentation for `hpath:url-regexp' for match
groupings to
use with string-match.")
;;; ************************************************************************
+;;; Private variables
+;;; ************************************************************************
+
+(defconst hpath:html-suffix-regexp "\\.[a-z]*htm[a-z0-9]*"
+ "Regexp that matches to any common html file suffix.")
+
+(defconst hpath:html-anchor-id-pattern "\\(id\\|name\\)=['\"]%s['\"]?"
+ "Regexp matching an html anchor id definition and containing a %s for
replacement of a specific anchor id.")
+
+(defconst hpath:html-link-anchor-regexp (concat "\\(" hpath:html-file-suffix
"\\)\\(#\\)\\([^\]\[#^{}<>\"\\ \n\t\f\r]*\\)")
+ "Regexp that matches an html filename followed by a hash (#) and an optional
in-file anchor name.")
+
+(defvar hpath:prefix-regexp "\\`[-!&][ ]*"
+ "Regexp matching command characters which may precede a pathname.
+These are used to indicate how to display or execute the pathname.
+ - means evaluate it as Emacs Lisp;
+ ! means execute it as a shell script
+ & means run it under the current window system.")
+
+(defvar hpath:remote-regexp
+ "\\`/[^/:]+:\\|\\`ftp[:.]\\|\\`www\\.\\|\\`https?:"
+ "Regexp matching remote pathnames and urls which invoke remote file
handlers.")
+
+;;; ************************************************************************
;;; Public functions
;;; ************************************************************************
@@ -534,9 +558,8 @@ DISPLAY-WHERE (a symbol) or if that is nil, the value of
Returns non-nil iff file is displayed within a buffer (not with an external
program)."
(interactive "FFind file: ")
- (let (modifier
- loc
- dir)
+ (let ((case-fold-search t)
+ modifier loc dir anchor hash path)
(if (string-match hpath:prefix-regexp filename)
(setq modifier (aref filename 0)
filename (substring filename (match-end 0))))
@@ -545,24 +568,31 @@ program)."
dir (file-name-directory
;; Loc may be a buffer without a file
(if (stringp loc) loc default-directory))
- filename (hpath:absolute-to filename dir))
- (let ((remote-filename (hpath:remote-p filename)))
+ filename (hpath:absolute-to filename dir)
+ path (if (string-match hpath:html-link-anchor-regexp filename)
+ (progn (setq hash t
+ anchor (match-string 3 filename))
+ (substring filename 0 (match-end 1)))
+ filename))
+ (let ((remote-filename (hpath:remote-p path)))
(or modifier remote-filename
- (file-exists-p filename)
+ (file-exists-p path)
(error "(hpath:find): \"%s\" does not exist"
(file-relative-name filename)))
(or modifier remote-filename
- (file-readable-p filename)
+ (file-readable-p path)
(error "(hpath:find): \"%s\" is not readable"
(file-relative-name filename)))
;; If filename is a remote file (not a directory, we have to copy it to
;; a temporary local file and then display that.
- (if (and remote-filename (not (file-directory-p remote-filename)))
- (copy-file remote-filename
- (setq filename
- (concat hpath:tmp-prefix
- (file-name-nondirectory remote-filename)))
- t t)))
+ (when (and remote-filename (not (file-directory-p remote-filename)))
+ (copy-file remote-filename
+ (setq path (concat hpath:tmp-prefix
+ (file-name-nondirectory remote-filename)))
+ t t)
+ (setq filename (cond (anchor (concat remote-filename "#" anchor))
+ (hash (concat remote-filename "#"))
+ (t path)))))
(cond (modifier (cond ((eq modifier ?!)
(hact 'exec-shell-cmd filename))
((eq modifier ?&)
@@ -570,7 +600,7 @@ program)."
((eq modifier ?-)
(load filename)))
nil)
- (t (let ((display-executables (hpath:find-program filename))
+ (t (let ((display-executables (hpath:find-program path))
executable)
(cond ((stringp display-executables)
(hact 'exec-window-cmd
@@ -589,7 +619,7 @@ program)."
filename))
(error "(hpath:find): No available executable from: %s"
display-executables)))
- (t (setq filename (hpath:validate filename))
+ (t (setq path (hpath:validate path))
(if (null display-where)
(setq display-where hpath:display-where))
(funcall
@@ -597,9 +627,23 @@ program)."
hpath:display-where-alist)
(assq 'other-window
hpath:display-where-alist))))
- filename)
+ path)
+ (if (or hash anchor) (hpath:to-html-anchor hash anchor))
t)))))))
+(defun hpath:to-html-anchor (hash anchor)
+ "Move point to the definition of ANCHOR if found or if only HASH is non-nil,
move to the beginning of the buffer."
+ (cond ((and (stringp anchor) (not (string-empty-p anchor)))
+ (let ((point (point)))
+ (goto-char (point-min))
+ (if (re-search-forward (format hpath:html-anchor-id-pattern
(regexp-quote anchor)) nil t)
+ (progn (forward-line 0)
+ (recenter 0))
+ (goto-char point)
+ (error "(hpath:to-html-anchor): Anchor `%s' not found in the
visible buffer portion"
+ anchor))))
+ (hash (goto-char (point-min)))))
+
(defun hpath:find-executable (executable-list)
"Return the first executable string from EXECUTABLE-LIST found within
`exec-path'."
(catch 'found
@@ -712,7 +756,7 @@ nonexistent local paths are allowed."
(string-match "\\`#[^\'\"<>#]+\\'" path))
(setq rtn-path (concat "file://" buffer-file-name rtn-path)
path buffer-file-name))
- ((string-match "\\`[^#]+\\(#[^#]+\\)\\'" path)
+ ((string-match "\\`[^#]+\\(#[^#]*\\)\\'" path)
;; file and # reference
(setq path (substring path 0 (match-beginning 1)))
(if (memq (aref path 0) '(?/ ?~))
@@ -1113,7 +1157,8 @@ in which case, it is loaded here."
((featurep 'efs) 'efs)
((featurep 'ange-ftp) 'ange-ftp)
((boundp 'file-name-handler-alist) ; GNU Emacs
- (cond ((rassq 'tramp-file-name-handler file-name-handler-alist)
+ (cond ((or (rassq 'tramp-file-name-handler file-name-handler-alist)
+ (rassq 'tramp-autoload-file-name-handler
file-name-handler-alist))
(require 'tramp))
((rassq 'efs-file-handler-function file-name-handler-alist)
(require 'efs))
@@ -1261,21 +1306,6 @@ If PATH is modified, returns PATH, otherwise returns
nil."
(if (equal new-path path) nil new-path))))
-;;; ************************************************************************
-;;; Private variables
-;;; ************************************************************************
-
-(defvar hpath:prefix-regexp "\\`[-!&][ ]*"
- "Regexp matching command characters which may precede a pathname.
-These are used to indicate how to display or execute the pathname.
- - means evaluate it as Emacs Lisp;
- ! means execute it as a shell script
- & means run it under the current window system.")
-
-(defvar hpath:remote-regexp
- "\\`/[^/:]+:\\|\\`ftp[:.]\\|\\`www\\.\\|\\`https?:"
- "Regexp matching remote pathnames and urls which invoke remote file
handlers.")
-
(provide 'hpath)
;;; hpath.el ends here
diff --git a/hsettings.el b/hsettings.el
index 9444e61..e5bfa79 100644
--- a/hsettings.el
+++ b/hsettings.el
@@ -102,6 +102,33 @@ down a windowful."
;; Web search setttings for Hyperbole Find/Web menu.
(require 'browse-url)
+(defun hyperbole-update-menus ()
+ "Rebuild all Hyperbole menus with any updated settings."
+ (hyperbole-menubar-menu)
+ (hyperbole-minibuffer-menu))
+
+(defun hyperbole-web-search (&optional service-name search-term)
+ "Search web SERVICE-NAME for SEARCH-TERM.
+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)
+ (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)
+ (let ((browse-url-browser-function
+ hyperbole-web-search-browser-function))
+ (browse-url
+ (format (cdr (assoc service-name hyperbole-web-search-alist))
+ search-term)))
+ (user-error "(Hyperbole): Invalid web search service `%s' or search term
`%s'"
+ service-name search-term)))
+
(defcustom hyperbole-web-search-browser-function browse-url-browser-function
"*Function of one url argument called by any Hyperbole Find/Web search."
:type 'boolean
@@ -130,31 +157,13 @@ The first character of each web-service-name must be
unique.
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."
+ :initialize 'custom-initialize-default
+ :set (lambda (_option value)
+ (setq hyperbole-web-search-alist value)
+ (hyperbole-update-menus))
:type '(alist :key-type string :value-type string)
:group 'hyperbole-commands)
-(defun hyperbole-web-search (&optional service-name search-term)
- "Search web SERVICE-NAME for SEARCH-TERM.
-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)
- (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)
- (let ((browse-url-browser-function
- hyperbole-web-search-browser-function))
- (browse-url
- (format (cdr (assoc service-name hyperbole-web-search-alist))
- search-term)))
- (user-error "(Hyperbole): Invalid web search service `%s' or search term
`%s'"
- service-name search-term)))
-
;;; ************************************************************************
;;; GNU EMACS AND XEMACS CONFIGURATION
;;; ************************************************************************
diff --git a/hsys-w3.el b/hsys-w3.el
index 26dedc9..d67320a 100644
--- a/hsys-w3.el
+++ b/hsys-w3.el
@@ -51,9 +51,8 @@ Valid values of this variable include
`browse-url-default-browser' and
(defact www-url (url)
"Follow a link given by URL.
-The variable, `browse-url-browser-function,' customizes the url browser that
-is used.
-Valid values of this variable include `browse-url-default-browser' and
+The variable, `browse-url-browser-function', customizes the url browser that
+is used. Valid values of this variable include `browse-url-default-browser'
and
`browse-url-generic'."
(interactive "sURL to follow: ")
(or (stringp url)
diff --git a/hui-menu.el b/hui-menu.el
index 5f96c2b..930e4b8 100644
--- a/hui-menu.el
+++ b/hui-menu.el
@@ -281,7 +281,7 @@ Return t if cutoff, else nil."
"Koutline")
((global-key-binding [menu-bar OO-Browser])
"OO-Browser"))))
- (add-submenu nil (infodock-hyperbole-menu) add-before))))
+ (add-submenu nil (infodock-hyperbole-menu t) add-before))))
;; Force a menu-bar update.
(force-mode-line-update))
@@ -292,172 +292,174 @@ Return t if cutoff, else nil."
;;; Don't change this name; doing so will break the way InfoDock
;;; initializes the Hyperbole menu.
-(defun infodock-hyperbole-menu ()
- "Hyperbole menu for the global InfoDock menubar"
- (or infodock-hyperbole-menu
- (setq infodock-hyperbole-menu
- (delq nil
- (list
- (if (featurep 'xemacs) "%_Hyperbole" "Hyperbole")
- :config 'Hyperbole
- hui-menu-about
- ["Demonstration" (hypb:display-file-with-logo
- (expand-file-name "DEMO" hyperb:dir)) t]
- ;; Comment InfoDock manual reference out until
- ;; InfoDock is modernized for Emacs 25.
- ;; (if (and (boundp 'infodock-version) infodock-version)
- ;; ["Manual" (id-info "(infodock)Hyperbole Menu") t]
- ;; ["Manual" (id-info "(hyperbole)Top") t])
+(defun infodock-hyperbole-menu (&optional rebuild-flag)
+ "Return the Hyperbole menu for the global InfoDock menubar.
+Uses any non-nil existing value of the menu unless optional
+REBUILD-FLAG is non-nil, in which case the menu is rebuilt."
+ (when (or rebuild-flag (null infodock-hyperbole-menu))
+ (setq infodock-hyperbole-menu
+ (delq nil
+ (list
+ (if (featurep 'xemacs) "%_Hyperbole" "Hyperbole")
+ :config 'Hyperbole
+ hui-menu-about
+ ["Demonstration" (hypb:display-file-with-logo
+ (expand-file-name "DEMO" hyperb:dir)) t]
+ ;; Comment InfoDock manual reference out until
+ ;; InfoDock is modernized for Emacs 25.
+ ;; (if (and (boundp 'infodock-version) infodock-version)
+ ;; ["Manual" (id-info "(infodock)Hyperbole Menu") t]
+ ;; ["Manual" (id-info "(hyperbole)Top") t])
+ ["Manual" (id-info "(hyperbole)Top") t]
+ ["What-is-New?" (hypb:display-file-with-logo
+ (expand-file-name "HY-NEWS" hyperb:dir)) t]
+ "----"
+ ["Remove-This-Menu"
+ (progn
+ ;; Delete Hyperbole menu from all menubars.
+ (hui-menu-remove Hyperbole)
+ ;;
+ ;; Remove Hyperbole button comment from future
+ ;; outgoing mail.
+ (if (boundp 'smail:comment) (setq smail:comment nil)))
+ t]
+ "----"
+ ["Activate-Button-at-Point" hui:hbut-current-act
+ (hbut:is-p (hbut:at-p))]
+ ["Back-to-Prior-Location" (hhist:remove current-prefix-arg)
+ (and (boundp '*hhist*) *hhist*)]
+ '("Button-File"
+ ["Manual" (id-info "(hyperbole)Button Files") t]
+ "----"
+ ["Edit-Per-Directory-File" (find-file hbmap:filename) t]
+ ["Edit-Personal-File" (find-file
+ (expand-file-name
+ hbmap:filename hbmap:dir-user)) t]
+ )
+ (cons "Customize" hui-menu-options)
+ '("Documentation"
["Manual" (id-info "(hyperbole)Top") t]
- ["What-is-New?" (hypb:display-file-with-logo
- (expand-file-name "HY-NEWS" hyperb:dir))
t]
"----"
- ["Remove-This-Menu"
- (progn
- ;; Delete Hyperbole menu from all menubars.
- (hui-menu-remove Hyperbole)
- ;;
- ;; Remove Hyperbole button comment from future
- ;; outgoing mail.
- (if (boundp 'smail:comment) (setq smail:comment nil)))
- t]
+ ["Demonstration" (hypb:display-file-with-logo
+ (expand-file-name "DEMO" hyperb:dir)) t]
+ ["Glossary" (id-info "(hyperbole)Glossary") t]
+ ["Manifest" (find-file-read-only
+ (expand-file-name "MANIFEST" hyperb:dir)) t]
+ ["Smart-Key-Summary" (id-browse-file (hypb:hkey-help-file))
t]
+ ("Types"
+ ["Action-Types-Manual"
+ (id-info "(hyperbole)Action Types") t]
+ ["Implicit-Button-Types-Manual"
+ (id-info "(hyperbole)Implicit Buttons") t]
+ "----"
+ ["Show-Action-Types"
+ (hui:htype-help-current-window 'actypes) t]
+ ["Show-Implicit-Button-Types"
+ (hui:htype-help-current-window 'ibtypes 'no-sort) t]
+ ))
+ '("Explicit-Button"
+ :filter hui-menu-explicit-buttons
+ ["Activate" hui:hbut-act t]
+ ["Create" hui:ebut-create t]
+ ["Delete" hui:ebut-delete t]
+ ["Edit" hui:ebut-modify t]
+ ("Help"
+ ["Manual" (id-info "(hyperbole)Location") t]
+ "----"
+ ["Buffer-Buttons" (hui:hbut-report -1) t]
+ ["Current-Button" (hui:hbut-report) t]
+ ["Ordered-Buttons" (hui:hbut-report 1) t]
+ )
+ ["Modify" hui:ebut-modify t]
+ ["Rename" hui:ebut-rename t]
+ ["Search" hui:ebut-search t]
+ ["Types"
+ (hui:htype-help-current-window 'actypes) t]
+ )
+ (nconc
+ '("Find"
+ ["Manual" (id-info-item "menu, Find") t]
+ "----"
+ ;; Show numbered line matches in all specified files.
+ ["Grep-Files" hypb:rgrep t]
+ ;; Show numbered line matches for regexp in all file-based
buffers.
+ ["Locate-Files" locate t]
+ ;; Show numbered line matches for regexp in all file-based
buffers.
+ ["Match-File-Buffers" moccur t]
+ ;; Show numbered line matches for regexp from this buffer.
+ ["Occur-Here" occur t]
+ ;; Following point, remove all lines that match regexp.
+ ["Remove-Lines-Here" hypb:remove-lines t]
+ ;; Following point, keep only lines that match regexp.
+ ["Save-Lines-Here" hypb:save-lines t]
+ "----"
+ "Web-Search:")
+ (hui-menu-web-search)
+ )
+ '("Global-Button"
+ :filter hui-menu-global-buttons
+ ["Create" hui:gbut-create t]
+ ["Edit" hui:gbut-modify t]
+ ["Help" gbut:help t]
+ ["Modify" hui:gbut-modify t]
+ )
+ '("Implicit-Button"
+ ["Manual" (id-info "(hyperbole)Implicit Buttons") t]
"----"
- ["Activate-Button-at-Point" hui:hbut-current-act
- (hbut:is-p (hbut:at-p))]
- ["Back-to-Prior-Location" (hhist:remove current-prefix-arg)
- (and (boundp '*hhist*) *hhist*)]
- '("Button-File"
- ["Manual" (id-info "(hyperbole)Button Files") t]
- "----"
- ["Edit-Per-Directory-File" (find-file hbmap:filename) t]
- ["Edit-Personal-File" (find-file
- (expand-file-name
- hbmap:filename hbmap:dir-user)) t]
- )
- (cons "Customize" hui-menu-options)
- '("Documentation"
- ["Manual" (id-info "(hyperbole)Top") t]
- "----"
- ["Demonstration" (hypb:display-file-with-logo
- (expand-file-name "DEMO" hyperb:dir)) t]
- ["Glossary" (id-info "(hyperbole)Glossary") t]
- ["Manifest" (find-file-read-only
- (expand-file-name "MANIFEST" hyperb:dir))
t]
- ["Smart-Key-Summary" (id-browse-file
(hypb:hkey-help-file)) t]
- ("Types"
- ["Action-Types-Manual"
- (id-info "(hyperbole)Action Types") t]
- ["Implicit-Button-Types-Manual"
- (id-info "(hyperbole)Implicit Buttons") t]
- "----"
- ["Show-Action-Types"
- (hui:htype-help-current-window 'actypes) t]
- ["Show-Implicit-Button-Types"
- (hui:htype-help-current-window 'ibtypes 'no-sort) t]
- ))
- '("Explicit-Button"
- :filter hui-menu-explicit-buttons
- ["Activate" hui:hbut-act t]
- ["Create" hui:ebut-create t]
- ["Delete" hui:ebut-delete t]
- ["Edit" hui:ebut-modify t]
- ("Help"
- ["Manual" (id-info "(hyperbole)Location") t]
- "----"
- ["Buffer-Buttons" (hui:hbut-report -1) t]
- ["Current-Button" (hui:hbut-report) t]
- ["Ordered-Buttons" (hui:hbut-report 1) t]
- )
- ["Modify" hui:ebut-modify t]
- ["Rename" hui:ebut-rename t]
- ["Search" hui:ebut-search t]
- ["Types"
- (hui:htype-help-current-window 'actypes) t]
- )
- (nconc
- '("Find"
- ["Manual" (id-info-item "menu, Find") t]
- "----"
- ;; Show numbered line matches in all specified files.
- ["Grep-Files" hypb:rgrep t]
- ;; Show numbered line matches for regexp in all
file-based buffers.
- ["Locate-Files" locate t]
- ;; Show numbered line matches for regexp in all
file-based buffers.
- ["Match-File-Buffers" moccur t]
- ;; Show numbered line matches for regexp from this buffer.
- ["Occur-Here" occur t]
- ;; Following point, remove all lines that match regexp.
- ["Remove-Lines-Here" hypb:remove-lines t]
- ;; Following point, keep only lines that match regexp.
- ["Save-Lines-Here" hypb:save-lines t]
- "----"
- "Search-with:")
- (hui-menu-web-search)
- )
- '("Global-Button"
- :filter hui-menu-global-buttons
- ["Create" hui:gbut-create t]
- ["Edit" hui:gbut-modify t]
- ["Help" gbut:help t]
- ["Modify" hui:gbut-modify t]
- )
- '("Implicit-Button"
- ["Manual" (id-info "(hyperbole)Implicit Buttons") t]
- "----"
- ["Activate-at-Point" hui:hbut-current-act t]
- ["Delete-Type" (hui:htype-delete 'ibtypes) t]
- ["Help" hui:hbut-help t]
- ["Types" (hui:htype-help 'ibtypes 'no-sort) t]
- )
- (if hyperb:kotl-p
- '("Koutliner"
- ["Manual" (id-info "(hyperbole)Koutliner") t]
- ["Example" kotl-mode:example t]
- "----"
- ["Create-File" kfile:find t]
- ["View-File" kfile:view t]
- "----"
- ["Collapse-Tree" (progn (kotl-mode:is-p)
- (kotl-mode:hide-tree
- (kcell-view:label)))
- (eq major-mode 'kotl-mode)]
- ["Create-Link" klink:create
- (eq major-mode 'kotl-mode)]
- ["Expand-All-Trees" kotl-mode:show-all
- (eq major-mode 'kotl-mode)]
- ["Expand-Tree" (progn (kotl-mode:is-p)
- (kotl-mode:show-tree
+ ["Activate-at-Point" hui:hbut-current-act t]
+ ["Delete-Type" (hui:htype-delete 'ibtypes) t]
+ ["Help" hui:hbut-help t]
+ ["Types" (hui:htype-help 'ibtypes 'no-sort) t]
+ )
+ (if hyperb:kotl-p
+ '("Koutliner"
+ ["Manual" (id-info "(hyperbole)Koutliner") t]
+ ["Example" kotl-mode:example t]
+ "----"
+ ["Create-File" kfile:find t]
+ ["View-File" kfile:view t]
+ "----"
+ ["Collapse-Tree" (progn (kotl-mode:is-p)
+ (kotl-mode:hide-tree
(kcell-view:label)))
- (eq major-mode 'kotl-mode)]
- ["Show-Top-Level-Only" kotl-mode:hide-body
- (eq major-mode 'kotl-mode)]
- ))
- '("Mail-Lists"
- ["Manual" (id-info "(hyperbole)Suggestion or Bug
Reporting")
- t]
- "----"
- ["Mail-to-Hyperbole-Users-List"
- (hmail:compose "address@hidden" '(hact 'hyp-config)) t]
- ["Mail-to-Hyperbole-Bug-Report-List"
- (hmail:compose "address@hidden" '(hact 'hyp-config)) t]
- "----"
- ["Join-Hyperbole-Users-List"
- (hmail:compose "address@hidden" nil
- "Just send the message; subject and body
are ignored.") t]
- ["Join-Hyperbole-Bug-Report-List"
- (hmail:compose "address@hidden" nil
- "Just send the message; subject and body
are ignored.") t]
- "----"
- ["Leave-Hyperbole-Users-List"
- (hmail:compose "address@hidden" nil
- "Just send the message; subject and body
are ignored.") t]
- ["Leave-Hyperbole-Bug-Report-List"
- (hmail:compose "address@hidden" nil
- "Just send the message; subject and body
are ignored.") t]
- )
- infodock-hyrolo-menu
- '("Screen (HyControl)" :filter hui-menu-screen)
- hui-menu-hywconfig)))))
+ (eq major-mode 'kotl-mode)]
+ ["Create-Link" klink:create
+ (eq major-mode 'kotl-mode)]
+ ["Expand-All-Trees" kotl-mode:show-all
+ (eq major-mode 'kotl-mode)]
+ ["Expand-Tree" (progn (kotl-mode:is-p)
+ (kotl-mode:show-tree
+ (kcell-view:label)))
+ (eq major-mode 'kotl-mode)]
+ ["Show-Top-Level-Only" kotl-mode:hide-body
+ (eq major-mode 'kotl-mode)]
+ ))
+ '("Mail-Lists"
+ ["Manual" (id-info "(hyperbole)Suggestion or Bug Reporting")
+ t]
+ "----"
+ ["Mail-to-Hyperbole-Users-List"
+ (hmail:compose "address@hidden" '(hact 'hyp-config)) t]
+ ["Mail-to-Hyperbole-Bug-Report-List"
+ (hmail:compose "address@hidden" '(hact 'hyp-config)) t]
+ "----"
+ ["Join-Hyperbole-Users-List"
+ (hmail:compose "address@hidden" nil
+ "Just send the message; subject and body are
ignored.") t]
+ ["Join-Hyperbole-Bug-Report-List"
+ (hmail:compose "address@hidden" nil
+ "Just send the message; subject and body are
ignored.") t]
+ "----"
+ ["Leave-Hyperbole-Users-List"
+ (hmail:compose "address@hidden" nil
+ "Just send the message; subject and body are
ignored.") t]
+ ["Leave-Hyperbole-Bug-Report-List"
+ (hmail:compose "address@hidden" nil
+ "Just send the message; subject and body are
ignored.") t]
+ )
+ infodock-hyrolo-menu
+ '("Screen (HyControl)" :filter hui-menu-screen)
+ hui-menu-hywconfig)))))
;;; ************************************************************************
;;; Private variables
diff --git a/hui-mini.el b/hui-mini.el
index 898632c..7d2e120 100644
--- a/hui-mini.el
+++ b/hui-mini.el
@@ -392,6 +392,8 @@ constructs. If not given, the top-level Hyperbole menu is
used."
;;; Hyperbole Minibuffer Menus
;;; ************************************************************************
+(defun hyperbole-minibuffer-menu ()
+ "Rebuilds and returns the entire Hyperbole minibuffer menu structure."
(setq
hui:menus
(delq nil
@@ -466,7 +468,8 @@ constructs. If not given, the top-level Hyperbole menu is
used."
"Sets how scrolling via end of line presses works.")
("Toggle-Rolo-Dates" hyrolo-toggle-datestamps
"Toggle whether date stamps are updated when rolo entries are
edited.")
- ("URL-Display/" (menu . cust-urls) "Sets where URLs are displayed.")))
+ ("URL-Display/" (menu . cust-urls) "Sets where URLs are displayed.")
+ ("Web-Search/" (menu . cust-web) "Sets where Web Searches are
displayed.")))
'(cust-eol .
(("Smart Key press at eol scrolls>")
("Proportionally" (setq smart-scroll-proportional t))
@@ -482,7 +485,7 @@ constructs. If not given, the top-level Hyperbole menu is
used."
("WinControl" (hui:bind-key #'hycontrol-windows)) ;; {C-c \}
))
'(cust-referents .
- (("Ref display>")
+ (("Ref Display>")
("Any-Frame" (setq hpath:display-where 'other-frame))
("Current-Win" (setq hpath:display-where 'this-window))
("Diff-Frame-One-Win"
@@ -491,7 +494,7 @@ constructs. If not given, the top-level Hyperbole menu is
used."
("Other-Win" (setq hpath:display-where 'other-window))
("Single-Win" (setq hpath:display-where 'one-window))))
'(cust-urls .
- (("URL display>")
+ (("URL Display>")
("Chrome" (setq browse-url-browser-function #'browse-url-chrome))
("Default" (setq browse-url-browser-function
(if (and (boundp 'browse-url-generic-program)
(stringp browse-url-generic-program))
@@ -502,6 +505,18 @@ constructs. If not given, the top-level Hyperbole menu is
used."
("KDE" (setq browse-url-browser-function #'browse-url-kde))
("XTerm" (setq browse-url-browser-function #'browse-url-text-xterm))
))
+ '(cust-web .
+ (("Web Search>")
+ ("Chrome" (setq hyperbole-web-search-browser-function
#'browse-url-chrome))
+ ("Default" (setq hyperbole-web-search-browser-function
+ (if (and (boundp 'browse-url-generic-program)
(stringp browse-url-generic-program))
+ #'browse-url-generic
+ #'browse-url-default-browser)))
+ ("EWW" (setq hyperbole-web-search-browser-function #'eww-browse-url))
+ ("Firefox" (setq hyperbole-web-search-browser-function
#'browse-url-firefox))
+ ("KDE" (setq hyperbole-web-search-browser-function #'browse-url-kde))
+ ("XTerm" (setq hyperbole-web-search-browser-function
#'browse-url-text-xterm))
+ ))
'(doc .
(("Doc>")
("About" (hypb:display-file-with-logo
@@ -688,7 +703,10 @@ constructs. If not given, the top-level Hyperbole menu is
used."
"Restores next window configuration from ring.")
))
(hui:menu-web-search)
- )))
+ ))))
+
+;; Always rebuild the Hyperbole minibuffer menu when this file is loaded.
+(hyperbole-minibuffer-menu)
(provide 'hui-mini)
diff --git a/man/hyperbole.html b/man/hyperbole.html
index e24fd51..ea6cc5b 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -3208,11 +3208,12 @@ These are good places to begin experimenting with
button creation.
<a name="index-option-settings"></a>
</dd>
<dt><strong>Cust/</strong></dt>
-<dd><p>Hyperbole option customization. This includes whether ftp and www URLs
-are recognized by the <code>find-file</code> commands, where Hyperbole link
-referents are displayed, where URLs are displayed, whether date stamps
-are added to rolo entries, and whether to use proportional or windowful
-scrolling when a Smart Key is pressed at the end of a line.
+<dd><p>Hyperbole option customization. This includes whether ftp and www
+URLs are recognized by the <code>find-file</code> commands, where Hyperbole
+link referents are displayed, where URLs are displayed, where web
+search results are displayed, whether date stamps are added to rolo
+entries, and whether to use proportional or windowful scrolling when a
+Smart Key is pressed at the end of a line.
See <a href="#Configuration">Configuration</a>.
</p>
<a name="index-menu_002c-KeyBindings"></a>
@@ -3250,12 +3251,12 @@ documentation on Hyperbole implicit button and action
types.
<a name="index-search"></a>
</dd>
<dt><strong>Find/</strong></dt>
-<dd><p>Buffer and file line finding commands. This menu brings together many
-existing line finding commands that are difficult to recall quickly
-when needed, simplifying finding and then jumping to matching lines by
-using the Action Key. It includes commands for filtering a buffer to
-just those lines that either match or do not match a regular
-expression.
+<dd><p>Buffer and file line finding commands and web searching. This menu
+brings together many existing line finding commands that are difficult
+to recall quickly when needed, simplifying finding and then jumping to
+matching lines by using the Action Key. It includes commands for
+filtering a buffer to just those lines that either match or do not
+match a regular expression.
</p>
<p>Below are each of the commands on the Find menu.
</p>
@@ -3263,12 +3264,19 @@ expression.
<a name="index-remove-lines"></a>
<a name="index-save-lines"></a>
<a name="index-locate-files"></a>
+<a name="index-grep-files"></a>
<a name="index-menu-item_002c-GrepFile"></a>
<a name="index-menu-item_002c-LocateFiles"></a>
<a name="index-menu-item_002c-MatchFileBuffers"></a>
<a name="index-menu-item_002c-OccurHere"></a>
<a name="index-menu-item_002c-RemoveLines"></a>
<a name="index-menu-item_002c-SaveLines"></a>
+<a name="index-menu_002c-Find_002fWeb"></a>
+<a name="index-menu_002c-Web"></a>
+<a name="index-searching-the-web"></a>
+<a name="index-web-search"></a>
+<a name="index-C_002dc-_002f"></a>
+<a name="index-hyperbole_002dweb_002dsearch_002dbrowser_002dfunction"></a>
<a name="index-hypb_003argrep_002dcommand"></a>
<a name="index-locate_002dcommand"></a>
<ul>
@@ -3289,6 +3297,16 @@ expression.
</li><li> OccurHere - Show numbered line matches for regexp from this
buffer.
</li><li> RemoveLines - Following point, remove all lines that match
regexp.
</li><li> SaveLines - Following point, keep only lines that match
regexp.
+</li><li> Web/ - Select a search engine and term and search with
them.
+ The option,
<code>hyperbole-web-search-browser-function</code>,
+ determines whether results are displayed within Emacs or
+ with an external web browser. Hyperbole typically binds
+ the key <kbd>{C-c /}</kbd> for quick access to this menu.
It
+ looks like this:
+<div class="smallexample">
+<pre class="smallexample">Web> Amazon Bing Dictionary Elisp Facebook
Google Hub(git) Images
+ Maps RFCs StackOverflow Twitter Wikipedia Youtube
+</pre></div>
</li></ul>
<a name="index-menu_002c-Global_002dButton-1"></a>
@@ -3375,17 +3393,18 @@ and then simply quit HyControl and go back to work.
<a name="index-C_002dc-_005c"></a>
<a name="index-screen_002c-C_002dc-_005c"></a>
<a name="index-menu-item_002c-WindowsControl"></a>
-<p>Hyperbole typically binds the key <kbd>{C-c \}</kbd> to invoke HyControl
-window control; otherwise, the Screen/WindowsControl minibuffer menu
+<p>Hyperbole binds the key <kbd>{C-c \}</kbd> 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, <kbd>{C-h h s w}</kbd>, will do the same thing.
</p>
<a name="index-submodes"></a>
<p>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 press <kbd>{q}</kbd> to quit from HyControl. The
-key, <kbd>{t}</kbd>, will always toggle between controlling frames and
-windows, the <em>submodes</em> of HyControl, with the upper left of the
-minibuffer prompt showing which type of control is active.
+your windows until you press <kbd>{q}</kbd> or <kbd>{<span
class="key">ESC</span>}</kbd> to quit from
+HyControl. The key, <kbd>{t}</kbd>, will always toggle between controlling
+frames and windows, the <em>submodes</em> of HyControl, with the upper
+left of the minibuffer prompt showing which type of control is active.
</p>
<a name="index-numeric-argument"></a>
<a name="index-multiplier"></a>
@@ -3652,9 +3671,10 @@ sizes by which to zoom.
<dd><p>Toggle between WINDOW and FRAME submodes.
</p>
<a name="index-screen_002c-q"></a>
-<a name="index-q-1"></a>
+<a name="index-screen_002c-ESC"></a>
+<a name="index-q-or-ESC"></a>
</dd>
-<dt><kbd>{q}</kbd></dt>
+<dt><kbd>{q or <span class="key">ESC</span>}</kbd></dt>
<dd><p>Quit from HyControl mode and restore normal key bindings.
</p></dd>
</dl>
@@ -3662,7 +3682,7 @@ sizes by which to zoom.
<br>
<p>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.
</p>
<a name="index-hycontrol_002dscreen_002doffset_002dalist"></a>
<a name="index-hycontrol_002dset_002dscreen_002doffsets"></a>
@@ -6179,7 +6199,7 @@ considered the present Hyperbole API:
<p><samp>hact.el</samp>, <samp>hargs.el</samp>, <samp>hbmap.el</samp>,
<samp>hbut.el</samp>,
<samp>hhist.el</samp>, <samp>hmail.el</samp>, <samp>hmoccur.el</samp>,
<samp>hpath.el</samp>,
<samp>htz.el</samp>, <samp>hypb.el</samp>, <samp>hyrolo.el</samp>,
<samp>hyrolo-logic.el</samp>,
-<samp>hywconfig.el</samp> andn <samp>set.el</samp>.
+<samp>hywconfig.el</samp> and <samp>set.el</samp>.
</p>
<p>Note when looking at these files, that they are divided into sections
@@ -6187,7 +6207,7 @@ that separate one data abstraction (class) from another.
A line of
dashes within a class separates public parts of the class from the
private parts that follow the line.
</p>
-<p>This API does not include the Hyperbole outliner, as it has been
+<p>This API does not include the Hyperbole Koutliner, as it has been
designed for interactive use, rather than programmatic extensibility.
You are welcome, however, to study its code, below the
<samp>hyperbole-${hyperb:version}/kotl/</samp> directory.
@@ -6804,7 +6824,11 @@ Hyperbole’s multi-level autonumbered hypertextual
outliner.
<p>To try out HyControl, Hyperbole’s interactive frame and window control
system, use <kbd>{C-h h s w}</kbd> for window control or <kbd>{C-h h s f}</kbd>
for frame control. Pressing <kbd>{t}</kbd> switches between window and
-frame control once in HyControl.
+frame control once in HyControl. Hyperbole also binds <kbd>{C-c \}</kbd>
+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:
+<a href="https://youtu.be/M3-aMh1ccJk">https://youtu.be/M3-aMh1ccJk</a>.
</p>
<a name="index-Info_002ddirectory_002dlist"></a>
<a name="index-hyperb_003adir"></a>
@@ -7167,6 +7191,22 @@ global Hyperbole keys.
<dd><p>HyControl: Control windows, frames and buffer display. This binding
is made only if the key is not bound prior to loading Hyperbole.
</p>
+<a name="index-C_002dc-_002f-1"></a>
+<a name="index-C_002dh-h-f-w"></a>
+<a name="index-menu_002c-Find_002fWeb-1"></a>
+<a name="index-menu_002c-Web-1"></a>
+<a name="index-searching-the-web-1"></a>
+<a name="index-web-search-menu"></a>
+<a name="index-C_002dc-_002f-2"></a>
+</dd>
+<dt><kbd>{C-c /}</kbd></dt>
+<dd><p>Search the Web: Display a minibuffer menu of web search engines.
+Once an engine is selected, prompt for a search term and
+perform the associated search. Hyperbole typically binds the
+key <kbd>{C-c /}</kbd> for quick access to this list; otherwise, the
+Find/Web minibuffer menu item, <kbd>{C-h h f w}</kbd>, will do the same
+thing.
+</p>
<a name="index-key-binding_002c-C_002dc-C_002dr"></a>
<a name="index-C_002dc-C_002dr-1"></a>
</dd>
@@ -7195,17 +7235,17 @@ access to many Hyperbole commands.
<a name="index-C_002dh-A-1"></a>
</dd>
<dt><kbd>{C-h A}</kbd></dt>
-<dd><p>Action Key Help: Shows what the Action Key will do in the current
context.
+<dd><p>Action Key Help: Show what the Action Key will do in the current
context.
<a name="index-C_002du-C_002dh-A-1"></a>
</p></dd>
<dt><kbd>{C-u C-h A}</kbd></dt>
-<dd><p>Assist Key Help: Shows what the Assist Key will do in the same context.
+<dd><p>Assist Key Help: Show what the Assist Key will do in the same context.
</p>
<a name="index-key-binding_002c-C_002dc-RET"></a>
<a name="index-C_002dc-RET-1"></a>
</dd>
<dt><kbd>{C-c <span class="key">RET</span>}</kbd></dt>
-<dd><p>Mark Things: Marks larger and larger synctactical units in a buffer
+<dd><p>Mark Things: Mark larger and larger synctactical units in a buffer
when invoked repeatedly, showing in the minibuffer the type of unit
marked each time. For example, if on an opening brace at the start of
a C, Java or Javascript function, this marks the whole function. This
@@ -7216,7 +7256,7 @@ Hyperbole.
<a name="index-C_002dc-_002e-2"></a>
</dd>
<dt><kbd>{C-c .}</kbd></dt>
-<dd><p>Delimited Thing Jump: Jumps between the start and end of a delimited
+<dd><p>Delimited Thing Jump: Jump between the start and end of a delimited
thing, which may be an HTML tag pair. This binding is made only if
the key is not bound prior to loading Hyperbole. See <a
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a>, for more
information.
</p></dd>
@@ -10083,6 +10123,9 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function</a>, Previous: <a hr
<tr><td></td><td valign="top"><a href="#index-C_002dc-_002e"><code>C-c
.</code></a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dc-_002e-1"><code>C-c
.</code></a>:</td><td> </td><td valign="top"><a
href="#Moving-Around">Moving Around</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dc-_002e-2"><code>C-c
.</code></a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-_002f"><code>C-c
/</code></a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-_002f-1"><code>C-c
/</code></a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-_002f-2"><code>C-c
/</code></a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dc-_003c"><code>C-c
<</code></a>:</td><td> </td><td valign="top"><a
href="#Moving-Around">Moving Around</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dc-_003e"><code>C-c
></code></a>:</td><td> </td><td valign="top"><a
href="#Moving-Around">Moving Around</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dc-_0040"><code>C-c
@</code></a>:</td><td> </td><td valign="top"><a
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
@@ -10136,6 +10179,7 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function</a>, Previous: <a hr
<tr><td></td><td valign="top"><a href="#index-C_002dh-h-1"><code>C-h
h</code></a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dh-h-c-d"><code>C-h h c
d</code></a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dh-h-d-d"><code>C-h h d
d</code></a>:</td><td> </td><td valign="top"><a
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dh-h-f-w"><code>C-h h f
w</code></a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dh-h-g"><code>C-h h
g</code></a>:</td><td> </td><td valign="top"><a
href="#Global-Buttons">Global Buttons</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dh-h-i-a"><code>C-h h i
a</code></a>:</td><td> </td><td valign="top"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dh-h-m-c"><code>C-h h m
c</code></a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
@@ -10228,7 +10272,7 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function</a>, Previous: <a hr
<tr><td colspan="4"> <hr></td></tr>
<tr><th><a name="Key-Index_ky_letter-Q">Q</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-q"><code>q</code></a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a
href="#index-q-1"><code>q</code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-q-or-ESC"><code>q or <span
class="key">ESC</span></code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th><a name="Key-Index_ky_letter-R">R</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-right"><code>right</code></a>:</td><td> </td><td
valign="top"><a href="#HyControl">HyControl</a></td></tr>
@@ -10275,6 +10319,7 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function</a>, Previous: <a hr
<tr><td></td><td valign="top"><a href="#index-screen_002c-d"><code>screen,
d</code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-screen_002c-D"><code>screen,
D</code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-screen_002c-down"><code>screen,
down</code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-ESC"><code>screen,
<span class="key">ESC</span></code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-screen_002c-f"><code>screen,
f</code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-screen_002c-h"><code>screen,
h</code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-screen_002c-H"><code>screen,
H</code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
@@ -10643,6 +10688,7 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a
href="#index-hyperbole-1"><code>hyperbole</code></a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default
Context</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-hyperbole_002dinit_002dhook">hyperbole-init-hook</a>:</td><td> </td><td
valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-hyperbole_002dpopup_002dmenu"><code>hyperbole-popup-menu</code></a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-_002d-Default-Context">Smart Key - Default
Context</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-hyperbole_002dweb_002dsearch_002dbrowser_002dfunction">hyperbole-web-search-browser-function</a>:</td><td> </td><td
valign="top"><a href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-hyrolo_002dadd"><code>hyrolo-add</code></a>:</td><td> </td><td
valign="top"><a href="#Rolo-Menu">Rolo Menu</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-hyrolo_002dadd_002dhook">hyrolo-add-hook</a>:</td><td> </td><td
valign="top"><a href="#Rolo-Keys">Rolo Keys</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-hyrolo_002dadd_002dhook-1">hyrolo-add-hook</a>:</td><td> </td><td
valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
@@ -11310,6 +11356,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a
href="#index-gomoku">gomoku</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku Game</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-grep">grep</a>:</td><td> </td><td valign="top"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-Grep">Grep</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-grep-files">grep
files</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-groupware">groupware</a>:</td><td> </td><td valign="top"><a
href="#Glossary">Glossary</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th><a name="Concept-Index_cp_letter-H">H</a></th><td></td><td></td></tr>
@@ -11539,6 +11586,8 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-menu_002c-EBut">menu,
EBut</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu_002c-Explicit_002dButton">menu,
Explicit-Button</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002c-Find">menu,
Find</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Find_002fWeb">menu,
Find/Web</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Find_002fWeb-1">menu,
Find/Web</a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002c-Gbut">menu,
Gbut</a>:</td><td> </td><td valign="top"><a href="#Global-Buttons">Global
Buttons</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002c-Gbut-1">menu,
Gbut</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu_002c-Global_002dButton">menu,
Global-Button</a>:</td><td> </td><td valign="top"><a
href="#Global-Buttons">Global Buttons</a></td></tr>
@@ -11560,6 +11609,8 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-menu_002c-top_002dlevel">menu,
top-level</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002c-top_002dlevel-1">menu,
top-level</a>:</td><td> </td><td valign="top"><a
href="#Minibuffer-Menu-Activation">Minibuffer Menu Activation</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002c-Types">menu,
Types</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Web">menu,
Web</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Web-1">menu,
Web</a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002c-WinConfig">menu,
WinConfig</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu_002c-Window_002dConfigurations">menu,
Window-Configurations</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menubar_002c-Hyperbole-menu">menubar, Hyperbole
menu</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
@@ -11721,6 +11772,8 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a
href="#index-scrolling-1">scrolling</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart
Scrolling</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-search">search</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-search-1">search</a>:</td><td> </td><td valign="top"><a
href="#Invisible-Text-Searches">Invisible Text Searches</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-searching-the-web">searching the
web</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-searching-the-web-1">searching
the web</a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-searching_002c-rolo">searching,
rolo</a>:</td><td> </td><td valign="top"><a href="#Rolo-Searching">Rolo
Searching</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-selection">selection</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-selection_002c-menu-items">selection, menu
items</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
@@ -11854,6 +11907,8 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a
href="#index-W3">W3</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-wconfig-commands">wconfig
commands</a>:</td><td> </td><td valign="top"><a
href="#Window-Configurations">Window Configurations</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-web-pages_002c-displaying">web
pages, displaying</a>:</td><td> </td><td valign="top"><a
href="#Using-URLs-with-Find_002dFile">Using URLs with Find-File</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-web-search">web
search</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-web-search-menu">web search
menu</a>:</td><td> </td><td valign="top"><a
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-window-configuration-commands">window configuration
commands</a>:</td><td> </td><td valign="top"><a
href="#Window-Configurations">Window Configurations</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-window-configuration-ring">window configuration
ring</a>:</td><td> </td><td valign="top"><a
href="#Window-Configurations">Window Configurations</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-window-configurations">window
configurations</a>:</td><td> </td><td valign="top"><a
href="#Window-Configurations">Window Configurations</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index f2ca177..00495f6 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 76f70a3..56ee0ab 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index fe99d7d..98b014c 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -2588,11 +2588,12 @@ These are good places to begin experimenting with
button creation.
@cindex customize
@cindex option settings
@item Cust/
-Hyperbole option customization. This includes whether ftp and www URLs
-are recognized by the @code{find-file} commands, where Hyperbole link
-referents are displayed, where URLs are displayed, whether date stamps
-are added to rolo entries, and whether to use proportional or windowful
-scrolling when a Smart Key is pressed at the end of a line.
+Hyperbole option customization. This includes whether ftp and www
+URLs are recognized by the @code{find-file} commands, where Hyperbole
+link referents are displayed, where URLs are displayed, where web
+search results are displayed, whether date stamps are added to rolo
+entries, and whether to use proportional or windowful scrolling when a
+Smart Key is pressed at the end of a line.
@xref{Configuration}.
@cindex menu, KeyBindings
@@ -2627,12 +2628,13 @@ documentation on Hyperbole implicit button and action
types.
@cindex menu, Find
@cindex search
@item Find/
-Buffer and file line finding commands. This menu brings together many
-existing line finding commands that are difficult to recall quickly
-when needed, simplifying finding and then jumping to matching lines by
-using the Action Key. It includes commands for filtering a buffer to
-just those lines that either match or do not match a regular
-expression.
+Buffer and file line finding commands and web searching. This menu
+brings together many existing line finding commands that are difficult
+to recall quickly when needed, simplifying finding and then jumping to
+matching lines by using the Action Key. It includes commands for
+filtering a buffer to just those lines that either match or do not
+match a regular expression. It also includes a submenu for quick
+access to popular web search engines.
Below are each of the commands on the Find menu.
@@ -2648,9 +2650,12 @@ Below are each of the commands on the Find menu.
@cindex menu item, RemoveLines
@cindex menu item, SaveLines
@cindex menu, Find/Web
address@hidden menu, Web
@cindex searching the web
@cindex web search
@kindex C-c /
address@hidden hyperbole-web-search-browser-function
address@hidden hyperbole-web-search-alist
@vindex hypb:rgrep-command
@vindex locate-command
@itemize @bullet
@@ -2679,8 +2684,19 @@ RemoveLines - Following point, remove all lines
that match regexp.
SaveLines - Following point, keep only lines that match regexp.
@item
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.
+ The option, @code{hyperbole-web-search-browser-function},
+ determines whether results are displayed within Emacs or
+ with an external web browser. Hyperbole binds
+ the key @bkbd{C-c /} for quick access to this menu, if it
+ is not already bound prior to Hyperbole's initialization.
+ A short video introduction to the Find/Web menu may be found
+ at @url{https://youtu.be/8lMlJed0-OM}. The Find/Web menu
looks
+ like this:
address@hidden
address@hidden
+Web> Amazon Bing Dictionary Elisp Facebook Google Hub(git) Images
+ Maps RFCs StackOverflow Twitter Wikipedia Youtube
address@hidden smallexample
@end itemize
@cindex menu, Global-Button
@@ -2760,10 +2776,10 @@ item, @bkbd{C-h h s w}, will do the same thing.
@cindex submodes
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 press @bkbd{q} to quit from HyControl. The
-key, @bkbd{t}, will always toggle between controlling frames and
-windows, the @dfn{submodes} of HyControl, with the upper left of the
-minibuffer prompt showing which type of control is active.
+your windows until you press @bkbd{q} or @address@hidden to quit from
+HyControl. The key, @bkbd{t}, will always toggle between controlling
+frames and windows, the @dfn{submodes} of HyControl, with the upper
+left of the minibuffer prompt showing which type of control is active.
@cindex numeric argument
@cindex multiplier
@@ -2957,7 +2973,8 @@ FRAME mode zooming requires the separately available
Toggle between WINDOW and FRAME submodes.
@kindex screen, q
address@hidden q
address@hidden screen, @key{ESC}
address@hidden q or @key{ESC}
Quit from HyControl mode and restore normal key bindings.
@end table
@@ -5077,7 +5094,7 @@ considered the present Hyperbole API:
@file{hact.el}, @file{hargs.el}, @file{hbmap.el}, @file{hbut.el},
@file{hhist.el}, @file{hmail.el}, @file{hmoccur.el}, @file{hpath.el},
@file{htz.el}, @file{hypb.el}, @file{hyrolo.el}, @file{hyrolo-logic.el},
address@hidden andn @file{set.el}.
address@hidden and @file{set.el}.
@noindent
@@ -5086,7 +5103,7 @@ that separate one data abstraction (class) from another.
A line of
dashes within a class separates public parts of the class from the
private parts that follow the line.
-This API does not include the Hyperbole outliner, as it has been
+This API does not include the Hyperbole Koutliner, as it has been
designed for interactive use, rather than programmatic extensibility.
You are welcome, however, to study its code, below the
@address@hidden:address@hidden/kotl/} directory.
@@ -5609,7 +5626,7 @@ for frame control. Pressing @bkbd{t} switches between
window and
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:
+demonstrating most of HyControl's features is available at
@url{https://youtu.be/M3-aMh1ccJk}.
@vindex Info-directory-list
@@ -5916,6 +5933,19 @@ Assist Key: Invoke the Assist Key in the present context.
HyControl: Control windows, frames and buffer display. This binding
is made only if the key is not bound prior to loading Hyperbole.
address@hidden C-c /
address@hidden C-h h f w
address@hidden menu, Find/Web
address@hidden menu, Web
address@hidden searching the web
address@hidden web search menu
address@hidden C-c /
+Search the Web: Display a minibuffer menu of web search engines. Once
+an engine is selected, prompt for a search term and perform the
+associated search. This binding is made only if the key is not bound
+prior to loading Hyperbole; otherwise, the Find/Web minibuffer menu
+item, @bkbd{C-h h f w}, will do the same thing.
+
@cindex key binding, C-c C-r
@kitem C-c C-r
Button Rename: Rename an explicit button. This binding is made only if
@@ -5936,32 +5966,22 @@ access to many Hyperbole commands.
@cindex key binding, C-h A
@cindex key binding, C-u C-h A
@kitem C-h A
-Action Key Help: Shows what the Action Key will do in the current context.
+Action Key Help: Show what the Action Key will do in the current context.
@kitem C-u C-h A
-Assist Key Help: Shows what the Assist Key will do in the same context.
+Assist Key Help: Show what the Assist Key will do in the same context.
@cindex key binding, C-c @key{RET}
@kitem C-c @key{RET}
-Mark Things: Marks larger and larger synctactical units in a buffer
+Mark Things: Mark larger and larger synctactical units in a buffer
when invoked repeatedly, showing in the minibuffer the type of unit
marked each time. For example, if on an opening brace at the start of
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
+Delimited Thing Jump: Jump between the start and end of a delimited
thing, which may be an HTML tag pair. This binding is made only if
the key is not bound prior to loading Hyperbole. @xref{Smart Key
Thing Selection}, for more information.
- [elpa] externals/hyperbole 6e38a4b 17/20: Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole., (continued)
- [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, 2016/08/09
- [elpa] externals/hyperbole 71b8e73 08/20: 2016-08-05 Bob Weiner <address@hidden>,
Robert Weiner <=
- [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