[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hyperbole 72833c9 15/20: Merge branch 'master' V6.0.2 o
From: |
Robert Weiner |
Subject: |
[elpa] externals/hyperbole 72833c9 15/20: Merge branch 'master' V6.0.2 of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole |
Date: |
Tue, 9 Aug 2016 19:17:08 +0000 (UTC) |
branch: externals/hyperbole
commit 72833c98fa218e411001a2d57b27058a1cd6d276
Merge: 81e8485 cc0493a
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>
Merge branch 'master' V6.0.2 of http://git.savannah.gnu.org/r/hyperbole
into externals/hyperbole
---
.gitignore | 3 +
.hypb | Bin 2398 -> 2681 bytes
ChangeLog => Changes | 181 ++++++++
DEMO | 69 +++-
HY-ABOUT | 2 +-
HY-ANNOUNCE | 247 ++++++++---
HY-NEWS | 113 ++++-
HY-WHY.kotl | 34 +-
INSTALL | 20 +-
MANIFEST | 5 +-
Makefile | 40 +-
README | 37 +-
README.md | 60 ++-
README.md.html | 985 ++++++++++++++++++++++++++++++++++++++++++++
hactypes.el | 12 +-
hargs.el | 15 +-
hib-social.el | 17 +-
hibtypes.el | 51 ++-
hinit.el | 33 +-
hload-path.el | 9 +-
hmouse-key.el | 5 +-
hmouse-tag.el | 35 +-
hpath.el | 165 +++++---
hrmail.el | 3 +-
hsettings.el | 69 ++++
hsmail.el | 169 +++++---
hsys-org.el | 53 ++-
hsys-w3.el => hsys-www.el | 15 +-
hui-menu.el | 630 ++++++++++++++--------------
hui-mini.el | 679 ++++++++++++++++--------------
hui-mouse.el | 29 +-
hversion.el | 2 +-
hycontrol.el | 4 +-
hypb.el | 11 +-
hyperbole.el | 25 +-
man/hyperbole.html | 744 ++++++++++++++++++++-------------
man/hyperbole.info | Bin 429310 -> 436228 bytes
man/hyperbole.pdf | Bin 791819 -> 798465 bytes
man/hyperbole.texi | 397 +++++++++++-------
man/im/menu-hyperbole2.pdf | Bin 18552 -> 0 bytes
man/version.texi | 8 +-
41 files changed, 3554 insertions(+), 1422 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/.hypb b/.hypb
index 451014c..d5ddee3 100644
Binary files a/.hypb and b/.hypb differ
diff --git a/ChangeLog b/Changes
similarity index 92%
rename from ChangeLog
rename to Changes
index 87cbbf0..7f9bb15 100644
--- a/ChangeLog
+++ b/Changes
@@ -1,5 +1,186 @@
-- Almost all changes listed herein are new as of 2016. --
+2016-08-08 Bob Weiner <address@hidden>
+
+* hactypes.el (link-to-web-search): Added so Hyperbole global and explicit
buttons can execute web searches.
+ hsettings.el (hyperbole-read-web-search-arguments): Added and used in
hyperbole-web-search and link-to-web-search.
+ DEMO (Sample Explicit Buttons and Types):
+ man/hyperbole.texi (Action Types): Documented link-to-web-search.
+
+* INSTALL, README, README.md, README.md.html: Added Browsing the Source
section with ftp tarball download information.
+
+* hpath.el (hpath:delimited-possible-path): Added non-ascii quote characters
to possible delimiters.
+ (hpath:delete-trailer): Added quoting characters to deletion to fix
bug where remote pathname retrieval
+ would include a trailing quote mark.
+
+* hargs.el (hargs:delimited): Added support for up to 2-line delimited regions
as long as point is on the first line.
+ Normalized any newline followed by whitespace to a single space in the
string returned.
+ Added (require 'hypb).
+
+* hys-org.el (defib org-mode, org-mode:help): Ensured trigger only in org-mode
and simplified logic.
+ (org-heading-at-p): Deleted and used org-at-heading-p instead.
+
+* hpath.el (hpath:to-markup-anchor): Generalized to work in any HTML buffer
based on major mode, not file suffix.
+ (hpath:html-suffix-regexp): Removed, no longer used.
+
+* hmouse-tag.el (smart-asm-include-file, smart-c-include-file): Simplified
conditionals a bit.
+
+* hpath.el (hpath:is-p): Fixed improper parsing issue with hash links that
included commas such as:
+ "DEMO#Grep, Occurrence, Debugger and Compiler Error Buttons, and Cscope
Analyzer".
+
+* Demo (Org Mode):
+ man/hyperbole.texi (Implicit Buttons):
+ hsys-org.el (org-mode): Changed so if not at an end of line, on an org mode
link or on an existing heading,
+ then invokes the Org mode standard binding of M-RET, (org-meta-return).
+
+2016-08-07 Bob Weiner <address@hidden>
+
+* hpath.el (hpath:markup-link-anchor-regexp, hpath:to-markup-anchor): Modified
to support hash-style links
+ to Emacs outline file section headlines, matching as is done with
Github-style Markdown section links.
+ DEMO:
+ man/hyperbole.texi: Updated to document the above change.
+
+* hypb.el (hypb:file-major-mode): Added.
+
+2016-08-06 Bob Weiner <address@hidden>
+
+* man/hyperbole.texi (Customization): Renamed from Configuration.
+ (Web Search Engines): Added this section under
Customization.
+ (HyControl): Added FramesControl key sequence.
+ (Smart Key - Smart Scrolling): Documented
{action,assist}-key-eol-function variables.
+
+* hsmail.el (mail-indent-citation, mail-yank-original): Updated for Emacs 25
compatibility.
+
+2016-08-05 Bob Weiner <address@hidden>
+
+* hibtypes.el (annot-bib): Added markdown-mode to the excluded list to avoid
conflict with its links.
+ (markdown-internal-link): Added to follow internal Markdown
links.
+ man/hyperbole.texi: (Implicit Buttons): Added markdown-internal-link.
+
+* hsys-www.el: Renamed from hsys-w3.el since it is not related to the Emacs W3
web browser any longer.
+
+* Demo (HTML and Markdown Hash Links): Added this section.
+ hibtypes.el (pathname):
+ hpath.el (hpath:to-markup-anchor): Renamed from hpath:to-html-anchor and
generalized for use with Markdown as well.
+ Added recognition of section links like:
+ - [Why was Hyperbole developed?](#why-was-hyperbole-developed)
+ so the pathname implicit button type matches when the Action Key is
pressed anywhere on or after the
+ hash character and jumps to the section:
+ ## Why was Hyperbole developed?
+ accounting for any trailing punctuation, whitespace and differences in
case.
+ (hpath:markdown-suffix-regexp, hpath:markdown-anchor-id-pattern,
hpath:markdown-section-pattern): Added.
+ (hpath:markup-link-anchor-regexp): Renamed from
hpath:html-link-anchor-regexp.
+
+* hib-social.el (social-reference): Disabled this implicit button type within
quoted strings (all modes) and within
+ parentheses (markdown-mode), so in-file hash link references are not
matched as social hash tags. Made the list
+ of modes a variable, hibtypes-social-inhibit-modes.
+ 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.
+
+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 from 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
+ overwrite any file named ChangeLog with git log information which
+ has less history than Hyperbole's Changes.
+
+* hui-mini.el (hui-search-web): Added so can invoke the Hyperbole
+ Find/Web search menu directly.
+ hyperbole.el (hkey-initialize): Bound above command to {C-c /}.
+
+* hsettings.el (hyperbole-web-search-browser-function):
+ (hyperbole-web-search-alist):
+ (hyperbole-web-search): Added.
+ hui-mini.el (hui:menu-web-search): Added and called within hui:menus.
+ hui-menu.el (hui-menu-web-search): Added and called in
infodock-hyperbole-menu.
+
+* hinit.el (hyperb:init-menubar): Fixed so sets after-init-hook only
+ if not after-init-time. Also forced a return value of nil.
+ hui-menu.el (hyperbole-menubar-menu): Changed so this always updates
+ the menubar with the latest version of the Hyperbole menu; previously
+ it only added the menu if it was not there.
+
+2016-07-29 Bob Weiner <address@hidden>
+
+* README.md: Added menu images and screenshots for easy access.
+
+* hui-mouse.el (action-key-eol-function, assist-key-eol-function): Added these
2
+ options to control what the Action and Assist Keys do at the end of a line.
+ Default behaviors remain as before but now one can set these to do
something
+ other than scrolling, if desired.
+
+2016-07-28 Bob Weiner <address@hidden>
+
+* hyperbole.el: Updated the header fields to better match GNU standards for use
+ by the Lisp maintainer package, lisp-mnt.el.
+
+2016-07-27 Bob Weiner <address@hidden>
+
+* hactypes.el (exec-shell-cmd): Replaced call to old function
'show-output-from-shell'
+ with 'comint-show-output'. This fixed a failure when this action type is
used.
+
+* HY-ANNOUNCE (About):
+ README (Files): Added pointers to Hyperbole screenshot files.
+
+* man/im/menu-hyperbole2.pdf: Removed this unneeded file.
+
+* HY-ANNOUNCE: Updated first section and used in sending 6.0.1 release
announcements.
+ Added items from HY-NEWS for 6.0.1 that were unintentially left out of
this file.
+
+* hload-path.el (hyperb:dir): If the Emacs Package Manager has already added
this
+ to load-path without a trailing directory separator, don't add it with one.
+
+==============================================================================
+V6.0.2 changes ^^^^:
+==============================================================================
+
2016-07-26 Mats Lidell <address@hidden>
* hypb.el (hypb:rgrep-command): Removed -Z option.
diff --git a/DEMO b/DEMO
index 0f22ea1..e7d4b3f 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
@@ -150,9 +160,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 +173,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
@@ -222,15 +233,18 @@ remember, just surround them with curly braces and you'll
always be able to
try them out with a simple click or press. You can even create your own
demonstrations and tours with this and other implicit button types.
-** Org mode
+** Org Mode
-For users of Emacs Org mode, Hyperbole does two basic things. First, the
+For users of Emacs Org mode, Hyperbole does a few things. First, the
Action Key will follow and execute links in Org mode files. Second, when
point is on an outline heading in Org mode, the Action Key cycles the view
of the subtree at point and the Assist Key cycles the view of all headings
in the buffer. The Assist Key will also display help when pressed on an Org
mode link.
+In any other context besides the end of a line, the Action Key will invoke
+the Org mode standard binding of {M-RET}, (org-meta-return).
+
** Implicit Path Links
Any existing absolute or relative pathname (whether doubly quoted or not)
@@ -240,7 +254,7 @@ operates upon the path. These are `pathname' implicit
buttons. For example,
activate "HY-ABOUT". HY-ABOUT or `HY-ABOUT' would work as well or
"~/.emacs".
-** Paths with Line and Column Numbers
+*** Paths with Line and Column Numbers
If you want to display a path at a specific line number and optionally column
number, then add each number preceded by a colon at the end of the path.
@@ -248,6 +262,34 @@ For example, "HY-ABOUT:10" displays HY-ABOUT at line 10,
the second
paragraph, with point at the start of the line. "HY-ABOUT:18:7" shows the
first numbered item on line 18 at column 7, where the text starts.
+*** HTML Markdown and Emacs Outline Hash Links
+
+Often links to HTML and Markdown files use a hash mark (#) plus an identifier
+to refer to a section of such files. When the Action Key is pressed on any
+such reference, it jumps to the section referenced by the link.
+
+For example, "man/hyperbole.html#Smart-Keys" will take you to the Smart Keys
+description in the HTML version of the Hyperbole manual. Inside that manual
+in HTML form, "#Smart-Keys" would do the same thing. Similarly,
+"README.md#why-was-hyperbole-developed" jumps to the referenced section of
+that Markdown file, while accounting for the difference in case, whitespace
+and trailing punctuation between the identifier and the section header.
+(Inline Markdown links surrounded by parentheses and square bracketed
+reference links work similarly but are handled specifically as Markdown
+links, not as pathnames).
+
+Hyperbole allows hash-style links to Emacs outline files (including Org-mode
+files); they work just like the Markdown section links but match to section
+headings preceded by asterisks rather than hash marks. So to jump back to
+the Org Mode section in this file, press the Action Key on "#Org-Mode".
+
+HTML hash-links are case-sensitive; other hash-links are not. Hash links
+typically use dashes in place of the spaces that referents may contain but if
+the link is enclosed in quotes, Hyperbole allows spaces to be used as well.
+In fact, it is best practice to always enclose hash-style links in quotes so
+Hyperbole can distinguish them from other similar looking constructs, such as
+social media hashtags (see "#Social Media Hashtags and Usernames").
+
*** Path Suffixes and Variables
Most file path buttons directly name their associated files in full, but
@@ -332,8 +374,8 @@ files and directories, then remote pathnames of the form:
will be recognized by Hyperbole.
Once you have Tramp configured for loading and are on the Internet, you can
-click on any of the following to browse the contents of the Hyperbole
-distribution:
+click on any of the following to jump to the ftp site of Hyperbole tarball
+distributions:
"/address@hidden:/pub/gnu/hyperbole/"
ftp.gnu.org:/pub/gnu/hyperbole/
@@ -635,7 +677,7 @@ remember a Hyperbole term? Check out the Hyperbole Manual
<(glossary)>.
Here is a <(keyboard macro)> button. It displays documentation for the
first Emacs Lisp function that follows it, e.g. (hbut:report). You can see
-that a button label can consist of a number of words, up to a set <(maximum
+that a button label may consist of many characters, up to a set <(maximum
length)>.
A <(shell command)> button can do many things, such as display the length of
@@ -653,6 +695,9 @@ advantage of this feature. Note how a separate window is
used when you
activate file link buttons. Most basic Hyperbole action types display their
results in this manner.
+You can create buttons that run specific web searches such as a Wikipedia
+query on an <(electric car)> with the `link-to-web-search' action type.
+
You can make a button an alias for another by using the `link-to-ebut'
action type. This <(factorial alias)> button does whatever the earlier
<(factorial)> button does.
diff --git a/HY-ABOUT b/HY-ABOUT
index 7eb38da..00cd435 100644
--- a/HY-ABOUT
+++ b/HY-ABOUT
@@ -1,7 +1,7 @@
ABOUT GNU HYPERBOLE
Designed and Written by Bob Weiner
https://www.gnu.org/software/hyperbole/
- Version 6.0.1
+ Version 6.0.2
GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
an efficient and programmable hypertextual information management
diff --git a/HY-ANNOUNCE b/HY-ANNOUNCE
index fdfcdf7..b3a88bb 100644
--- a/HY-ANNOUNCE
+++ b/HY-ANNOUNCE
@@ -1,17 +1,21 @@
- ANNOUNCE: GNU Hyperbole 6.0.1 for Emacs 25 is released
+ ANNOUNCE: GNU Hyperbole 6.0.2 for Emacs 24.4 to 25 is released
GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is an
amazing programmable hypertextual information management system implemented as
-a GNU Emacs package. It works well on GNU Emacs 24.4 or above. People who get
-used to Hyperbole find it helps them so much that they prefer never to use
-Emacs without it.
+a GNU Emacs package. This is the second public release in 2016. Hyperbole has
+been greatly expanded and modernized for use with the latest Emacs 25
+releases; it supports GNU Emacs 24.4 or above. It contains an extensive set
+of improvements that can greatly boost your day-to-day productivity with Emacs
+and your ability to manage information stored across many different machines
+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
@@ -21,12 +25,6 @@ point-and-click access to World-Wide Web URLs, Info manuals,
ftp archives, etc.
The Hyperbole wiki page, "https://www.emacswiki.org/emacs/Hyperbole", explains
the many ways it differs from and is complementary to Org mode.
-Version 6.0.1 is the first public release for any modern version of Emacs and
-has been tested throughout its development with Emacs version 25. It contains
-an extensive set of improvements that can greatly boost your day-to-day
-productivity with Emacs and your ability to manage information stored across
-many different machines on the internet.
-
Instructions follow on how to download, install and utilize GNU Hyperbole as an
Emacs package. These are followed by What's New with Hyperbole in 2016.
@@ -35,9 +33,12 @@ it for the Free Software Foundation. It includes an
interactive demo to
introduce you to its features and a detailed reference manual.
===========================================================================
-* About
+* About
===========================================================================
+http://git.savannah.gnu.org/cgit/hyperbole.git/tree/man/im contains a number
+of screenshots of Hyperbole and its menus.
+
GNU Hyperbole consists of five parts:
* Buttons and Smart Keys
@@ -95,7 +96,22 @@ The GNU Hyperbole project home page gives a more extensive
description:
"https://www.gnu.org/software/hyperbole/".
===========================================================================
-* Package Installation
+* Browsing the Source
+===========================================================================
+
+To explore the Hyperbole source code rather than installing it for use,
+download a tar.gz source archive from either:
+
+ ftp://ftp.gnu.org/gnu/hyperbole/
+
+or
+
+ http://ftpmirror.gnu.org/hyperbole/
+
+which will find the closest mirror of the GNU ftp site and show it to you.
+
+===========================================================================
+* Package Installation
===========================================================================
Once you have Emacs set up at your site, GNU Hyperbole may be
@@ -117,7 +133,7 @@ lines to your personal Emacs initialization file, typically
"~/.emacs".
(setq package-enable-at-startup nil) ;; Prevent double loading of libraries
(package-initialize)
(unless (package-installed-p 'hyperbole)
- (package-refresh-contents)
+ (package-refresh-contents)
(package-install 'hyperbole))
(require 'hyperbole)
@@ -126,7 +142,7 @@ your version of Emacs. You may see a bunch of compilation
warnings but these
can be safely ignored.
===========================================================================
-* Invocation
+* Invocation
===========================================================================
Once Hyperbole has been installed for use at your site and loaded into your
@@ -155,7 +171,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
@@ -175,21 +194,21 @@ wherever the Hyperbole package directory is on your
system; often this is:
"~/.emacs.d/elpa/hyperbole-${hyperb:version}/".
===========================================================================
-* User Quotes
+* User Quotes
===========================================================================
*** MAN I love Hyperbole!!! Wow! ***
- -- Ken Olstad
- Cheyenne Software, Inc.
+ -- Ken Olstad
+ Cheyenne Software, Inc.
-------
I *love* koutlines.
- -- Bob Glickstein
- Z-Code Software Corporation
+ -- Bob Glickstein
+ Z-Code Software Corporation
-------
@@ -206,8 +225,8 @@ wherever the Hyperbole package directory is on your system;
often this is:
products I have ever come across. It is certainly the one which has made
the biggest improvement in my personal productivity.
- -- Chris Nuzum
- Co-founder, Traction Software, Inc.
+ -- Chris Nuzum
+ Co-founder, Traction Software, Inc.
-------
@@ -224,7 +243,7 @@ wherever the Hyperbole package directory is on your system;
often this is:
our internal web for others to see.
-- Farzin Guilak
- Protocol Systems, Inc., Engineer
+ Protocol Systems, Inc., Engineer
-------
@@ -242,8 +261,8 @@ wherever the Hyperbole package directory is on your system;
often this is:
4) The Hyperbole Koutliner, which I find a very useful tool. I've
implemented Emacspeak extensions to support it.
- -- TV Raman
- Google Inc.
+ -- TV Raman
+ Google Inc.
-------
@@ -265,8 +284,8 @@ wherever the Hyperbole package directory is on your system;
often this is:
that do various little things, and I index saved mail messages by putting
explicit link-to-mail buttons in an outline file.
- -- Ken Olstad
- Cheyenne Software, Inc.
+ -- Ken Olstad
+ Cheyenne Software, Inc.
-------
@@ -302,8 +321,8 @@ wherever the Hyperbole package directory is on your system;
often this is:
folders, saved newsgroup conversation threads, online note-taker,
emacs-command invocations, etc.
- -- Dadong Wan
- University of Hawaii
+ -- Dadong Wan
+ University of Hawaii
-------
@@ -315,37 +334,142 @@ wherever the Hyperbole package directory is on your
system; often this is:
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.
- -- Mark Eichin
- Cygnus Support
+ -- Mark Eichin
+ Cygnus Support
-------
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.
- -- Jeff Fried
- Informix
+ -- Jeff Fried
+ Informix
-------
The Hyperbole system provides a nice interface to exploring corners of
Unix that I didn't know existed before.
- -- Craig Smith
+ -- Craig Smith
===========================================================================
-* What's New in GNU Hyperbole
+* What's New in GNU Hyperbole V6.0.2
===========================================================================
-NOTE: Version 6.0.1 is the first public release by the author, Bob Weiner,
+ BUTTONS
+
+ - pathname Implicit Button Type: generalized to handle hash-style links to
+ HTML files, to Github Markdown # sections and to Emacs outline *
+ sections. So an Action Key press on any of the following links displays
+ the link referent:
+ "man/hyperbole.html#Questions-and-Answers"
+ "README.md#why-was-hyperbole-developed"
+ "DEMO#HTML Markdown and Emacs Outline Hash Links"
+ Even links split across 2 lines like this now work: "DEMO#Social Media
+ Hashtags and Usernames", as long as point is on the first line.
+
+ Within HTML and Markdown files, in-file hash links without any file name
+ prefix work as well.
+
+ HTML hash-links are case-sensitive; other hash-links are not. Hash links
+ typically use dashes in place of the spaces that referents may contain,
+ but if the link is enclosed in quotes, Hyperbole allows spaces to be used
+ as well. In fact, it is best practice to always enclose hash-style links
+ in quotes so Hyperbole can distinguish them from other similar looking
+ constructs, such as social media hashtags (see "(hyperbole)Social
Media").
+
+ Pathnames surrounded by literal non-ASCII quote marks now work as well.
+ For example, ‘http://ftp.gnu.org/gnu/hyperbole/’.
+
+ - New Implicit Button Type, markdown-internal-link, displays any in-file
+ Markdown link referent, aside from pathnames and urls. Together with
+ other types, all Markdown links can now be followed by the Action Key.
+
+ - social-reference Implicit Button Type: Disabled this type within quoted
+ strings (all modes) and within parentheses (markdown-mode), so in-file
+ hash link references are not matched as social hash tags. Made the list
+ of modes a variable, hibtypes-social-inhibit-modes.
+
+ - New link-to-web-search Action Type: Allows global and explicit buttons
+ to link to specific web term searches from `hyperbole-web-search-alist'.
+
+ - org-mode Implicit Button Type: Improved to invoke org-meta-return when
+ not on an Org link or outline heading.
+
+ DOCUMENTATION
+
+ - Added pointer to HyControl video and {C-c \} binding which invokes
+ HyControl window control.
+
+ - README File: New Org-mode user testimonial.
+
+ - DEMO File: Added description and exercise using the new Find/Web menu.
+
+ - Added README.md.html introduction with images combining README, INSTALL
+ and HY-ABOUT information.
+
+ - Full set of hand-written changes are now in the file "Changes". The
+ former name, ChangeLog, is now auto-generated from the version controlled
+ 'git log' but not as complete.
+
+ KEYS
+
+ - New variables, action-key-eol-function and assist-key-eol-function, used
+ to control what the Action and Assist Keys do at the end of a line.
+ Default behaviors remain as before but now one can set these to do
+ something other than scrolling, if desired. See "(hyperbole)Smart Key -
+ Smart Scrolling"
+
+ - When in HyControl, pressing {ESC} now quits in addition to {q}.
+
+ MENUS
+
+ - New submenu, Find/Web, for quick access to major web search engines.
+ The Find/Web menu looks like this:
+ Web> Amazon Bing Dictionary Elisp Facebook Google Hub(git) Images Maps
RFCs StackOverflow Twitter Wikipedia Youtube
+
+ Hyperbole binds the key {C-c /} for quick access to this menu, if it is
+ not already bound prior to Hyperbole's initialization. The
+ Cust/Web-Search menu, {C-h h c w}, sets the option,
+ hyperbole-web-search-browser-function, which determines whether web
+ search results are displayed within Emacs or with an external web
+ browser. A short video introduction to the Find/Web menu may be found at
+ https://youtu.be/8lMlJed0-OM.
+
+ Advanced users can change the search engines listed in the Find/Web menu
+ with M-x customize-variable RET hyperbole-web-search-alist RET. Changes
+ are automatically reflected in the Hyperbole menus once applied.
+ Remember each search engine name must begin with a unique letter and each
+ URL must have a %s format field indicating where to place the web search
+ term when a search is performed. See "(hyperbole)Web Search Engines".
+
+===========================================================================
+* V6.0.0 - V6.0.1
+===========================================================================
+
+NOTE: Version 6.0.1 was the first public release by the author, Bob Weiner,
since version 4.18. All version 5 releases made this year were test releases,
so you should look through all of the V5 news items to understand all that is
new in V6 as well. In other words, all news items listed below are new for
2016.
-===========================================================================
-* V6.0.0 - V6.0.1
-===========================================================================
+ BUTTONS
+
+ - New implicit button type for social media hashtag or username
+ references, social-reference. Action key activation displays
+ the web page associated with the hashtag or username. References
+ can look like #hashtag or @username for Twitter references.
+ fb#hashtag or address@hidden for Facebook references or
+ in#hashtag or address@hidden for Instagram references.
+ See the new file "hib-social.el" for more information.
+
+ DOCUMENTATION
+
+ - The introductory parts of the manual have been improved and the flow
+ from section to section is better. Added menu key sequences to
+ "(hyperbole)Suggestion or Bug Reporting". Expanded and added
+ instructions on using the customize interface to change the functions
+ run by Smart Key modeline clicks. See "(hyperbole)Smart Key Modeline".
HYROLO
@@ -376,6 +500,11 @@ new in V6 as well. In other words, all news items listed
below are new for
for details on the customization system and "(hyperbole)Configuration"
for Hyperbole specifics.
+ - hsettings.el is now included in the Hyperbole package rather than
+ generated (formerly called hsite.el). Use the Hyperbole customization
+ variables to change anything in there rather than editing the file
+ manually as before.
+
- Renamed any Hyperbole hook variables that had a colon in their names to
use a hyphen instead.
@@ -389,7 +518,7 @@ new in V6 as well. In other words, all news items listed
below are new for
to begin with hywconfig- and the library is now called hywconfig.el.
===========================================================================
-* V5.15
+* V5.15
===========================================================================
BUTTONS
@@ -484,7 +613,7 @@ new in V6 as well. In other words, all news items listed
below are new for
navigate and quit from menus with just the Action Mouse Key.
===========================================================================
-* V5.13 and V5.14
+* V5.13 and V5.14
===========================================================================
BUTTONS
@@ -495,10 +624,10 @@ new in V6 as well. In other words, all news items listed
below are new for
This works for the GNU Hyperbole issue tracker as well as many other GNU
projects. All of these button formats may be embedded within any text:
- #id-number
- bug#id-number, bug# id-number, bug #id-number or bug id-number
- bug?attr1=val1&attr2=val2&attr3=val3
- bug#id-number?attr1=val1&attr2=val2&attr3=val3
+ #id-number
+ bug#id-number, bug# id-number, bug #id-number or bug id-number
+ bug?attr1=val1&attr2=val2&attr3=val3
+ bug#id-number?attr1=val1&attr2=val2&attr3=val3
Note that `issue' or `debbugs' may be used in place of `bug'.
@@ -550,14 +679,14 @@ new in V6 as well. In other words, all news items listed
below are new for
the file formats supported by the default setting of the
`hpath:internal-display-alist' variable.
- Added sections "(hyperbole)Smart Key Modifiers" and
- "(hyperbole)Smart Key Modeline".
+ "(hyperbole)Smart Key Modeline".
- Added a "(hyperbole)Glossary" entry for Chord Keyboard.
- In "(hyperbole)Smart Key Thing Selection", added documentation of the
{C-c RET} key for syntactical region marking and the {C-c .} key for
delimited thing jumping between start and end.
- In the Cust/ menu section of "(hyperbole)Menus" which lists all
- Hyperbole key bindings, indicated which keys are bound only if not
- bound prior to loading Hyperbole.
+ Hyperbole key bindings, indicated which keys are bound only if not
+ bound prior to loading Hyperbole.
HYCONTROL
@@ -621,7 +750,7 @@ new in V6 as well. In other words, all news items listed
below are new for
===========================================================================
-* V5.12
+* V5.12
===========================================================================
BUTTONS
@@ -720,7 +849,7 @@ new in V6 as well. In other words, all news items listed
below are new for
its format will automatically be handled by the rolo.
===========================================================================
-* V5.11
+* V5.11
===========================================================================
BUTTONS
@@ -809,7 +938,7 @@ new in V6 as well. In other words, all news items listed
below are new for
commands.
===========================================================================
-* V5.10
+* V5.10
===========================================================================
EMACS SUPPORT
@@ -887,7 +1016,7 @@ new in V6 as well. In other words, all news items listed
below are new for
See the GNU Hyperbole Manual for its usage.
===========================================================================
-* V5.09
+* V5.09
===========================================================================
FRAMES
@@ -974,7 +1103,7 @@ new in V6 as well. In other words, all news items listed
below are new for
===========================================================================
-* V5.08
+* V5.08
===========================================================================
DOCUMENTATION
@@ -1010,7 +1139,7 @@ new in V6 as well. In other words, all news items listed
below are new for
mouse button do the same thing. Try it, you'll like it.
===========================================================================
-* V5.07
+* V5.07
===========================================================================
EMACS VERSIONS
diff --git a/HY-NEWS b/HY-NEWS
index a681edd..e9ad7ce 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -3,23 +3,114 @@
(See "ChangeLog" for more complete details of changes.)
-NOTE: Version 6.0.1 is the first public release by the author since version
-4.18. All version 5 releases were test releases, so all V5 and V6 features
-are new in 2016 and you should look through them all.
+===========================================================================
+* V6.0.2
+===========================================================================
+
+ BUTTONS
+
+ - pathname Implicit Button Type: generalized to handle hash-style links to
+ HTML files, to Github Markdown # sections and to Emacs outline *
+ sections. So an Action Key press on any of the following links displays
+ the link referent:
+ "man/hyperbole.html#Questions-and-Answers"
+ "README.md#why-was-hyperbole-developed"
+ "DEMO#HTML Markdown and Emacs Outline Hash Links"
+ Even links split across 2 lines like this now work: "DEMO#Social Media
+ Hashtags and Usernames", as long as point is on the first line.
+
+ Within HTML and Markdown files, in-file hash links without any file name
+ prefix work as well.
+
+ HTML hash-links are case-sensitive; other hash-links are not. Hash links
+ typically use dashes in place of the spaces that referents may contain,
+ but if the link is enclosed in quotes, Hyperbole allows spaces to be used
+ as well. In fact, it is best practice to always enclose hash-style links
+ in quotes so Hyperbole can distinguish them from other similar looking
+ constructs, such as social media hashtags (see "(hyperbole)Social
Media").
+
+ Pathnames surrounded by literal non-ASCII quote marks now work as well.
+ For example, ‘http://ftp.gnu.org/gnu/hyperbole/’.
+
+ - New Implicit Button Type, markdown-internal-link, displays any in-file
+ Markdown link referent, aside from pathnames and urls. Together with
+ other types, all Markdown links can now be followed by the Action Key.
+
+ - social-reference Implicit Button Type: Disabled this type within quoted
+ strings (all modes) and within parentheses (markdown-mode), so in-file
+ hash link references are not matched as social hash tags. Made the list
+ of modes a variable, hibtypes-social-inhibit-modes.
+
+ - New link-to-web-search Action Type: Allows global and explicit buttons
+ to link to specific web term searches from `hyperbole-web-search-alist'.
+
+ - org-mode Implicit Button Type: Improved to invoke org-meta-return when
+ not on an Org link or outline heading.
+
+ DOCUMENTATION
+
+ - Added pointer to HyControl video and {C-c \} binding which invokes
+ HyControl window control.
+
+ - README File: New Org-mode user testimonial.
+
+ - DEMO File: Added description and exercise using the new Find/Web menu.
+
+ - Added README.md.html introduction with images combining README, INSTALL
+ and HY-ABOUT information.
+
+ - Full set of hand-written changes are now in the file "Changes". The
+ former name, ChangeLog, is now auto-generated from the version controlled
+ 'git log' but not as complete.
+
+ KEYS
+
+ - New variables, action-key-eol-function and assist-key-eol-function, used
+ to control what the Action and Assist Keys do at the end of a line.
+ Default behaviors remain as before but now one can set these to do
+ something other than scrolling, if desired. See "(hyperbole)Smart Key -
+ Smart Scrolling"
+
+ - When in HyControl, pressing {ESC} now quits in addition to {q}.
+
+ MENUS
+
+ - New submenu, Find/Web, for quick access to major web search engines.
+ The Find/Web menu looks like this:
+ Web> Amazon Bing Dictionary Elisp Facebook Google Hub(git) Images Maps
RFCs StackOverflow Twitter Wikipedia Youtube
+
+ Hyperbole binds the key {C-c /} for quick access to this menu, if it is
+ not already bound prior to Hyperbole's initialization. The
+ Cust/Web-Search menu, {C-h h c w}, sets the option,
+ hyperbole-web-search-browser-function, which determines whether web
+ search results are displayed within Emacs or with an external web
+ browser. A short video introduction to the Find/Web menu may be found at
+ https://youtu.be/8lMlJed0-OM.
+
+ Advanced users can change the search engines listed in the Find/Web menu
+ with M-x customize-variable RET hyperbole-web-search-alist RET. Changes
+ are automatically reflected in the Hyperbole menus once applied.
+ Remember each search engine name must begin with a unique letter and each
+ URL must have a %s format field indicating where to place the web search
+ term when a search is performed. See "(hyperbole)Web Search Engines".
===========================================================================
* V6.0.1
===========================================================================
+NOTE: Version 6.0.1 is the first public release by the author since version
+4.18. All version 5 releases were test releases, so all V5 and V6 features
+are new in 2016 and you should look through them all.
+
BUTTONS
- - New implicit button type for social media hashtag or username
- references, social-reference. Action key activation displays
- the web page associated with the hashtag or username. References
- can look like #hashtag or @username for Twitter references.
- fb#hashtag or address@hidden for Facebook references or
- in#hashtag or address@hidden for Instagram references.
- See the new file "hib-social.el" for more information.
+ - New Implicit Button Type, social-reference: for social media hashtag or
+ username references, social-reference. Action key activation
+ displays the web page associated with the hashtag or username.
+ References can look like #hashtag or @username for Twitter
+ references. fb#hashtag or address@hidden for Facebook references
+ or in#hashtag or address@hidden for Instagram references. See
+ the new file "hib-social.el" for more information.
DOCUMENTATION
@@ -66,7 +157,7 @@ are new in 2016 and you should look through them all.
options. Use {M-x customize-browse RET} and find the Hyperbole group
under Applications. Hyperbole's options are divided into logical
subgroups such as Rolo and Koutliner. See "(emacs)Easy Customization"
- for details on the customization system and "(hyperbole)Configuration"
+ for details on the customization system and "(hyperbole)Customization"
for Hyperbole specifics.
- Renamed any Hyperbole hook variables that had a colon in their names
diff --git a/HY-WHY.kotl b/HY-WHY.kotl
index 3bdf057..6f3f0d0 100644
--- a/HY-WHY.kotl
+++ b/HY-WHY.kotl
@@ -4,13 +4,17 @@
1. Create a library of documents, link them on-the-fly and retrieve
any one at the touch of a button containing its short id.
- 2. Display and edit local or remote files and directories simply by
+ 2. Utilize a single key to follow URLs with section links, Markdown
+ links, Emacs outline heading links, Org mode links, file and
+ directory links and program identifier references.
+
+ 3. Display and edit local or remote files and directories simply by
pressing on their names. Hyperbole will automatically embed
certain key variables in link pathnames so that as these links
are moved from site to site and the variable values change at
each site, the links automatically maintain proper linkages.
- 3. Full-text search for any contact-related information across
+ 4. Full-text search for any contact-related information across
thousands of contacts in under a second. The fastest contact
manager you have ever used, with hierarchical entries so you can
easily find everyone on a particular team or within an
@@ -18,42 +22,42 @@
while still seeing name, phone number and email information.
Edit entries with a single key press.
- 4. Hyperbole has some radically cool ways to select regions of
+ 5. Hyperbole has some radically cool ways to select regions of
structured text or source code and to copy or move them between
buffers with a single mouse drag or two key presses. These
selectable things include: delimited pairs of (), @address@hidden, <>, []
and quote marks, source code functions, source code comments and
matching tag pairs in HTML and SGML modes.
- 5. Use the fantastic, auto-numbered Koutliner with per-item links
+ 6. Use the fantastic, auto-numbered Koutliner with per-item links
and rapidly changeable views.
- 6. Rapid control over what is displayed where in multiple windows
- and frames with Hyperbole' HyControl module.
+ 7. Rapid control over what is displayed where in multiple windows
+ and frames with the Hyperbole HyControl system.
- 6a. Use a quick mouse key press to scroll any window line to the
+ 7a. Use a quick mouse key press to scroll any window line to the
top or bottom of a window, to see exactly what you want on
screen.
- 6b. For each frame, store a series of window configurations
+ 7b. For each frame, store a series of window configurations
(layouts) that each allow for working with a set of specific
buffers, rapidly moving among them.
- 6c. Easily adjust the height and width of windows as needed.
+ 7c. Easily adjust the height and width of windows as needed.
- 6d. Quick clicks on different areas of a buffer's modeline will
+ 7d. Quick clicks on different areas of a buffer's modeline will
rotate through your working list of buffers, changing what
each window displays. A popup menu gives you quick access to
Hyperbole commands plus frame, window and buffer selection
and management commands. GNU documentation manuals may be
shown and navigated with a single mouse key.
- 6e. A single mouse drag swaps what is displayed in each of two
+ 7e. A single mouse drag swaps what is displayed in each of two
windows, even across frames.
"ben" ;; kvspec:current
-16 ;; id-counter
+18 ;; id-counter
alpha ;; label-type
4 ;; label-min-width
". " ;; label-separator
@@ -61,9 +65,11 @@ alpha ;; label-type
;; depth-first kcell attributes
[[0
- (creator "address@hidden" create-time "20160613:15:02:38" id-counter 16 file
"/Users/bk/sw-dev/emacs/hyperbole-5.12/HY-WHY.kotl")]
+ (creator nil create-time "20160806:03:21:53" id-counter 18 file
"/Users/bk/sw-dev/emacs/hyperbole-6.0.1/HY-WHY.kotl")]
[1
(creator "address@hidden" create-time "20160524:15:04:17" no-fill t)]
+ [17
+ (creator "address@hidden" create-time "20160809:03:31:21" no-fill t)]
[2
(creator "address@hidden" create-time "20160524:15:04:24" no-fill t)]
[9
@@ -84,4 +90,4 @@ alpha ;; label-type
(creator "address@hidden" create-time "20160530:15:10:41" no-fill t)]
[12
(creator "address@hidden" create-time "20160530:15:14:46" no-fill t)]
- nil nil nil nil nil]
+ nil nil nil nil nil nil]
diff --git a/INSTALL b/INSTALL
index 19f4357..47c2e9e 100644
--- a/INSTALL
+++ b/INSTALL
@@ -12,6 +12,21 @@
# This file is part of GNU Hyperbole.
===========================================================================
+* Browsing the Source
+===========================================================================
+
+To explore the Hyperbole source code rather than installing it for use,
+download a tar.gz source archive from either:
+
+ ftp://ftp.gnu.org/gnu/hyperbole/
+
+or
+
+ http://ftpmirror.gnu.org/hyperbole/
+
+which will find the closest mirror of the GNU ftp site and show it to you.
+
+===========================================================================
* Installation
===========================================================================
@@ -79,7 +94,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..7727f20 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -10,9 +10,10 @@ 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
+Changes - Summary of changes in recent GNU Hyperbole releases
--- DOCUMENTATION ---
dir - GNU Hyperbole Info directory tree entry
@@ -91,5 +92,5 @@ smart-clib-sym - Test whether symbol appears within a
set of C libraries
--- EXTERNAL SYSTEM ENCAPSULATIONS ---
hsys-org.el - GNU Hyperbole support for Emacs Org mode links
-hsys-w3.el - GNU Hyperbole support for Emacs W3 World-Wide Web (WWW)
browsing
+hsys-www.el - GNU Hyperbole support for Emacs W3 World-Wide Web (WWW)
browsing
diff --git a/Makefile b/Makefile
index ca13f08..a668fed 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:
#
@@ -50,7 +52,7 @@
# This ver setup won't work under any make except GNU make, so set it manually.
#HYPB_VERSION = "`head -3 hversion.el | tail -1 | sed -e 's/.*|\(.*\)|.*/\1/'`"
-HYPB_VERSION = 6.0.1
+HYPB_VERSION = 6.0.2
# Emacs executable used to byte-compile .el files into .elc's.
# Possibilities include: emacs, infodock, xemacs, etc.
@@ -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)
@@ -138,7 +143,7 @@ EL_COMPILE = hact.el hactypes.el hargs.el hbdata.el
hbmap.el hbut.el \
hib-social.el hibtypes.el \
hinit.el hload-path.el hlvar.el hmail.el hmh.el hmoccur.el
hmouse-info.el \
hmouse-drv.el hmouse-key.el hmouse-mod.el hmouse-sh.el
hmouse-tag.el \
- hpath.el hrmail.el hsettings.el hsmail.el hsys-org.el hsys-w3.el
htz.el \
+ hpath.el hrmail.el hsettings.el hsmail.el hsys-org.el hsys-www.el
htz.el \
hycontrol.el hui-jmenu.el hui-menu.el hui-mini.el hui-mouse.el
hui-select.el \
hui-window.el hui.el hvar.el hversion.el hvm.el hypb.el
hyperbole.el \
hyrolo-logic.el hyrolo-menu.el hyrolo.el hywconfig.el set.el
@@ -153,7 +158,7 @@ ELC_COMPILE = hactypes.elc hibtypes.elc hib-debbugs.elc
hib-doc-id.elc hib-kbd.
hargs.elc hbdata.elc hbmap.elc hbut.elc hgnus.elc hhist.elc \
hinit.elc hload-path.elc hlvar.elc hmail.elc hmh.elc hmoccur.elc
hmouse-info.elc \
hmouse-drv.elc hmouse-key.elc hmouse-mod.elc hmouse-sh.elc
hmouse-tag.elc \
- hpath.elc hrmail.elc hsettings.elc hsmail.elc hsys-org.elc
hsys-w3.elc htz.elc \
+ hpath.elc hrmail.elc hsettings.elc hsmail.elc hsys-org.elc
hsys-www.elc htz.elc \
hycontrol.elc hui-jmenu.elc hui-menu.elc hui-mini.elc
hui-mouse.elc hui-select.elc \
hui-window.elc hui.elc hvar.elc hversion.elc hvm.elc hypb.elc
hyperbole.elc \
hyrolo-logic.elc hyrolo-menu.elc hyrolo.elc hywconfig.elc set.elc
@@ -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:"
@@ -277,7 +297,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 42dda98..d8d1a31 100644
--- a/README
+++ b/README
@@ -28,6 +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.
@@ -36,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
@@ -92,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 b0b38ff..fd705ce 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# GNU Hyperbole - Version 6.0.1
+# GNU Hyperbole - Version 6.0.2
<!-- START doctoc generated TOC -->
**Table of Contents**
@@ -20,7 +20,7 @@
`Hyperbole`, 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.
-It's main distribution site is: <https://www.gnu.org/software/hyperbole/>.
+Its main distribution site is: <https://www.gnu.org/software/hyperbole/>.
It includes easy-to-use, powerful hypertextual button types without
the need to learn a markup language; a hierarchical, record-based
@@ -37,6 +37,21 @@ World-Wide Web URLs, Info manuals, ftp archives, etc.
The [Hyperbole wiki page](https://www.emacswiki.org/emacs/Hyperbole)
explains the many ways it differs from and is complementary to Org mode.
+![Hyperbole screenshot of the Koutliner, DEMO file and
HyRolo](man/im/hyperbole-cv.png)
+
+## Browsing the Source
+
+To explore the Hyperbole source code rather than installing it for use,
+download a tar.gz source archive from either:
+
+ - <ftp://ftp.gnu.org/gnu/hyperbole/>
+
+or
+
+ - <http://ftpmirror.gnu.org/hyperbole/>
+
+which will find the closest mirror of the GNU ftp site and show it to you.
+
## Installation
Once you have Emacs set up at your site, GNU Hyperbole may be
@@ -83,6 +98,8 @@ You can invoke Hyperbole commands in one of three ways:
use the Hyperbole menu on your menubar;
+ ![Hyperbole Menubar Menu](man/im/menu-hyperbole.png)
+
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}
@@ -94,18 +111,25 @@ You can invoke Hyperbole commands in one of three ways:
Use {C-h h d d} for an interactive demonstration of standard Hyperbole
button capabilities.
+![Hyperbole screenshot of the DEMO](man/im/demo.png)
+
{C-h h k e} offers a interactive demonstration of the Koutliner,
Hyperbole's multi-level autonumbered hypertextual outliner.
+![Hyperbole screenshot of the Koutliner](man/im/koutliner.png)
+
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
-included in the "man/" subdirectory of the Hyperbole package directory in
-four forms:
+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
@@ -154,6 +178,8 @@ Hyperbole consists of five parts:
has a menu interface, which may be operated from the keyboard or
the mouse.
+ ![HyRolo Menubar Menu](man/im/menu-rolo.png)
+
3. **Screen Control**: 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
@@ -333,6 +359,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
new file mode 100644
index 0000000..d182443
--- /dev/null
+++ b/README.md.html
@@ -0,0 +1,985 @@
+<!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="#browsing-the-source">Browsing the Source</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="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
+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="browsing-the-source">Browsing the Source</h2>
+
+<p>To explore the Hyperbole source code rather than installing it for use,
+ download a tar.gz source archive from either:</p>
+
+<ul><li><a
href="ftp://ftp.gnu.org/gnu/hyperbole/">ftp://ftp.gnu.org/gnu/hyperbole/</a></li></ul>
+
+<p>or</p>
+
+<ul><li><a
href="http://ftpmirror.gnu.org/hyperbole/">http://ftpmirror.gnu.org/hyperbole/</a></li></ul>
+
+<p>which will find the closest mirror of the GNU ftp site and show it to
you.</p>
+
+<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
+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="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
+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="details">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="files">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="programmer-quick-reference">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-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="user-quotes">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>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
+ 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="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
+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/hactypes.el b/hactypes.el
index 171743c..29cf6a7 100644
--- a/hactypes.el
+++ b/hactypes.el
@@ -16,7 +16,7 @@
;;; ************************************************************************
(eval-and-compile (mapc #'require '(hbut hpath hargs hmail)))
-(eval-when-compile (require 'comint))
+(eval-when-compile (mapc #'require '(comint hsettings)))
;;; ************************************************************************
;;; Standard Hyperbole action types
@@ -138,7 +138,7 @@ kill the last output to the shell buffer before executing
SHELL-CMD."
(comint-delete-output))
(insert shell-cmd)
(comint-send-input)
- (show-output-from-shell)
+ (comint-show-output)
(or internal-cmd (scroll-down 1)))
(select-window owind))))
@@ -454,6 +454,14 @@ Returns t if found, nil if not."
nodename)))
(hact 'link-to-file buffer-file-name node-point)))
+(defact link-to-web-search (service-name search-term)
+ "Searches web SERVICE-NAME for SEARCH-TERM.
+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 (hyperbole-read-web-search-arguments))
+ (hyperbole-web-search service-name search-term))
+
(defact man-show (topic)
"Displays man page on TOPIC, which may be of the form <command>(<section>).
If using the Superman manual entry package, see the documentation for
diff --git a/hargs.el b/hargs.el
index 9a8e3cf..61d0415 100644
--- a/hargs.el
+++ b/hargs.el
@@ -26,6 +26,7 @@
;;; ************************************************************************
(require 'hpath)
+(require 'hypb)
(require 'set)
;;; ************************************************************************
@@ -91,7 +92,7 @@ interactive form or takes no arguments."
(defun hargs:delimited (start-delim end-delim
&optional start-regexp-flag end-regexp-flag
list-positions-flag)
- "Returns a single line, delimited string that point is within, or nil.
+ "Returns a normalized, single line, delimited string that point is within,
or nil.
START-DELIM and END-DELIM are strings that specify the argument
delimiters. With optional START-REGEXP-FLAG non-nil, START-DELIM is
treated as a regular expression. END-REGEXP-FLAG is similar.
@@ -115,7 +116,8 @@ With optional LIST-POSITIONS-FLAG, return list of
(string-matched start-pos end
(funcall end-search-func end-delim opoint t))
(setq start nil))
(when start
- (end-of-line) (setq limit (1+ (point)))
+ (forward-line 2)
+ (setq limit (point))
(goto-char opoint)
(and (funcall end-search-func end-delim limit t)
(setq end (match-beginning 0))
@@ -126,9 +128,10 @@ With optional LIST-POSITIONS-FLAG, return list of
(string-matched start-pos end
(setq end (1- end))
t)
(< start end)
- (if list-positions-flag
- (list (buffer-substring start end) start end)
- (buffer-substring start end)))))))
+ (let ((string (hypb:replace-match-string "[\n\r]\\s-*"
(buffer-substring start end) " " t)))
+ (if list-positions-flag
+ (list string start end)
+ string)))))))
(defun hargs:get (interactive-entry &optional default prior-arg)
"Prompts for an argument, if need be, from INTERACTIVE-ENTRY, a string.
@@ -301,7 +304,7 @@ Handles all of the interactive argument types that
`hargs:iform-read' does."
((hpath:at-p 'file))
;; Unquoted remote file name.
((hpath:is-p (hpath:remote-at-p) 'file))
- ;; Possibly non-existant file name
+ ;; Possibly non-existent file name
((hpath:at-p nil 'non-exist))
(no-default nil)
((buffer-file-name))
diff --git a/hib-social.el b/hib-social.el
index acd0a9e..62e441d 100644
--- a/hib-social.el
+++ b/hib-social.el
@@ -29,6 +29,7 @@
(eval-when-compile (require 'browse-url))
(require 'hbut)
+(require 'hargs)
;;; ************************************************************************
;;; Public variables
@@ -64,6 +65,9 @@
"Regular expression that matches a social media hashtag or username
reference.
See `ibtypes::social-reference' for format details.")
+(defvar hibtypes-social-inhibit-modes '(texinfo-mode para-mode)
+ "*List of major modes in which to inhibit any possible social media tag
matches.")
+
;;; ************************************************************************
;;; Public Button Types
;;; ************************************************************************
@@ -77,8 +81,17 @@ Reference format is:
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 not given, so #hashtag would be the same as twitter#hashtag.
+
+This will not match within any single line, single or
+double-quoted strings or within any buffer whose major mode is
+listed in `hibtypes-social-inhibit-modes'."
+ (when (and (not (or (memq major-mode hibtypes-social-inhibit-modes)
+ (hargs:delimited "\"" "\"")
+ (hargs:delimited "[\`\']" "\'" t)
+ ;; Avoid Markdown parenthesized hash links
+ (and (eq major-mode 'markdown-mode)
+ (hargs:delimited "(" ")"))))
(save-excursion
(if (looking-at "address@hidden:alnum:]]")
(skip-chars-backward "address@hidden:alnum:]"))
diff --git a/hibtypes.el b/hibtypes.el
index 89b8ee8..41ab6b0 100644
--- a/hibtypes.el
+++ b/hibtypes.el
@@ -75,10 +75,10 @@
(defib pathname ()
"Makes a valid pathname display the path entry.
-Also works for delimited and non-delimited remote pathnames and
-Texinfo @file{} entries. Emacs Lisp library files (filenames
-without any directory component that end in .el and .elc) are
-looked up using the `load-path' directory list.
+Also works for delimited and non-delimited remote pathnames, Texinfo @file{}
+entries, and hash-style link references to HTML, Markdown or Emacs outline
+headings. Emacs Lisp library files (filenames without any directory component
+that end in .el and .elc) are looked up using the `load-path' directory list.
See `hpath:at-p' function documentation for possible delimiters.
See `hpath:suffixes' variable documentation for suffixes that are added to or
@@ -234,9 +234,7 @@ constituent character, and must not be in buffers whose
names begin with a
buffer-file-name
(let ((chr (aref (buffer-name) 0)))
(not (or (eq chr ?\ ) (eq chr ?*))))
- (not (memq major-mode '(c-mode objc-mode c++-mode java-mode)))
- ;; Force [PPG-sw-process-id], if defined, to take precedence.
- (not (htype:names 'ibtypes 'ppg-sw-process))
+ (not (memq major-mode '(c-mode objc-mode c++-mode java-mode
markdown-mode)))
(let* ((ref-and-pos (hbut:label-p t "[" "]" t))
(ref (car ref-and-pos)))
(and ref (eq ?w (char-syntax (aref ref 0)))
@@ -244,6 +242,43 @@ constituent character, and must not be in buffers whose
names begin with a
(hact 'annot-bib ref))))))
;;; ========================================================================
+;;; Displays in-file Markdown link referents.
+;;; ========================================================================
+
+(defib markdown-internal-link ()
+ "Displays any in-file Markdown link referent. Pathnames and urls are
handled elsewhere."
+ (when (and (eq major-mode 'markdown-mode)
+ (not (hpath:www-at-p)))
+ (let ((opoint (point))
+ npoint)
+ (cond ((markdown-link-p)
+ (condition-case ()
+ ;; Follows a reference link to its referent.
+ (progn (markdown-jump)
+ (when (/= opoint (point))
+ (setq npoint (point))
+ (goto-char opoint)
+ (hact 'link-to-file buffer-file-name npoint)))
+ ;; May be on the name of an inline link, so move to the
+ ;; link itself and follow that.
+ (error
+ (skip-chars-forward "^\]\[()")
+ (if (looking-at "\][\[\(]")
+ (progn (skip-chars-forward "\]\[\(")
+ ;; Leave point on the link even if not activated
+ ;; here, so that code elsewhere activates it.
+ (if (and (markdown-link-p)
+ (not (or (hpath:www-at-p) (hpath:at-p))))
+ (progn (hpath:display-buffer (current-buffer))
+ (hact 'markdown-follow-link-at-point))))
+ (goto-char opoint)
+ nil))))
+ ((markdown-wiki-link-p)
+ (hpath:display-buffer (current-buffer))
+ (hact 'markdown-follow-wiki-link-at-point))))))
+
+
+;;; ========================================================================
;;; Summarizes an Internet rfc for random access browsing by section.
;;; ========================================================================
@@ -859,7 +894,7 @@ GNUS is a news and mail reader."
;;; Follows URLs by invoking a web browser.
;;; ========================================================================
-(require 'hsys-w3)
+(require 'hsys-www)
;;; ========================================================================
;;; Displays Info nodes when double quoted "(file)node" button is activated.
diff --git a/hinit.el b/hinit.el
index 955716e..dd3acd2 100644
--- a/hinit.el
+++ b/hinit.el
@@ -29,26 +29,27 @@
;;; Public functions
;;; ************************************************************************
-(if (not (fboundp 'br-in-browser))
- ;; Then the OO-Browser is not loaded, so we can never be within the
- ;; browser. Define this as a dummy function that always returns nil
- ;; until the OO-Browser is ever loaded.
- (defun br-in-browser ()
- "Always returns nil since the OO-Browser is not loaded."
- nil))
+(unless (fboundp 'br-in-browser)
+ ;; Then the OO-Browser is not loaded, so we can never be within the
+ ;; browser. Define this as a dummy function that always returns nil
+ ;; until the OO-Browser is ever loaded.
+ (defun br-in-browser ()
+ "Always returns nil since the OO-Browser is not loaded."
+ nil))
;;;###autoload
(defun hyperb:init-menubar ()
- "Add a pulldown menu for Hyperbole, if appropriate."
+ "Add a pulldown menu for Hyperbole after Emacs is initialized."
(interactive)
- (if (not (featurep 'infodock))
- (progn
- ;; Initialize now for when this is loaded after startup.
- (and (or hyperb:emacs-p (and (boundp 'current-menubar) current-menubar))
- after-init-time
- (hyperbole-menubar-menu))
- ;; Initialize at startup. This really is needed.
- (add-hook 'after-init-hook #'hyperbole-menubar-menu))))
+ (unless (featurep 'infodock)
+ ;; Initialize now since Emacs startup has finished.
+ (if (and (or hyperb:emacs-p (and (boundp 'current-menubar)
current-menubar))
+ after-init-time)
+ (hyperbole-menubar-menu)
+ ;; Defer initialization until after Emacs startup. This really is
needed.
+ (add-hook 'after-init-hook #'hyperbole-menubar-menu))
+ ;; Avoid returning the large Hyperbole menu.
+ nil))
;;; ************************************************************************
;;; Menu Support Functions
diff --git a/hload-path.el b/hload-path.el
index 60df85e..db6b3c5 100644
--- a/hload-path.el
+++ b/hload-path.el
@@ -51,8 +51,11 @@
"Directory where the Hyperbole executable code is kept.
It must end with a directory separator character.")
-;; Add hyperb:dir to load-path so other Hyperbole libraries can be found.
-(add-to-list 'load-path hyperb:dir)
+;; Add hyperb:dir to load-path so other Hyperbole libraries can be
+;; found unless it is already there since the Emacs Package Manager
+;; may have already added it.
+(unless (member (directory-file-name hyperb:dir) load-path)
+ (add-to-list 'load-path hyperb:dir))
;;; ************************************************************************
;;; Koutliner mode and file suffix importation settings
@@ -62,7 +65,7 @@ It must end with a directory separator character.")
;; initializations.
(if hyperb:kotl-p
- (progn (add-to-list #'load-path (expand-file-name "kotl/" hyperb:dir))
+ (progn (add-to-list 'load-path (expand-file-name "kotl/" hyperb:dir))
;; Invoke kotl-mode for files ending in ".kotl". Also
;; allow ".kot" for DOS and Windows users.
(setq auto-mode-alist (cons '("\\.kotl$\\|\\.kot$" . kotl-mode)
diff --git a/hmouse-key.el b/hmouse-key.el
index e4850d3..f63735b 100644
--- a/hmouse-key.el
+++ b/hmouse-key.el
@@ -36,9 +36,8 @@
;; XEmacs and Emacs pre-load their mouse libraries, so
;; we shouldn't have to require them here.
(eval (cdr (assoc (hyperb:window-system)
- '(
- ("xterm" . (require 'x-mouse)) ; X
- ("next" . (load "eterm-fns" t)) ; NeXTstep
+ '(("xterm" . (require 'x-mouse)) ; X
+ ("next" . (load "eterm-fns" t)) ; NEXTSTEP
)))))
;;; ************************************************************************
diff --git a/hmouse-tag.el b/hmouse-tag.el
index fca6c8a..e41497e 100644
--- a/hmouse-tag.el
+++ b/hmouse-tag.el
@@ -857,18 +857,12 @@ Look for include file in `smart-asm-include-path' and add
suffix \".ins\" or
;; If path exists, display file
;;
(if path
- (if (and (file-readable-p path)
- (progn
- (hpath:find path)
- (cond ((featurep 'asm-mode) t)
- ((load "asm-mode" nil 'nomessage)
- (provide 'asm-mode))
- (t
- (beep)
- (message
- "(smart-asm-include-file): asm-mode
undefined")
- nil))))
- nil
+ (unless (and (file-readable-p path)
+ (progn
+ (hpath:find path)
+ (or (require 'asm-mode nil t)
+ (progn (message "(smart-asm-include-file):
asm-mode undefined")
+ nil))))
(beep)
(message "(smart-asm-include-file): `%s' unreadable" path))
(beep)
@@ -878,7 +872,6 @@ Look for include file in `smart-asm-include-path' and add
suffix \".ins\" or
(t (goto-char opoint)
nil))))
-
(defun smart-c-include-file ()
"If point is on an include file line, tries to display file.
Returns non-nil iff on an include file line, even if file is not found.
@@ -911,18 +904,10 @@ Look for include file in `smart-c-cpp-include-path' and
in directory list
(if (and (file-readable-p path)
(progn
(hpath:find path)
- (cond ((or (featurep 'cc-mode)
- (featurep 'c-mode))
- t)
- ((or (load "cc-mode" 'missing-ok 'nomessage)
- (load "c-mode" 'missing-ok 'nomessage))
- (provide 'c-mode))
- (t
- (beep)
- (message
- "(smart-c-include-file): c-mode undefined")
- nil
- ))))
+ (or (require 'cc-mode nil t)
+ (progn (beep)
+ (message "(smart-c-include-file): c-mode
undefined")
+ nil))))
(smart-cc-mode-initialize)
(beep)
(message "(smart-c-include-file): `%s' unreadable" path))
diff --git a/hpath.el b/hpath.el
index edf7119..695a079 100644
--- a/hpath.el
+++ b/hpath.el
@@ -17,6 +17,7 @@
;;; ************************************************************************
(require 'hversion) ;; for (hyperb:window-system) definition
+(require 'hui-select) ;; for `hui-select-markup-modes'
(unless (fboundp 'br-in-browser)
;; Then the OO-Browser is not loaded, so we can never be within the
@@ -278,6 +279,40 @@ See the documentation for `hpath:url-regexp' for match
groupings to
use with string-match.")
;;; ************************************************************************
+;;; Private variables
+;;; ************************************************************************
+
+(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:markdown-anchor-id-pattern "^[ ]*%s: "
+ "Regexp matching a Markdown anchor id definition and containing a %s for
replacement of a specific anchor id.")
+
+(defconst hpath:markdown-section-pattern "^#+[ \t]+%s\\([ \t[:punct:]]*\\)$"
+ "Regexp matching a Markdown section header and containing a %s for
replacement of a specific section name.")
+
+(defconst hpath:markdown-suffix-regexp "\\.[mM][dD]"
+ "Regexp that matches to a Markdown file suffix.")
+
+(defconst hpath:markup-link-anchor-regexp
+ (concat "\\`\\(#?[^#]+\\)\\(#\\)\\([^\]\[#^{}<>\"`'\\\n\t\f\r]*\\)")
+ "Regexp that matches an markup filename followed by a hash (#) and an
optional in-file anchor name.")
+
+(defconst hpath:outline-section-pattern "^\*+[ \t]+%s\\([ \t[:punct:]]*\\)$"
+ "Regexp matching an Emacs outline section header and containing a %s for
replacement of a specific section 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
;;; ************************************************************************
@@ -459,7 +494,7 @@ double quotes, open and close single quote, whitespace, or
Texinfo file referenc
With optional NON-EXIST, nonexistent local paths are allowed. Absolute
pathnames must begin with a `/' or `~'."
(or (hargs:delimited "\"" "\"")
;; Filenames in Info docs or Python files
- (hargs:delimited "[\`\']" "\'" t)
+ (hargs:delimited "[`'‘]" "[`'’]" t t)
;; Filenames in TexInfo docs
(hargs:delimited "@file{" "}")
;; Any existing whitespace delimited filename at point.
@@ -531,12 +566,15 @@ display function to use. If no matches are found there,
`hpath:display-where-alist' is consulted using the optional argument,
DISPLAY-WHERE (a symbol) or if that is nil, the value of
`hpath:display-where', and the matching display function is used.
+
+Allows for hash-style link references to HTML, Markdown or Emacs outline
+headings of the form, <file>#<anchor-name>.
+
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 +583,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:markup-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 +615,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 +634,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 +642,44 @@ program)."
hpath:display-where-alist)
(assq 'other-window
hpath:display-where-alist))))
- filename)
+ path)
+ (if (or hash anchor) (hpath:to-markup-anchor hash
anchor))
t)))))))
+(defun hpath:to-markup-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)))
+ (cond ((memq major-mode hui-select-markup-modes)
+ ;; In HTML-like mode where link ids are case-sensitive.
+ (let ((opoint (point))
+ (case-fold-search))
+ (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 opoint)
+ (error "(hpath:to-markup-anchor): Anchor `%s' not found in
the visible buffer portion"
+ anchor))))
+ (t
+ (let ((opoint (point))
+ ;; Markdown or outline link ids are case
+ ;; insensitive and - characters are converted to
+ ;; spaces at the point of definition.
+ (case-fold-search t)
+ (anchor-name (subst-char-in-string ?- ?\ anchor)))
+ (goto-char (point-min))
+ (if (re-search-forward (format
+ (if (string-match
hpath:markdown-suffix-regexp buffer-file-name)
+ hpath:markdown-section-pattern
+ hpath:outline-section-pattern)
+ (regexp-quote anchor-name)) nil t)
+ (progn (forward-line 0)
+ (recenter 0))
+ (goto-char opoint)
+ (error "(hpath:to-markup-anchor): Section `%s' not found in
the visible buffer portion"
+ anchor-name))))))
+ (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
@@ -695,15 +775,15 @@ nonexistent local paths are allowed."
(let ((rtn-path path)
(suffix))
(and (stringp path)
- ;; Path may be a link reference with other components other than a
+ ;; Path may be a link reference with components other than a
;; pathname. These components always follow a comma or # symbol, so
;; strip them, if any, before checking path.
- (if (string-match "[ \t\n\r]*," path)
- (setq rtn-path (concat (substring path 0 (match-beginning 0))
- "%s" (substring path (match-beginning 0)))
- path (substring path 0 (match-beginning 0)))
+ (if (string-match "\\`[^#][^#,]*\\([ \t\n\r]*[#,]\\)" path)
+ (setq rtn-path (concat (substring path 0 (match-beginning 1))
+ "%s" (substring path (match-beginning 1)))
+ path (substring path 0 (match-beginning 1)))
(setq rtn-path (concat rtn-path "%s")))
- ;; If path is just a local HTML reference that begins with #,
+ ;; If path is just a local reference that begins with #,
;; prepend the file name to it.
(cond ((and buffer-file-name
;; ignore HTML color strings
@@ -712,7 +792,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) '(?/ ?~))
@@ -759,13 +839,14 @@ nonexistent local paths are allowed."
(file-directory-p path))
(t))))
(progn
- ;; Quote any but last %s within rtn-path.
+ ;; Quote any %s except for one at the end of the path
+ ;; part of rtn-path (immediately preceding a # or ,
+ ;; character or the end of string).
(setq rtn-path (hypb:replace-match-string "%s" rtn-path "%%s")
- rtn-path (hypb:replace-match-string "%%s\\'" rtn-path
"%s"))
+ rtn-path (hypb:replace-match-string
"%%s\\([#,]\\|\\'\\)" rtn-path "%s\\1"))
;; Return path if non-nil return value.
- (if (stringp suffix);; suffix could = t, which we ignore
- (if (string-match
- (concat (regexp-quote suffix) "%s") rtn-path)
+ (if (stringp suffix) ;; suffix could = t, which we ignore
+ (if (string-match (concat (regexp-quote suffix) "%s")
rtn-path)
;; remove suffix
(concat (substring rtn-path 0 (match-beginning 0))
(substring rtn-path (match-end 0)))
@@ -949,7 +1030,7 @@ to it."
(defun hpath:handle-urls ()
(let ((remote-fs-package (hpath:remote-available-p)))
(progn
- ;; www-url functions are defined in "hsys-w3.el".
+ ;; www-url functions are defined in "hsys-www.el".
(put 'expand-file-name remote-fs-package 'www-url-expand-file-name)
(put 'find-file-noselect remote-fs-package
'www-url-find-file-noselect)
;; Necessary since Dired overrides other file-name-handler-alist
@@ -1018,7 +1099,7 @@ If `/~' appears, all of FILENAME through that `/' is
discarded."
(remove-hook 'file-name-handler-alist
(cons hpath:remote-regexp 'tramp-file-name-handler))
- ;; www-url functions are defined in "hsys-w3.el".
+ ;; www-url functions are defined in "hsys-www.el".
(put 'expand-file-name 'tramp nil)
(put 'find-file-noselect 'tramp nil)
;; Necessary since Dired overrides other file-name-handler-alist
@@ -1113,7 +1194,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))
@@ -1135,10 +1217,10 @@ Returns \"anonymous\" if no default user is set."
(t "anonymous")))
(defun hpath:delete-trailer (string)
- "Return string minus any trailing .?#!*() characters."
+ "Return string minus any trailing .?#!*() or quoting characters."
(save-match-data
(if (and (stringp string) (> (length string) 0)
- (string-match "[.?#!*()]+\\'" string))
+ (string-match "[.?#!*()`'\"]+\\'" string))
(substring string 0 (match-beginning 0))
string)))
@@ -1261,21 +1343,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/hrmail.el b/hrmail.el
index 9216b54..cfab6d0 100644
--- a/hrmail.el
+++ b/hrmail.el
@@ -181,8 +181,7 @@ Returns t if successful, else nil."
;; Adjust the marker that points to the end of this message.
(set-marker (aref rmail-message-vector (1+ rmail-current-message))
(point))
- (hmail:msg-narrow)
- )
+ (hmail:msg-narrow))
(let ((old rmail-old-text))
;; Update the mode line.
(set-buffer-modified-p (buffer-modified-p))
diff --git a/hsettings.el b/hsettings.el
index 994cfaa..37a26cc 100644
--- a/hsettings.el
+++ b/hsettings.el
@@ -99,6 +99,75 @@ down a windowful."
;;
;; and Hyperbole should be loaded after this setting is made.
+;; 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-read-web-search-arguments (&optional service-name search-term)
+ "Read from the keyboard a list of (web-search-service-string
search-term-string) if not given as arguments."
+ (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))))
+ (list service-name search-term)))
+
+(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)
+ (cl-multiple-value-bind (service-name search-term)
+ (hyperbole-read-web-search-arguments service-name search-term)
+ (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'"
service-name))))
+
+(defcustom hyperbole-web-search-browser-function browse-url-browser-function
+ "*Function of one url argument called by any Hyperbole Find/Web search."
+ :type 'boolean
+ :group 'hyperbole-commands)
+
+(defcustom hyperbole-web-search-alist
+ '(("Amazon" . "http://www.amazon.com/s/field-keywords=%s")
+ ("Bing" . "http://www.bing.com/search?q=%s")
+ ;; Wikipedia Dictionary
+ ("Dictionary" . "https://en.wiktionary.org/wiki/%s")
+ ("Elisp" . "http://www.google.com/search?q=%s+filetype:el")
+ ;; Facebook Hashtags
+ ("Facebook" . "https://www.facebook.com/hashtag/%s")
+ ;; To search for a Facebook user, use "https://www.facebook.com/%s".
+ ("Google" . "http://www.google.com/search?q=%s")
+ ("Hub(git)" . "https://github.com/search?ref=simplesearch&q=%s")
+ ("Images" . "http://www.google.com/images?hl=en&q=%s")
+ ("Maps" . "http://maps.google.com/maps?q=%s")
+ ("RFCs" . "https://tools.ietf.org/html/rfc%s")
+ ("StackOverflow" . "https://stackoverflow.com/search?q=%s")
+ ("Twitter" . "https://twitter.com/search?q=%s")
+ ("Wikipedia" . "https://en.wikipedia.org/wiki/%s")
+ ("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 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)
+
;;; ************************************************************************
;;; GNU EMACS AND XEMACS CONFIGURATION
;;; ************************************************************************
diff --git a/hsmail.el b/hsmail.el
index 26ffeef..0bc6e76 100644
--- a/hsmail.el
+++ b/hsmail.el
@@ -33,23 +33,21 @@ for a comment.")
(unless (equal (nth 2 send-mail-function) '(smail:widen))
(error
"(hsmail): Set 'send-mail-function' to a symbol-name, not a
list, before load.")))
- (setq send-mail-function
- (list 'lambda nil '(smail:widen) (list send-mail-function))))
+ (setq send-mail-function `(lambda () (smail:widen)
(,send-mail-function))))
(error "(hsmail): Install an Emacs \"sendmail.el\" which includes
'send-mail-function'."))
(if (fboundp 'mail-prefix-region)
;;
;; For compatibility with rsw-modified sendmail.el.
(defvar mail-yank-hook
- (lambda ()
- ;; Set off original message.
- (mail-prefix-region (hypb:mark t) (point)))
+ ;; Set off original message.
+ (lambda () (mail-prefix-region (hypb:mark t) (point)))
"*Hook to run mail yank preface function.
Expects point and mark to be set to the region to preface.")
;;
;; Else for compatibility with Supercite and GNU Emacs.
;; If you create your own yank hook, set this variable rather than
- ;; 'mail-yank-hook' from above.
+ ;; `mail-yank-hook' from above.
(defvar mail-citation-hook nil
"Hook for modifying a citation just inserted in the mail buffer.
Each hook function can find the citation between (point) and (mark t),
@@ -96,7 +94,7 @@ message. If not given, 'smail:comment' is evaluated by
default."
"Widens outgoing mail buffer to include Hyperbole button data."
(if (fboundp 'mail+narrow) (mail+narrow) (widen)))
-;; Redefine this function from Emacs 19 "sendmail.el" to work with V18.
+;; Redefine this function from Emacs "sendmail.el" to work with supercite.
(defun mail-indent-citation ()
"Modify text just inserted from a message to be cited.
The inserted text should be the region.
@@ -104,24 +102,25 @@ When this function returns, the region is again around
the modified text.
Normally, indent each nonblank line `mail-indentation-spaces' spaces.
However, if `mail-yank-prefix' is non-nil, insert that prefix on each line."
- (let ((start (point)))
- ;; Don't ever remove headers if user uses Supercite package,
- ;; since he can set an option in that package to do
- ;; the removal.
- (or (hypb:supercite-p)
- (mail-yank-clear-headers start (hypb:mark t)))
- (if (null mail-yank-prefix)
- (indent-rigidly start (hypb:mark t) mail-indentation-spaces)
- (save-excursion
- (goto-char start)
- (while (< (point) (hypb:mark t))
+ ;; Don't ever remove headers if user uses Supercite package,
+ ;; since he can set an option in that package to do
+ ;; the removal.
+ (unless (hypb:supercite-p)
+ (mail-yank-clear-headers (region-beginning) (region-end)))
+ (if (null mail-yank-prefix)
+ (indent-rigidly (region-beginning) (region-end)
+ mail-indentation-spaces)
+ (save-excursion
+ (let ((end (set-marker (make-marker) (region-end))))
+ (goto-char (region-beginning))
+ (while (< (point) end)
(insert mail-yank-prefix)
(forward-line 1))))))
;; Redefine this function from "sendmail.el" to include Hyperbole button
;; data when yanking in a message and to highlight buttons if possible.
(defun mail-yank-original (arg)
- "Insert the message being replied to, if any.
+ "Insert the message being replied to, if any (in Rmail).
Puts point before the text and mark after.
Applies 'mail-citation-hook', 'mail-yank-hook' or 'mail-yank-hooks'
to text (in decreasing order of precedence).
@@ -129,54 +128,96 @@ Just \\[universal-argument] as argument means don't apply
hooks
and don't delete any header fields.
If supercite is in use, header fields are never deleted.
-Use (setq sc-nuke-mail-headers-p t) to have them removed."
+Use (setq sc-nuke-mail-headers 'all) to have them removed."
(interactive "P")
- (if mail-reply-buffer
- (let ((start (point)) opoint)
- (delete-windows-on mail-reply-buffer)
+ (if mail-reply-action
+ (let ((start (point))
+ (original mail-reply-action)
+ (omark (mark t))
+ opoint)
+ (and (consp original) (eq (car original) 'insert-buffer)
+ (setq original (nth 1 original)))
(unwind-protect
(progn
- (with-current-buffer mail-reply-buffer
- ;; Might be called from newsreader before any
- ;; Hyperbole mail reader support has been autoloaded.
- (cond ((fboundp 'rmail:msg-widen) (rmail:msg-widen))
- ((eq major-mode 'news-reply-mode) (widen))))
- (setq opoint (point))
- (insert-buffer-substring mail-reply-buffer)
- (hmail:msg-narrow)
- (if (fboundp 'hproperty:but-create) (hproperty:but-create))
- (if (consp arg)
- nil
- ;; Don't ever remove headers if user uses Supercite package,
- ;; since he can set an option in that package to do
- ;; the removal.
- (or (hypb:supercite-p)
- (mail-yank-clear-headers
- start (marker-position (hypb:mark-marker t))))
- (let ((mail-indentation-spaces (if arg (prefix-numeric-value
arg)
- mail-indentation-spaces)))
- (cond ((and (boundp 'mail-citation-hook) mail-citation-hook)
- (run-hooks 'mail-citation-hook))
- ((and (boundp 'mail-yank-hook) mail-yank-hook)
- (run-hooks 'mail-yank-hook))
- ((and (boundp 'mail-yank-hooks) mail-yank-hooks)
- (run-hooks 'mail-yank-hooks))
- (t (mail-indent-citation))))
- (goto-char (min (point-max) (hypb:mark t)))
- (set-mark opoint)
- (delete-region (point) ; Remove trailing blank lines.
- (progn (re-search-backward "[^ \t\n\r\f]")
- (end-of-line)
- (point))))
- (or (eq major-mode 'news-reply-mode)
- ;; This is like exchange-point-and-mark, but doesn't activate
the mark.
- ;; It is cleaner to avoid activation, even though the command
- ;; loop would deactivate the mark because we inserted text.
- (goto-char (prog1 (hypb:mark t)
- (set-marker (hypb:mark-marker t)
- (point) (current-buffer)))))
- (if (not (eolp)) (insert ?\n))
- )
+ (if (consp original)
+ (progn
+ ;; Call yank function, and set the mark if it doesn't.
+ (apply (car original) (cdr original))
+ (if (eq omark (mark t))
+ (push-mark (point))))
+ ;; If the original message is in another window in the same
+ ;; frame, delete that window to save space.
+ (delete-windows-on original t)
+ (with-current-buffer original
+ ;; Might be called from newsreader before any
+ ;; Hyperbole mail reader support has been autoloaded.
+ (cond ((fboundp 'rmail:msg-widen) (rmail:msg-widen))
+ ((eq major-mode 'news-reply-mode) (widen))))
+ (setq opoint (point))
+ (with-no-warnings
+ ;; We really want this to set mark.
+ (insert-buffer original)
+ ;; If they yank the original text, the encoding of the
+ ;; original message is a better default than
+ ;; the default buffer-file-coding-system.
+ (and (coding-system-equal
+ (default-value 'buffer-file-coding-system)
+ buffer-file-coding-system)
+ (setq buffer-file-coding-system
+ (coding-system-change-text-conversion
+ buffer-file-coding-system
+ (coding-system-base
+ (with-current-buffer original
+ buffer-file-coding-system))))))
+ (set-text-properties (point) (mark t) nil))
+ (hmail:msg-narrow)
+ (if (fboundp 'hproperty:but-create) (hproperty:but-create))
+ (if (consp arg)
+ nil
+ ;; Don't ever remove headers if user uses Supercite package,
+ ;; since he can set an option in that package to do
+ ;; the removal.
+ (or (hypb:supercite-p)
+ (mail-yank-clear-headers
+ start (marker-position (hypb:mark-marker t))))
+ (goto-char start)
+ (let ((mail-indentation-spaces (if arg (prefix-numeric-value
arg)
+ mail-indentation-spaces))
+ ;; Avoid error in Transient Mark mode
+ ;; on account of mark's being inactive.
+ (mark-even-if-inactive t))
+ (cond ((and (boundp 'mail-citation-hook) mail-citation-hook)
+ ;; Bind mail-citation-header to the inserted
+ ;; message's header.
+ (let ((mail-citation-header
+ (buffer-substring-no-properties
+ start
+ (save-excursion
+ (save-restriction
+ (narrow-to-region start (point-max))
+ (goto-char start)
+ (rfc822-goto-eoh)
+ (point))))))
+ (run-hooks 'mail-citation-hook)))
+ ((and (boundp 'mail-yank-hook) mail-yank-hook)
+ (run-hooks 'mail-yank-hook))
+ ((and (boundp 'mail-yank-hooks) mail-yank-hooks)
+ (run-hooks 'mail-yank-hooks))
+ (t (mail-indent-citation))))
+ (goto-char (min (point-max) (hypb:mark t)))
+ (set-mark opoint)
+ (delete-region (point) ; Remove trailing blank lines.
+ (progn (re-search-backward "[^ \t\n\r\f]")
+ (end-of-line)
+ (point))))
+ (unless (eq major-mode 'news-reply-mode)
+ ;; This is like exchange-point-and-mark, but doesn't activate
the mark.
+ ;; It is cleaner to avoid activation, even though the command
+ ;; loop would deactivate the mark because we inserted text.
+ (goto-char (prog1 (hypb:mark t)
+ (set-marker (hypb:mark-marker t)
+ (point) (current-buffer))))
+ (if (not (eolp)) (insert ?\n))))
(with-current-buffer mail-reply-buffer
(hmail:msg-narrow))))))
diff --git a/hsys-org.el b/hsys-org.el
index 56d2b12..f9604db 100644
--- a/hsys-org.el
+++ b/hsys-org.el
@@ -11,8 +11,14 @@
;;; Commentary:
;;
-;; This defines an implicit button type, org-link, that displays Org
-;; mode links in a web browser.
+;; This defines a context-sensitive implicit button type, org-mode, triggered
+;; when the major mode is org-mode and point is anywhere other than
+;; the end of a line.
+;; When:
+;; on an Org mode link - displays the link referent
+;; on an Org mode heading - cycles through the available display
+;; views for that heading
+;; anywhere else - executes `org-meta-return'.
;;; Code:
;;; ************************************************************************
@@ -20,6 +26,7 @@
;;; ************************************************************************
(require 'hbut)
+(require 'org)
;;; ************************************************************************
;;; Public Button Types
@@ -30,27 +37,23 @@
The variable, `browse-url-browser-function', customizes the url browser that
is used for urls. Valid values of this variable include
`browse-url-default-browser'
and `browse-url-generic'."
- (cond ((org-link-at-p)
- (hact 'org-link nil))
- ((org-heading-at-p)
- (hact 'org-cycle nil))
- ;;
- ;; Uncomment the following only if you want this type to display
- ;; help in org-mode even when there is no matching context.
- ;; That can be a bit confusing.
- ;; (t (and (boundp 'assist-flag) assist-flag
- ;; (hact 'org-mode:help)))
- ))
+ (when (eq major-mode 'org-mode)
+ (cond ((org-link-at-p)
+ (hact 'org-link nil))
+ ((org-at-heading-p)
+ (hact 'org-cycle nil))
+ (t (hact 'org-meta-return)))))
(defun org-mode:help (&optional _but)
"If on an Org mode heading, cycles through views of the whole buffer outline.
If on an Org mode link, displays standard Hyperbole help."
- (cond ((and (org-heading-at-p) (not (org-link-at-p)))
- (org-global-cycle nil))
- ;; Shows help for an Org mode link; if not on a link, this
- ;; will not be called.
- (t (hkey-help current-prefix-arg)))
- t)
+ (when (eq major-mode 'org-mode)
+ (cond ((org-link-at-p)
+ (hkey-help current-prefix-arg)
+ t)
+ ((org-at-heading-p)
+ (org-global-cycle nil)
+ t))))
(defact org-link (link)
"Follows an Org mode LINK. If LINK is nil, follows the link at point."
@@ -62,15 +65,11 @@ If on an Org mode link, displays standard Hyperbole help."
;;; Public functions
;;; ************************************************************************
-(defun org-heading-at-p ()
- (require 'org)
- (and (eq major-mode 'org-mode) (org-at-heading-p)))
-
+;; Assumes caller has already checked that the current buffer is in org-mode.
(defun org-link-at-p ()
- (and (eq major-mode 'org-mode)
- (let ((face-prop (get-text-property (point) 'face)))
- (or (eq face-prop 'org-link)
- (and (listp face-prop) (memq 'org-link face-prop))))))
+ (let ((face-prop (get-text-property (point) 'face)))
+ (or (eq face-prop 'org-link)
+ (and (listp face-prop) (memq 'org-link face-prop)))))
;;; ************************************************************************
;;; Private functions
diff --git a/hsys-w3.el b/hsys-www.el
similarity index 91%
rename from hsys-w3.el
rename to hsys-www.el
index 26dedc9..7f36bf0 100644
--- a/hsys-w3.el
+++ b/hsys-www.el
@@ -1,4 +1,4 @@
-;;; hsys-w3.el --- GNU Hyperbole support for Emacs World-Wide Web (WWW)
browsing
+;;; hsys-www.el --- GNU Hyperbole support for Emacs World-Wide Web (WWW)
browsing
;;
;; Author: Bob Weiner
;;
@@ -27,12 +27,10 @@
;;; Other required Elisp libraries
;;; ************************************************************************
+;;; This does not require any particular web browser.
(require 'browse-url)
(require 'hbut)
-;;; Does not load any particular web browser but requires a package like 'w3'
-;;; to operate properly.
-
;;; ************************************************************************
;;; Public functions and types
;;; ************************************************************************
@@ -51,9 +49,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)
@@ -113,6 +110,6 @@ Valid values of this variable include
`browse-url-default-browser' and
(current-buffer))
(apply 'find-file-noselect path args))))
-(provide 'hsys-w3)
+(provide 'hsys-www)
-;;; hsys-w3.el ends here
+;;; hsys-www.el ends here
diff --git a/hui-menu.el b/hui-menu.el
index c5b73b8..930e4b8 100644
--- a/hui-menu.el
+++ b/hui-menu.el
@@ -18,38 +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 the Hyperbole menu to the global menubar."
- (cond ((and (boundp 'menubar-configuration)
- (not (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))
- ((not (if hyperb:emacs-p
- (global-key-binding [menu-bar Hyperbole])
- (and (boundp 'current-menubar)
- (car (find-menu-item current-menubar '("Hyperbole"))))))
- (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
@@ -69,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]
"----"
@@ -164,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"
"----"
@@ -204,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 t) add-before))))
+ ;; Force a menu-bar update.
+ (force-mode-line-update))
+
(defun hyperbole-popup-menu ()
"Popup the Hyperbole menubar menu."
(interactive)
@@ -218,171 +292,177 @@
;;; 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]
- )
- '("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]
- )
- '("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 functions
+;;; Private variables
;;; ************************************************************************
(defvar hui-menu-max-list-length 24
@@ -393,78 +473,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)))
-
-;;; ************************************************************************
-;;; Private variables
-;;; ************************************************************************
-
(provide 'hui-menu)
;;; hui-menu.el ends here
diff --git a/hui-mini.el b/hui-mini.el
index 1d0d550..7d2e120 100644
--- a/hui-mini.el
+++ b/hui-mini.el
@@ -37,301 +37,6 @@
(defvar hui:menus nil
"Hyperbole minibuffer command menus.")
-(setq
- hui:menus
- (delq nil
- (list (cons
- 'hyperbole
- (append
- (let ((version (if (= (aref hyperb:version 0) ?0)
- (substring hyperb:version 1)
- hyperb:version)))
- (list (list (concat "Hy" version ">"))))
- (delq nil
- (list
- '("Act" hui:hbut-act
- "Activates button at point or prompts for explicit button.")
- '("Butfile/" (menu . butfile)
- "Quick access button files menus.")
- '("Cust/" (menu . cust)
- "Customizes Hyperbole by setting major options.")
- '("Doc/" (menu . doc)
- "Quick access to Hyperbole documentation.")
- '("Ebut/" (menu . ebut)
- "Explicit button commands.")
- '("Find/" (menu . find)
- "Find matching line commands.")
- '("Gbut/" (menu . gbut)
- "Global button commands.")
- '("Hist" (hhist:remove current-prefix-arg)
- "Jumps back to location prior to last Hyperbole button
follow.")
- '("Ibut/" (menu . ibut)
- "Implicit button and button type commands.")
- (if hyperb:kotl-p
- '("Kotl/" (menu . otl)
- "Autonumbered outlining and hyperlink capabilities."))
- '("Msg/" (menu . msg)
- "Mail and News messaging capabilities.")
- '("Rolo/" (menu . hyrolo)
- "Hierarchical, multi-file rolo lookup and edit commands.")
- '("Screen/" (menu . screen)
- "Screen display management commands.")
- '("Win/" (menu . win)
- "Window configuration management commands.")
- ))))
- '(butfile .
- (("Butfile>")
- ("DirFile" (find-file hbmap:filename)
- "Edits directory-specific button file.")
- ("Info"
- (id-info "(hyperbole)Button Files")
- "Displays manual section on button files.")
- ("PersonalFile" (find-file
- (expand-file-name hbmap:filename hbmap:dir-user))
- "Edits user-specific button file.")
- ))
- '(cust .
- (("Cust>")
- ("All-Options" (customize-browse 'hyperbole)
- "Display tree of Hyperbole customizable options by group.")
- ("Debug-Toggle" hkey-toggle-debug
- "Toggle display of Smart Key context after each press, for
debugging.")
- ("Find-File-URLs" hpath:find-file-urls-mode
- "Toggle find-file support for ftp and www URLs.")
- ("Isearch-Invisible" hypb:toggle-isearch-invisible
- "Toggle whether isearch searches invisible text or not.")
- ("KeyBindings/" (menu . cust-keys) "Rebinds global Hyperbole keys.")
- ("Msg-Toggle-Ebuts" hyperbole-toggle-messaging
- "Toggle Hyperbole support for explicit buttons in mail and news
buffers.")
- ("Override-Local-Keys" hkey-toggle-override-local-bindings
- "Toggle whether conflicting local key bindings are overridden by
Hyperbole.")
- ("Referents/" (menu . cust-referents)
- "Sets where Hyperbole button referents are displayed.")
- ("Smart-Key-at-Eol/" (menu . cust-eol)
- "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.")))
- '(cust-eol .
- (("Smart Key press at eol scrolls>")
- ("Proportionally" (setq smart-scroll-proportional t))
- ("Windowful" (setq smart-scroll-proportional nil))))
- '(cust-keys .
- (("Change Keys>")
- ("ActionKey" (hui:bind-key #'hkey-either)) ;; {M-RET}
- ("ButRename" (hui:bind-key #'hui:ebut-rename)) ;; {C-c C-r}
- ("DragKey" (hui:bind-key #'hkey-operate)) ;; {M-o}
- ("HypbMenu" (hui:bind-key #'hyperbole)) ;; {C-h h}
- ("MarkThing" (hui:bind-key #'hui-select-thing)) ;; {C-c RET}
- ("SmartHelp" (hui:bind-key #'hkey-help)) ;; {C-h A}
- ("WinControl" (hui:bind-key #'hycontrol-windows)) ;; {C-c \}
- ))
- '(cust-referents .
- (("Ref display>")
- ("Any-Frame" (setq hpath:display-where 'other-frame))
- ("Current-Win" (setq hpath:display-where 'this-window))
- ("Diff-Frame-One-Win"
- (setq hpath:display-where 'other-frame-one-window))
- ("New-Frame" (setq hpath:display-where 'new-frame))
- ("Other-Win" (setq hpath:display-where 'other-window))
- ("Single-Win" (setq hpath:display-where 'one-window))))
- '(cust-urls .
- (("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))
- #'browse-url-generic
- #'browse-url-default-browser)))
- ("EWW" (setq browse-url-browser-function #'eww-browse-url))
- ("Firefox" (setq browse-url-browser-function #'browse-url-firefox))
- ("KDE" (setq browse-url-browser-function #'browse-url-kde))
- ("XTerm" (setq browse-url-browser-function #'browse-url-text-xterm))
- ))
- '(doc .
- (("Doc>")
- ("About" (hypb:display-file-with-logo
- (expand-file-name "HY-ABOUT" hyperb:dir))
- "Overview of Hyperbole.")
- ("Demo" (hypb:display-file-with-logo
- (expand-file-name "DEMO" hyperb:dir))
- "Demonstrates Hyperbole features.")
- ("Files" (find-file-read-only
- (expand-file-name "MANIFEST" hyperb:dir))
- "Summarizes Hyperbole system files. Click on an entry to view it.")
- ("Glossary"
- (id-info "(hyperbole)Glossary")
- "Glossary of Hyperbole terms.")
- ("Info" (id-info "(hyperbole)Top")
- "Online Info version of Hyperbole manual.")
- ("New" (hypb:display-file-with-logo
- (expand-file-name "HY-NEWS" hyperb:dir))
- "Recent changes to Hyperbole.")
- ("SmartKeys" (find-file-read-only (hypb:hkey-help-file))
- "Summarizes Smart Key mouse or keyboard handling.")
- ("Types/" (menu . types)
- "Provides documentation on Hyperbole types.")
- ))
- '(ebut .
- (("EButton>")
- ("Act" hui:hbut-act
- "Activates button at point or prompts for explicit button.")
- ("Create" hui:ebut-create)
- ("Delete" hui:ebut-delete)
- ("Edit" hui:ebut-modify "Modifies any desired button attributes.")
- ("Help/" (menu . ebut-help) "Summarizes button attributes.")
- ("Info"
- (id-info "(hyperbole)Explicit Buttons")
- "Displays manual section on explicit buttons.")
- ("Modify" hui:ebut-modify "Modifies any desired button attributes.")
- ("Rename" hui:ebut-rename "Relabels an explicit button.")
- ("Search" hui:ebut-search
- "Locates and displays personally created buttons in context.")
- ("Types" (hui:htype-help-current-window 'actypes)
- "Displays documentation for one or all action types used by explicit
buttons.")
- ))
- '(ebut-help .
- (("Help on>")
- ("BufferButs" (hui:hbut-report -1)
- "Summarizes all explicit buttons in buffer.")
- ("CurrentBut" (hui:hbut-report)
- "Summarizes only current button in buffer.")
- ("OrderedButs" (hui:hbut-report 1)
- "Summarizes explicit buttons in lexicographically order.")
- ))
- '(find .
- (("Find>")
- ("GrepFiles" hypb:rgrep "Show numbered line matches in all
specified files.")
- ("LocateFiles" hypb:locate "Locate matching file names
anywhere across a system.")
- ("MatchFileBuffers" moccur "Show numbered line matches for
regexp in all file-based buffers.")
- ("OccurHere" occur "Show numbered line matches for
regexp from this buffer.")
- ("RemoveLines" hypb:remove-lines "Following point, remove all
lines that match regexp.")
- ("SaveLines" hypb:save-lines "Following point, keep only
lines that match regexp.")
- ))
- '(gbut .
- (("GButton>")
- ("Act" gbut:act "Activates global button by name.")
- ("Create" hui:gbut-create "Adds a global button to gbut:file.")
- ("Edit" hui:gbut-modify "Modifies global button attributes.")
- ("Help" gbut:help "Reports on a global button by name.")
- ("Info" (id-info "(hyperbole)Global Buttons")
- "Displays manual section on global buttons.")
- ("Modify" hui:gbut-modify "Modifies global button attributes.")
- ))
- '(ibut .
- (("IButton>")
- ("Act" hui:hbut-current-act "Activates implicit button at
point.")
- ("DeleteIButType" (hui:htype-delete 'ibtypes)
- "Deletes specified button type.")
- ("Help" hui:hbut-help "Reports on button's attributes.")
- ("Info" (id-info "(hyperbole)Implicit Buttons")
- "Displays manual section on implicit buttons.")
- ("Types" (hui:htype-help 'ibtypes 'no-sort)
- "Displays documentation for one or all implicit button types.")
- ))
- '(msg .
- (("Msg>")
- ("Compose-Hypb-Mail"
- (hmail:compose "address@hidden" '(hact 'hyp-config))
- "Send a message to the Hyperbole discussion list.")
- ("Join-Hypb-List"
- (hmail:compose "address@hidden" nil
- "Just send the message; subject and body are
ignored.")
- "Subscribe to the Hyperbole discussion list.")
- ("Leave-Hypb-List"
- (hmail:compose "address@hidden" nil
- "Just send the message; subject and body are
ignored.")
- "Unsubscribe from the Hyperbole discussion list.")
- ("Report-Hypb-Bug"
- (hmail:compose "address@hidden" '(hact 'hyp-config))
- "Send a message to the Hyperbole bug reporting list.")
- ("Subscribe-Hypb-Bug"
- (hmail:compose "address@hidden" nil
- "Just send the message; subject and body are
ignored.")
- "Subscribe to the Hyperbole bug reporting list.")
- ("Unsub-Hypb-Bug"
- (hmail:compose "address@hidden" nil
- "Just send the message; subject and body are
ignored.")
- "Unsubscribe from the Hyperbole bug reporting list.")
- ))
- (if hyperb:kotl-p
- '(otl
- . (("Kotl>")
- ("All" kotl-mode:show-all "Expand all collapsed cells.")
- ("Blanks" kvspec:toggle-blank-lines
- "Toggle blank lines between cells on or off.")
- ("Create" kfile:find "Create or edit an outline file.")
- ("Downto" kotl-mode:hide-sublevels
- "Hide all cells in outline deeper than a particular level.")
- ("Examp" kotl-mode:example
- "Display a self-descriptive example outline file.")
- ("Hide" (progn (kotl-mode:is-p)
- (kotl-mode:hide-tree (kcell-view:label)))
- "Collapse tree rooted at point.")
- ("Info"
- (id-info "(hyperbole)Koutliner")
- "Display manual section on Hyperbole Koutliner.")
- ("Kill" kotl-mode:kill-tree
- "Kill ARG following trees starting from point.")
- ("Link" klink:create
- "Create and insert an implicit link at point.")
- ("Overvw" kotl-mode:overview
- "Show first line of each cell.")
- ("Show" (progn (kotl-mode:is-p)
- (kotl-mode:show-tree (kcell-view:label)))
- "Expand tree rooted at point.")
- ("Top" kotl-mode:top-cells
- "Hide all but top-level cells.")
- ("Vspec" kvspec:activate
- "Prompt for and activate a view specifiction.")
- )))
- '(hyrolo .
- (("Rolo>")
- ("Add" hyrolo-add "Add a new rolo entry.")
- ("Display" hyrolo-display-matches
- "Display last found rolo matches again.")
- ("Edit" hyrolo-edit "Edit an existing rolo entry.")
- ("Info" (id-info "(hyperbole)HyRolo")
- "Displays manual section on Hyperbole rolo.")
- ("Kill" hyrolo-kill "Kill an existing rolo entry.")
- ("Mail" hyrolo-mail-to "Mail to address following point.")
- ("Order" hyrolo-sort "Order rolo entries in a file.")
- ("RegexFind" hyrolo-grep "Find entries containing a regexp.")
- ("StringFind" hyrolo-fgrep "Find entries containing a string.")
- ("WordFind" hyrolo-word "Find entries containing words.")
- ("Yank" hyrolo-yank
- "Find an entry containing a string and insert it at point.")
- ))
- '(screen .
- (("Screen>")
- ("FramesControl" hycontrol-frames
- "Interactively delete, jump to, move, replicate, and resize frames.")
- ("WindowsControl" hycontrol-windows
- "Interactively delete, jump to, rebalance, resize, and split
windows.")))
- '(types .
- (("Types>")
- ("ActionTypes" (hui:htype-help-current-window 'actypes)
- "Displays documentation for one or all action types.")
- ("IButTypes" (hui:htype-help-current-window 'ibtypes 'no-sort)
- "Displays documentation for one or all implicit button types.")
- ))
- '(win .
- (("WinConfig>")
- ("AddName" hywconfig-add-by-name
- "Name current window configuration.")
- ("DeleteName" hywconfig-delete-by-name
- "Delete named window configuration.")
- ("RestoreName" hywconfig-restore-by-name
- "Restore frame to window configuration given by name.")
- ("PopRing" (progn (hywconfig-delete-pop)
- (hyperbole 'win))
- "Restores window configuration from ring and removes it from ring.")
- ("SaveRing" (hywconfig-ring-save)
- "Saves current window configuration to ring.")
- ("YankRing" (progn (call-interactively 'hywconfig-yank-pop)
- (hyperbole 'win))
- "Restores next window configuration from ring.")
- ))
- )))
;;; ************************************************************************
;;; Public functions
@@ -635,6 +340,22 @@ constructs. If not given, the top-level Hyperbole menu is
used."
(concat menu-prompt (mapconcat 'car (cdr menu-alist) " "))
menu-line)))
+(defun hui:menu-web-search ()
+ (let ((web-mini-menu
+ (cons 'web
+ (cons '("Web>")
+ (mapcar (lambda (service)
+ (list service
+ (list #'hyperbole-web-search service)
+ (format "Search %s" service)))
+ (mapcar 'car hyperbole-web-search-alist))))))
+ web-mini-menu))
+
+(defun hui-search-web ()
+ "Prompt for a web search engine and search term and then perform the search."
+ (interactive)
+ (hyperbole 'web))
+
;;; ************************************************************************
;;; Private variables
;;; ************************************************************************
@@ -642,30 +363,350 @@ constructs. If not given, the top-level Hyperbole menu
is used."
;; Hyperbole menu mode is suitable only for specially formatted data.
(put 'hui:menu-mode 'mode-class 'special)
-(defvar hui:menu-mode-map nil
- "Keymap containing Hyperbole minibuffer menu commands.")
-(if hui:menu-mode-map
- nil
- (setq hui:menu-mode-map (make-keymap))
- (suppress-keymap hui:menu-mode-map)
- (define-key hui:menu-mode-map hui:menu-quit #'hui:menu-enter)
- (define-key hui:menu-mode-map hui:menu-abort #'hui:menu-enter)
- (define-key hui:menu-mode-map hui:menu-top #'hui:menu-enter)
- (define-key hui:menu-mode-map hui:menu-select #'hui:menu-enter)
- (define-key hui:menu-mode-map "\M-b" #'hui:menu-backward-item)
- (define-key hui:menu-mode-map "\M-f" #'hui:menu-forward-item)
- (define-key hui:menu-mode-map "\C-i" #'hui:menu-forward-item) ;;
TAB
- (define-key hui:menu-mode-map [backtab] #'hui:menu-backward-item) ;;
Shift-TAB
- (define-key hui:menu-mode-map "\M-\C-i" #'hui:menu-backward-item) ;;
M-TAB
- ;;
- ;; This next binding is necessary since the default button1 binding under
- ;; XEmacs, mouse-track, is broken under XEmacs V19.8.
- (and (featurep 'xemacs) window-system
- (define-key hui:menu-mode-map 'button1 'mouse-set-point))
- (let ((i 32))
- (while (<= i 126)
- (define-key hui:menu-mode-map (char-to-string i) 'hui:menu-enter)
- (setq i (1+ i)))))
+(defvar hui:menu-mode-map nil
+ "Keymap containing Hyperbole minibuffer menu commands.")
+(if hui:menu-mode-map
+ nil
+ (setq hui:menu-mode-map (make-keymap))
+ (suppress-keymap hui:menu-mode-map)
+ (define-key hui:menu-mode-map hui:menu-quit #'hui:menu-enter)
+ (define-key hui:menu-mode-map hui:menu-abort #'hui:menu-enter)
+ (define-key hui:menu-mode-map hui:menu-top #'hui:menu-enter)
+ (define-key hui:menu-mode-map hui:menu-select #'hui:menu-enter)
+ (define-key hui:menu-mode-map "\M-b" #'hui:menu-backward-item)
+ (define-key hui:menu-mode-map "\M-f" #'hui:menu-forward-item)
+ (define-key hui:menu-mode-map "\C-i" #'hui:menu-forward-item) ;;
TAB
+ (define-key hui:menu-mode-map [backtab] #'hui:menu-backward-item) ;;
Shift-TAB
+ (define-key hui:menu-mode-map "\M-\C-i" #'hui:menu-backward-item) ;;
M-TAB
+ ;;
+ ;; This next binding is necessary since the default button1 binding under
+ ;; XEmacs, mouse-track, is broken under XEmacs V19.8.
+ (and (featurep 'xemacs) window-system
+ (define-key hui:menu-mode-map 'button1 'mouse-set-point))
+ (let ((i 32))
+ (while (<= i 126)
+ (define-key hui:menu-mode-map (char-to-string i) 'hui:menu-enter)
+ (setq i (1+ i)))))
+
+;;; ************************************************************************
+;;; Hyperbole Minibuffer Menus
+;;; ************************************************************************
+
+(defun hyperbole-minibuffer-menu ()
+ "Rebuilds and returns the entire Hyperbole minibuffer menu structure."
+(setq
+ hui:menus
+ (delq nil
+ (list (cons
+ 'hyperbole
+ (append
+ (let ((version (if (= (aref hyperb:version 0) ?0)
+ (substring hyperb:version 1)
+ hyperb:version)))
+ (list (list (concat "Hy" version ">"))))
+ (delq nil
+ (list
+ '("Act" hui:hbut-act
+ "Activates button at point or prompts for explicit button.")
+ '("Butfile/" (menu . butfile)
+ "Quick access button files menus.")
+ '("Cust/" (menu . cust)
+ "Customizes Hyperbole by setting major options.")
+ '("Doc/" (menu . doc)
+ "Quick access to Hyperbole documentation.")
+ '("Ebut/" (menu . ebut)
+ "Explicit button commands.")
+ '("Find/" (menu . find)
+ "Find matching line commands.")
+ '("Gbut/" (menu . gbut)
+ "Global button commands.")
+ '("Hist" (hhist:remove current-prefix-arg)
+ "Jumps back to location prior to last Hyperbole button
follow.")
+ '("Ibut/" (menu . ibut)
+ "Implicit button and button type commands.")
+ (if hyperb:kotl-p
+ '("Kotl/" (menu . otl)
+ "Autonumbered outlining and hyperlink capabilities."))
+ '("Msg/" (menu . msg)
+ "Mail and News messaging capabilities.")
+ '("Rolo/" (menu . hyrolo)
+ "Hierarchical, multi-file rolo lookup and edit commands.")
+ '("Screen/" (menu . screen)
+ "Screen display management commands.")
+ '("Win/" (menu . win)
+ "Window configuration management commands.")
+ ))))
+ '(butfile .
+ (("Butfile>")
+ ("DirFile" (find-file hbmap:filename)
+ "Edits directory-specific button file.")
+ ("Info"
+ (id-info "(hyperbole)Button Files")
+ "Displays manual section on button files.")
+ ("PersonalFile" (find-file
+ (expand-file-name hbmap:filename hbmap:dir-user))
+ "Edits user-specific button file.")
+ ))
+ '(cust .
+ (("Cust>")
+ ("All-Options" (customize-browse 'hyperbole)
+ "Display tree of Hyperbole customizable options by group.")
+ ("Debug-Toggle" hkey-toggle-debug
+ "Toggle display of Smart Key context after each press, for
debugging.")
+ ("Find-File-URLs" hpath:find-file-urls-mode
+ "Toggle find-file support for ftp and www URLs.")
+ ("Isearch-Invisible" hypb:toggle-isearch-invisible
+ "Toggle whether isearch searches invisible text or not.")
+ ("KeyBindings/" (menu . cust-keys) "Rebinds global Hyperbole keys.")
+ ("Msg-Toggle-Ebuts" hyperbole-toggle-messaging
+ "Toggle Hyperbole support for explicit buttons in mail and news
buffers.")
+ ("Override-Local-Keys" hkey-toggle-override-local-bindings
+ "Toggle whether conflicting local key bindings are overridden by
Hyperbole.")
+ ("Referents/" (menu . cust-referents)
+ "Sets where Hyperbole button referents are displayed.")
+ ("Smart-Key-at-Eol/" (menu . cust-eol)
+ "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.")
+ ("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))
+ ("Windowful" (setq smart-scroll-proportional nil))))
+ '(cust-keys .
+ (("Change Keys>")
+ ("ActionKey" (hui:bind-key #'hkey-either)) ;; {M-RET}
+ ("ButRename" (hui:bind-key #'hui:ebut-rename)) ;; {C-c C-r}
+ ("DragKey" (hui:bind-key #'hkey-operate)) ;; {M-o}
+ ("HypbMenu" (hui:bind-key #'hyperbole)) ;; {C-h h}
+ ("MarkThing" (hui:bind-key #'hui-select-thing)) ;; {C-c RET}
+ ("SmartHelp" (hui:bind-key #'hkey-help)) ;; {C-h A}
+ ("WinControl" (hui:bind-key #'hycontrol-windows)) ;; {C-c \}
+ ))
+ '(cust-referents .
+ (("Ref Display>")
+ ("Any-Frame" (setq hpath:display-where 'other-frame))
+ ("Current-Win" (setq hpath:display-where 'this-window))
+ ("Diff-Frame-One-Win"
+ (setq hpath:display-where 'other-frame-one-window))
+ ("New-Frame" (setq hpath:display-where 'new-frame))
+ ("Other-Win" (setq hpath:display-where 'other-window))
+ ("Single-Win" (setq hpath:display-where 'one-window))))
+ '(cust-urls .
+ (("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))
+ #'browse-url-generic
+ #'browse-url-default-browser)))
+ ("EWW" (setq browse-url-browser-function #'eww-browse-url))
+ ("Firefox" (setq browse-url-browser-function #'browse-url-firefox))
+ ("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
+ (expand-file-name "HY-ABOUT" hyperb:dir))
+ "Overview of Hyperbole.")
+ ("Demo" (hypb:display-file-with-logo
+ (expand-file-name "DEMO" hyperb:dir))
+ "Demonstrates Hyperbole features.")
+ ("Files" (find-file-read-only
+ (expand-file-name "MANIFEST" hyperb:dir))
+ "Summarizes Hyperbole system files. Click on an entry to view it.")
+ ("Glossary"
+ (id-info "(hyperbole)Glossary")
+ "Glossary of Hyperbole terms.")
+ ("Info" (id-info "(hyperbole)Top")
+ "Online Info version of Hyperbole manual.")
+ ("New" (hypb:display-file-with-logo
+ (expand-file-name "HY-NEWS" hyperb:dir))
+ "Recent changes to Hyperbole.")
+ ("SmartKeys" (find-file-read-only (hypb:hkey-help-file))
+ "Summarizes Smart Key mouse or keyboard handling.")
+ ("Types/" (menu . types)
+ "Provides documentation on Hyperbole types.")
+ ))
+ '(ebut .
+ (("EButton>")
+ ("Act" hui:hbut-act
+ "Activates button at point or prompts for explicit button.")
+ ("Create" hui:ebut-create)
+ ("Delete" hui:ebut-delete)
+ ("Edit" hui:ebut-modify "Modifies any desired button attributes.")
+ ("Help/" (menu . ebut-help) "Summarizes button attributes.")
+ ("Info"
+ (id-info "(hyperbole)Explicit Buttons")
+ "Displays manual section on explicit buttons.")
+ ("Modify" hui:ebut-modify "Modifies any desired button attributes.")
+ ("Rename" hui:ebut-rename "Relabels an explicit button.")
+ ("Search" hui:ebut-search
+ "Locates and displays personally created buttons in context.")
+ ("Types" (hui:htype-help-current-window 'actypes)
+ "Displays documentation for one or all action types used by explicit
buttons.")
+ ))
+ '(ebut-help .
+ (("Help on>")
+ ("BufferButs" (hui:hbut-report -1)
+ "Summarizes all explicit buttons in buffer.")
+ ("CurrentBut" (hui:hbut-report)
+ "Summarizes only current button in buffer.")
+ ("OrderedButs" (hui:hbut-report 1)
+ "Summarizes explicit buttons in lexicographically order.")
+ ))
+ '(find .
+ (("Find>")
+ ("GrepFiles" hypb:rgrep "Show numbered line matches in all
specified files.")
+ ("LocateFiles" hypb:locate "Locate matching file names
anywhere across a system.")
+ ("MatchFileBuffers" moccur "Show numbered line matches for
regexp in all file-based buffers.")
+ ("OccurHere" occur "Show numbered line matches for
regexp from this buffer.")
+ ("RemoveLines" hypb:remove-lines "Following point, remove all
lines that match regexp.")
+ ("SaveLines" hypb:save-lines "Following point, keep only
lines that match regexp.")
+ ("Web/" (menu . web) "Searches major web sites.")
+ ))
+ '(gbut .
+ (("GButton>")
+ ("Act" gbut:act "Activates global button by name.")
+ ("Create" hui:gbut-create "Adds a global button to gbut:file.")
+ ("Edit" hui:gbut-modify "Modifies global button attributes.")
+ ("Help" gbut:help "Reports on a global button by name.")
+ ("Info" (id-info "(hyperbole)Global Buttons")
+ "Displays manual section on global buttons.")
+ ("Modify" hui:gbut-modify "Modifies global button attributes.")
+ ))
+ '(ibut .
+ (("IButton>")
+ ("Act" hui:hbut-current-act "Activates implicit button at
point.")
+ ("DeleteIButType" (hui:htype-delete 'ibtypes)
+ "Deletes specified button type.")
+ ("Help" hui:hbut-help "Reports on button's attributes.")
+ ("Info" (id-info "(hyperbole)Implicit Buttons")
+ "Displays manual section on implicit buttons.")
+ ("Types" (hui:htype-help 'ibtypes 'no-sort)
+ "Displays documentation for one or all implicit button types.")
+ ))
+ '(msg .
+ (("Msg>")
+ ("Compose-Hypb-Mail"
+ (hmail:compose "address@hidden" '(hact 'hyp-config))
+ "Send a message to the Hyperbole discussion list.")
+ ("Join-Hypb-List"
+ (hmail:compose "address@hidden" nil
+ "Just send the message; subject and body are
ignored.")
+ "Subscribe to the Hyperbole discussion list.")
+ ("Leave-Hypb-List"
+ (hmail:compose "address@hidden" nil
+ "Just send the message; subject and body are
ignored.")
+ "Unsubscribe from the Hyperbole discussion list.")
+ ("Report-Hypb-Bug"
+ (hmail:compose "address@hidden" '(hact 'hyp-config))
+ "Send a message to the Hyperbole bug reporting list.")
+ ("Subscribe-Hypb-Bug"
+ (hmail:compose "address@hidden" nil
+ "Just send the message; subject and body are
ignored.")
+ "Subscribe to the Hyperbole bug reporting list.")
+ ("Unsub-Hypb-Bug"
+ (hmail:compose "address@hidden" nil
+ "Just send the message; subject and body are
ignored.")
+ "Unsubscribe from the Hyperbole bug reporting list.")
+ ))
+ (if hyperb:kotl-p
+ '(otl
+ . (("Kotl>")
+ ("All" kotl-mode:show-all "Expand all collapsed cells.")
+ ("Blanks" kvspec:toggle-blank-lines
+ "Toggle blank lines between cells on or off.")
+ ("Create" kfile:find "Create or edit an outline file.")
+ ("Downto" kotl-mode:hide-sublevels
+ "Hide all cells in outline deeper than a particular level.")
+ ("Examp" kotl-mode:example
+ "Display a self-descriptive example outline file.")
+ ("Hide" (progn (kotl-mode:is-p)
+ (kotl-mode:hide-tree (kcell-view:label)))
+ "Collapse tree rooted at point.")
+ ("Info"
+ (id-info "(hyperbole)Koutliner")
+ "Display manual section on Hyperbole Koutliner.")
+ ("Kill" kotl-mode:kill-tree
+ "Kill ARG following trees starting from point.")
+ ("Link" klink:create
+ "Create and insert an implicit link at point.")
+ ("Overvw" kotl-mode:overview
+ "Show first line of each cell.")
+ ("Show" (progn (kotl-mode:is-p)
+ (kotl-mode:show-tree (kcell-view:label)))
+ "Expand tree rooted at point.")
+ ("Top" kotl-mode:top-cells
+ "Hide all but top-level cells.")
+ ("Vspec" kvspec:activate
+ "Prompt for and activate a view specifiction.")
+ )))
+ '(hyrolo .
+ (("Rolo>")
+ ("Add" hyrolo-add "Add a new rolo entry.")
+ ("Display" hyrolo-display-matches
+ "Display last found rolo matches again.")
+ ("Edit" hyrolo-edit "Edit an existing rolo entry.")
+ ("Info" (id-info "(hyperbole)HyRolo")
+ "Displays manual section on Hyperbole rolo.")
+ ("Kill" hyrolo-kill "Kill an existing rolo entry.")
+ ("Mail" hyrolo-mail-to "Mail to address following point.")
+ ("Order" hyrolo-sort "Order rolo entries in a file.")
+ ("RegexFind" hyrolo-grep "Find entries containing a regexp.")
+ ("StringFind" hyrolo-fgrep "Find entries containing a string.")
+ ("WordFind" hyrolo-word "Find entries containing words.")
+ ("Yank" hyrolo-yank
+ "Find an entry containing a string and insert it at point.")
+ ))
+ '(screen .
+ (("Screen>")
+ ("FramesControl" hycontrol-frames
+ "Interactively delete, jump to, move, replicate, and resize frames.")
+ ("WindowsControl" hycontrol-windows
+ "Interactively delete, jump to, rebalance, resize, and split
windows.")))
+ '(types .
+ (("Types>")
+ ("ActionTypes" (hui:htype-help-current-window 'actypes)
+ "Displays documentation for one or all action types.")
+ ("IButTypes" (hui:htype-help-current-window 'ibtypes 'no-sort)
+ "Displays documentation for one or all implicit button types.")
+ ))
+ '(win .
+ (("WinConfig>")
+ ("AddName" hywconfig-add-by-name
+ "Name current window configuration.")
+ ("DeleteName" hywconfig-delete-by-name
+ "Delete named window configuration.")
+ ("RestoreName" hywconfig-restore-by-name
+ "Restore frame to window configuration given by name.")
+ ("PopRing" (progn (hywconfig-delete-pop)
+ (hyperbole 'win))
+ "Restores window configuration from ring and removes it from ring.")
+ ("SaveRing" (hywconfig-ring-save)
+ "Saves current window configuration to ring.")
+ ("YankRing" (progn (call-interactively 'hywconfig-yank-pop)
+ (hyperbole 'win))
+ "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/hui-mouse.el b/hui-mouse.el
index 8a2be04..b56557f 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -20,7 +20,7 @@
;; items and Hyperbole buttons, follow these instructions.
;;
;; If you plan to use a mouse only with X windows (XEmacs, GNU Emacs
-;; 19, or InfoDock), Mac OS X, or NeXTSTEP, and you want to use the
+;; 19, or InfoDock), Mac OS X, or NEXTSTEP, and you want to use the
;; shift-middle and shift-right buttons, you need not do any mouse
;; configuration. Your Emacs executable must have been built so as to
;; include the mouse support files for your window system, however. These
@@ -63,6 +63,18 @@ Set it to #'hkey-summarize if you want it to display a
summary of Smart Key beha
:type 'function
:group 'hyperbole-keys)
+(defcustom action-key-eol-function #'smart-scroll-up
+ "*Function run by the Action Key at the end of a line.
+Its default value is #'smart-scroll-up."
+ :type 'function
+ :group 'hyperbole-keys)
+
+(defcustom assist-key-eol-function #'smart-scroll-down
+ "*Function run by the Assist Key at the end of a line.
+Its default value is #'smart-scroll-down."
+ :type 'function
+ :group 'hyperbole-keys)
+
;;; ************************************************************************
;;; Hyperbole context-sensitive keys dispatch table
;;; ************************************************************************
@@ -108,7 +120,7 @@ Set it to #'hkey-summarize if you want it to display a
summary of Smart Key beha
((if (eq major-mode 'kotl-mode)
(and (not (kotl-mode:eobp)) (kotl-mode:eolp))
(and (not (eobp)) (or (eolp) (and selective-display (eq (following-char)
?\r))))) .
- ((smart-scroll-up) . (smart-scroll-down)))
+ ((funcall action-key-eol-function) . (funcall assist-key-eol-function)))
;;
;; The Smart Menu system provides menus within Emacs on a dumb terminal.
;; It is a part of InfoDock, but may also be obtained as a separate
@@ -142,9 +154,11 @@ Set it to #'hkey-summarize if you want it to display a
summary of Smart Key beha
(t (scroll-up))) .
(scroll-down)))
;;
- ;; Within an OO-Browser OOBR-FTR buffer, an *Implementors* listing
- ;; buffer, or an Element signatures listing buffer of the
- ;; OO-Browser.
+ ;; Support the OO-Browser when available. It is a separate Emacs
+ ;; package not included with Hyperbole. Within an OO-Browser
+ ;; OOBR-FTR buffer, an *Implementors* listing buffer, or an
+ ;; Element signatures listing buffer of the OO-Browser, display
+ ;; the associated element.
((or (string-equal (buffer-name) "*Implementors*")
(string-match "-Elements\\'" (buffer-name))
(and (boundp 'br-feature-tags-file)
@@ -297,8 +311,9 @@ Set it to #'hkey-summarize if you want it to display a
summary of Smart Key beha
((eq major-mode 'gomoku-mode) .
((gomoku-human-plays) . (gomoku-human-takes-back)))
;;
- ;; Support the OO-Browser, a part of InfoDock and XEmacs, and an add on
- ;; to Emacs. It is not included with Hyperbole.
+ ;; Support the OO-Browser when available. It is a separate Emacs
+ ;; package not included with Hyperbole. Hyperbole supplies a stub
+ ;; `br-in-browser' test for use here.
((or (br-in-browser) (eq major-mode 'br-mode)) .
((smart-br-dispatch) . (smart-br-assist-dispatch)))
;;
diff --git a/hversion.el b/hversion.el
index 949d252..7242de6 100644
--- a/hversion.el
+++ b/hversion.el
@@ -23,7 +23,7 @@
;;; Public variables
;;; ************************************************************************
-(defconst hyperb:version "6.0.1" "GNU Hyperbole revision number.")
+(defconst hyperb:version "6.0.2" "GNU Hyperbole revision number.")
;;;###autoload
(defvar hyperb:microcruft-os-p
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/hypb.el b/hypb.el
index 0c138a7..466fc72 100644
--- a/hypb.el
+++ b/hypb.el
@@ -198,6 +198,15 @@ Global keymap is used unless optional KEYMAP is given."
(put 'error 'error-message msg)
(error msg)))
+(defun hypb:file-major-mode (file)
+ "Return the major mode used by FILE.
+FILE is temporarily read into a buffer to determine the major mode if
necessary."
+ (let ((existing-flag (get-file-buffer file))
+ (buf (find-file-noselect file)))
+ (prog1 (if buf (save-excursion (set-buffer buf) major-mode))
+ (unless (or existing-flag (null buf))
+ (kill-buffer buf)))))
+
(defun hypb:format-quote (string)
"Replace all single % with %% in STRING so a call to `format' or `message'
ignores them."
(if (stringp string)
@@ -671,7 +680,7 @@ Without file, the banner is prepended to the current
buffer."
(defun hypb:browse-home-page ()
"Visit the web home page for Hyperbole."
(interactive)
- (require 'hsys-w3)
+ (require 'hsys-www)
(hact 'www-url hypb:home-page))
;;; ************************************************************************
diff --git a/hyperbole.el b/hyperbole.el
index e10c3f9..7a952ca 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -1,18 +1,20 @@
;;; hyperbole.el --- GNU Hyperbole: The Everyday Hypertextual Information
Manager
-;;
+
+;; Copyright (C) 1992-2016 Free Software Foundation, Inc.
+
;; Author: Bob Weiner
-;; Maintainer: Bob Weiner <address@hidden> and Mats Lidell
<address@hidden>
+;; Maintainer: Bob Weiner <address@hidden>
+;; Mats Lidell <address@hidden>
+;; Created: 06-Oct-92 at 11:52:51
+;; Released: 09-Aug-16
+;; Version: 6.0.2
;; Keywords: comm, convenience, files, frames, hypermedia, languages,
mail, matching, mouse, multimedia, outlines, tools, wp
;; Package: hyperbole
;; Package-Requires: ((emacs "24.4"))
;; URL: http://www.gnu.org/software/hyperbole
-;; Version: 6.0.1
-;; Orig-Date: 06-Oct-92 at 11:52:51
-;; Date: 27-Jul-16
-;;
-;; Copyright (C) 1992-2016 Free Software Foundation, Inc.
+
;; See the "HY-COPY" file for license information.
-;;
+
;; This file is part of GNU Hyperbole.
;;; Commentary:
@@ -203,8 +205,8 @@ Entry format is: (key-description key-sequence
key-binding)."
;;
;; Binds the Action Key to {M-RET} and the Assist Key to {C-u M-RET}
;; and loads the Hyperbole mouse key bindings.
- (and (not (where-is-internal 'hkey-either))
- (hkey-global-set-key "\M-\C-m" 'hkey-either))
+ (unless (where-is-internal 'hkey-either)
+ (hkey-global-set-key "\M-\C-m" 'hkey-either))
;;
;; Bind a key, {C-h A}, for Action Key help and {C-u C-h A} for Assist key
;; help.
@@ -245,6 +247,9 @@ Entry format is: (key-description key-sequence
key-binding)."
;; Binds {C-c \} to interactively manage windows and frames.
(hkey-maybe-global-set-key "\C-c\\" 'hycontrol-windows)
;;
+ ;; Binds {C-c /} to display the Hyperbole Find/Web search menu.
+ (hkey-maybe-global-set-key "\C-c/" 'hui-search-web)
+ ;;
;; Binds {C-c .} to jump between the start and end of an delimited thing.
;; Don't override local bindings of this key.
(hkey-maybe-global-set-key "\C-c." 'hui-select-goto-matching-delimiter t)
diff --git a/man/hyperbole.html b/man/hyperbole.html
index e24fd51..2cfe7c8 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is for GNU Hyperbole
-(Edition 6.0.1, Published July 27, 2016).
+(Edition 6.0.2, Published August 8, 2016).
Copyright (C) 1989-2016 Free Software Foundation, Inc.
@@ -218,14 +218,15 @@ ul.no-bullet {list-style: none}
<ul class="no-bullet">
<li><a name="toc-Installation-1" href="#Installation">B.1
Installation</a></li>
<li><a name="toc-Invocation-1" href="#Invocation">B.2 Invocation</a></li>
- <li><a name="toc-Configuration-1" href="#Configuration">B.3 Configuration</a>
+ <li><a name="toc-Customization-1" href="#Customization">B.3 Customization</a>
<ul class="no-bullet">
- <li><a name="toc-Using-URLs-with-Find_002dFile-1"
href="#Using-URLs-with-Find_002dFile">B.3.1 Using URLs with Find-File</a></li>
- <li><a name="toc-Internal-Viewers-1" href="#Internal-Viewers">B.3.2
Internal Viewers</a></li>
- <li><a name="toc-External-Viewers-1" href="#External-Viewers">B.3.3
External Viewers</a></li>
- <li><a name="toc-Invisible-Text-Searches-1"
href="#Invisible-Text-Searches">B.3.4 Invisible Text Searches</a></li>
- <li><a name="toc-Link-Variable-Substitution-1"
href="#Link-Variable-Substitution">B.3.5 Link Variable Substitution</a></li>
- <li><a name="toc-Configuring-Button-Colors" href="#Button-Colors">B.3.6
Configuring Button Colors</a></li>
+ <li><a name="toc-Web-Search-Engines-1" href="#Web-Search-Engines">B.3.1
Web Search Engines</a></li>
+ <li><a name="toc-Using-URLs-with-Find_002dFile-1"
href="#Using-URLs-with-Find_002dFile">B.3.2 Using URLs with Find-File</a></li>
+ <li><a name="toc-Internal-Viewers-1" href="#Internal-Viewers">B.3.3
Internal Viewers</a></li>
+ <li><a name="toc-External-Viewers-1" href="#External-Viewers">B.3.4
External Viewers</a></li>
+ <li><a name="toc-Invisible-Text-Searches-1"
href="#Invisible-Text-Searches">B.3.5 Invisible Text Searches</a></li>
+ <li><a name="toc-Link-Variable-Substitution-1"
href="#Link-Variable-Substitution">B.3.6 Link Variable Substitution</a></li>
+ <li><a name="toc-Configuring-Button-Colors" href="#Button-Colors">B.3.7
Configuring Button Colors</a></li>
</ul></li>
</ul></li>
<li><a name="toc-Global-Key-Bindings-1" href="#Global-Key-Bindings">Appendix C
Global Key Bindings</a></li>
@@ -320,8 +321,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
<PRE>
-Edition 6.0.1
-Printed July 27, 2016.
+Edition 6.0.2
+Printed August 8, 2016.
Published by the Free Software Foundation, Inc.
Author: Bob Weiner
@@ -595,13 +596,15 @@ Setup
</td></tr>
<tr><td align="left" valign="top">• <a
href="#Invocation">Invocation</a>:</td><td> </td><td align="left"
valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a
href="#Configuration">Configuration</a>:</td><td> </td><td
align="left" valign="top">
+<tr><td align="left" valign="top">• <a
href="#Customization">Customization</a>:</td><td> </td><td
align="left" valign="top">
</td></tr>
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-Configuration
+Customization
-</pre></th></tr><tr><td align="left" valign="top">• <a
href="#Using-URLs-with-Find_002dFile">Using URLs with
Find-File</a>:</td><td> </td><td align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">• <a
href="#Web-Search-Engines">Web Search Engines</a>:</td><td> </td><td
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">• <a
href="#Using-URLs-with-Find_002dFile">Using URLs with
Find-File</a>:</td><td> </td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">• <a href="#Internal-Viewers">Internal
Viewers</a>:</td><td> </td><td align="left" valign="top">
</td></tr>
@@ -1315,64 +1318,66 @@ the Hyperbole file, <samp>hibtypes.el</samp>, for
complete examples of
implicit button types.
</p>
<dl compact="compact">
-<dt><code>completion</code></dt>
-<dd><a name="index-ibtypes-completion"></a>
+<dd>
+<a name="index-ibtypes-completion"></a>
<a name="index-completion"></a>
-<p>Inserts the completion at point into the minibuffer or the other window.
+</dd>
+<dt><code>completion</code></dt>
+<dd><p>Inserts the completion at point into the minibuffer or the other window.
</p>
+<a name="index-ibtypes-hyp_002dsource"></a>
+<a name="index-Hyperbole-report"></a>
</dd>
<dt><code>hyp-source</code></dt>
-<dd><a name="index-ibtypes-hyp_002dsource"></a>
-<a name="index-Hyperbole-report"></a>
-<p>Turns source location entries in Hyperbole reports into buttons that
+<dd><p>Turns source location entries in Hyperbole reports into buttons that
jump to the associated location.
</p>
+<a name="index-ibtypes-hyp_002daddress"></a>
+<a name="index-Hyperbole-mail-list"></a>
</dd>
<dt><code>hyp-address</code></dt>
-<dd><a name="index-ibtypes-hyp_002daddress"></a>
-<a name="index-Hyperbole-mail-list"></a>
-<p>Turns a Hyperbole support/discussion e-mail address into an implicit
+<dd><p>Turns a Hyperbole support/discussion e-mail address into an implicit
button which inserts Hyperbole environment information. This is
useful when sending mail to a Hyperbole discussion mail list. See
also the documentation for <code>actypes::hyp-config</code>.
</p>
+<a name="index-ibtypes-Info_002dnode"></a>
+<a name="index-Info-node"></a>
</dd>
<dt><code>Info-node</code></dt>
-<dd><a name="index-ibtypes-Info_002dnode"></a>
-<a name="index-Info-node"></a>
-<p>Makes "(filename)nodename" buttons display the associated Info
node.
+<dd><p>Makes "(filename)nodename" buttons display the associated
Info node.
Also makes "(filename)itemname" buttons display the associated Info
index item.
</p>
-</dd>
-<dt><code>www-url</code></dt>
-<dd><a name="index-ibtypes-www_002durl"></a>
+<a name="index-ibtypes-www_002durl"></a>
<a name="index-URL"></a>
<a name="index-World_002dwide-Web"></a>
<a name="index-WWW"></a>
<a name="index-Action-Key_002c-web-browsing"></a>
<a name="index-Action-Key_002c-web-browsing-1"></a>
<a name="index-browse_002durl_002dbrowser_002dfunction"></a>
-<p>When not in an Emacs web browser buffer, follows any non-ftp URL (link) at
point.
+</dd>
+<dt><code>www-url</code></dt>
+<dd><p>When not in an Emacs web browser buffer, follows any non-ftp URL (link)
at point.
The variable, <code>browse-url-browser-function</code>, may be used to
customize
which URL browser is called. Terse URLs which lack a protocol prefix,
like www.gnu.org, are also recognized.
</p>
-</dd>
-<dt><code>gnus-push-button</code></dt>
-<dd><a name="index-ibtypes-gnus_002dpush_002dbutton"></a>
+<a name="index-ibtypes-gnus_002dpush_002dbutton"></a>
<a name="index-GNUS-push_002dbuttons"></a>
<a name="index-hiding-signatures"></a>
<a name="index-signatures_002c-hiding"></a>
-<p>Activates GNUS-specific article push-buttons, e.g. for hiding
+</dd>
+<dt><code>gnus-push-button</code></dt>
+<dd><p>Activates GNUS-specific article push-buttons, e.g. for hiding
signatures. GNUS is a news and mail reader."
</p>
-</dd>
-<dt><code>texinfo-ref</code></dt>
-<dd><a name="index-ibtypes-texinfo_002dref"></a>
+<a name="index-ibtypes-texinfo_002dref"></a>
<a name="index-Texinfo-cross_002dreference"></a>
<a name="index-cross_002dreference_002c-Texinfo"></a>
-<p>Displays Texinfo, Info node or help associated with Texinfo node, menu
+</dd>
+<dt><code>texinfo-ref</code></dt>
+<dd><p>Displays Texinfo, Info node or help associated with Texinfo node, menu
item, @xref, @pxref, @ref, @code or @var at point. If point is
within the braces of a cross-reference, the associated Info node is
shown. If point is to the left of the braces but after the @ symbol and
@@ -1382,113 +1387,113 @@ Texinfo node is shown.
<p>For @code and @var references, the associated documentation string
is displayed.
</p>
-</dd>
-<dt><code>mail-address</code></dt>
-<dd><a name="index-ibtypes-mail_002daddress"></a>
+<a name="index-ibtypes-mail_002daddress"></a>
<a name="index-e_002dmail-address"></a>
<a name="index-rolo-address"></a>
<a name="index-address"></a>
-<p>If on an e-mail address in a specific buffer type, mail to that address
+</dd>
+<dt><code>mail-address</code></dt>
+<dd><p>If on an e-mail address in a specific buffer type, mail to that address
in another window. Applies to the rolo match buffer, any buffer
attached to a file in <code>hyrolo-file-list</code>, or any buffer with
<samp>mail</samp>
or <samp>rolo</samp> (case-insensitive) within its name.
</p>
+<a name="index-ibtypes-patch_002dmsg"></a>
+<a name="index-patch-output"></a>
</dd>
<dt><code>patch-msg</code></dt>
-<dd><a name="index-ibtypes-patch_002dmsg"></a>
-<a name="index-patch-output"></a>
-<p>Jumps to the source code associated with output from the
‘<samp>patch</samp>’
+<dd><p>Jumps to the source code associated with output from the
‘<samp>patch</samp>’
program. Patch applies diffs to source code.
</p>
-</dd>
-<dt><code>elisp-compiler-msg</code></dt>
-<dd><a name="index-ibtypes-elisp_002dcompiler_002dmsg"></a>
+<a name="index-ibtypes-elisp_002dcompiler_002dmsg"></a>
<a name="index-byte-compiler-error"></a>
<a name="index-Emacs-Lisp-compiler-error"></a>
<a name="index-compiler-error"></a>
-<p>Jumps to the source code for a definition associated with a
+</dd>
+<dt><code>elisp-compiler-msg</code></dt>
+<dd><p>Jumps to the source code for a definition associated with a
byte-compiler error message. Works when activated anywhere within an
error line.
</p>
-</dd>
-<dt><code>debugger-source</code></dt>
-<dd><a name="index-ibtypes-debugger_002dsource"></a>
+<a name="index-ibtypes-debugger_002dsource"></a>
<a name="index-gdb"></a>
<a name="index-dbx"></a>
<a name="index-xdb"></a>
<a name="index-stack-frame"></a>
<a name="index-breakpoint"></a>
<a name="index-source-line"></a>
-<p>Jumps to the source line associated with a debugger stack frame or
+</dd>
+<dt><code>debugger-source</code></dt>
+<dd><p>Jumps to the source line associated with a debugger stack frame or
breakpoint line. This works with gdb, dbx, and xdb. Such lines are
recognized in any buffer.
</p>
-</dd>
-<dt><code>grep-msg</code></dt>
-<dd><a name="index-ibtypes-grep_002dmsg"></a>
+<a name="index-ibtypes-grep_002dmsg"></a>
<a name="index-grep"></a>
<a name="index-compiler-error-1"></a>
-<p>Jumps to a line associated with grep or compilation error messages.
+</dd>
+<dt><code>grep-msg</code></dt>
+<dd><p>Jumps to a line associated with grep or compilation error messages.
Messages are recognized in any buffer.
</p>
-</dd>
-<dt><code>klink</code></dt>
-<dd><a name="index-ibtypes-klink"></a>
+<a name="index-ibtypes-klink"></a>
<a name="index-klink"></a>
<a name="index-koutline-link"></a>
<a name="index-kcell-link"></a>
-<p>Follows a link delimited by <> to a koutline cell.
+</dd>
+<dt><code>klink</code></dt>
+<dd><p>Follows a link delimited by <> to a koutline cell.
See the documentation for <code>actypes::link-to-kotl</code> for valid link
specifiers.
</p>
-</dd>
-<dt><code>man-apropos</code></dt>
-<dd><a name="index-ibtypes-man_002dapropos"></a>
+<a name="index-ibtypes-man_002dapropos"></a>
<a name="index-UNIX-manual"></a>
<a name="index-man-pages"></a>
<a name="index-man-apropos"></a>
-<p>Makes man apropos entries (from ‘<samp>man -k</samp>’) display
associated man pages when
+</dd>
+<dt><code>man-apropos</code></dt>
+<dd><p>Makes man apropos entries (from ‘<samp>man -k</samp>’)
display associated man pages when
selected.
</p>
-</dd>
-<dt><code>rfc</code></dt>
-<dd><a name="index-ibtypes-rfc"></a>
+<a name="index-ibtypes-rfc"></a>
<a name="index-Internet-RFC"></a>
<a name="index-Request-For-Comment"></a>
<a name="index-RFC"></a>
<a name="index-remote-file"></a>
<a name="index-ftp"></a>
-<p>Retrieves and displays an Internet rfc referenced at point. Requires remote
+</dd>
+<dt><code>rfc</code></dt>
+<dd><p>Retrieves and displays an Internet rfc referenced at point. Requires
remote
file access, e.g. via the Tramp library, for remote ftp retrievals. The
following formats are recognized: RFC822, rfc-822, and RFC 822. The
<code>hpath:rfc</code> variable specifies the location from which to retrieve
RFCs."
</p>
+<a name="index-ibtypes-kbd_002dkey"></a>
+<a name="index-key-sequence"></a>
</dd>
<dt><code>kbd-key</code></dt>
-<dd><a name="index-ibtypes-kbd_002dkey"></a>
-<a name="index-key-sequence"></a>
-<p>Executes the command binding or the Hyperbole minibuffer menu action
+<dd><p>Executes the command binding or the Hyperbole minibuffer menu action
for a key sequence delimited by curly braces. Key sequences should
be in human readable form, e.g. <kbd>{C-x C-b}</kbd>. Formats such
as {^x^b} will not be recognized.
</p>
-</dd>
-<dt><code>dir-summary</code></dt>
-<dd><a name="index-ibtypes-dir_002dsummary"></a>
+<a name="index-ibtypes-dir_002dsummary"></a>
<a name="index-file_002c-MANIFEST"></a>
<a name="index-file_002c-DIR"></a>
-<p>Detects filename buttons in files named "MANIFEST" or
"DIR".
+</dd>
+<dt><code>dir-summary</code></dt>
+<dd><p>Detects filename buttons in files named "MANIFEST" or
"DIR".
Displays selected files. Each file name must be at the beginning of the
line and must be followed by one or more spaces and then another
non-space, non-parenthesis, non-brace character.
</p>
-</dd>
-<dt><code>text-toc</code></dt>
-<dd><a name="index-ibtypes-text_002dtoc"></a>
+<a name="index-ibtypes-text_002dtoc"></a>
<a name="index-table-of-contents"></a>
<a name="index-toc-implicit-button-type"></a>
-<p>Jumps to the text file section referenced by a table of contents entry
+</dd>
+<dt><code>text-toc</code></dt>
+<dd><p>Jumps to the text file section referenced by a table of contents entry
at point. The file name of the current buffer must contain
<samp>README</samp> and there must be a ‘Table of Contents’ or
‘Contents’
label on a line by itself (it may begin with an asterisk), preceding the
@@ -1497,82 +1502,89 @@ followed by one or more asterisk characters. Each line
which begins a
new file section must start with one or more asterisk characters at the
very beginning of the line.
</p>
-</dd>
-<dt><code>cscope</code></dt>
-<dd><a name="index-ibtypes-cscope"></a>
+<a name="index-ibtypes-cscope"></a>
<a name="index-C_002fC_002b_002b-call-trees"></a>
<a name="index-C_002fC_002b_002b-cross_002dreference"></a>
<a name="index-Cscope"></a>
-<p>Jumps to a C/C++ source line associated with a Cscope C analyzer output
line.
+</dd>
+<dt><code>cscope</code></dt>
+<dd><p>Jumps to a C/C++ source line associated with a Cscope C analyzer output
line.
Requires pre-loading of the cscope.el Lisp library available from the Emacs
Lisp archives and the commercial cscope program available from AT&T’s
software toolchest. Otherwise, does nothing.
</p>
-</dd>
-<dt><code>etags</code></dt>
-<dd><a name="index-ibtypes-etags"></a>
+<a name="index-ibtypes-etags"></a>
<a name="index-etags-entry"></a>
<a name="index-TAGS-file"></a>
<a name="index-tag"></a>
-<p>Jumps to the source line associated with an etags file entry in a TAGS
buffer.
+</dd>
+<dt><code>etags</code></dt>
+<dd><p>Jumps to the source line associated with an etags file entry in a TAGS
buffer.
If on a tag entry line, jumps to the source line for the tag. If on a
pathname line or line preceding it, jumps to the associated file.
</p>
-</dd>
-<dt><code>ctags</code></dt>
-<dd><a name="index-ibtypes-ctags"></a>
+<a name="index-ibtypes-ctags"></a>
<a name="index-ctags-entry"></a>
<a name="index-tags-file"></a>
-<p>Jumps to the source line associated with a ctags file entry in any buffer.
+</dd>
+<dt><code>ctags</code></dt>
+<dd><p>Jumps to the source line associated with a ctags file entry in any
buffer.
Ctags files are used by old editors like vi to lookup identifiers.
InfoDock and Emacs use the newer, more flexible Etags format.
</p>
-</dd>
-<dt><code>id-cflow</code></dt>
-<dd><a name="index-ibtypes-id_002dcflow"></a>
+<a name="index-ibtypes-id_002dcflow"></a>
<a name="index-C-call-tree"></a>
<a name="index-call-tree_002c-C"></a>
<a name="index-C-flow-graph"></a>
-<p>Expands or collapses C call trees and jumps to code definitions.
+</dd>
+<dt><code>id-cflow</code></dt>
+<dd><p>Expands or collapses C call trees and jumps to code definitions.
Requires cross-reference tables built by the external <code>cxref</code>
program.
</p>
-</dd>
-<dt><code>rfc-toc</code></dt>
-<dd><a name="index-ibtypes-rfc_002dtoc"></a>
+<a name="index-ibtypes-rfc_002dtoc"></a>
<a name="index-Internet-RFC-1"></a>
<a name="index-Request-For-Comment-1"></a>
<a name="index-RFC-1"></a>
<a name="index-table-of-contents-1"></a>
-<p>Summarizes contents of an Internet rfc from anywhere within an rfc buffer.
+</dd>
+<dt><code>rfc-toc</code></dt>
+<dd><p>Summarizes contents of an Internet rfc from anywhere within an rfc
buffer.
Each line of the summary may be selected to jump to the associated section.
</p>
+<a name="index-ibtypes-markdown_002dinternal_002dlink"></a>
+<a name="index-markdown-link"></a>
</dd>
-<dt><code>annot-bib</code></dt>
-<dd><a name="index-ibtypes-annot_002dbib"></a>
+<dt><code>markdown-internal-link</code></dt>
+<dd><p>Displays any in-file Markdown link referent. Pathnames and urls are
+handled elsewhere.
+</p>
+<a name="index-ibtypes-annot_002dbib"></a>
<a name="index-bibliography"></a>
<a name="index-reference"></a>
-<p>Displays annotated bibliography entries defined within the same buffer
+</dd>
+<dt><code>annot-bib</code></dt>
+<dd><p>Displays annotated bibliography entries defined within the same buffer
as the reference. References must be delimited by square brackets, must
begin with a word constituent character, and must not be in buffers
whose names begin with a ‘ ’ or ‘*’ character.
</p>
-</dd>
-<dt><code>debbugs-gnu-mode</code></dt>
-<dd><a name="index-ibtypes-debbugs_002dgnu_002dmode"></a>
+<a name="index-ibtypes-debbugs_002dgnu_002dmode"></a>
<a name="index-bug-tracking"></a>
<a name="index-issue-tracking"></a>
-<p>Debbugs is a client-server issue tracker used by GNU free software
+</dd>
+<dt><code>debbugs-gnu-mode</code></dt>
+<dd><p>Debbugs is a client-server issue tracker used by GNU free software
projects, including Hyperbole, to manage issues and maintain threads
of discussion around them. When on a GNU Debbugs listing entry in
<code>debbugs-gnu-mode</code>, an Action Key press displays the discussion
of the selected issue; an Assist Key press pretty prints the status of
the issue to a window below the listing window.
</p>
+<a name="index-ibtypes-debbugs_002dgnu_002dquery"></a>
</dd>
<dt><code>debbugs-gnu-query</code></dt>
-<dd><a name="index-ibtypes-debbugs_002dgnu_002dquery"></a>
-<p>This implicit button type displays the results of a Gnu debbugs query
+<dd><p>This implicit button type displays the results of a Gnu debbugs query
based on the string at point and works in most kinds of buffers. If
the query includes a single id number, it displays the original message
submission for that id and allows browsing of the followup discussion.
@@ -1591,14 +1603,15 @@ bug#id-number?attr1=val1&attr2=val2&attr3=val3
of <em>bug</em>. See the documentation at the top of
the <samp>hib-debbugs.el</samp> file for detailed query format information.
</p>
-</dd>
-<dt><code>social-reference</code></dt>
-<dd><a name="index-ibtypes-social_002dreference"></a>
+<a name="index-ibtypes-social_002dreference"></a>
<a name="index-hashtag"></a>
<a name="index-username"></a>
<a name="index-social-media"></a>
+<a name="index-social-reference"></a>
<a name="index-hibtypes_002dsocial_002ddefault_002dservice"></a>
-<p>Displays the web page associated with a social media hashtag or username
+</dd>
+<dt><code>social-reference</code></dt>
+<dd><p>Displays the web page associated with a social media hashtag or username
reference at point. Reference format is:
</p>
<div class="smallexample">
@@ -1615,29 +1628,27 @@ value of <code>hibtypes-social-default-service</code>
(default value of
twitter#hashtag.
</p>
-</dd>
-<dt><code>function-in-buffer</code></dt>
-<dd><a name="index-ibtypes-function_002din_002dbuffer"></a>
+<a name="index-ibtypes-function_002din_002dbuffer"></a>
<a name="index-file_002c-func_002dmenu_002eel"></a>
<a name="index-function-menu"></a>
<a name="index-func_002dmenu"></a>
-<p>Returns the function name defined within this buffer that point is
+</dd>
+<dt><code>function-in-buffer</code></dt>
+<dd><p>Returns the function name defined within this buffer that point is
within or after, else ‘<samp>nil</samp>’. This triggers only when
the
func-menu library has been loaded and the current major mode is one
handled by func-menu.
</p>
-</dd>
-<dt><code>pathname-line-and-column</code></dt>
-<dd><a name="index-link_002c-pathname-line-and-column"></a>
+<a name="index-link_002c-pathname-line-and-column"></a>
<a name="index-line-and-column"></a>
<a name="index-pathname_002c-line-and-column"></a>
<a name="index-ibtypes-pathname_002dline_002dand_002dcolumn"></a>
-<p>Makes a valid pathname:line-num[:column-num] pattern display the path
+</dd>
+<dt><code>pathname-line-and-column</code></dt>
+<dd><p>Makes a valid pathname:line-num[:column-num] pattern display the path
at line-num and optional column-num. Also works for remote pathnames.
</p>
-</dd>
-<dt><code>pathname</code></dt>
-<dd><a name="index-ibtypes-pathname"></a>
+<a name="index-ibtypes-pathname"></a>
<a name="index-hpath_003aat_002dp"></a>
<a name="index-hpath_003afind"></a>
<a name="index-hpath_003asuffixes"></a>
@@ -1649,10 +1660,14 @@ at line-num and optional column-num. Also works for
remote pathnames.
<a name="index-remote-path"></a>
<a name="index-filename"></a>
<a name="index-link_002c-pathname"></a>
-<p>Makes a valid pathname display the path entry. Also works for delimited and
-non-delimited remote pathnames and Texinfo <samp></samp> entries. Emacs Lisp
-library files (filenames without any directory component that end in .el and
-.elc) are looked up using the <code>load-path</code> directory list.
+</dd>
+<dt><code>pathname</code></dt>
+<dd><p>Makes a valid pathname display the path entry. Also works for
+delimited and non-delimited remote pathnames, Texinfo <samp></samp> entries,
+and hash-style link references to HTML, Markdown or Emacs outline
+headings. Emacs Lisp library files (filenames without any directory
+component that end in .el and .elc) are looked up using
+the <code>load-path</code> directory list.
</p>
<p>See the function documentation for <code>hpath:at-p</code> for possible
delimiters. See the variable documentation for <code>hpath:suffixes</code> for
@@ -1660,34 +1675,35 @@ suffixes that are added to or removed from the pathname
when searching
for a valid match. See the function documentation for <code>hpath:find</code>
for special file display options.
</p>
-</dd>
-<dt><code>org-mode</code></dt>
-<dd><a name="index-ibtypes-org_002dmode"></a>
+<a name="index-ibtypes-org_002dmode"></a>
<a name="index-browse_002durl_002dbrowser_002dfunction-1"></a>
<a name="index-org_002dmode"></a>
<a name="index-Org-mode"></a>
-<p>Follows any Org mode link at point or cycles through views of the
-outline subtree at point. The Assist Key on an Org mode heading,
-cycles through views of the whole buffer outline and on an Org mode
-link, displays standard Hyperbole help.
+</dd>
+<dt><code>org-mode</code></dt>
+<dd><p>The Action Key follows any Org mode link at point or cycles through
+views of the outline subtree at point. In any other context besides
+the end of a line, the Action Key will invoke the Org mode standard
+binding of <kbd>{M-<span class="key">RET</span>}</kbd>, (org-meta-return).
The Assist Key on
+an Org mode heading, cycles through views of the whole buffer outline
+and on an Org mode link, displays standard Hyperbole help.
</p>
<p>The variable, <code>browse-url-browser-function</code>, customizes the url
browser that is used for urls. Valid values of this variable
include <code>browse-url-default-browser</code>
and <code>browse-url-generic</code>.
</p>
-</dd>
-<dt><code>doc-id</code></dt>
-<dd><a name="index-ibtypes-doc_002did"></a>
+<a name="index-ibtypes-doc_002did"></a>
<a name="index-online-library"></a>
<a name="index-document-identifier"></a>
-<p>Displays an index
-entry for a site-specific document given its id. Ids must be
-delimited by <code>doc-id-start</code> and <code>doc-id-end</code> and must
match
-the function given by <code>doc-id-p</code>. This permits creation of
-catalogued online libraries. [Note that this implicit button type is not
installed by default. You
-must manually configure it and load it from the
-file, <samp><code>${hyperb:dir}</code>/hib-doc-id.el</samp>.]
+</dd>
+<dt><code>doc-id</code></dt>
+<dd><p>Displays an index entry for a site-specific document given its id.
+Ids must be delimited by <code>doc-id-start</code> and <code>doc-id-end</code>
and
+must match the function given by <code>doc-id-p</code>. This permits
+creation of catalogued online libraries. (Note that this implicit
+button type is not installed by default. You must manually configure
+it and load it from the file,
<samp><code>${hyperb:dir}</code>/hib-doc-id.el</samp>).
</p></dd>
</dl>
@@ -1773,145 +1789,146 @@ creating explicit or global buttons.
are:
</p>
<dl compact="compact">
-<dt><code>annot-bib</code></dt>
<dd><a name="index-actypes-annot_002dbib"></a>
-<p>Follows an internal reference KEY within an annotated bibliography,
+</dd>
+<dt><code>annot-bib</code></dt>
+<dd><p>Follows an internal reference KEY within an annotated bibliography,
delimiters = [ ].
</p>
+<a name="index-actypes-completion"></a>
</dd>
<dt><code>completion</code></dt>
-<dd><a name="index-actypes-completion"></a>
-<p>Inserts a completion at point into the minibuffer or a buffer.
+<dd><p>Inserts a completion at point into the minibuffer or a buffer.
Unless point is at the end of buffer or if a completion has already been
inserted, in which case the completions window is deleted.
</p>
+<a name="index-actypes-eval_002delisp"></a>
</dd>
<dt><code>eval-elisp</code></dt>
-<dd><a name="index-actypes-eval_002delisp"></a>
-<p>Evaluates a Lisp expression LISP-EXPR.
+<dd><p>Evaluates a Lisp expression LISP-EXPR.
</p>
+<a name="index-actypes-exec_002dkbd_002dmacro"></a>
</dd>
<dt><code>exec-kbd-macro</code></dt>
-<dd><a name="index-actypes-exec_002dkbd_002dmacro"></a>
-<p>Executes a KBD-MACRO REPEAT-COUNT times. KBD-MACRO may be a string of
+<dd><p>Executes a KBD-MACRO REPEAT-COUNT times. KBD-MACRO may be a string of
editor command characters, a function symbol or nil to use the last
defined keyboard macro. Optional REPEAT-COUNT nil means execute once,
zero means repeat until error.
</p>
+<a name="index-actypes-exec_002dshell_002dcmd"></a>
</dd>
<dt><code>exec-shell-cmd</code></dt>
-<dd><a name="index-actypes-exec_002dshell_002dcmd"></a>
-<p>Executes a SHELL-CMD string asynchronously. Optional non-nil second
+<dd><p>Executes a SHELL-CMD string asynchronously. Optional non-nil second
argument INTERNAL-CMD inhibits display of the shell command line
executed. Optional non-nil third argument KILL-PREV means kill the last
output to the shell buffer before executing SHELL-CMD.
</p>
+<a name="index-actypes-exec_002dwindow_002dcmd"></a>
</dd>
<dt><code>exec-window-cmd</code></dt>
-<dd><a name="index-actypes-exec_002dwindow_002dcmd"></a>
-<p>Asynchronously executes an external window-based SHELL-CMD string.
+<dd><p>Asynchronously executes an external window-based SHELL-CMD string.
</p>
+<a name="index-actypes-function_002din_002dbuffer"></a>
</dd>
<dt><code>function-in-buffer</code></dt>
-<dd><a name="index-actypes-function_002din_002dbuffer"></a>
-<p>Displays the definition of function NAME found at POS in the current buffer.
+<dd><p>Displays the definition of function NAME found at POS in the current
buffer.
</p>
+<a name="index-actypes-hyp_002dconfig"></a>
</dd>
<dt><code>hyp-config</code></dt>
-<dd><a name="index-actypes-hyp_002dconfig"></a>
-<p>Inserts Hyperbole configuration and debugging information at the end
+<dd><p>Inserts Hyperbole configuration and debugging information at the end
of the current buffer or within optional OUT-BUF.
</p>
+<a name="index-actypes-hyp_002drequest"></a>
</dd>
<dt><code>hyp-request</code></dt>
-<dd><a name="index-actypes-hyp_002drequest"></a>
-<p>Inserts help for composing a Hyperbole support/discussion message into
+<dd><p>Inserts help for composing a Hyperbole support/discussion message into
the current buffer or the optional OUT-BUF.
</p>
+<a name="index-actypes-hyp_002dsource"></a>
</dd>
<dt><code>hyp-source</code></dt>
-<dd><a name="index-actypes-hyp_002dsource"></a>
-<p>Displays a buffer or file from a line beginning with
+<dd><p>Displays a buffer or file from a line beginning with
<code>hbut:source-prefix</code>.
</p>
+<a name="index-actypes-kbd_002dkey"></a>
</dd>
<dt><code>kbd-key</code></dt>
-<dd><a name="index-actypes-kbd_002dkey"></a>
-<p>Executes the function binding for KEY-SEQUENCE, delimited by {}.
+<dd><p>Executes the function binding for KEY-SEQUENCE, delimited by {}.
Returns ‘<samp>t</samp>’ if a KEY-SEQUENCE has a binding, else
‘<samp>nil</samp>’.
</p>
<a name="index-link-action-types"></a>
+<a name="index-actypes-link_002dto_002dbuffer_002dtmp"></a>
</dd>
<dt><code>link-to-buffer-tmp</code></dt>
-<dd><a name="index-actypes-link_002dto_002dbuffer_002dtmp"></a>
-<p>Displays a BUFFER. This type of link generally can
+<dd><p>Displays a BUFFER. This type of link generally can
only be used within a single editor session. Use <code>link-to-file</code>
instead for a permanent link.
</p>
+<a name="index-actypes-link_002dto_002ddirectory"></a>
</dd>
<dt><code>link-to-directory</code></dt>
-<dd><a name="index-actypes-link_002dto_002ddirectory"></a>
-<p>Displays a DIRECTORY in Dired mode.
+<dd><p>Displays a DIRECTORY in Dired mode.
</p>
+<a name="index-actypes-link_002dto_002ddoc"></a>
</dd>
<dt><code>link-to-doc</code></dt>
-<dd><a name="index-actypes-link_002dto_002ddoc"></a>
-<p>Displays an online version of a document given by DOC-ID. If the online
+<dd><p>Displays an online version of a document given by DOC-ID. If the online
version of a document is not found in <code>doc-id-indices</code>, an error is
signalled.
</p>
+<a name="index-actypes-link_002dto_002debut"></a>
</dd>
<dt><code>link-to-ebut</code></dt>
-<dd><a name="index-actypes-link_002dto_002debut"></a>
-<p>Performs an action given by another button, specified by KEY and KEY-FILE.
+<dd><p>Performs an action given by another button, specified by KEY and
KEY-FILE.
</p>
+<a name="index-actypes-link_002dto_002delisp_002ddoc"></a>
</dd>
<dt><code>link-to-elisp-doc</code></dt>
-<dd><a name="index-actypes-link_002dto_002delisp_002ddoc"></a>
-<p>Displays the documentation for FUNC-SYMBOL.
+<dd><p>Displays the documentation for FUNC-SYMBOL.
</p>
+<a name="index-actypes-link_002dto_002dfile"></a>
</dd>
<dt><code>link-to-file</code></dt>
-<dd><a name="index-actypes-link_002dto_002dfile"></a>
-<p>Displays file given by PATH scrolled to optional POINT. With POINT,
+<dd><p>Displays file given by PATH scrolled to optional POINT. With POINT,
buffer is displayed with POINT at window top.
</p>
+<a name="index-actypes-link_002dto_002dfile_002dline"></a>
</dd>
<dt><code>link-to-file-line</code></dt>
-<dd><a name="index-actypes-link_002dto_002dfile_002dline"></a>
-<p>Displays a file given by PATH scrolled to LINE-NUM.
+<dd><p>Displays a file given by PATH scrolled to LINE-NUM.
</p>
+<a name="index-actypes-link_002dto_002dInfo_002dindex_002ditem"></a>
</dd>
<dt><code>link-to-Info-index-item</code></dt>
-<dd><a name="index-actypes-link_002dto_002dInfo_002dindex_002ditem"></a>
-<p>Displays an Info index ITEM cross-reference.
+<dd><p>Displays an Info index ITEM cross-reference.
ITEM must be a string of the form (filename)item-name. During
button creation, completion for both filename and item-name is
available. Filename may be given without the .info suffix."
</p>
+<a name="index-actypes-link_002dto_002dInfo_002dnode"></a>
</dd>
<dt><code>link-to-Info-node</code></dt>
-<dd><a name="index-actypes-link_002dto_002dInfo_002dnode"></a>
-<p>Displays an Info NODE. NODE must be a string of the form
+<dd><p>Displays an Info NODE. NODE must be a string of the form
(filename)nodename. During button creation, completion for both
filename and nodename is available. Filename may be given without the
.info suffix.
</p>
+<a name="index-actypes-link_002dto_002dkcell"></a>
+<a name="index-kcell_003aref_002dto_002did"></a>
</dd>
<dt><code>link-to-kcell</code></dt>
-<dd><a name="index-actypes-link_002dto_002dkcell"></a>
-<a name="index-kcell_003aref_002dto_002did"></a>
-<p>Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
+<dd><p>Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
top of a window. See the documentation for <code>(kcell:ref-to-id)</code> for
valid CELL-REF formats.
</p>
<p>If FILE is ‘<samp>nil</samp>’, the current buffer is used. If
CELL-REF is
‘<samp>nil</samp>’, the first cell in the view is shown.
</p>
+<a name="index-actypes-link_002dto_002dkotl"></a>
</dd>
<dt><code>link-to-kotl</code></dt>
-<dd><a name="index-actypes-link_002dto_002dkotl"></a>
-<p>Displays at the top of a window the referent pointed to by LINK.
+<dd><p>Displays at the top of a window the referent pointed to by LINK.
LINK may be of any of the following forms, with or without delimiters:
</p><div class="example">
<pre class="example"> < pathname [, cell-ref] >
@@ -1922,78 +1939,77 @@ LINK may be of any of the following forms, with or
without delimiters:
<p>See the documentation for <code>(kcell:ref-to-id)</code> for valid cell-ref
formats.
</p>
+<a name="index-actypes-link_002dto_002dmail"></a>
</dd>
<dt><code>link-to-mail</code></dt>
-<dd><a name="index-actypes-link_002dto_002dmail"></a>
-<p>Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE. See
+<dd><p>Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE. See
the documentation for the variable <code>hmail:init-function</code> for
information on how to specify the mail reader to use.
</p>
+<a name="index-actypes-link_002dto_002dregexp_002dmatch"></a>
</dd>
<dt><code>link-to-regexp-match</code></dt>
-<dd><a name="index-actypes-link_002dto_002dregexp_002dmatch"></a>
-<p>Finds REGEXP’s Nth occurrence in SOURCE and displays the location at
the
+<dd><p>Finds REGEXP’s Nth occurrence in SOURCE and displays the location
at the
top of the selected window. SOURCE is a pathname unless optional
BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
Returns ‘<samp>t</samp>’ if found, signals an error if not.
</p>
+<a name="index-actypes-link_002dto_002drfc"></a>
</dd>
<dt><code>link-to-rfc</code></dt>
-<dd><a name="index-actypes-link_002dto_002drfc"></a>
-<p>Retrieves and displays an Internet rfc given by RFC-NUM. RFC-NUM may be
+<dd><p>Retrieves and displays an Internet rfc given by RFC-NUM. RFC-NUM may be
a string or an integer. Requires a remote file access library, such as
Tramp, for ftp file retrievals.
</p>
+<a name="index-actypes-link_002dto_002dstring_002dmatch"></a>
</dd>
<dt><code>link-to-string-match</code></dt>
-<dd><a name="index-actypes-link_002dto_002dstring_002dmatch"></a>
-<p>Finds STRING’s Nth occurrence in SOURCE and displays the location at
the
+<dd><p>Finds STRING’s Nth occurrence in SOURCE and displays the location
at the
top of the selected window. SOURCE is a pathname unless optional
BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
Returns ‘<samp>t</samp>’ if found, ‘<samp>nil</samp>’
if not.
</p>
+<a name="index-actypes-link_002dto_002dtexinfo_002dnode"></a>
</dd>
<dt><code>link-to-texinfo-node</code></dt>
-<dd><a name="index-actypes-link_002dto_002dtexinfo_002dnode"></a>
-<p>Displays the Texinfo node with NODENAME (a string) from the current buffer.
+<dd><p>Displays the Texinfo node with NODENAME (a string) from the current
buffer.
</p>
+<a name="index-actypes-man_002dshow"></a>
+<a name="index-sm_002dnotify"></a>
</dd>
<dt><code>man-show</code></dt>
-<dd><a name="index-actypes-man_002dshow"></a>
-<a name="index-sm_002dnotify"></a>
-<p>Displays a man page on TOPIC, which may be of the form
+<dd><p>Displays a man page on TOPIC, which may be of the form
‘<samp><command>(<section></samp>’). If using the
Superman manual entry
package, see the documentation for <code>sm-notify</code> to control where the
man page is displayed.
</p>
+<a name="index-actypes-rfc_002dtoc"></a>
</dd>
<dt><code>rfc-toc</code></dt>
-<dd><a name="index-actypes-rfc_002dtoc"></a>
-<p>Computes and displays a summary of an Internet rfc in BUF-NAME. Assumes
+<dd><p>Computes and displays a summary of an Internet rfc in BUF-NAME. Assumes
point has already been moved to the start of the region to summarize.
Optional OPOINT is the point to return to in BUF-NAME after displaying
the summary.
</p>
-</dd>
-<dt><code>text-toc</code></dt>
-<dd><a name="index-actypes-text_002dtoc"></a>
+<a name="index-actypes-text_002dtoc"></a>
<a name="index-table-of-contents-2"></a>
<a name="index-toc-action-type"></a>
-<p>Jumps to the text file SECTION referenced by a table of contents entry
+</dd>
+<dt><code>text-toc</code></dt>
+<dd><p>Jumps to the text file SECTION referenced by a table of contents entry
at point.
</p>
-</dd>
-<dt><code>www-url</code></dt>
-<dd><a name="index-actypes-www_002durl"></a>
+<a name="index-actypes-www_002durl"></a>
<a name="index-URL-1"></a>
<a name="index-World_002dwide-Web-1"></a>
<a name="index-WWW-1"></a>
<a name="index-browse_002durl_002dbrowser_002dfunction-2"></a>
-<p>Follows a link given by a URL. The variable,
+</dd>
+<dt><code>www-url</code></dt>
+<dd><p>Follows a link given by a URL. The variable,
<code>browse-url-browser-function</code>, customizes the url browser
that is used. See its documentation string for details.
-</p>
-</dd>
+</p></dd>
</dl>
<a name="index-action-1"></a>
@@ -3208,12 +3224,13 @@ 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.
-See <a href="#Configuration">Configuration</a>.
+<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="#Customization">Customization</a>.
</p>
<a name="index-menu_002c-KeyBindings"></a>
<a name="index-key-binding_002c-menu"></a>
@@ -3250,12 +3267,13 @@ 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. It also includes a submenu for quick
+access to popular web search engines.
</p>
<p>Below are each of the commands on the Find menu.
</p>
@@ -3263,6 +3281,7 @@ 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>
@@ -3289,6 +3308,26 @@ 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> <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>
+Web/ - Select a search engine and term and search with them.
+ Hyperbole binds the key <kbd>{C-c /}</kbd> for quick
+ access to this menu, if it is not already bound
+ prior to Hyperbole’s initialization. The
Cust/Web-Search
+ menu sets the option,
<code>hyperbole-web-search-browser-function</code>,
+ which determines whether web search results are displayed
+ within Emacs or with an external web browser. A short
+ video introduction to the Find/Web menu may be
+ found at <a
href="https://youtu.be/8lMlJed0-OM">https://youtu.be/8lMlJed0-OM</a>. The
+ Find/Web menu 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>
@@ -3374,18 +3413,26 @@ and then simply quit HyControl and go back to work.
</p>
<a name="index-C_002dc-_005c"></a>
<a name="index-screen_002c-C_002dc-_005c"></a>
+<a name="index-C_002dh-h-s-w"></a>
+<a name="index-screen_002c-C_002dh-h-s-w"></a>
+<a name="index-C_002dh-h-s-f"></a>
+<a name="index-screen_002c-C_002dh-h-s-f"></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
-item, <kbd>{C-h h s w}</kbd>, will do the same thing.
+<a name="index-menu-item_002c-FramesControl"></a>
+<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. To start HyControl
+with the frames menu instead, use Screen/FramesControl, <kbd>{C-h h s
+f}</kbd>.
</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 +3699,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 +3710,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>
@@ -3739,6 +3787,7 @@ outliner is available for use.)
</p>
<a name="index-file_002c-EXAMPLE_002ekotl"></a>
<a name="index-menu_002c-Outline_002fExample"></a>
+<a name="index-C_002dh-h-k-e"></a>
<p>This chapter expands on the information given in the
<samp>EXAMPLE.kotl</samp>
file included with Hyperbole. Use <kbd>{C-h h k e}</kbd> to display that
file, as pictured on the following page. It is an actual outline file
@@ -6179,7 +6228,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 +6236,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.
@@ -6412,10 +6461,10 @@ frame is visible at a time as each frame generally
fills the whole
terminal display, providing a virtual screen capability. Emacs
windows exist within a frame.
</p>
+<a name="index-gbut_003afile"></a>
</dd>
<dt><b>Global Button</b></dt>
-<dd><a name="index-gbut_003afile"></a>
-<p>A form of explicit button which is accessed by name rather than direct
+<dd><p>A form of explicit button which is accessed by name rather than direct
selection. Global buttons are useful when one wants quick access to
actions such as jumping to common file locations or for performing
sequences of operations. One need not locate them since they are always
@@ -6718,7 +6767,7 @@ invocation instructions in this appendix.
</td></tr>
<tr><td align="left" valign="top">• <a href="#Invocation"
accesskey="2">Invocation</a>:</td><td> </td><td align="left"
valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a href="#Configuration"
accesskey="3">Configuration</a>:</td><td> </td><td align="left"
valign="top">
+<tr><td align="left" valign="top">• <a href="#Customization"
accesskey="3">Customization</a>:</td><td> </td><td align="left"
valign="top">
</td></tr>
</table>
@@ -6772,7 +6821,7 @@ can be safely ignored.
<a name="Invocation"></a>
<div class="header">
<p>
-Next: <a href="#Configuration" accesskey="n" rel="next">Configuration</a>,
Previous: <a href="#Installation" accesskey="p" rel="prev">Installation</a>,
Up: <a href="#Setup" accesskey="u" rel="up">Setup</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Customization" accesskey="n" rel="next">Customization</a>,
Previous: <a href="#Installation" accesskey="p" rel="prev">Installation</a>,
Up: <a href="#Setup" accesskey="u" rel="up">Setup</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
</div>
<a name="Invocation-1"></a>
<h3 class="section">B.2 Invocation</h3>
@@ -6804,7 +6853,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>
@@ -6827,6 +6880,7 @@ directory in four forms:
<samp>man/hyperbole.texi</samp> - source form
</pre></div>
+<a name="index-C_002dh-h-d-i"></a>
<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. <kbd>{C-h h d i}</kbd> will let you
@@ -6840,16 +6894,17 @@ is:
<samp>~/.emacs.d/elpa/hyperbole-${hyperb:version}/</samp>.
configuring Hyperbole’s behavior.
</p>
<hr>
-<a name="Configuration"></a>
+<a name="Customization"></a>
<div class="header">
<p>
Previous: <a href="#Invocation" accesskey="p" rel="prev">Invocation</a>, Up:
<a href="#Setup" accesskey="u" rel="up">Setup</a> [<a
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Configuration-1"></a>
-<h3 class="section">B.3 Configuration</h3>
+<a name="Customization-1"></a>
+<h3 class="section">B.3 Customization</h3>
<a name="index-menu_002c-Cust-1"></a>
<a name="index-configuration"></a>
+<a name="index-customization"></a>
<p>Major Hyperbole user options may be set from the Customize submenu
below the Hyperbole menubar menu, as seen here.
</p>
@@ -6860,12 +6915,12 @@ below the Hyperbole menubar menu, as seen here.
<p>Alternatively, the minibuffer-based menu, Cust/ may be used.
</p>
-<a name="index-customization"></a>
+<a name="index-customization-1"></a>
<a name="index-option-setting"></a>
<a name="index-variable-setting"></a>
<p>Generally, you should not need to change anything other than these options.
However, if you like to customize your environment extensively, there
-are many additional Hyperbole configuration options that may be
+are many additional Hyperbole customization options that may be
changed with the Emacs customization interface,
see <a
href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Easy-Customization">Easy
Customization Interface</a> in <cite>the GNU
Emacs Manual</cite>.
@@ -6874,6 +6929,8 @@ permanently to your personal Emacs initialization file
and are available
in future Emacs sessions.
</p>
<a name="index-customize_002dbrowse"></a>
+<a name="index-menu-item_002c-Cust_002fAll_002dOptions"></a>
+<a name="index-C_002dh-h-c-a"></a>
<p>Use Cust/All-Options <kbd>{C-h h c a}</kbd> to display an expandable tree of
customizable Hyperbole options. Hyperbole’s customizations are
further grouped into several sub-categories, one for the Koutliner,
@@ -6882,32 +6939,78 @@ specfic option and they will appear in another window
for editing.
Simply follow the instructions on screen and then press the “Apply
and Save” button to make any changes permanent.
</p>
-<p>The following sections discuss the configuration options most likely to
+<a name="index-customize_002dvariable"></a>
+<p>If you know the name of the option you want to edit, you can edit it
+at any time without going through the tree of options. Use <kbd>{M-x
+customize-variable <span class="key">RET</span>}</kbd> and then type the name
of the variable
+and press <tt class="key">RET</tt> to edit it.
+</p>
+<p>The following sections discuss the customization options most likely to
be of interest to users.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a
href="#Using-URLs-with-Find_002dFile" accesskey="1">Using URLs with
Find-File</a>:</td><td> </td><td align="left" valign="top">
+<tr><td align="left" valign="top">• <a href="#Web-Search-Engines"
accesskey="1">Web Search Engines</a>:</td><td> </td><td align="left"
valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a href="#Internal-Viewers"
accesskey="2">Internal Viewers</a>:</td><td> </td><td align="left"
valign="top">
+<tr><td align="left" valign="top">• <a
href="#Using-URLs-with-Find_002dFile" accesskey="2">Using URLs with
Find-File</a>:</td><td> </td><td align="left" valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a href="#External-Viewers"
accesskey="3">External Viewers</a>:</td><td> </td><td align="left"
valign="top">
+<tr><td align="left" valign="top">• <a href="#Internal-Viewers"
accesskey="3">Internal Viewers</a>:</td><td> </td><td align="left"
valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a href="#Invisible-Text-Searches"
accesskey="4">Invisible Text Searches</a>:</td><td> </td><td
align="left" valign="top">
+<tr><td align="left" valign="top">• <a href="#External-Viewers"
accesskey="4">External Viewers</a>:</td><td> </td><td align="left"
valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a href="#Link-Variable-Substitution"
accesskey="5">Link Variable Substitution</a>:</td><td> </td><td
align="left" valign="top">
+<tr><td align="left" valign="top">• <a href="#Invisible-Text-Searches"
accesskey="5">Invisible Text Searches</a>:</td><td> </td><td
align="left" valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a href="#Button-Colors"
accesskey="6">Button Colors</a>:</td><td> </td><td align="left"
valign="top">
+<tr><td align="left" valign="top">• <a href="#Link-Variable-Substitution"
accesskey="6">Link Variable Substitution</a>:</td><td> </td><td
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">• <a href="#Button-Colors"
accesskey="7">Button Colors</a>:</td><td> </td><td align="left"
valign="top">
</td></tr>
</table>
<hr>
+<a name="Web-Search-Engines"></a>
+<div class="header">
+<p>
+Next: <a href="#Using-URLs-with-Find_002dFile" accesskey="n" rel="next">Using
URLs with Find-File</a>, Previous: <a href="#Customization" accesskey="p"
rel="prev">Customization</a>, Up: <a href="#Customization" accesskey="u"
rel="up">Customization</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
+</div>
+<a name="Web-Search-Engines-1"></a>
+<h4 class="subsection">B.3.1 Web Search Engines</h4>
+
+<a name="index-menu_002c-Find_002fWeb-1"></a>
+<a name="index-menu_002c-Web-1"></a>
+<a name="index-menu_002c-Cust_002fWeb_002dSearch"></a>
+<a name="index-C_002dh-h-c-w"></a>
+<a name="index-C_002dh-h-f-w"></a>
+<a name="index-hyperbole_002dweb_002dsearch_002dalist"></a>
+<a name="index-search-engines-menu"></a>
+<a name="index-web-search-menu"></a>
+<a name="index-customizing-web-search-menu"></a>
+<p>The Find/Web menu offers quick access to major web search engines. It
+is typically bound to <kbd>{C-c /}</kbd> or if not, then <kbd>{C-h h f
w}</kbd> is
+always available. Your standard web browser will be used to return
+the search results. You can change which browser is used
+with <kbd>{C-h h c w}</kbd>, the Cust/Web-Search menu. Advanced users can
+change the search engines listed in the Find/Web menu with <kbd>{M-x
+customize-variable <span class="key">RET</span> hyperbole-web-search-alist
<span class="key">RET</span>}</kbd>.
+Changes are automatically reflected in the Hyperbole menus once applied.
+Remember each search engine name must begin with a unique letter and
+each URL must have a %s format field indicating where to place the web
+search term when a search is performed.
+</p>
+<p>Advanced users can
+change the search engines listed by editing the option,
+<code>hyperbole-web-search-alist</code>, with <kbd>{M-x customize-variable
+<span class="key">RET</span> hyperbole-web-search-alist <span
class="key">RET</span>}</kbd>. Remember each search engine name
+must begin with a unique letter and each URL must have a %s format
+field indicating where to place the web search term when a search is
+performed.
+</p>
+<hr>
<a name="Using-URLs-with-Find_002dFile"></a>
<div class="header">
<p>
-Next: <a href="#Internal-Viewers" accesskey="n" rel="next">Internal
Viewers</a>, Previous: <a href="#Configuration" accesskey="p"
rel="prev">Configuration</a>, Up: <a href="#Configuration" accesskey="u"
rel="up">Configuration</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
+Next: <a href="#Internal-Viewers" accesskey="n" rel="next">Internal
Viewers</a>, Previous: <a href="#Web-Search-Engines" accesskey="p"
rel="prev">Web Search Engines</a>, Up: <a href="#Customization" accesskey="u"
rel="up">Customization</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
</div>
<a name="Using-URLs-with-Find_002dFile-1"></a>
-<h4 class="subsection">B.3.1 Using URLs with Find-File</h4>
+<h4 class="subsection">B.3.2 Using URLs with Find-File</h4>
<a name="index-find_002dfile"></a>
<a name="index-find_002dfile_002c-browsing-URLs"></a>
@@ -6950,10 +7053,10 @@ find-file URLs.
<a name="Internal-Viewers"></a>
<div class="header">
<p>
-Next: <a href="#External-Viewers" accesskey="n" rel="next">External
Viewers</a>, Previous: <a href="#Using-URLs-with-Find_002dFile" accesskey="p"
rel="prev">Using URLs with Find-File</a>, Up: <a href="#Configuration"
accesskey="u" rel="up">Configuration</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index"
title="Index" rel="index">Index</a>]</p>
+Next: <a href="#External-Viewers" accesskey="n" rel="next">External
Viewers</a>, Previous: <a href="#Using-URLs-with-Find_002dFile" accesskey="p"
rel="prev">Using URLs with Find-File</a>, Up: <a href="#Customization"
accesskey="u" rel="up">Customization</a> [<a href="#SEC_Contents"
title="Table of contents" rel="contents">Contents</a>][<a href="#Key-Index"
title="Index" rel="index">Index</a>]</p>
</div>
<a name="Internal-Viewers-1"></a>
-<h4 class="subsection">B.3.2 Internal Viewers</h4>
+<h4 class="subsection">B.3.3 Internal Viewers</h4>
<a name="index-hpath_003ainternal_002ddisplay_002dalist"></a>
<a name="index-file-display-function"></a>
<a name="index-display-function"></a>
@@ -6994,10 +7097,10 @@ external, window-system specific viewers.
<a name="External-Viewers"></a>
<div class="header">
<p>
-Next: <a href="#Invisible-Text-Searches" accesskey="n" rel="next">Invisible
Text Searches</a>, Previous: <a href="#Internal-Viewers" accesskey="p"
rel="prev">Internal Viewers</a>, Up: <a href="#Configuration" accesskey="u"
rel="up">Configuration</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
+Next: <a href="#Invisible-Text-Searches" accesskey="n" rel="next">Invisible
Text Searches</a>, Previous: <a href="#Internal-Viewers" accesskey="p"
rel="prev">Internal Viewers</a>, Up: <a href="#Customization" accesskey="u"
rel="up">Customization</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
</div>
<a name="External-Viewers-1"></a>
-<h4 class="subsection">B.3.3 External Viewers</h4>
+<h4 class="subsection">B.3.4 External Viewers</h4>
<a name="index-hpath_003aget_002dexternal_002ddisplay_002dalist"></a>
<a name="index-hpath_003aexternal_002ddisplay_002dalist_002dmacos"></a>
<a name="index-hpath_003aexternal_002ddisplay_002dalist_002dmswindows"></a>
@@ -7042,10 +7145,10 @@ within <code>hpath:get-external-display-alist</code>.
<a name="Invisible-Text-Searches"></a>
<div class="header">
<p>
-Next: <a href="#Link-Variable-Substitution" accesskey="n" rel="next">Link
Variable Substitution</a>, Previous: <a href="#External-Viewers" accesskey="p"
rel="prev">External Viewers</a>, Up: <a href="#Configuration" accesskey="u"
rel="up">Configuration</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
+Next: <a href="#Link-Variable-Substitution" accesskey="n" rel="next">Link
Variable Substitution</a>, Previous: <a href="#External-Viewers" accesskey="p"
rel="prev">External Viewers</a>, Up: <a href="#Customization" accesskey="u"
rel="up">Customization</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
</div>
<a name="Invisible-Text-Searches-1"></a>
-<h4 class="subsection">B.3.4 Invisible Text Searches</h4>
+<h4 class="subsection">B.3.5 Invisible Text Searches</h4>
<a name="index-menu-item_002c-Isearch_002dInvisible"></a>
<a name="index-menu-item_002c-Toggle_002dIsearch_002dInvisible"></a>
@@ -7065,10 +7168,10 @@ only visible text.
<a name="Link-Variable-Substitution"></a>
<div class="header">
<p>
-Next: <a href="#Button-Colors" accesskey="n" rel="next">Button Colors</a>,
Previous: <a href="#Invisible-Text-Searches" accesskey="p" rel="prev">Invisible
Text Searches</a>, Up: <a href="#Configuration" accesskey="u"
rel="up">Configuration</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
+Next: <a href="#Button-Colors" accesskey="n" rel="next">Button Colors</a>,
Previous: <a href="#Invisible-Text-Searches" accesskey="p" rel="prev">Invisible
Text Searches</a>, Up: <a href="#Customization" accesskey="u"
rel="up">Customization</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
</div>
<a name="Link-Variable-Substitution-1"></a>
-<h4 class="subsection">B.3.5 Link Variable Substitution</h4>
+<h4 class="subsection">B.3.6 Link Variable Substitution</h4>
<a name="index-hpath_003avariables"></a>
<a name="index-environment-variables"></a>
<a name="index-Emacs-Lisp-variables"></a>
@@ -7096,10 +7199,10 @@ you in deciding whether or not to modify the value of
<a name="Button-Colors"></a>
<div class="header">
<p>
-Previous: <a href="#Link-Variable-Substitution" accesskey="p" rel="prev">Link
Variable Substitution</a>, Up: <a href="#Configuration" accesskey="u"
rel="up">Configuration</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
+Previous: <a href="#Link-Variable-Substitution" accesskey="p" rel="prev">Link
Variable Substitution</a>, Up: <a href="#Customization" accesskey="u"
rel="up">Customization</a> [<a href="#SEC_Contents" title="Table of
contents" rel="contents">Contents</a>][<a href="#Key-Index" title="Index"
rel="index">Index</a>]</p>
</div>
<a name="Configuring-Button-Colors"></a>
-<h4 class="subsection">B.3.6 Configuring Button Colors</h4>
+<h4 class="subsection">B.3.7 Configuring Button Colors</h4>
<a name="index-XEmacs-support"></a>
<a name="index-Emacs-support"></a>
<a name="index-button-highlighting-1"></a>
@@ -7167,6 +7270,21 @@ 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-1"></a>
+<a name="index-menu_002c-Find_002fWeb-2"></a>
+<a name="index-menu_002c-Web-2"></a>
+<a name="index-searching-the-web-1"></a>
+<a name="index-web-search-menu-1"></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. This binding is made only if the key is not bound
+prior to loading Hyperbole; 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 +7313,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 +7334,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>
@@ -7395,10 +7513,10 @@ If < 1, print all visible cells in current view
<p>See also the documentation for <code>kotl-mode:cell-attributes</code>.
</p>
<a name="index-kotl_002dmode_003acenter_002dline"></a>
+<a name="index-fill_002dcolumn"></a>
</dd>
<dt><code>kotl-mode:center-line <kbd>{M-s}</kbd></code></dt>
-<dd><a name="index-fill_002dcolumn"></a>
-<p>Center the line point is on, within the width specified by
<code>fill-column</code>.
+<dd><p>Center the line point is on, within the width specified by
<code>fill-column</code>.
This means adjusting the indentation so that it equals the distance between
the end of the text and <code>fill-column</code>.
</p>
@@ -8448,20 +8566,26 @@ Next: <a href="#Smart-Key-_002d-Smart-Menus"
accesskey="n" rel="next">Smart Key
<a name="index-scrolling-1"></a>
<a name="index-click_002c-end-of-line"></a>
<a name="index-end-of-line-click"></a>
+<a name="index-action_002dkey_002deol_002dfunction"></a>
+<a name="index-assist_002dkey_002deol_002dfunction"></a>
<div class="format">
<pre class="format">When pressed at the end of a line but not the end of a
buffer:
ACTION KEY
- Scrolls up according to the value of
‘smart-scroll-proportional’.
- If ‘smart-scroll-proportional’ is nil or if point is on the
top
- window line, scrolls up (forward) a windowful. Otherwise, tries to
- bring the current line to the top of the window. Leaves point at
- the end of the line and returns t if scrolled, nil if not.
+ Calls the function given by <code>action-key-eol-function</code> whose
+ default value is <code>smart-scroll-up</code>. This scrolls up according
+ to the value of <code>smart-scroll-proportional</code>. If
+ <code>smart-scroll-proportional</code> is nil or if point is on the top
+ window line, it scrolls up (forward) a windowful. Otherwise, it tries
+ to bring the current line to the top of the window, leaving point at
+ the end of the line and returning t if scrolled, nil if not.
ASSIST KEY
- Scrolls down according to the value of
‘smart-scroll-proportional’.
- If ‘smart-scroll-proportional’ is nil or if point is on the
bottom
- window line, scrolls down (backward) a windowful. Otherwise, tries
- to bring the current line to the bottom of the window. Leaves
- point at the end of the line and returns t if scrolled, nil if not.
+ Calls the function given by <code>assist-key-eol-function</code> whose
+ default value is <code>smart-scroll-down</code>. This scrolls down
according
+ to the value of <code>smart-scroll-proportional</code>. If
+ <code>smart-scroll-proportional</code> is nil or if point is on the bottom
+ window line, it scrolls down (backward) a windowful. Otherwise, it tries
+ to bring the current line to the bottom of the window, leaving point at
+ the end of the line and returning t if scrolled, nil if not.
</pre></div>
<hr>
@@ -10083,6 +10207,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>
@@ -10134,12 +10261,20 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function</a>, Previous: <a hr
<tr><td></td><td valign="top"><a href="#index-C_002dh-A-1"><code>C-h
A</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"><code>C-h
h</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_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-a"><code>C-h h c
a</code></a>:</td><td> </td><td valign="top"><a
href="#Customization">Customization</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-c-w"><code>C-h h c
w</code></a>:</td><td> </td><td valign="top"><a
href="#Web-Search-Engines">Web Search Engines</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-d-i"><code>C-h h d
i</code></a>:</td><td> </td><td valign="top"><a
href="#Invocation">Invocation</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="#Web-Search-Engines">Web Search Engines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dh-h-f-w-1"><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-k-e"><code>C-h h k
e</code></a>:</td><td> </td><td valign="top"><a
href="#Koutliner">Koutliner</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>
<tr><td></td><td valign="top"><a href="#index-C_002dh-h-m-r"><code>C-h h m
r</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-s-f"><code>C-h h s
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-C_002dh-h-s-w"><code>C-h h s
w</code></a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-C_002dh-t"><code>C-h
t</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_002dj"><code>C-j</code></a>:</td><td> </td><td
valign="top"><a href="#Adding-and-Killing">Adding and Killing</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-C_002dM_002dh"><code>C-M-h</code></a>:</td><td> </td><td
valign="top"><a href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
@@ -10228,7 +10363,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>
@@ -10272,9 +10407,12 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function</a>, Previous: <a hr
<tr><td></td><td valign="top"><a href="#index-screen_002c-b"><code>screen,
b</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-c"><code>screen,
c</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-C_002dc-_005c"><code>screen, C-c
\</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-C_002dh-h-s-f"><code>screen, C-h h s
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-C_002dh-h-s-w"><code>screen, C-h h s
w</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-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>
@@ -10446,6 +10584,7 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a
href="#index-action_002dkey"><code>action-key</code></a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-action_002dkey_002ddefault_002dfunction">action-key-default-function</a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-action_002dkey_002ddefault_002dfunction-1">action-key-default-function</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-action_002dkey_002deol_002dfunction">action-key-eol-function</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-action_002dkey_002dminibuffer_002dfunction">action-key-minibuffer-function</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-action_002dkey_002dmodeline"><code>action-key-modeline</code></a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-action_002dkey_002dmodeline_002dfunction">action-key-modeline-function</a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
@@ -10489,6 +10628,7 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a
href="#index-assist_002dkey"><code>assist-key</code></a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-assist_002dkey_002ddefault_002dfunction">assist-key-default-function</a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-assist_002dkey_002ddefault_002dfunction-1">assist-key-default-function</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-assist_002dkey_002deol_002dfunction">assist-key-eol-function</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-assist_002dkey_002dminibuffer_002dfunction">assist-key-minibuffer-function</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-assist_002dkey_002dmodeline"><code>assist-key-modeline</code></a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-assist_002dkey_002dmodeline_002dfunction">assist-key-modeline-function</a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Modeline">Smart Key Modeline</a></td></tr>
@@ -10511,7 +10651,8 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-class_002c-hbut">class,
hbut</a>:</td><td> </td><td valign="top"><a
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-class_002c-hbut-1">class,
hbut</a>:</td><td> </td><td valign="top"><a
href="#Operational-and-Storage-Formats">Operational and Storage
Formats</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-class_002c-htype">class,
htype</a>:</td><td> </td><td valign="top"><a
href="#Creating-Types">Creating Types</a></td></tr>
-<tr><td></td><td valign="top"><a
href="#index-customize_002dbrowse"><code>customize-browse</code></a>:</td><td> </td><td
valign="top"><a href="#Configuration">Configuration</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-customize_002dbrowse"><code>customize-browse</code></a>:</td><td> </td><td
valign="top"><a href="#Customization">Customization</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-customize_002dvariable"><code>customize-variable</code></a>:</td><td> </td><td
valign="top"><a href="#Customization">Customization</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th><a name="Function_fn_letter-D">D</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a
href="#index-defact"><code>defact</code></a>:</td><td> </td><td
valign="top"><a href="#Action-Type-Creation">Action Type Creation</a></td></tr>
@@ -10643,6 +10784,8 @@ 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_002dalist">hyperbole-web-search-alist</a>:</td><td> </td><td
valign="top"><a href="#Web-Search-Engines">Web Search Engines</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>
@@ -10704,6 +10847,7 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-ibtypes-klink"><code>ibtypes
klink</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-ibtypes-mail_002daddress"><code>ibtypes
mail-address</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-ibtypes-man_002dapropos"><code>ibtypes
man-apropos</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-ibtypes-markdown_002dinternal_002dlink"><code>ibtypes
markdown-internal-link</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-ibtypes-org_002dmode"><code>ibtypes
org-mode</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-ibtypes-patch_002dmsg"><code>ibtypes
patch-msg</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-ibtypes-pathname"><code>ibtypes
pathname</code></a>:</td><td> </td><td valign="top"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11173,7 +11317,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a
href="#index-completion">completion</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-completion-1">completion</a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-Argument-Selection">Smart Key Argument
Selection</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-completion-2">completion</a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-_002d-Argument-Completion">Smart Key -
Argument Completion</a></td></tr>
-<tr><td></td><td valign="top"><a
href="#index-configuration">configuration</a>:</td><td> </td><td
valign="top"><a href="#Configuration">Configuration</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-configuration">configuration</a>:</td><td> </td><td
valign="top"><a href="#Customization">Customization</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-context">context</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-context_002dsensitive-help">context-sensitive
help</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-control-key-modifier">control
key modifier</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Modifiers">Smart Key Modifiers</a></td></tr>
@@ -11191,11 +11335,13 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a
href="#index-cross_002dreference_002c-Texinfo">cross-reference,
Texinfo</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-Cscope">Cscope</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-ctags-entry">ctags
entry</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-customization">customization</a>:</td><td> </td><td
valign="top"><a href="#Configuration">Configuration</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-customization">customization</a>:</td><td> </td><td
valign="top"><a href="#Customization">Customization</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-customization-1">customization</a>:</td><td> </td><td
valign="top"><a href="#Customization">Customization</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-customize">customize</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-customize_002c-rolo-additions">customize, rolo
additions</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-customize_002c-rolo-datestamps">customize, rolo
datestamps</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-customize_002c-rolo-edits">customize, rolo
edits</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-customizing-web-search-menu">customizing web search
menu</a>:</td><td> </td><td valign="top"><a href="#Web-Search-Engines">Web
Search Engines</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-cut-region">cut
region</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-cutoff-lines">cutoff
lines</a>:</td><td> </td><td valign="top"><a href="#View-Specs">View
Specs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
@@ -11310,6 +11456,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>
@@ -11498,6 +11645,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-man-page-references">man page
references</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-_002d-Man-Pages">Smart Key - Man Pages</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-man-pages">man
pages</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-margin">margin</a>:</td><td> </td><td valign="top"><a
href="#Filling">Filling</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-markdown-link">markdown
link</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-markup-pair">markup
pair</a>:</td><td> </td><td valign="top"><a href="#Thing-Selection">Thing
Selection</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-markup-pair-1">markup
pair</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited
Things</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-match-lines">match
lines</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
@@ -11506,12 +11654,14 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-menu-item_002c-Act">menu item,
Act</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu-item_002c-Activate_002dButton_002dat_002dPoint">menu item,
Activate-Button-at-Point</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu-item_002c-Back_002dto_002dPrior_002dLocation">menu item,
Back-to-Prior-Location</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-menu-item_002c-Cust_002fAll_002dOptions">menu item,
Cust/All-Options</a>:</td><td> </td><td valign="top"><a
href="#Customization">Customization</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu-item_002c-Cust_002fDebug_002dToggle">menu item,
Cust/Debug-Toggle</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-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts">menu item,
Cust/Msg-Toggle-Ebuts</a>:</td><td> </td><td valign="top"><a
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu-item_002c-Cust_002fMsg_002dToggle_002dEbuts-1">menu item,
Cust/Msg-Toggle-Ebuts</a>:</td><td> </td><td valign="top"><a
href="#Buttons-in-News">Buttons in News</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu-item_002c-Doc_002fSmartKeys">menu item,
Doc/SmartKeys</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu-item_002c-Find_002dFile_002dAccepts_002dURLs">menu item,
Find-File-Accepts-URLs</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-menu-item_002c-Find_002dFile_002dURLs">menu item,
Find-File-URLs</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-menu-item_002c-FramesControl">menu item,
FramesControl</a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu-item_002c-GrepFile">menu
item, GrepFile</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu-item_002c-Hist">menu item,
Hist</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-menu-item_002c-Ibut_002fAct">menu item,
Ibut/Act</a>:</td><td> </td><td valign="top"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11532,13 +11682,17 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-menu_002c-Butfile">menu,
Butfile</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-Button_002dFile">menu,
Button-File</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-Cust">menu,
Cust</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-Cust-1">menu,
Cust</a>:</td><td> </td><td valign="top"><a
href="#Configuration">Configuration</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Cust-1">menu,
Cust</a>:</td><td> </td><td valign="top"><a
href="#Customization">Customization</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-menu_002c-Cust_002fWeb_002dSearch">menu,
Cust/Web-Search</a>:</td><td> </td><td valign="top"><a
href="#Web-Search-Engines">Web Search Engines</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002c-Customize">menu,
Customize</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-Doc">menu,
Doc</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-Documentation">menu,
Documentation</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-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="#Web-Search-Engines">Web Search Engines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Find_002fWeb-2">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 +11714,9 @@ 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="#Web-Search-Engines">Web
Search Engines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-menu_002c-Web-2">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>
@@ -11609,7 +11766,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-obtaining-Hyperbole">obtaining
Hyperbole</a>:</td><td> </td><td valign="top"><a
href="#Installation">Installation</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-online-library">online
library</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-OO_002dBrowser">OO-Browser</a>:</td><td> </td><td
valign="top"><a href="#Smart-Key-_002d-The-OO_002dBrowser">Smart Key - The
OO-Browser</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-option-setting">option
setting</a>:</td><td> </td><td valign="top"><a
href="#Configuration">Configuration</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-option-setting">option
setting</a>:</td><td> </td><td valign="top"><a
href="#Customization">Customization</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-option-settings">option
settings</a>:</td><td> </td><td valign="top"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-Org-mode">Org
mode</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-Org-mode-1">Org
mode</a>:</td><td> </td><td valign="top"><a
href="#Questions-and-Answers">Questions and Answers</a></td></tr>
@@ -11721,6 +11878,9 @@ 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-search-engines-menu">search
engines menu</a>:</td><td> </td><td valign="top"><a
href="#Web-Search-Engines">Web Search Engines</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>
@@ -11756,6 +11916,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-Smart-Mouse-Keys">Smart Mouse
Keys</a>:</td><td> </td><td valign="top"><a href="#Smart-Mouse-Keys">Smart
Mouse Keys</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-smart-selection">smart
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-social-media">social
media</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-social-reference">social
reference</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-source-line">source
line</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-splitting-a-cell">splitting a
cell</a>:</td><td> </td><td valign="top"><a
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-stack-frame">stack
frame</a>:</td><td> </td><td valign="top"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
@@ -11828,7 +11989,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a
href="#index-username">username</a>:</td><td> </td><td valign="top"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th><a name="Concept-Index_cp_letter-V">V</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-variable-setting">variable
setting</a>:</td><td> </td><td valign="top"><a
href="#Configuration">Configuration</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-variable-setting">variable
setting</a>:</td><td> </td><td valign="top"><a
href="#Customization">Customization</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-variables">variables</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-vector">vector</a>:</td><td> </td><td valign="top"><a
href="#Thing-Selection">Thing Selection</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-vector-1">vector</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited
Things</a></td></tr>
@@ -11854,6 +12015,9 @@ 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="#Web-Search-Engines">Web
Search Engines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-web-search-menu-1">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..80f16e5 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..1a7fda6 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 0e62a95..c615436 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -151,8 +151,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
<PRE>
-Edition 6.0.1
-Printed July 27, 2016.
+Edition 6.0.2
+Printed August 9, 2016.
Published by the Free Software Foundation, Inc.
Author: Bob Weiner
@@ -176,7 +176,7 @@ Printed July 27, 2016.
@center The Everyday Hypertextual Information Manager
address@hidden Edition 6.0.1, July 27, 2016.
address@hidden Edition 6.0.2, August 9, 2016.
@sp 2
@noindent
@@ -200,7 +200,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@end example
@float Image,image:Sample
address@hidden Hyperbole screenshot of the Koutliner, the DEMO file and the
Rolo}
address@hidden Hyperbole screenshot of the Koutliner, DEMO file and HyRolo}
@center @image{im/hyperbole-cv,6in,,Sample Hyperbole Screenshot}
@end float
@sp 1
@@ -369,10 +369,11 @@ Setup
* Installation::
* Invocation::
-* Configuration::
+* Customization::
-Configuration
+Customization
+* Web Search Engines::
* Using URLs with Find-File::
* Internal Viewers::
* External Viewers::
@@ -442,7 +443,7 @@ Smart Keyboard Keys
@chapter Introduction
This edition of the GNU Hyperbole Manual is for use with any version
-6.01 or greater of GNU Hyperbole. Hyperbole runs atop GNU Emacs 24.3
+6.0.2 or greater of GNU Hyperbole. Hyperbole runs atop GNU Emacs 24.3
or higher. It will trigger an error if your Emacs is older.
This chapter summarizes the structure of the rest of the manual,
@@ -969,33 +970,32 @@ implicit button types.
@table @code
address@hidden completion
@findex ibtypes completion
@cindex completion
address@hidden completion
Inserts the completion at point into the minibuffer or the other window.
address@hidden hyp-source
@findex ibtypes hyp-source
@cindex Hyperbole report
address@hidden hyp-source
Turns source location entries in Hyperbole reports into buttons that
jump to the associated location.
address@hidden hyp-address
@findex ibtypes hyp-address
@cindex Hyperbole mail list
address@hidden hyp-address
Turns a Hyperbole support/discussion e-mail address into an implicit
button which inserts Hyperbole environment information. This is
useful when sending mail to a Hyperbole discussion mail list. See
also the documentation for @code{actypes::hyp-config}.
address@hidden Info-node
@findex ibtypes Info-node
@cindex Info node
address@hidden Info-node
Makes "(filename)nodename" buttons display the associated Info node.
Also makes "(filename)itemname" buttons display the associated Info
index item.
address@hidden www-url
@findex ibtypes www-url
@cindex URL
@cindex World-wide Web
@@ -1003,23 +1003,24 @@ index item.
@cindex Action Key, web browsing
@kindex Action Key, web browsing
@vindex browse-url-browser-function
address@hidden www-url
When not in an Emacs web browser buffer, follows any non-ftp URL (link) at
point.
The variable, @code{browse-url-browser-function}, may be used to customize
which URL browser is called. Terse URLs which lack a protocol prefix,
like www.gnu.org, are also recognized.
address@hidden gnus-push-button
@findex ibtypes gnus-push-button
@cindex GNUS push-buttons
@cindex hiding signatures
@cindex signatures, hiding
address@hidden gnus-push-button
Activates GNUS-specific article push-buttons, e.g. for hiding
signatures. GNUS is a news and mail reader."
address@hidden texinfo-ref
@findex ibtypes texinfo-ref
@cindex Texinfo cross-reference
@cindex cross-reference, Texinfo
address@hidden texinfo-ref
Displays Texinfo, Info node or help associated with Texinfo node, menu
item, @@xref, @@pxref, @@ref, @@code or @@var at point. If point is
within the braces of a cross-reference, the associated Info node is
@@ -1030,32 +1031,31 @@ Texinfo node is shown.
For @@code and @@var references, the associated documentation string
is displayed.
address@hidden mail-address
@findex ibtypes mail-address
@cindex e-mail address
@cindex rolo address
@cindex address
address@hidden mail-address
If on an e-mail address in a specific buffer type, mail to that address
in another window. Applies to the rolo match buffer, any buffer
attached to a file in @code{hyrolo-file-list}, or any buffer with @file{mail}
or @file{rolo} (case-insensitive) within its name.
address@hidden patch-msg
@findex ibtypes patch-msg
@cindex patch output
address@hidden patch-msg
Jumps to the source code associated with output from the @samp{patch}
program. Patch applies diffs to source code.
address@hidden elisp-compiler-msg
@findex ibtypes elisp-compiler-msg
@cindex byte compiler error
@cindex Emacs Lisp compiler error
@cindex compiler error
address@hidden elisp-compiler-msg
Jumps to the source code for a definition associated with a
byte-compiler error message. Works when activated anywhere within an
error line.
address@hidden debugger-source
@findex ibtypes debugger-source
@cindex gdb
@cindex dbx
@@ -1063,68 +1063,69 @@ error line.
@cindex stack frame
@cindex breakpoint
@cindex source line
address@hidden debugger-source
Jumps to the source line associated with a debugger stack frame or
breakpoint line. This works with gdb, dbx, and xdb. Such lines are
recognized in any buffer.
address@hidden grep-msg
@findex ibtypes grep-msg
@cindex grep
@cindex compiler error
address@hidden grep-msg
Jumps to a line associated with grep or compilation error messages.
Messages are recognized in any buffer.
address@hidden klink
@findex ibtypes klink
@cindex klink
@cindex koutline link
@cindex kcell link
address@hidden klink
Follows a link delimited by <> to a koutline cell.
See the documentation for @code{actypes::link-to-kotl} for valid link
specifiers.
address@hidden man-apropos
@findex ibtypes man-apropos
@cindex UNIX manual
@cindex man pages
@cindex man apropos
address@hidden man-apropos
Makes man apropos entries (from @samp{man -k}) display associated man pages
when
selected.
address@hidden rfc
@findex ibtypes rfc
@cindex Internet RFC
@cindex Request For Comment
@cindex RFC
@cindex remote file
@cindex ftp
address@hidden rfc
Retrieves and displays an Internet rfc referenced at point. Requires remote
file access, e.g. via the Tramp library, for remote ftp retrievals. The
following formats are recognized: RFC822, rfc-822, and RFC 822. The
@code{hpath:rfc} variable specifies the location from which to retrieve
RFCs."
address@hidden kbd-key
@findex ibtypes kbd-key
@cindex key sequence
address@hidden kbd-key
Executes the command binding or the Hyperbole minibuffer menu action
for a key sequence delimited by curly braces. Key sequences should
be in human readable form, e.g.@: @bkbd{C-x C-b}. Formats such
as @address@hidden will not be recognized.
address@hidden dir-summary
@findex ibtypes dir-summary
@vindex file, MANIFEST
@vindex file, DIR
address@hidden dir-summary
Detects filename buttons in files named "MANIFEST" or "DIR".
Displays selected files. Each file name must be at the beginning of the
line and must be followed by one or more spaces and then another
non-space, non-parenthesis, non-brace character.
address@hidden text-toc
@findex ibtypes text-toc
@cindex table of contents
@cindex toc implicit button type
address@hidden text-toc
Jumps to the text file section referenced by a table of contents entry
at point. The file name of the current buffer must contain
@file{README} and there must be a `Table of Contents' or `Contents'
@@ -1134,64 +1135,70 @@ followed by one or more asterisk characters. Each line
which begins a
new file section must start with one or more asterisk characters at the
very beginning of the line.
address@hidden cscope
@findex ibtypes cscope
@cindex C/C++ call trees
@cindex C/C++ cross-reference
@cindex Cscope
address@hidden cscope
Jumps to a C/C++ source line associated with a Cscope C analyzer output line.
Requires pre-loading of the cscope.el Lisp library available from the Emacs
Lisp archives and the commercial cscope program available from AT&T's
software toolchest. Otherwise, does nothing.
address@hidden etags
@findex ibtypes etags
@cindex etags entry
@cindex TAGS file
@cindex tag
address@hidden etags
Jumps to the source line associated with an etags file entry in a TAGS buffer.
If on a tag entry line, jumps to the source line for the tag. If on a
pathname line or line preceding it, jumps to the associated file.
address@hidden ctags
@findex ibtypes ctags
@cindex ctags entry
@cindex tags file
address@hidden ctags
Jumps to the source line associated with a ctags file entry in any buffer.
Ctags files are used by old editors like vi to lookup identifiers.
InfoDock and Emacs use the newer, more flexible Etags format.
address@hidden id-cflow
@findex ibtypes id-cflow
@cindex C call tree
@cindex call tree, C
@cindex C flow graph
address@hidden id-cflow
Expands or collapses C call trees and jumps to code definitions.
Requires cross-reference tables built by the external @code{cxref}
program.
address@hidden rfc-toc
@findex ibtypes rfc-toc
@cindex Internet RFC
@cindex Request For Comment
@cindex RFC
@cindex table of contents
address@hidden rfc-toc
Summarizes contents of an Internet rfc from anywhere within an rfc buffer.
Each line of the summary may be selected to jump to the associated section.
address@hidden annot-bib
address@hidden ibtypes markdown-internal-link
address@hidden markdown link
address@hidden markdown-internal-link
+Displays any in-file Markdown link referent. Pathnames and urls are
+handled elsewhere.
+
@findex ibtypes annot-bib
@cindex bibliography
@cindex reference
address@hidden annot-bib
Displays annotated bibliography entries defined within the same buffer
as the reference. References must be delimited by square brackets, must
begin with a word constituent character, and must not be in buffers
whose names begin with a ` ' or `*' character.
address@hidden debbugs-gnu-mode
@findex ibtypes debbugs-gnu-mode
@cindex bug tracking
@cindex issue tracking
address@hidden debbugs-gnu-mode
Debbugs is a client-server issue tracker used by GNU free software
projects, including Hyperbole, to manage issues and maintain threads
of discussion around them. When on a GNU Debbugs listing entry in
@@ -1199,8 +1206,8 @@ of discussion around them. When on a GNU Debbugs listing
entry in
of the selected issue; an Assist Key press pretty prints the status of
the issue to a window below the listing window.
address@hidden debbugs-gnu-query
@findex ibtypes debbugs-gnu-query
address@hidden debbugs-gnu-query
This implicit button type displays the results of a Gnu debbugs query
based on the string at point and works in most kinds of buffers. If
the query includes a single id number, it displays the original message
@@ -1221,12 +1228,13 @@ Note that @emph{issue} or @emph{debbugs} may be used as
well in place
of @emph{bug}. See the documentation at the top of
the @file{hib-debbugs.el} file for detailed query format information.
address@hidden social-reference
@findex ibtypes social-reference
@cindex hashtag
@cindex username
@cindex social media
address@hidden social reference
@vindex hibtypes-social-default-service
address@hidden social-reference
Displays the web page associated with a social media hashtag or username
reference at point. Reference format is:
@@ -1245,33 +1253,32 @@ value of @code{hibtypes-social-default-service}
(default value of
twitter#hashtag.
@c Handled instead by @xref{Smart Key - Identifier Menu Mode}.
address@hidden @item imenu-item
@c @findex ibtypes imenu-item
@c @vindex file, imenu.el
@c @cindex identifier menu
@c @cindex imenu
address@hidden @item imenu-item
@c Displays the in-buffer definition of an identifier that point is within or
after, else nil.
@c This triggers only when imenu has already been used to generate an
in-buffer item index.
address@hidden function-in-buffer
@findex ibtypes function-in-buffer
@vindex file, func-menu.el
@cindex function menu
@cindex func-menu
address@hidden function-in-buffer
Returns the function name defined within this buffer that point is
within or after, else @samp{nil}. This triggers only when the
func-menu library has been loaded and the current major mode is one
handled by func-menu.
address@hidden pathname-line-and-column
@cindex link, pathname line and column
@cindex line and column
@cindex pathname, line and column
@findex ibtypes pathname-line-and-column
address@hidden pathname-line-and-column
Makes a valid pathname:line-num[:column-num] pattern display the path
at line-num and optional column-num. Also works for remote pathnames.
address@hidden pathname
@findex ibtypes pathname
@findex hpath:at-p
@findex hpath:find
@@ -1284,10 +1291,13 @@ at line-num and optional column-num. Also works for
remote pathnames.
@cindex remote path
@cindex filename
@cindex link, pathname
-Makes a valid pathname display the path entry. Also works for delimited and
-non-delimited remote pathnames and Texinfo @file{} entries. Emacs Lisp
-library files (filenames without any directory component that end in .el and
-.elc) are looked up using the @code{load-path} directory list.
address@hidden pathname
+Makes a valid pathname display the path entry. Also works for
+delimited and non-delimited remote pathnames, Texinfo @file{} entries,
+and hash-style link references to HTML, Markdown or Emacs outline
+headings. Emacs Lisp library files (filenames without any directory
+component that end in .el and .elc) are looked up using
+the @code{load-path} directory list.
@noindent
See the function documentation for @code{hpath:at-p} for possible
@@ -1296,32 +1306,33 @@ suffixes that are added to or removed from the pathname
when searching
for a valid match. See the function documentation for @code{hpath:find}
for special file display options.
address@hidden org-mode
@findex ibtypes org-mode
@vindex browse-url-browser-function
@cindex org-mode
@cindex Org mode
-Follows any Org mode link at point or cycles through views of the
-outline subtree at point. The Assist Key on an Org mode heading,
-cycles through views of the whole buffer outline and on an Org mode
-link, displays standard Hyperbole help.
address@hidden org-mode
+The Action Key follows any Org mode link at point or cycles through
+views of the outline subtree at point. In any other context besides
+the end of a line, the Action Key will invoke the Org mode standard
+binding of @address@hidden, (org-meta-return). The Assist Key on
+an Org mode heading, cycles through views of the whole buffer outline
+and on an Org mode link, displays standard Hyperbole help.
The variable, @code{browse-url-browser-function}, customizes the url
browser that is used for urls. Valid values of this variable
include @code{browse-url-default-browser}
and @code{browse-url-generic}.
address@hidden doc-id
@findex ibtypes doc-id
@cindex online library
@cindex document identifier
-Displays an index
-entry for a site-specific document given its id. Ids must be
-delimited by @code{doc-id-start} and @code{doc-id-end} and must match
-the function given by @code{doc-id-p}. This permits creation of
-catalogued online libraries. [Note that this implicit button type is not
installed by default. You
-must manually configure it and load it from the
-file, @address@hidden@{hyperb:address@hidden/hib-doc-id.el}.]
address@hidden doc-id
+Displays an index entry for a site-specific document given its id.
+Ids must be delimited by @code{doc-id-start} and @code{doc-id-end} and
+must match the function given by @code{doc-id-p}. This permits
+creation of catalogued online libraries. (Note that this implicit
+button type is not installed by default. You must manually configure
+it and load it from the file,
@address@hidden@{hyperb:address@hidden/hib-doc-id.el}).
@end table
@node Button Files, Action Types, Implicit Buttons, Buttons
@@ -1395,114 +1406,114 @@ The standard action types included with Hyperbole in
alphabetical order
are:
@table @code
address@hidden annot-bib
@findex actypes annot-bib
address@hidden annot-bib
Follows an internal reference KEY within an annotated bibliography,
delimiters = [ ].
address@hidden completion
@findex actypes completion
address@hidden completion
Inserts a completion at point into the minibuffer or a buffer.
Unless point is at the end of buffer or if a completion has already been
inserted, in which case the completions window is deleted.
address@hidden eval-elisp
@findex actypes eval-elisp
address@hidden eval-elisp
Evaluates a Lisp expression LISP-EXPR.
address@hidden exec-kbd-macro
@findex actypes exec-kbd-macro
address@hidden exec-kbd-macro
Executes a KBD-MACRO REPEAT-COUNT times. KBD-MACRO may be a string of
editor command characters, a function symbol or nil to use the last
defined keyboard macro. Optional REPEAT-COUNT nil means execute once,
zero means repeat until error.
address@hidden exec-shell-cmd
@findex actypes exec-shell-cmd
address@hidden exec-shell-cmd
Executes a SHELL-CMD string asynchronously. Optional non-nil second
argument INTERNAL-CMD inhibits display of the shell command line
executed. Optional non-nil third argument KILL-PREV means kill the last
output to the shell buffer before executing SHELL-CMD.
address@hidden exec-window-cmd
@findex actypes exec-window-cmd
address@hidden exec-window-cmd
Asynchronously executes an external window-based SHELL-CMD string.
address@hidden function-in-buffer
@findex actypes function-in-buffer
address@hidden function-in-buffer
Displays the definition of function NAME found at POS in the current buffer.
address@hidden hyp-config
@findex actypes hyp-config
address@hidden hyp-config
Inserts Hyperbole configuration and debugging information at the end
of the current buffer or within optional OUT-BUF.
address@hidden hyp-request
@findex actypes hyp-request
address@hidden hyp-request
Inserts help for composing a Hyperbole support/discussion message into
the current buffer or the optional OUT-BUF.
address@hidden hyp-source
@findex actypes hyp-source
address@hidden hyp-source
Displays a buffer or file from a line beginning with
@code{hbut:source-prefix}.
address@hidden kbd-key
@findex actypes kbd-key
address@hidden kbd-key
Executes the function binding for KEY-SEQUENCE, delimited by @address@hidden
Returns @samp{t} if a KEY-SEQUENCE has a binding, else @samp{nil}.
@cindex link action types
address@hidden link-to-buffer-tmp
@findex actypes link-to-buffer-tmp
address@hidden link-to-buffer-tmp
Displays a BUFFER. This type of link generally can
only be used within a single editor session. Use @code{link-to-file}
instead for a permanent link.
address@hidden link-to-directory
@findex actypes link-to-directory
address@hidden link-to-directory
Displays a DIRECTORY in Dired mode.
address@hidden link-to-doc
@findex actypes link-to-doc
address@hidden link-to-doc
Displays an online version of a document given by DOC-ID. If the online
version of a document is not found in @code{doc-id-indices}, an error is
signalled.
address@hidden link-to-ebut
@findex actypes link-to-ebut
address@hidden link-to-ebut
Performs an action given by another button, specified by KEY and KEY-FILE.
address@hidden link-to-elisp-doc
@findex actypes link-to-elisp-doc
address@hidden link-to-elisp-doc
Displays the documentation for FUNC-SYMBOL.
address@hidden link-to-file
@findex actypes link-to-file
address@hidden link-to-file
Displays file given by PATH scrolled to optional POINT. With POINT,
buffer is displayed with POINT at window top.
address@hidden link-to-file-line
@findex actypes link-to-file-line
address@hidden link-to-file-line
Displays a file given by PATH scrolled to LINE-NUM.
address@hidden link-to-Info-index-item
@findex actypes link-to-Info-index-item
address@hidden link-to-Info-index-item
Displays an Info index ITEM cross-reference.
ITEM must be a string of the form (filename)item-name. During
button creation, completion for both filename and item-name is
available. Filename may be given without the .info suffix."
address@hidden link-to-Info-node
@findex actypes link-to-Info-node
address@hidden link-to-Info-node
Displays an Info NODE. NODE must be a string of the form
(filename)nodename. During button creation, completion for both
filename and nodename is available. Filename may be given without the
.info suffix.
address@hidden link-to-kcell
@findex actypes link-to-kcell
@findex kcell:ref-to-id
address@hidden link-to-kcell
Displays a Hyperbole outline cell, given by FILE and CELL-REF, at the
top of a window. See the documentation for @code{(kcell:ref-to-id)} for
valid CELL-REF formats.
@@ -1511,8 +1522,8 @@ valid CELL-REF formats.
If FILE is @samp{nil}, the current buffer is used. If CELL-REF is
@samp{nil}, the first cell in the view is shown.
address@hidden link-to-kotl
@findex actypes link-to-kotl
address@hidden link-to-kotl
Displays at the top of a window the referent pointed to by LINK.
LINK may be of any of the following forms, with or without delimiters:
@example
@@ -1525,68 +1536,75 @@ LINK may be of any of the following forms, with or
without delimiters:
See the documentation for @code{(kcell:ref-to-id)} for valid cell-ref
formats.
address@hidden link-to-mail
@findex actypes link-to-mail
address@hidden link-to-mail
Displays a mail message with MAIL-MSG-ID from optional MAIL-FILE. See
the documentation for the variable @code{hmail:init-function} for
information on how to specify the mail reader to use.
address@hidden link-to-regexp-match
@findex actypes link-to-regexp-match
address@hidden link-to-regexp-match
Finds REGEXP's Nth occurrence in SOURCE and displays the location at the
top of the selected window. SOURCE is a pathname unless optional
BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
Returns @samp{t} if found, signals an error if not.
address@hidden link-to-rfc
@findex actypes link-to-rfc
address@hidden link-to-rfc
Retrieves and displays an Internet rfc given by RFC-NUM. RFC-NUM may be
a string or an integer. Requires a remote file access library, such as
Tramp, for ftp file retrievals.
address@hidden link-to-string-match
@findex actypes link-to-string-match
address@hidden link-to-string-match
Finds STRING's Nth occurrence in SOURCE and displays the location at the
top of the selected window. SOURCE is a pathname unless optional
BUFFER-P is non-nil, then SOURCE must be a buffer name or buffer.
Returns @samp{t} if found, @samp{nil} if not.
address@hidden link-to-texinfo-node
@findex actypes link-to-texinfo-node
address@hidden link-to-texinfo-node
Displays the Texinfo node with NODENAME (a string) from the current buffer.
address@hidden man-show
address@hidden actypes link-to-web-search
address@hidden link, web search
address@hidden web search link
address@hidden link-to-web-search
+Searches web SERVICE-NAME for SEARCH-TERM. Uses
@code{hyperbole-web-search-alist}
+to match each service to its search url. Uses
@code{hyperbole-web-search-browser-function}
+and the @code{browse-url} package to display search results.
+
@findex actypes man-show
@vindex sm-notify
address@hidden man-show
Displays a man page on TOPIC, which may be of the form
@samp{<command>(<section>}). If using the Superman manual entry
package, see the documentation for @code{sm-notify} to control where the
man page is displayed.
address@hidden rfc-toc
@findex actypes rfc-toc
address@hidden rfc-toc
Computes and displays a summary of an Internet rfc in BUF-NAME. Assumes
point has already been moved to the start of the region to summarize.
Optional OPOINT is the point to return to in BUF-NAME after displaying
the summary.
address@hidden text-toc
@findex actypes text-toc
@cindex table of contents
@cindex toc action type
address@hidden text-toc
Jumps to the text file SECTION referenced by a table of contents entry
at point.
address@hidden www-url
@findex actypes www-url
@cindex URL
@cindex World-wide Web
@cindex WWW
@vindex browse-url-browser-function
address@hidden www-url
Follows a link given by a URL. The variable,
@code{browse-url-browser-function}, customizes the url browser
that is used. See its documentation string for details.
-
@end table
@cindex action
@@ -2588,12 +2606,13 @@ 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.
address@hidden
+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.
address@hidden
@cindex menu, KeyBindings
@cindex key binding, menu
@@ -2627,12 +2646,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.
@@ -2640,6 +2660,7 @@ 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
@@ -2672,6 +2693,28 @@ 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 menu, Find/Web
address@hidden menu, Web
address@hidden searching the web
address@hidden web search
address@hidden C-c /
address@hidden hyperbole-web-search-browser-function
address@hidden
+Web/ - Select a search engine and term and search with them.
+ Hyperbole binds the key @bkbd{C-c /} for quick
+ access to this menu, if it is not already bound
+ prior to Hyperbole's initialization. The Cust/Web-Search
+ menu sets the option,
@code{hyperbole-web-search-browser-function},
+ which determines whether web search results are displayed
+ within Emacs or with an external web browser. 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
@@ -2742,18 +2785,26 @@ and then simply quit HyControl and go back to work.
@kindex C-c \
@kindex screen, C-c \
address@hidden C-h h s w
address@hidden screen, C-h h s w
address@hidden C-h h s f
address@hidden screen, C-h h s f
@cindex menu item, WindowsControl
-Hyperbole typically binds the key @bkbd{C-c \\} to invoke HyControl
-window control; otherwise, the Screen/WindowsControl minibuffer menu
-item, @bkbd{C-h h s w}, will do the same thing.
address@hidden menu item, FramesControl
+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. To start HyControl
+with the frames menu instead, use Screen/FramesControl, @bkbd{C-h h s
+f}.
@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
@@ -2947,14 +2998,15 @@ 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
@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
@@ -3026,6 +3078,7 @@ outliner is available for use.)
@vindex file, EXAMPLE.kotl
@cindex menu, Outline/Example
address@hidden C-h h k e
This chapter expands on the information given in the @file{EXAMPLE.kotl}
file included with Hyperbole. Use @bkbd{C-h h k e} to display that
file, as pictured on the following page. It is an actual outline file
@@ -5067,7 +5120,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
@@ -5076,7 +5129,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.
@@ -5266,8 +5319,8 @@ frame is visible at a time as each frame generally fills
the whole
terminal display, providing a virtual screen capability. Emacs
windows exist within a frame.
address@hidden Global Button
@vindex gbut:file
address@hidden Global Button
A form of explicit button which is accessed by name rather than direct
selection. Global buttons are useful when one wants quick access to
actions such as jumping to common file locations or for performing
@@ -5519,7 +5572,7 @@ invocation instructions in this appendix.
@menu
* Installation::
* Invocation::
-* Configuration::
+* Customization::
@end menu
@node Installation, Invocation, Setup, Setup
@@ -5565,7 +5618,7 @@ can be safely ignored.
@noindent
Now read the next section on Invocation.
address@hidden Invocation, Configuration, Installation, Setup
address@hidden Invocation, Customization, Installation, Setup
@section Invocation
Once Hyperbole has been installed for use at your site and loaded into
@@ -5596,7 +5649,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
@@ -5620,6 +5677,7 @@ directory in four forms:
@file{man/hyperbole.texi} - source form
@end example
address@hidden C-h h d i
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. @bkbd{C-h h d i} will let you
@@ -5634,11 +5692,12 @@ Advanced users may want to continue on to the next
section about
configuring Hyperbole's behavior.
@page
address@hidden Configuration, , Invocation, Setup
address@hidden Configuration
address@hidden Customization, , Invocation, Setup
address@hidden Customization
@cindex menu, Cust
@cindex configuration
address@hidden customization
Major Hyperbole user options may be set from the Customize submenu
below the Hyperbole menubar menu, as seen here.
@@ -5656,7 +5715,7 @@ Alternatively, the minibuffer-based menu, Cust/ may be
used.
@cindex variable setting
Generally, you should not need to change anything other than these options.
However, if you like to customize your environment extensively, there
-are many additional Hyperbole configuration options that may be
+are many additional Hyperbole customization options that may be
changed with the Emacs customization interface,
@pxref{Easy Customization,,Easy Customization Interface,emacs, the GNU
Emacs Manual}.
@@ -5665,6 +5724,8 @@ permanently to your personal Emacs initialization file
and are available
in future Emacs sessions.
@findex customize-browse
address@hidden menu item, Cust/All-Options
address@hidden C-h h c a
Use Cust/All-Options @bkbd{C-h h c a} to display an expandable tree of
customizable Hyperbole options. Hyperbole's customizations are
further grouped into several sub-categories, one for the Koutliner,
@@ -5673,10 +5734,17 @@ specfic option and they will appear in another window
for editing.
Simply follow the instructions on screen and then press the ``Apply
and Save'' button to make any changes permanent.
-The following sections discuss the configuration options most likely to
address@hidden customize-variable
+If you know the name of the option you want to edit, you can edit it
+at any time without going through the tree of options. Use @bkbd{M-x
+customize-variable @key{RET}} and then type the name of the variable
+and press @key{RET} to edit it.
+
+The following sections discuss the customization options most likely to
be of interest to users.
@menu
+* Web Search Engines::
* Using URLs with Find-File::
* Internal Viewers::
* External Viewers::
@@ -5685,7 +5753,39 @@ be of interest to users.
* Button Colors::
@end menu
address@hidden Using URLs with Find-File, Internal Viewers, Configuration,
Configuration
address@hidden Web Search Engines, Using URLs with Find-File, Customization,
Customization
address@hidden Web Search Engines
+
address@hidden menu, Find/Web
address@hidden menu, Web
address@hidden menu, Cust/Web-Search
address@hidden C-h h c w
address@hidden C-h h f w
address@hidden hyperbole-web-search-alist
address@hidden search engines menu
address@hidden web search menu
address@hidden customizing web search menu
+The Find/Web menu offers quick access to major web search engines. It
+is typically bound to @bkbd{C-c /} or if not, then @bkbd{C-h h f w} is
+always available. Your standard web browser will be used to return
+the search results. You can change which browser is used
+with @bkbd{C-h h c w}, the Cust/Web-Search menu. Advanced users can
+change the search engines listed in the Find/Web menu with @bkbd{M-x
+customize-variable @key{RET} hyperbole-web-search-alist @key{RET}}.
+Changes are automatically reflected in the Hyperbole menus once applied.
+Remember each search engine name must begin with a unique letter and
+each URL must have a %s format field indicating where to place the web
+search term when a search is performed.
+
+Advanced users can
+change the search engines listed by editing the option,
address@hidden, with @bkbd{M-x customize-variable
address@hidden hyperbole-web-search-alist @key{RET}}. Remember each search
engine name
+must begin with a unique letter and each URL must have a %s format
+field indicating where to place the web search term when a search is
+performed.
+
address@hidden Using URLs with Find-File, Internal Viewers, Web Search Engines,
Customization
@subsection Using URLs with Find-File
@findex find-file
@@ -5725,7 +5825,7 @@ if you have the Tramp Emacs Lisp package installed; if
you don't have
Tramp, an error message will be displayed when you try to enable
find-file URLs.
address@hidden Internal Viewers, External Viewers, Using URLs with Find-File,
Configuration
address@hidden Internal Viewers, External Viewers, Using URLs with Find-File,
Customization
@subsection Internal Viewers
@vindex hpath:internal-display-alist
@cindex file display function
@@ -5760,7 +5860,7 @@ available with InfoDock.
@xref{External Viewers}, for instructions on associating file names with
external, window-system specific viewers.
address@hidden External Viewers, Invisible Text Searches, Internal Viewers,
Configuration
address@hidden External Viewers, Invisible Text Searches, Internal Viewers,
Customization
@subsection External Viewers
@findex hpath:get-external-display-alist
@vindex hpath:external-display-alist-macos
@@ -5802,7 +5902,7 @@ On systems that have a MIME mailcap file (see
set of external viewer associations when none are found
within @code{hpath:get-external-display-alist}.
address@hidden Invisible Text Searches, Link Variable Substitution, External
Viewers, Configuration
address@hidden Invisible Text Searches, Link Variable Substitution, External
Viewers, Customization
@subsection Invisible Text Searches
@cindex menu item, Isearch-Invisible
@@ -5819,7 +5919,7 @@ This command toggles that setting (turns it off if a
prefix
argument less than or equal to 0 is given) and makes searches look at
only visible text.
address@hidden Link Variable Substitution, Button Colors, Invisible Text
Searches, Configuration
address@hidden Link Variable Substitution, Button Colors, Invisible Text
Searches, Customization
@subsection Link Variable Substitution
@vindex hpath:variables
@cindex environment variables
@@ -5844,7 +5944,7 @@ is wholly transparent to the user; it is explained here
simply to help
you in deciding whether or not to modify the value of
@code{hpath:variables}.
address@hidden Button Colors, , Link Variable Substitution, Configuration
address@hidden Button Colors, , Link Variable Substitution, Customization
@subsection Configuring Button Colors
@cindex XEmacs support
@cindex Emacs support
@@ -5902,6 +6002,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
@@ -5922,13 +6035,13 @@ 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
@@ -5937,7 +6050,7 @@ Hyperbole.
@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.
@@ -6094,8 +6207,8 @@ If < 1, print all visible cells in current view
See also the documentation for @code{kotl-mode:cell-attributes}.
@findex kotl-mode:center-line
address@hidden kotl-mode:center-line @bkbd{M-s}
@vindex fill-column
address@hidden kotl-mode:center-line @bkbd{M-s}
Center the line point is on, within the width specified by @code{fill-column}.
This means adjusting the indentation so that it equals the distance between
the end of the text and @code{fill-column}.
@@ -6968,21 +7081,27 @@ When over an Emacs cross-reference:
@cindex scrolling
@cindex click, end of line
@cindex end of line click
address@hidden action-key-eol-function
address@hidden assist-key-eol-function
@format
@group
When pressed at the end of a line but not the end of a buffer:
ACTION KEY
- Scrolls up according to the value of `smart-scroll-proportional'.
- If `smart-scroll-proportional' is nil or if point is on the top
- window line, scrolls up (forward) a windowful. Otherwise, tries to
- bring the current line to the top of the window. Leaves point at
- the end of the line and returns t if scrolled, nil if not.
+ Calls the function given by @code{action-key-eol-function} whose
+ default value is @code{smart-scroll-up}. This scrolls up according
+ to the value of @code{smart-scroll-proportional}. If
+ @code{smart-scroll-proportional} is nil or if point is on the top
+ window line, it scrolls up (forward) a windowful. Otherwise, it tries
+ to bring the current line to the top of the window, leaving point at
+ the end of the line and returning t if scrolled, nil if not.
ASSIST KEY
- Scrolls down according to the value of `smart-scroll-proportional'.
- If `smart-scroll-proportional' is nil or if point is on the bottom
- window line, scrolls down (backward) a windowful. Otherwise, tries
- to bring the current line to the bottom of the window. Leaves
- point at the end of the line and returns t if scrolled, nil if not.
+ Calls the function given by @code{assist-key-eol-function} whose
+ default value is @code{smart-scroll-down}. This scrolls down according
+ to the value of @code{smart-scroll-proportional}. If
+ @code{smart-scroll-proportional} is nil or if point is on the bottom
+ window line, it scrolls down (backward) a windowful. Otherwise, it tries
+ to bring the current line to the bottom of the window, leaving point at
+ the end of the line and returning t if scrolled, nil if not.
@end group
@end format
diff --git a/man/im/menu-hyperbole2.pdf b/man/im/menu-hyperbole2.pdf
deleted file mode 100644
index d926c13..0000000
Binary files a/man/im/menu-hyperbole2.pdf and /dev/null differ
diff --git a/man/version.texi b/man/version.texi
index 3295267..c78c2a1 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED July 27, 2016
address@hidden UPDATED-MONTH Jul 2016
address@hidden EDITION 6.0.1
address@hidden VERSION 6.0.1
address@hidden UPDATED August 9, 2016
address@hidden UPDATED-MONTH AUG 2016
address@hidden EDITION 6.0.2
address@hidden VERSION 6.0.2
- [elpa] externals/hyperbole a2b8a90 04/20: * hyperbole.el: Updated the header fields to better match GNU standards for use, (continued)
- [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, 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 <=
- [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