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

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

[elpa] scratch/hyperbole-lexbind 64c3563 17/20: Expanded Org mode doc; i


From: Stefan Monnier
Subject: [elpa] scratch/hyperbole-lexbind 64c3563 17/20: Expanded Org mode doc; introduce 'key series' term in Glossary
Date: Wed, 14 Aug 2019 04:30:24 -0400 (EDT)

branch: scratch/hyperbole-lexbind
commit 64c35636d5d3e52718bc8bee3cc51afe40de868f
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>

    Expanded Org mode doc; introduce 'key series' term in Glossary
---
 Changes            |  15 ++++++-
 DEMO               |  57 +++++++++++++++---------
 hib-kbd.el         | 116 +++++++++++++++++++++++++------------------------
 hsys-org.el        |  21 ++++++++-
 man/hyperbole.html | 125 ++++++++++++++++++++++++++++++++++-------------------
 man/hyperbole.info | Bin 512812 -> 514595 bytes
 man/hyperbole.pdf  | Bin 1270678 -> 1272688 bytes
 man/hyperbole.texi | 101 ++++++++++++++++++++++++++++---------------
 8 files changed, 275 insertions(+), 160 deletions(-)

diff --git a/Changes b/Changes
index fcf7199..863a46a 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,15 @@
+2019-07-28  Bob Weiner  <address@hidden>
+
+* DEMO, man/hyperbole.texi (Implicit Button Type Summaries): Updated to 
expanded
+    Org mode support.
+
+* hib-kbd.el:
+  man/hyperbole.texi (Implicit Button Type Summaries, Glossary): Changed 
hib-kbd
+    key-sequence to key-series to indicate can be multiple key sequences.  
Added
+    def. to Glossary.
+                     (kbd-key:doc): Changed to call hkey-help rather than 
trigger
+    an error when key-series is not a single bound key sequence.
+
 2019-07-23  Bob Weiner  <address@hidden>
 
 * man/hyperbole.texi (Referent Display): Rewrote and added details on how the 
4 types
@@ -107,7 +119,8 @@
 
 2019-07-08  Bob Weiner  <address@hidden>
 
-* hbut.el (ibut:label-separator-regexp, hbut:outside-comment-p): Added.
+* hbut.el (ibut:label-separator-regexp, hbut:outside-comment-p): Added doc
+for expanded Org mode reference handling.
 
 2019-07-01  Bob Weiner  <address@hidden>
 
diff --git a/DEMO b/DEMO
index b113171..0c0feb2 100644
--- a/DEMO
+++ b/DEMO
@@ -254,7 +254,7 @@ the argument is used to adjust one dimension of the frame.
 The {@} command splits a frame into a grid of up to 9 rows by 9 columns of
 windows, showing a different buffer in each window, if available.  First
 let's expand our frame to full screen with the {.1 %} command and then show
-a 2 x 3 grid.  We can do multiple commands in one key sequence.  Press the
+a 2 x 3 grid.  We can do multiple commands in one 'key series'.  Press the
 action key here: {.1 % .23 @}.
 
 You can even write something like this to do the whole thing in one sequence.
@@ -263,7 +263,7 @@ window with {C-x 1}.  Now we can execute a single sequence 
from any buffer
 that creates our 2x3 window grid: {C-h h s f .1 % .23 @ q}.  Pretty amazing,
 right?  You can separate each command by any number of spaces or even jam
 them all together: {C-hhsf.1%.23@q}.  Use SPC (separated by spaces) to
-include a space as part of the key sequence.
+include a space as part of the key series.
 
 A zero argument to the {@} command is special.  It means you want to display
 buffers with a particular major mode first, e.g. c-mode.  You will be
@@ -350,7 +350,7 @@ Action Key click on {C-x4r work RET} to search for all 
entries from Work
 Industries; then type {q} to quit from the HyRolo search results buffer.
 {C-x4r manager RET} finds all managers plus their staff across companies.
 {C-x4r Dunn,\ J RET} finds just that staffer.  Notice that you must quote the
-space with a backslash when including it in a key sequence search string or
+space with a backslash when including it in a key series search string or
 else the space will be removed; when just typing the same string
 interactively, don't add the backslash.
 
@@ -374,9 +374,9 @@ not             one                    Match entries 
without the arg
 =====================================================================
 
 So for example, {C-x4r (or smith dunn) RET} finds both the Smith and Dunn
-entries.  (Note that you do not need to backslash quote spaces within
+entries.  (Note that you do not need to quote spaces with backslashes within
 parentheses, square brackets, angle brackets or double quotes when used in
-key sequences).  To find any Managers and their staffers at HiHo Industries,
+key series).  To find any Managers and their staffers at HiHo Industries,
 use: {C-x4r (and manager hiho) RET}.  To find managers anywhere but at HiHo:
 {C-x4r (and manager (not hiho)) RET}.  Finally, this will find all people who
 are not managers at HiHo: {C-x4r (not (and manager hiho)) RET}.
@@ -434,17 +434,19 @@ label it by using {C-h h i l}.
 
 Now let's explore some implicit button types.
 
-** Key Sequence Buttons
+** Key Series Buttons
 
-Any Emacs key sequence (or multiple sequences) delimited by curly braces is
-an implicit button.  Press the Action Key with {C-u C-p} for example and the
-point should move four lines upward.  An Assist Key press on the key sequence
-displays the documentation for its command binding, i.e. what it does.  Key
-sequences together with the arguments their commands prompt for, may also be
-given, e.g. {M-x apropos RET hyperbole RET}.  Click with the Action Mouse Key
-in the braces to try it out.
+Any series of Emacs key sequences (or 'key series') delimited by curly
+braces is an implicit button.  Press the Action Key within {C-u C-p C-n C-e}
+for example and the point should move three lines upward and to the end of
+line.  An Assist Key press on the key series either displays the documentation
+for its command binding (if a single key sequence) or displays help for the
+implicit button, i.e. what it does.  Key series together with the
+arguments their commands prompt for, may also be given, e.g. {M-x apropos
+RET hyperbole RET}.  Click with the Action Mouse Key within the first line
+of this button to try it out.
 
-Hyperbole minibuffer menu items may also be activated as key sequences.  For
+Hyperbole minibuffer menu items may also be activated as key series.  For
 example, {C-h h d i} displays the online browsable Info version of the
 Hyperbole Manual.  Press your Action Key between the braces to see it.  Once
 in the Info browser, use {s} to search for any topic throughout the manual.
@@ -456,14 +458,27 @@ demonstrations and tours with this and other implicit 
button types.
 
 ** Org Mode
 
-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.
+For users of Emacs Org mode, Hyperbole does quite a few things.
 
-In any other context besides the end of a line, the Action Key will invoke
+First, the Action Key follows internal links in Org mode files.  When
+pressed on a link referent/target, the link definition is displayed,
+allowing two-way navigation between definitions and targets.
+
+Second, the Action Key follows Org mode external links.  The Assist Key
+displays help when pressed on an Org mode link.
+
+Third, within a radio target definition, the Action Key jumps to the first
+occurrence of an associated radio target.
+
+Fourth, 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.
+
+Fifth, with point on the first line of a code block definition, the Action
+Key executes the code block via the Org mode standard binding of {C-c C-c},
+(org-ctrl-c-ctrl-c).
+
+In any other context besides the end of a line, the Action Key invokes
 the Org mode standard binding of {M-RET}, (org-meta-return).
 
 ** Implicit Path Links
diff --git a/hib-kbd.el b/hib-kbd.el
index 8888668..bc4ab9f 100644
--- a/hib-kbd.el
+++ b/hib-kbd.el
@@ -11,15 +11,16 @@
 ;;
 ;;; Commentary:
 ;;
-;;   A press of the Action Key on a key sequence executes its
-;;   command binding or Hyperbole minibuffer menu binding.
+;;   A press of the Action Key on any sequence of keys delimited by braces
+;;   executes its command binding or Hyperbole minibuffer menu binding.
 ;;
-;;   A press of the Assist Key on a key sequence displays the
-;;   documentation for it.
+;;   A press of the Assist Key on any sequence of keys delimited by braces
+;;   displays the documentation for it.
 ;;
-;;   Key sequences should be in human readable string form with spaces
-;;   between each key and the whole sequence delimited by braces, 
-;;   e.g. {C-x o}.  Forms such as {\C-b}, {\^b}, and {^b} will not be
+;;   Sequences of keys should be in human readable string form with spaces
+;;   between each key, may contain any number of individual key sequences
+;;   and the whole thing should be delimited by braces, e.g. {M-x apropos
+;;   RET hyperbole RET}.  Forms such as {\C-b}, {\^b}, and {^b} will not be
 ;;   recognized. 
 
 ;;; Code:
@@ -32,10 +33,10 @@
 ;;; ************************************************************************
 ;;; Public implicit button types
 ;;; ************************************************************************
-  
-(defact kbd-key (key-sequence)
+
+(defact kbd-key (key-series)
   "Executes a normalized key sequence without curly braces, {}.
-KEY-SEQUENCE must be a string of one of the following:
+KEY-SERIES must be a string of one of the following:
   a Hyperbole minibuffer menu item key sequence,
   a HyControl key sequence,
   a M-x extended command,
@@ -43,7 +44,7 @@ KEY-SEQUENCE must be a string of one of the following:
 
 Returns t if the sequence appears to be valid, else nil."
   (interactive "kKey sequence to execute (no {}): ")
-  (kbd-key:act key-sequence))
+  (kbd-key:act key-series))
 
 (defib kbd-key ()
   "Executes a key sequence found around point, delimited by curly braces, {}, 
if any.
@@ -66,37 +67,37 @@ Any key sequence must be a string of one of the following:
                            ;; standard ASCII characters.
                            (hbut:label-p t "‘" "’" t)))
           ;; This excludes delimiters
-          (key-sequence (car seq-and-pos))
+          (key-series (car seq-and-pos))
           (start (cadr seq-and-pos))
           binding)
       ;; Match only when start delimiter is preceded by whitespace or
       ;; is the 1st buffer character, so do not match to things like 
${variable}.
       (when (memq (char-before start) '(nil ?\ ?\t ?\n ?\j ?\f))
-       (when (and (stringp key-sequence)
-                  (not (eq key-sequence "")))
-         (setq key-sequence (kbd-key:normalize key-sequence)
-               binding (key-binding key-sequence)))
-       (and (stringp key-sequence)
+       (when (and (stringp key-series)
+                  (not (eq key-series "")))
+         (setq key-series (kbd-key:normalize key-series)
+               binding (key-binding key-series)))
+       (and (stringp key-series)
             (or (and binding (not (integerp binding)))
-                (kbd-key:special-sequence-p key-sequence))
+                (kbd-key:special-sequence-p key-series))
             (ibut:label-set seq-and-pos)
-            (hact 'kbd-key key-sequence))))))
+            (hact 'kbd-key key-series))))))
 
 ;;; ************************************************************************
 ;;; Public functions
 ;;; ************************************************************************
 
-(defun kbd-key:act (key-sequence)
-  "Executes the command binding for normalized KEY-SEQUENCE.
-Returns t if KEY-SEQUENCE has a binding, else nil."
+(defun kbd-key:act (key-series)
+  "Executes the command binding for normalized KEY-SERIES.
+Returns t if KEY-SERIES has a binding, else nil."
   (interactive "kKeyboard key to execute (no {}): ")
-  (setq current-prefix-arg nil) ;; Execution of the key-sequence may set it.
-  (let ((binding (key-binding key-sequence)))
+  (setq current-prefix-arg nil) ;; Execution of the key-series may set it.
+  (let ((binding (key-binding key-series)))
     (cond ((null binding)
           ;; If this is a special key seqence, execute it by adding
           ;; its keys to the stream of unread command events.
-          (when (kbd-key:special-sequence-p key-sequence)
-            (setq unread-command-events (nconc unread-command-events (mapcar 
'identity key-sequence)))
+          (when (kbd-key:special-sequence-p key-series)
+            (setq unread-command-events (nconc unread-command-events (mapcar 
'identity key-series)))
             t))
          ((memq binding '(action-key action-mouse-key hkey-either))
           (beep)
@@ -104,11 +105,11 @@ Returns t if KEY-SEQUENCE has a binding, else nil."
           t)
          (t (call-interactively binding) t))))
 
-(defun kbd-key:doc (key-sequence &optional full)
-  "Shows first line of doc for binding of keyboard KEY-SEQUENCE in minibuffer.
+(defun kbd-key:doc (key-series &optional full)
+  "Shows first line of doc for binding of keyboard KEY-SERIES in minibuffer.
 With optional prefix arg FULL, displays full documentation for command."
   (interactive "kKey sequence: \nP")
-  (let* ((keys (kbd-key:normalize key-sequence))
+  (let* ((keys (kbd-key:normalize key-series))
         (cmd  (let ((cmd (key-binding keys)))
                 (if (not (integerp cmd)) cmd)))
         (doc (and cmd (documentation cmd)))
@@ -118,7 +119,7 @@ With optional prefix arg FULL, displays full documentation 
for command."
               (or full
                   (setq end-line (string-match "[\n]" doc)
                         doc (substitute-command-keys (substring doc 0 
end-line))))
-            (setq doc (format "No documentation for {%s} %s" key-sequence (or 
cmd ""))))
+            (setq doc (format "No documentation for {%s} %s" key-series (or 
cmd ""))))
           (if (and cmd doc)
               (if full
                   (describe-function cmd)
@@ -127,18 +128,19 @@ With optional prefix arg FULL, displays full 
documentation for command."
           (if full
               (hui:menu-help doc)
             (message doc)))
-         (t (error "(kbd-key:doc): No binding found for keys {%s}" 
key-sequence)))))
+         (t (hkey-help)))))
+
 
 (defun kbd-key:help (but)
   "Display documentation for binding of keyboard key given by BUT's label."
   (let ((kbd-key (hbut:key-to-label (hattr:get but 'lbl-key))))
     (if kbd-key (kbd-key:doc kbd-key t))))
 
-(defun kbd-key:normalize (key-sequence)
-  "Returns KEY-SEQUENCE string (without surrounding {}) normalized into a form 
that can be parsed by commands."
+(defun kbd-key:normalize (key-series)
+  "Returns KEY-SERIES string (without surrounding {}) normalized into a form 
that can be parsed by commands."
   (interactive "kKeyboard key sequence to normalize (no {}): ")
-  (if (stringp key-sequence)
-      (let ((norm-key-seq (copy-sequence key-sequence))
+  (if (stringp key-series)
+      (let ((norm-key-seq (copy-sequence key-series))
            (case-fold-search nil)
            (case-replace t)
            (substring)
@@ -188,36 +190,36 @@ With optional prefix arg FULL, displays full 
documentation for command."
                            (lambda (str)
                              (concat "" (substring str (match-beginning 1)
                                                      (1+ (match-beginning 
1))))))))
-    (error "(kbd-key:normalize): requires a string argument, not `%s'" 
key-sequence)))
+    (error "(kbd-key:normalize): requires a string argument, not `%s'" 
key-series)))
 
 ;;; ************************************************************************
 ;;; Private functions
 ;;; ************************************************************************
 
-(defun kbd-key:extended-command-p (key-sequence)
-  "Returns non-nil if the string KEY-SEQUENCE is a normalized extended command 
invocation, i.e. M-x command."
-  (and (stringp key-sequence) (string-match kbd-key:extended-command-prefix 
key-sequence)))
+(defun kbd-key:extended-command-p (key-series)
+  "Returns non-nil if the string KEY-SERIES is a normalized extended command 
invocation, i.e. M-x command."
+  (and (stringp key-series) (string-match kbd-key:extended-command-prefix 
key-series)))
   
-(defun kbd-key:hyperbole-hycontrol-key-p (key-sequence)
-  "Returns t if normalized, non-nil KEY-SEQUENCE is given when in a HyControl 
mode, else nil.
+(defun kbd-key:hyperbole-hycontrol-key-p (key-series)
+  "Returns t if normalized, non-nil KEY-SERIES is given when in a HyControl 
mode, else nil.
 Allows for multiple key sequences strung together."
-  (and key-sequence
+  (and key-series
        (featurep 'hycontrol)
        (or hycontrol-windows-mode hycontrol-frames-mode)
        ;; If wanted to limit to single key bindings and provide tighter 
checking:
-       ;;   (string-match "[-.0-9]*\\(.*\\)" key-sequence)
-       ;;   (key-binding (match-string 1 key-sequence))
+       ;;   (string-match "[-.0-9]*\\(.*\\)" key-series)
+       ;;   (key-binding (match-string 1 key-series))
        t))
 
-(defun kbd-key:hyperbole-mini-menu-key-p (key-sequence)
-  "Returns t if normalized KEY-SEQUENCE appears to invoke a Hyperbole menu 
item or sequence of keys, else nil."
-  (when key-sequence
+(defun kbd-key:hyperbole-mini-menu-key-p (key-series)
+  "Returns t if normalized KEY-SERIES appears to invoke a Hyperbole menu item 
or sequence of keys, else nil."
+  (when key-series
     (let ((mini-menu-key (kbd-key:normalize (key-description (car 
(where-is-internal 'hyperbole))))))
-      (if (string-match (regexp-quote mini-menu-key) key-sequence) t))))
+      (if (string-match (regexp-quote mini-menu-key) key-series) t))))
 
-(defun kbd-key:key-and-arguments (key-sequence)
-  "Returns t if normalized KEY-SEQUENCE appears to be a bound key sequence 
possibly with following interactive arguments, else nil."
-  (let ((prefix-binding (and (stringp key-sequence) (key-binding (substring 
key-sequence 0 1)))))
+(defun kbd-key:key-and-arguments (key-series)
+  "Returns t if normalized KEY-SERIES appears to be a bound key sequence 
possibly with following interactive arguments, else nil."
+  (let ((prefix-binding (and (stringp key-series) (key-binding (substring 
key-series 0 1)))))
        ;; Just ensure that 1st character is bound to something that is
        ;; not a self-insert-command or a number.
     (and prefix-binding
@@ -244,16 +246,16 @@ Allows for multiple key sequences strung together."
            start end))
     string))
 
-(defun kbd-key:special-sequence-p (key-sequence)
-  "Returns non-nil if normalized KEY-SEQUENCE string is one of the following:
+(defun kbd-key:special-sequence-p (key-series)
+  "Returns non-nil if normalized KEY-SERIES string is one of the following:
   a Hyperbole minibuffer menu item key sequence,
   a HyControl key sequence,
   a M-x extended command,
   or a valid key sequence together with its interactive arguments."
-  (or (kbd-key:hyperbole-mini-menu-key-p key-sequence)
-      (kbd-key:hyperbole-hycontrol-key-p key-sequence)
-      (kbd-key:extended-command-p key-sequence)
-      (kbd-key:key-and-arguments key-sequence)))
+  (or (kbd-key:hyperbole-mini-menu-key-p key-series)
+      (kbd-key:hyperbole-hycontrol-key-p key-series)
+      (kbd-key:extended-command-p key-series)
+      (kbd-key:key-and-arguments key-series)))
 
 ;;; ************************************************************************
 ;;; Private variables
diff --git a/hsys-org.el b/hsys-org.el
index 9581e46..7c916e1 100644
--- a/hsys-org.el
+++ b/hsys-org.el
@@ -56,7 +56,26 @@
 ;;; ************************************************************************
 
 (defib org-mode ()
-  "Follows any Org mode link at point or cycles through views of the outline 
subtree at point."
+  "Follows Org mode references, cycles outline visibility and executes code 
blocks.
+
+First, this follows internal links in Org mode files.  When pressed on a
+link referent/target, the link definition is displayed, allowing two-way
+navigation between definitions and targets.
+
+Second, this follows Org mode external links.
+
+Third, within a radio target definition, this jumps to the first
+occurrence of an associated radio target.
+
+Fourth, when point is on an outline heading in Org mode, this
+cycles the view of the subtree at point.
+
+Fifth, with point on the first line of a code block definition, this
+executes the code block via the Org mode standard binding of {C-c C-c},
+(org-ctrl-c-ctrl-c).
+
+In any other context besides the end of a line, the Action Key invokes the
+Org mode standard binding of {M-RET}, (org-meta-return)."
   (when (funcall hsys-org-mode-function)
     (let (start-end)
       (cond ((setq start-end (hsys-org-internal-link-target-at-p))
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 0fb35b5..f96c183 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -348,7 +348,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 7.0.3a
-Printed July 21, 2019.
+Printed July 28, 2019.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -972,7 +972,7 @@ archives, and the World-Wide Web (WWW).
 added to documents with a simple drag between windows, no markup language
 needed.  Implicit buttons are patterns automatically recognized within
 existing text that perform actions, e.g. bug#24568 displays the bug status
-information for that bug number, without the need for any additional
+information for that Emacs bug number, without the need for any additional
 markup.  Global buttons are buttons that are activated by name from
 anywhere within Emacs.
 See <a href="#Buttons">Buttons</a>.
@@ -997,7 +997,8 @@ fast, flexible file and text finding commands.  A powerful, 
hierarchical
 contact manager, see <a href="#HyRolo">HyRolo</a>, which anyone can use, is 
also included.
 It is easy to learn since it introduces only a few new mechanisms
 and has a menu interface, which may be operated from the keyboard or the
-mouse;
+mouse; it may also be used to look up any record-based information and
+Hyperbole buttons may be embedded in any records;
 </p>
 </dd>
 <dt><em>Screen Control</em></dt>
@@ -1006,14 +1007,15 @@ Emacs, see <a href="#HyControl">HyControl</a>.  With 
just a few keystrokes, you
 increasing a window&rsquo;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;
+other features; this allows Hyperbole to quickly control the way
+information is presented on-screen;
 </p>
 </dd>
 <dt><em>Hypertextual Outliner</em></dt>
 <dd><p>an advanced outliner, see <a href="#Koutliner">Koutliner</a>, with 
multi-level
 autonumbering and permanent identifiers 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
+view specifications that can be included in links or used
 interactively;
 </p>
 </dd>
@@ -1067,7 +1069,7 @@ links to external information sources.  See <a 
href="#Koutliner">Koutliner</a>.
 <p>Some of Hyperbole&rsquo;s most significant features are:
 </p>
 <ul>
-<li> Buttons may link to information or may execute procedures, such as
+<li> Buttons may link to information or may execute functions, such as
 starting or communicating with external programs;
 
 </li><li> A simple mouse drag from a button source location to its link
@@ -2557,8 +2559,7 @@ Messages are recognized in any buffer.
 <a name="index-ilink"></a>
 </dd>
 <dt><code>link-to-ibut &lt;ilink&gt;</code></dt>
-<dd><p>At point, activates a link to an implicit button.
-The implicit button’s action is executed in the context of the current 
buffer.
+<dd><p>At point, activates a link to an implicit button within the current 
buffer.
 Recognizes the format ’&lt;ilink:’ &lt;button label&gt; ’&gt;’, e.g. 
&lt;ilink: my sequence of keys&gt;.
 </p>
 <a name="index-ibtypes-link_002dto_002dgbut"></a>
@@ -2577,8 +2578,7 @@ Recognizes the format ’&lt;glink:’ &lt;button 
label&gt; ’&gt;â€
 <a name="index-elink"></a>
 </dd>
 <dt><code>link-to-ebut &lt;elink&gt;</code></dt>
-<dd><p>At point, activates a link to an explicit button.
-The explicit button’s action is executed in the context of the current 
buffer.
+<dd><p>At point, activates a link to an explicit button within the current 
buffer.
 Recognizes the format ’&lt;elink:’ &lt;button label&gt; ’&gt;’, e.g. 
&lt;elink: project-list&gt;.
 </p>
 <a name="index-ibtypes-klink"></a>
@@ -2616,11 +2616,13 @@ retrievals.
 </p>
 <a name="index-ibtypes-kbd_002dkey"></a>
 <a name="index-key-sequence"></a>
+<a name="index-sequence-of-keys"></a>
 </dd>
 <dt><code>kbd-key</code></dt>
-<dd><p>Executes a key sequence found around point, delimited by curly braces, 
{}, if any.
-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.
+<dd><p>Executes a key series (series of key sequences) found around point,
+delimited by curly braces, {}, if any.  Key series should be in
+human readable form, e.g. <kbd>{C-x C-b}</kbd>.  Formats such as {^x^b}
+will not be recognized.
 </p>
 <p>Any key sequence must be a string of one of the following:
 </p><ul>
@@ -2961,21 +2963,38 @@ for a valid match.  See the function documentation for 
<code>hpath:find</code>
 for special file display options.
 </p>
 <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>
+<a name="index-radio-target"></a>
+<a name="index-code-block"></a>
+<a name="index-C_002dc-C_002dc"></a>
+<a name="index-M_002dRET-1"></a>
+<a name="index-org_002dctrl_002dc_002dctrl_002dc"></a>
+<a name="index-org_002dmeta_002dreturn"></a>
 </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.
+<dd><p>For users of Emacs Org mode, Hyperbole does quite a few things.
+</p>
+<p>First, the Action Key follows internal links in Org mode files.  When
+pressed on a link referent/target, the link definition is displayed,
+allowing two-way navigation between definitions and targets.
+</p>
+<p>Second, the Action Key follows Org mode external links.  The Assist
+Key displays help when pressed on an Org mode link.
 </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>Third, within a radio target definition, the Action Key jumps to the
+first occurrence of an associated radio target.
+</p>
+<p>Fourth, 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.
+</p>
+<p>Fifth, with point on the first line of a code block definition, the
+Action Key executes the code block via the Org mode standard binding
+of <kbd>{C-c C-c}</kbd>, <code>org-ctrl-c-ctrl-c</code>.
+</p>
+<p>In any other context besides the end of a line, the Action Key invokes
+the Org mode standard binding of <kbd>{M-RET}</kbd>, 
<code>org-meta-return</code>.
 </p>
 <a name="index-ibtypes-doc_002did"></a>
 <a name="index-online-library"></a>
@@ -3303,15 +3322,18 @@ at point.
 <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>
+<a name="index-browse_002durl_002dbrowser_002dfunction-1"></a>
 </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.
+that is used.  Valid values of this variable include
+<code>browse-url-default-browser</code> and <code>browse-url-generic</code>.
+See its documentation string for details.
 </p></dd>
 </dl>
 
+
 <a name="index-action-1"></a>
 <a name="index-hui_003aebut_002dprompt_002dfor_002daction"></a>
 <p>Action types create a convenient way of specifying button behavior
@@ -5067,7 +5089,7 @@ level to insertion at the child level.
 <dt><kbd>{C-u C-c c}</kbd></dt>
 <dd><p>Copy &lt;tree&gt; to follow as the first child of &lt;cell&gt;.
 </p>
-<a name="index-C_002dc-C_002dc"></a>
+<a name="index-C_002dc-C_002dc-1"></a>
 </dd>
 <dt><kbd>{C-c C-c}</kbd></dt>
 <dd><p>Copy &lt;tree&gt; to be the predecessor of &lt;cell&gt;.
@@ -7491,6 +7513,16 @@ any number of buttons with the same base label within a 
single buffer.
 <p>Jedi is a Emacs package for Python completion, definition and documentation 
lookup.
 </p>
 </dd>
+<dt><b>Key Sequence</b></dt>
+<dd><p>A single sequence of keys that can invoke an Emacs command.
+</p>
+</dd>
+<dt><b>Key Series</b></dt>
+<dd><p>A series of one or more Emacs key sequences delimited by braces that
+Hyperbole processes when activated as an implicit button, as if the
+keys were typed in by the user.
+</p>
+</dd>
 <dt><b>Koutline</b></dt>
 <dd><p>A hierarchically ordered grouping of cells which may be stored as a file
 and viewed and edited as an outline.
@@ -8011,8 +8043,8 @@ available with InfoDock.
 <a name="index-menu_002c-Cust_002fReferents"></a>
 <a name="index-C_002dh-h-c-r"></a>
 <p>Links to standard files, those which don&rsquo;t match any special referent
-category handled by any described earlier, are displayed in an Emacs
-window specified by the <code>hpath:display-where</code> setting.  It may be 
changed with the
+category described earlier, are displayed in an Emacs window specified
+by the <code>hpath:display-where</code> setting.  It may be changed with the
 Cust/Referents <kbd>{C-h h c r}</kbd> menu.
 </p>
 <p>Available options are:
@@ -8087,7 +8119,7 @@ entry.  Alternatively, the viewer-program may be a Lisp 
function that
 takes a single filename argument.
 </p>
 <p>The association lists used by this function are stored in variables
-vfor each available window system: 
<code>hpath:external-display-alist-macos</code>,
+for each available window system: 
<code>hpath:external-display-alist-macos</code>,
 <code>hpath:external-display-alist-mswindows</code>, and
 <code>hpath:external-display-alist-x</code>.  Examine and modify these
 values to suit your needs.
@@ -8113,16 +8145,15 @@ compared against the values in 
<code>hpath:variables</code>.  The first
 match found, if any, is selected and its associated variable name is
 substituted into the link pathname, in place of its literal value.
 When a link button is activated, potentially at a different site,
-Hyperbole replaces each variable within the link pathname with the
-first matching value from this list to recreate the literal pathname.
+Hyperbole replaces each variable in the link pathname with the first
+matching value from this list to recreate the literal pathname.
 Environment variables are also replaced whenever link paths are
 resolved.
 </p>
 <p>This permits sharing of links over wide areas, where the variable values
 differ between link creator and link activator.  The entire process
 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</code>.
+you in deciding whether or not to modify the value of 
<code>hpath:variables</code>.
 </p>
 <hr>
 <a name="Web-Search-Engines"></a>
@@ -8321,7 +8352,7 @@ shown here:
 </p>
 <dl compact="compact">
 <dd><a name="index-key-binding_002c-M_002dRET"></a>
-<a name="index-M_002dRET-1"></a>
+<a name="index-M_002dRET-2"></a>
 </dd>
 <dt><kbd>{M-<span class="key">RET</span>}</kbd></dt>
 <dd><p>Action Key: Invoke the Action Key in the present context.
@@ -10126,10 +10157,10 @@ Next: <a href="#Smart-Key-_002d-C-Source-Code" 
accesskey="n" rel="next">Smart Ke
 
 <div class="format">
 <pre class="format">This works only for identifiers defined within the same 
source file in
-which they are referenced.  It requires either Emacs&rsquo; imenu or 
XEmacs&rsquo;
-func-menu library and it requires that an index of identifiers has
-been built for the current buffer.  Other handlers handle identifier
-references and definitions across multiple files.
+which they are referenced.  It requires either Emacs&rsquo; imenu library
+and it requires that an index of identifiers has been built for the
+current buffer.  Other handlers handle identifier references and
+definitions across multiple files.
 
 When pressed on an identifier name after an identifier index has been 
generated:
   ACTION KEY
@@ -10768,7 +10799,7 @@ Next: <a href="#Smart-Key-_002d-HyRolo-Match-Buffers" 
accesskey="n" rel="next">S
 <a name="index-click_002c-world_002dwide-web"></a>
 <a name="index-W3"></a>
 <a name="index-URL-2"></a>
-<a name="index-browse_002durl_002dbrowser_002dfunction-3"></a>
+<a name="index-browse_002durl_002dbrowser_002dfunction-2"></a>
 <a name="index-World_002dwide-Web-2"></a>
 <a name="index-WWW-2"></a>
 <a name="index-C_002dh-h-c-u-1"></a>
@@ -11554,7 +11585,8 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-C_002dc-c"><code>C-c 
c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002da"><code>C-c 
C-a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002db"><code>C-c 
C-b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dc"><code>C-c 
C-c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dc"><code>C-c 
C-c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dc-1"><code>C-c 
C-c</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dd"><code>C-c 
C-d</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002df"><code>C-c 
C-f</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Moving-Around">Moving Around</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dh"><code>C-c 
C-h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
@@ -11704,7 +11736,8 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-M_002do-r-_003cwindow_002did_003e"><code>M-o r 
&lt;window-id&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002do-t-_003cwindow_002did_003e"><code>M-o t 
&lt;window-id&gt;</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-M_002dRET"><code>M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-M_002dRET-1"><code>M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-M_002dRET-1"><code>M-RET</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-M_002dRET-2"><code>M-<span 
class="key">RET</span></code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Global-Key-Bindings">Global Key Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002dx-kotl_002dmode_003ashow_002dsubtree"><code>M-x 
kotl-mode:show-subtree</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-middle-mouse-key-1"><code>middle 
mouse key</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
@@ -12018,9 +12051,8 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-B">B</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction-1">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction-2">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Action-Types">Action Types</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction-3">browse-url-browser-function</a>:</td><td>&nbsp;</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-browse_002durl_002dbrowser_002dfunction-1">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Action-Types">Action Types</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-browse_002durl_002dbrowser_002dfunction-2">browse-url-browser-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW 
URLs</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-C">C</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-c_002b_002b_002dcpp_002dinclude_002dpath">c++-cpp-include-path</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-C_002b_002b-Source-Code">Smart Key - 
C++ Source Code</a></td></tr>
@@ -12425,6 +12457,8 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><th><a name="Function_fn_letter-O">O</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-objc_002dcpp_002dinclude_002dpath">objc-cpp-include-path</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Objective_002dC-Source-Code">Smart Key 
- Objective-C Source Code</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-objc_002dinclude_002dpath">objc-include-path</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-_002d-Objective_002dC-Source-Code">Smart Key 
- Objective-C Source Code</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-org_002dctrl_002dc_002dctrl_002dc"><code>org-ctrl-c-ctrl-c</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-org_002dmeta_002dreturn"><code>org-meta-return</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function_fn_letter-R">R</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-run_002dhooks"><code>run-hooks</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Glossary">Glossary</a></td></tr>
@@ -12745,6 +12779,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-clone-window">clone 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cloning-Windows">Cloning Windows</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-clone-window-1">clone 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-clone-window-2">clone 
window</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-outside-a-Window">Smart Mouse Drags outside a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-code-block">code 
block</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-code-block-selection">code block 
selection</a>:</td><td>&nbsp;</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-collaboration">collaboration</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Koutliner-History">Koutliner History</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-collapse-lines">collapse 
lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
@@ -13403,6 +13438,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-quit-HyControl">quit 
HyControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-radio-target">radio 
target</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-raise-frame">raise 
frame</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-rdb_002dmode">rdb-mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-RDB-Mode">Smart Key - RDB Mode</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-rebalance-windows">rebalance 
windows</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-and-Deleting-Windows">Creating and Deleting 
Windows</a></td></tr>
@@ -13470,6 +13506,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-searching_002c-rolo">searching, 
rolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Searching">HyRolo Searching</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-selection">selection</a>:</td><td>&nbsp;</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>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-sequence-of-keys">sequence of 
keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Type-Summaries">Implicit Button Type 
Summaries</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-set">set</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Thing-Selection">Thing Selection</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-set-1">set</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-setting-the-view-spec">setting 
the view spec</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index 78fe934..160274a 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 8b3ec58..7d42404 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 1f59b75..af9a46e 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -155,7 +155,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 7.0.3a
-Printed July 21, 2019.
+Printed July 28, 2019.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -197,7 +197,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 @example
 Edition 7.0.3a
-July 21, 2019
+July 28, 2019
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -623,7 +623,7 @@ Hyperbole hyperlink and other kinds of buttons (explicit 
buttons) may be
 added to documents with a simple drag between windows, no markup language
 needed.  Implicit buttons are patterns automatically recognized within
 existing text that perform actions, e.g. bug#24568 displays the bug status
-information for that bug number, without the need for any additional
+information for that Emacs bug number, without the need for any additional
 markup.  Global buttons are buttons that are activated by name from
 anywhere within Emacs.
 @xref{Buttons}.
@@ -647,7 +647,8 @@ fast, flexible file and text finding commands.  A powerful, 
hierarchical
 contact manager, @pxref{HyRolo}, which anyone can use, is also included.
 It is easy to learn since it introduces only a few new mechanisms
 and has a menu interface, which may be operated from the keyboard or the
-mouse;
+mouse; it may also be used to look up any record-based information and
+Hyperbole buttons may be embedded in any records;
 
 @item Screen Control
 the fastest, easiest-to-use window and frame control available for GNU
@@ -655,13 +656,14 @@ Emacs, @pxref{HyControl}.  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;
+other features; this allows Hyperbole to quickly control the way
+information is presented on-screen;
 
 @item Hypertextual Outliner
 an advanced outliner, @pxref{Koutliner}, with multi-level
 autonumbering and permanent identifiers 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
+view specifications that can be included in links or used
 interactively;
 
 @item Programming Library
@@ -716,7 +718,7 @@ Some of Hyperbole's most significant features are:
 
 @itemize @bullet
 @item
-Buttons may link to information or may execute procedures, such as
+Buttons may link to information or may execute functions, such as
 starting or communicating with external programs;
 
 @item
@@ -1964,8 +1966,7 @@ Messages are recognized in any buffer.
 @cindex link to implicit button
 @cindex ilink
 @item link-to-ibut <ilink>
-At point, activates a link to an implicit button.
-The implicit button’s action is executed in the context of the current buffer.
+At point, activates a link to an implicit button within the current buffer.
 Recognizes the format ’<ilink:’ <button label> ’>’, e.g. <ilink: my sequence 
of keys>.
 
 @findex ibtypes link-to-gbut
@@ -1982,8 +1983,7 @@ Recognizes the format ’<glink:’ <button label> ’>’, e.g. 
<glink: open to
 @cindex link to explicit button
 @cindex elink
 @item link-to-ebut <elink>
-At point, activates a link to an explicit button.
-The explicit button’s action is executed in the context of the current buffer.
+At point, activates a link to an explicit button within the current buffer.
 Recognizes the format ’<elink:’ <button label> ’>’, e.g. <elink: project-list>.
 
 @findex ibtypes klink
@@ -2018,10 +2018,12 @@ retrievals.
 
 @findex ibtypes kbd-key
 @cindex key sequence
+@cindex sequence of keys
 @item kbd-key
-Executes a key sequence found around point, delimited by curly braces, @{@}, 
if any.
-Key sequences should be in human readable form, e.g.@: @bkbd{C-x C-b}.  
Formats such
-as @{^x^b@} will not be recognized.
+Executes a key series (series of key sequences) found around point,
+delimited by curly braces, @{@}, if any.  Key series should be in
+human readable form, e.g.@: @bkbd{C-x C-b}.  Formats such as @{^x^b@}
+will not be recognized.
 
 Any key sequence must be a string of one of the following:
 @itemize @bullet
@@ -2340,20 +2342,37 @@ for a valid match.  See the function documentation for 
@code{hpath:find}
 for special file display options.
 
 @findex ibtypes org-mode
-@vindex browse-url-browser-function
 @cindex org-mode
 @cindex Org mode
+@cindex radio target
+@cindex code block
+@kindex C-c C-c
+@kindex M-RET
+@findex org-ctrl-c-ctrl-c
+@findex org-meta-return
 @item 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 @bkbd{M-@key{RET}}, (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.
+For users of Emacs Org mode, Hyperbole does quite a few things.
+
+First, the Action Key follows internal links in Org mode files.  When
+pressed on a link referent/target, the link definition is displayed,
+allowing two-way navigation between definitions and targets.
+
+Second, the Action Key follows Org mode external links.  The Assist
+Key displays help when pressed on an Org mode link.
+
+Third, within a radio target definition, the Action Key jumps to the
+first occurrence of an associated radio target.
+
+Fourth, 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 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}.
+Fifth, with point on the first line of a code block definition, the
+Action Key executes the code block via the Org mode standard binding
+of @bkbd{C-c C-c}, @code{org-ctrl-c-ctrl-c}.
+
+In any other context besides the end of a line, the Action Key invokes
+the Org mode standard binding of @bkbd{M-RET}, @code{org-meta-return}.
 
 @findex ibtypes doc-id
 @cindex online library
@@ -2641,9 +2660,12 @@ at point.
 @item 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.
+that is used.  Valid values of this variable include
+@code{browse-url-default-browser} and @code{browse-url-generic}.
+See its documentation string for details.
 @end table
 
+
 @cindex action
 @vindex hui:ebut-prompt-for-action
 Action types create a convenient way of specifying button behavior
@@ -6207,6 +6229,14 @@ See also @url{https://tkf.github.io/emacs-jedi/latest/}.
 
 Jedi is a Emacs package for Python completion, definition and documentation 
lookup.
 
+@item Key Sequence
+A single sequence of keys that can invoke an Emacs command.
+
+@item Key Series
+A series of one or more Emacs key sequences delimited by braces that
+Hyperbole processes when activated as an implicit button, as if the
+keys were typed in by the user.
+
 @item Koutline
 A hierarchically ordered grouping of cells which may be stored as a file
 and viewed and edited as an outline.
@@ -6654,8 +6684,8 @@ available with InfoDock.
 @cindex menu, Cust/Referents
 @kindex C-h h c r
 Links to standard files, those which don't match any special referent
-category handled by any described earlier, are displayed in an Emacs
-window specified by the @code{hpath:display-where} setting.  It may be changed 
with the
+category described earlier, are displayed in an Emacs window specified
+by the @code{hpath:display-where} setting.  It may be changed with the
 Cust/Referents @bkbd{C-h h c r} menu.
 
 @noindent
@@ -6722,7 +6752,7 @@ entry.  Alternatively, the viewer-program may be a Lisp 
function that
 takes a single filename argument.
 
 The association lists used by this function are stored in variables
-vfor each available window system: @code{hpath:external-display-alist-macos},
+for each available window system: @code{hpath:external-display-alist-macos},
 @code{hpath:external-display-alist-mswindows}, and
 @code{hpath:external-display-alist-x}.  Examine and modify these
 values to suit your needs.
@@ -6749,16 +6779,15 @@ compared against the values in @code{hpath:variables}.  
The first
 match found, if any, is selected and its associated variable name is
 substituted into the link pathname, in place of its literal value.
 When a link button is activated, potentially at a different site,
-Hyperbole replaces each variable within the link pathname with the
-first matching value from this list to recreate the literal pathname.
+Hyperbole replaces each variable in the link pathname with the first
+matching value from this list to recreate the literal pathname.
 Environment variables are also replaced whenever link paths are
 resolved.
 
 This permits sharing of links over wide areas, where the variable values
 differ between link creator and link activator.  The entire process
 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}.
+you in deciding whether or not to modify the value of @code{hpath:variables}.
 
 @node Web Search Engines, Using URLs with Find-File, Link Variable 
Substitution, Customization
 @subsection Web Search Engines
@@ -8480,10 +8509,10 @@ When pressed within a Python source code file (without 
the OO-Browser):
 @format
 @group
 This works only for identifiers defined within the same source file in
-which they are referenced.  It requires either Emacs' imenu or XEmacs'
-func-menu library and it requires that an index of identifiers has
-been built for the current buffer.  Other handlers handle identifier
-references and definitions across multiple files.
+which they are referenced.  It requires either Emacs' imenu library
+and it requires that an index of identifiers has been built for the
+current buffer.  Other handlers handle identifier references and
+definitions across multiple files.
 
 @noindent
 When pressed on an identifier name after an identifier index has been 
generated:



reply via email to

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