branch: externals/hyperbole
commit 0a116c677506a6997db449b66c9026209478ec3a
Author: Bob Weiner <[email protected]>
Commit: Bob Weiner <[email protected]>

    Fix many Koutliner and thing copy issues; update Hyperbole manual
---
 ChangeLog          |  56 ++++++++++
 HY-NEWS            |  33 +++---
 hmouse-drv.el      |  21 ++--
 hui-select.el      |  52 +++++----
 hui.el             | 147 +++++++++++++++++++++++-
 hypb.el            | 127 +--------------------
 hyperbole.el       |  23 +++-
 kotl/klink.el      |   4 +-
 kotl/kotl-mode.el  | 135 +++++++++++++---------
 kotl/kview.el      |  16 +--
 man/hyperbole.html | 322 +++++++++++++++++++++++++++++++++++++----------------
 man/hyperbole.info | Bin 583804 -> 589656 bytes
 man/hyperbole.pdf  | Bin 1335755 -> 1342022 bytes
 man/hyperbole.texi |  95 +++++++++++++---
 man/version.texi   |   4 +-
 15 files changed, 669 insertions(+), 366 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9f16c1abea..340c44c573 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,61 @@
+2022-04-18  Bob Weiner  <[email protected]>
+
+* kotl/kotl-mode.el (kotl-mode:fill-cell): Fix issue where 'end' was set
+    to a non-marker type and then attempt to remove marker errored.  Move
+    marker deletion to before end type is changed.
+
+* kotl/kview.el (kcell-view:create): Remove (or no-fill (equal contents ""))
+    and always add 2 newlines after cell.
+
 2022-04-17  Bob Weiner  <[email protected]>
 
+* kotl/kotl-mode.el (kotl-mode:split-cell): Copy non-read-only attributes from
+    current cell's plist into new cell.
+
+* kotl/kview.el (kview:add-cell, kcell-view:create): Add new optional sibling-p
+    parameter; use this and kotl-mode:refill-flag in addition to no-fill 
parameter
+    to determine whether to fill cell contents on creation.  Only the no-fill
+    parameter sets the same named attribute on the cell.
+* kotl/kotl-mode.el (kotl-mode:add-cell): Send sibling-p valude to 
kview:add-cell.
+
+* kotl/kotl-mode.el (kotl-mode:add-cell): Fix to not use sibling-p or
+    `kotl-mode:refill-flag' to determine no-fill attribute of new cell.
+
+* hui.el (hui:delimited-selectable-thing-and-bounds): Fix arg order of setcar 
call.
+
+* kotl/kotl-mode.el (kotl-mode:kill-region): Fix interactive sexp to not error 
when
+    mark is not set.
+                    (kotl-mode:kill-or-copy-region): Add and use in above 
command.
+
+  hui.el (hui-kill-ring-save, hui-copy-to-register): Fix to signal an error if 
called
+    when mark is not set.
+
+* kotl/kotl-mode.el (kotl-mode:yank, kotl-mode:yank-pop): Fix to use 
insert-for-yank
+    and thereby match doc about honoring yank handling variables.
+
+* kotl/klink.el (klink:set-yank-handler): Fix by setting yank-handler to a 
list.
+
+* man/hyperbole.texi (Default Hyperbole Bindings): Add {M-w} and {C-x r s} doc 
for
+    copying delimited things.
+
+* kotl/kotl-mode.el (kotl-mode:maybe-shrink-region-p): Prevent error when no 
mark set.
+
+* hypb.el (hypb:selectable-thing, hypb:selectable-thing-and-bounds): Change 
prefix to
+    hui:delimited- and move to hui.el.
+
+* hyperbole.el (hkey-initialize):
+  hypb.el (hypb:copy-to-register): Rename to 'hui-copy-to-register' and move 
to hui.el.
+  hyperbole.el (hkey-initialize):
+  hypb.el (hypb:kill-ring-save): Rename to 'hui-kill-ring-save' and move to 
hui.el.
+
+* hyperbole.el (hyperbole--mark-even-if-inactive): Add to store value of
+    `mark-even-if-inactive' prior to enabling `hyperbole-mode'.")
+    (hyperbole--enable-mode, hyperbole--disable-mode): Use above new variable.
+
+* hypb.el (hypb:copy-to-register):
+  kotl/kotl-mode.el (kotl-mode:kill-region): Add that 'transient-mark-mode' 
must be
+    non-nil to copy thing at point when no region is active.
+
 * hsys-www.el (www-url-expand-file-name): Fix to expand non-remote, non-url 
paths.
 
 * hpath.el (hpath:call): Remove unused 'orig-path' local binding.
diff --git a/HY-NEWS b/HY-NEWS
index 76f376cdd4..2be208b400 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -200,21 +200,24 @@
       directly into other buffers without having to copy to a
       mail/message buffer first.
 
-  *** Klink Copy: Place point within a link to a Koutline cell (klink) when
-      there is no active region and use {M-w} to copy the klink.  Then {C-y}
-      will yank it into any buffer you desire.  To instead copy a reference to
-      the current Koutline cell, use {M-w} outside of a klink when no region
-      is active.  {C-x r s} prompts for an Emacs register and saves either the
-      current klink or the current cell reference to the register.  {C-x
-      r i} with the same register then inserts the Koutline reference at
-      point.
-
-      The new commands that you can bind to your own keys for copying klinks
-      to the kill ring and to registers are:
-       kotl-mode:copy-absolute-klink-to-kill-ring
-       kotl-mode:copy-relative-klink-to-kill-ring
-       kotl-mode:copy-absolute-klink-to-register
-       kotl-mode:copy-relative-klink-to-register
+  *** Klink Copy: When `transient-mark-mode' is enabled and there is no active 
region:
+
+        within a link to a Koutline cell (klink), {M-w} copies the klink; then
+        {C-y} yanks it into any buffer you desire.
+
+        {M-w} outside of a klink instead copies a reference to the current
+        Koutline cell.
+
+        {C-x r s} prompts for an Emacs register and saves either the current
+        klink or the current cell reference to the register; {C-x r i} with the
+        same register then inserts at point the saved Koutline reference.
+
+      The new commands that you can bind to your own keys for copying klink
+      references to the current cell to the kill ring and to registers are:
+        kotl-mode:copy-absolute-klink-to-kill-ring
+        kotl-mode:copy-relative-klink-to-kill-ring
+        kotl-mode:copy-absolute-klink-to-register
+        kotl-mode:copy-relative-klink-to-register
 
   *** Klinks Ignored Outside Comments in Programming Language Modes: In
       previous Hyperbole versions, this was true for C-based language
diff --git a/hmouse-drv.el b/hmouse-drv.el
index d801e1c46e..80224609f5 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    04-Feb-90
-;; Last-Mod:     24-Jan-22 at 00:18:46 by Bob Weiner
+;; Last-Mod:     17-Apr-22 at 15:11:15 by Bob Weiner
 ;;
 ;; Copyright (C) 1989-2021  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
@@ -1383,21 +1383,16 @@ compute the actual release location and include that."
 
 (defun hmouse-use-region-p ()
   "Return t if there is a non-empty, highlighted region, else nil."
-  (cond
-   ;; Newer GNU Emacs
-   ((fboundp 'use-region-p)
-    (let ((use-empty-active-region))
-      (use-region-p)))
-   ;; InfoDock and XEmacs
-   ((fboundp 'region-exists-p)
-    (and (fboundp 'region-active-p) (region-active-p) (region-exists-p)))
-   ;; Older GNU Emacs
-   ((boundp 'transient-mark-mode)
-    (and transient-mark-mode mark-active))))
+  ;; Newer GNU Emacs
+  (if (fboundp 'use-region-p)
+      (let ((use-empty-active-region))
+       (use-region-p))
+    ;; Older GNU Emacs
+    (and transient-mark-mode mark-active)))
 
 (defun hmouse-save-region ()
   "Save to `hkey-region' and return any active region within the current 
buffer.
-`transient-mark-mode' must be t or the function does nothing."
+`transient-mark-mode' must be t or this sets `hkey-region' to nil."
   (setq hkey-region
        (when (hmouse-use-region-p)
          (buffer-substring (region-beginning) (region-end)))))
diff --git a/hui-select.el b/hui-select.el
index 916c1895f6..cdfedb40e1 100644
--- a/hui-select.el
+++ b/hui-select.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    19-Oct-96 at 02:25:27
-;; Last-Mod:     17-Apr-22 at 11:32:25 by Bob Weiner
+;; Last-Mod:     17-Apr-22 at 15:33:00 by Bob Weiner
 ;;
 ;; Copyright (C) 1996-2021  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
@@ -406,37 +406,35 @@ interactively, the type of selection is displayed in the 
minibuffer."
   (interactive
    (cond ((and (fboundp 'use-region-p) (use-region-p))
          nil)
-        ((and (boundp 'transient-mark-mode) transient-mark-mode mark-active)
+        ((and transient-mark-mode mark-active)
          nil)
         (t
          ;; Reset selection based on the syntax of character at point.
          (hui-select-reset)
          nil)))
-    (let* ((key (hypb:cmd-key-vector #'hui-select-thing hyperbole-mode-map))
-          (org-key-cmd (and (derived-mode-p 'org-mode)
-                            (called-interactively-p 'interactive)
-                            (equal (this-single-command-keys) key)
-                            (lookup-key org-mode-map key))))
-      (cond (org-key-cmd
-            ;; Prevent a conflict with {C-c RET} binding in Org mode
-            (call-interactively org-key-cmd))
-           ;;
-           ;; No key conflicts, perform normal Hyperbole operation
-           (t (let ((region (hui-select-get-region-boundaries)))
-                (unless region
-                  (when (eq hui-select-previous 'punctuation)
-                    (setq region (hui-select-word (point)))))
-                (when region
-                  (goto-char (car region))
-                  (set-mark (cdr region))
-                  (when (fboundp 'activate-region) (activate-region))
-                  (when (and (boundp 'transient-mark-mode)
-                             transient-mark-mode)
-                    (setq mark-active t))
-                  (and (called-interactively-p 'interactive) 
hui-select-display-type
-                       (message "%s" hui-select-previous))
-                  (run-hooks 'hui-select-thing-hook)
-                  t))))))
+  (let* ((key (hypb:cmd-key-vector #'hui-select-thing hyperbole-mode-map))
+        (org-key-cmd (and (derived-mode-p 'org-mode)
+                          (called-interactively-p 'interactive)
+                          (equal (this-single-command-keys) key)
+                          (lookup-key org-mode-map key))))
+    (cond (org-key-cmd
+          ;; Prevent a conflict with {C-c RET} binding in Org mode
+          (call-interactively org-key-cmd))
+         ;;
+         ;; No key conflicts, perform normal Hyperbole operation
+         (t (let ((region (hui-select-get-region-boundaries)))
+              (unless region
+                (when (eq hui-select-previous 'punctuation)
+                  (setq region (hui-select-word (point)))))
+              (when region
+                (goto-char (car region))
+                (set-mark (cdr region))
+                (when transient-mark-mode
+                  (activate-mark))
+                (and (called-interactively-p 'interactive) 
hui-select-display-type
+                     (message "%s" hui-select-previous))
+                (run-hooks 'hui-select-thing-hook)
+                t))))))
 
 ;;;###autoload
 (defun hui-select-thing-with-mouse (event)
diff --git a/hui.el b/hui.el
index 28f37bc83c..70a6b72658 100644
--- a/hui.el
+++ b/hui.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    19-Sep-91 at 21:42:03
-;; Last-Mod:     20-Feb-22 at 22:19:24 by Bob Weiner
+;; Last-Mod:     17-Apr-22 at 22:31:52 by Bob Weiner
 ;;
 ;; Copyright (C) 1991-2021  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
@@ -43,6 +43,110 @@
   :type 'boolean
   :group 'hyperbole-buttons)
 
+;;; ************************************************************************
+;;; Public Commands Bound to Keys
+;;; ************************************************************************
+
+;; Derived from copy-to-register of "register.el"
+;;;###autoload
+(defun hui-copy-to-register (register start end &optional delete-flag region)
+  "Copy region or thing into register REGISTER.
+With prefix arg, delete as well.
+Called from program, takes five args: REGISTER, START, END, DELETE-FLAG,
+and REGION.  START and END are buffer positions indicating what to copy.
+The optional argument REGION if non-nil, indicates that we're not just
+copying some text between START and END, but we're copying the region.
+
+Interactively, reads the register using `register-read-with-preview'.
+
+If called interactively, `transient-mark-mode' is non-nil, and
+there is no active region, copy any delimited selectable thing at
+point; see `hui:delimited-selectable-thing'."
+  (interactive (list (register-read-with-preview "Copy to register: ")
+                    (when mark-active (region-beginning))
+                    (when mark-active (region-end))
+                    current-prefix-arg
+                    t))
+  (let (thing-and-bounds
+       thing
+       str)
+    (prog1 (setq str
+                ;; If called interactively, transient-mark-mode is
+                ;; enabled, and no region is active, copy thing 
+                ;; at point or current kcell ref when in kotl-mode
+                (cond ((and (called-interactively-p 'interactive)
+                            transient-mark-mode
+                            (not (use-region-p))
+                            (prog1 (setq thing-and-bounds 
(hui:delimited-selectable-thing-and-bounds)
+                                         start (nth 1 thing-and-bounds)
+                                         end   (nth 2 thing-and-bounds)
+                                         thing (nth 0 thing-and-bounds))
+                              (when (and delete-flag start end)
+                                (delete-region start end))))
+                       thing)
+                      ((and start end region)
+                       (funcall region-extract-function delete-flag))
+                      ((and start end)
+                       (filter-buffer-substring start end delete-flag))
+                      (t ;; no region
+                       (signal 'mark-inactive nil))))
+      (set-register register str)
+      (setq deactivate-mark t)
+      (cond (delete-flag)
+           ((called-interactively-p 'interactive)
+            (if thing
+                (message "Saved selectable thing: %s" thing)
+              (indicate-copied-region)))))))
+
+;; Override the {M-w} command from "simple.el" when hyperbole-mode is active
+;; to allow copying kcell references or regions.
+;;;###autoload
+(defun hui-kill-ring-save (beg end &optional region)
+  "Save the active region as if killed, but don't kill it.
+In Transient Mark mode, deactivate the mark.
+If `interprogram-cut-function' is non-nil, also save the text for a window
+system cut and paste.
+
+If called interactively, `transient-mark-mode' is non-nil, and
+there is no active region, copy any delimited selectable thing at
+point; see `hui:delimited-selectable-thing'.
+
+If you want to append the killed region to the last killed text,
+use \\[append-next-kill] before \\[kill-ring-save].
+
+The copied text is filtered by `filter-buffer-substring' before it is
+saved in the kill ring, so the actual saved text might be different
+from what was in the buffer.
+
+When called from Lisp, save in the kill ring the stretch of text
+between BEG and END, unless the optional argument REGION is
+non-nil, in which case ignore BEG and END, and save the current
+region instead.
+
+This command is similar to `copy-region-as-kill', except that it gives
+visual feedback indicating the extent of the region being copied."
+  ;; Pass mark first, then point, because the order matters when
+  ;; calling `kill-append'.
+  (interactive (list (when mark-active (region-beginning))
+                    (when mark-active (region-end))
+                    (prefix-numeric-value current-prefix-arg)))
+  (let (thing)
+    (if (or (use-region-p)
+           (null transient-mark-mode)
+           (not (called-interactively-p 'interactive)))
+       (copy-region-as-kill beg end region)
+      (setq thing (hui:delimited-selectable-thing))
+      (if (stringp thing)
+         (progn (kill-new thing)
+                (setq deactivate-mark t))
+       (copy-region-as-kill beg end region)))
+    ;; This use of called-interactively-p is correct because the code it
+    ;; controls just gives the user visual feedback.
+    (when (called-interactively-p 'interactive)
+      (if thing
+         (message "Saved selectable thing: %s" thing)
+       (indicate-copied-region)))))
+
 ;;; ************************************************************************
 ;;; Public functions
 ;;; ************************************************************************
@@ -102,6 +206,47 @@
               (message "{%s} now runs `%s'; prior Hyperbole {%s} binding 
removed" new-key-text cmd old-key-text))
       (message "{%s} now runs `%s'" new-key-text cmd))))
 
+(defun hui:delimited-selectable-thing ()
+  "Return any delimited selectable thing at point as a string or nil if none.
+
+With point:
+  in a Koutline klink, copy the klink;
+  in a Koutline cell, outside any klink, copy a klink reference to the current 
cell;
+  on a Hyperbole button, copy the text of the button excluding delimiters;
+  at the start of a paired delimiter, copy the text including the delimiters.
+"
+  (cond ((klink:absolute (klink:at-p)))
+       ((derived-mode-p 'kotl-mode)
+        (kcell-view:absolute-reference))
+       ((let* ((hbut (hbut:at-p))
+               (start (when hbut (hattr:get hbut 'lbl-start)))
+               (end (when hbut (hattr:get hbut 'lbl-end))))
+          (and start end
+               (buffer-substring-no-properties start end))))
+       ((hui-select-at-delimited-thing-p)
+        (hui-select-get-thing))))
+
+(defun hui:delimited-selectable-thing-and-bounds ()
+  "Return a list of any delimited selectable thing at point as: (<string> 
<start position of thing> <end position of thing>) or nil if none.
+Start and end may be nil if thing was generated rather than extracted from a 
region."
+  (let (thing-and-bounds thing start end)
+    (cond ((setq thing-and-bounds (klink:at-p))
+          (when thing-and-bounds
+            (setcar thing-and-bounds (klink:absolute thing-and-bounds))
+            thing-and-bounds))
+         ((derived-mode-p 'kotl-mode)
+          (list (kcell-view:absolute-reference)))
+         ((setq thing (hbut:at-p)
+                start (when thing (hattr:get thing 'lbl-start))
+                end (when thing (hattr:get thing 'lbl-end)))
+          (and start end
+               (list (buffer-substring-no-properties start end) start end)))
+         ((hui-select-at-delimited-thing-p)
+          (when (setq thing-and-bounds (hui-select-get-region-boundaries))
+            (list (buffer-substring-no-properties (car thing-and-bounds) (cdr 
thing-and-bounds))
+                  (car thing-and-bounds)
+                  (cdr thing-and-bounds)))))))
+
 (defun hui:ebut-act (&optional but)
   "Activate optional explicit button symbol BUT in current buffer.
 Default is the current button."
diff --git a/hypb.el b/hypb.el
index 02f56f3713..5306821387 100644
--- a/hypb.el
+++ b/hypb.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:     6-Oct-91 at 03:42:38
-;; Last-Mod:     17-Apr-22 at 11:43:32 by Bob Weiner
+;; Last-Mod:     17-Apr-22 at 17:59:53 by Bob Weiner
 ;;
 ;; Copyright (C) 1991-2022  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
@@ -217,51 +217,6 @@ If no matching installation type is found, return a list 
of (\"unknown\" hyperb:
          (keep-lines "^(HyDebug)" opoint (point))))
       (untabify start (point)))))
 
-;; Derived from copy-to-register of "register.el"
-;;;###autoload
-(defun hypb:copy-to-register (register start end &optional delete-flag region)
-  "Copy region or thing into register REGISTER.
-With prefix arg, delete as well.
-Called from program, takes five args: REGISTER, START, END, DELETE-FLAG,
-and REGION.  START and END are buffer positions indicating what to copy.
-The optional argument REGION if non-nil, indicates that we're not just
-copying some text between START and END, but we're copying the region.
-
-Interactively, reads the register using `register-read-with-preview'.
-
-If called interactively and there is no active region, copy any selectable
-thing at point; see `hypb:selectable-thing'."
-  (interactive (list (register-read-with-preview "Copy to register: ")
-                    (region-beginning)
-                    (region-end)
-                    current-prefix-arg
-                    t))
-  (let (thing-and-bounds
-       thing
-       str)
-    (prog1 (setq str
-                ;; If called interactively and no region is active, copy thing 
at
-                ;; point or current kcell ref when in kotl-mode
-                (cond ((and (called-interactively-p 'interactive)
-                            (not (use-region-p))
-                            (prog1 (setq thing-and-bounds 
(hypb:selectable-thing-and-bounds)
-                                         start (nth 1 thing-and-bounds)
-                                         end   (nth 2 thing-and-bounds)
-                                         thing (nth 0 thing-and-bounds))
-                              (when (and delete-flag start end)
-                                (delete-region start end))))
-                       thing)
-                      (region
-                       (funcall region-extract-function delete-flag))
-                      (t (filter-buffer-substring start end delete-flag))))
-      (set-register register str)
-      (setq deactivate-mark t)
-      (cond (delete-flag)
-           ((called-interactively-p 'interactive)
-            (if thing
-                (message "Saved selectable thing: %s" thing)
-              (indicate-copied-region)))))))
-
 (defun hypb:debug ()
   "Load Hyperbole hbut.el source file and set debugging traceback flag."
   (interactive)
@@ -590,52 +545,6 @@ copied, otherwise, it is omitted."
     (while (< start end)
       (or (kview:char-invisible-p start) (append-to-buffer buffer start (1+ 
start)))
       (setq start (1+ start)))))
-       
-;; Override the {M-w} command from "simple.el" when hyperbole-mode is active
-;; to allow copying kcell references or regions.
-;;;###autoload
-(defun hypb:kill-ring-save (beg end &optional region)
-  "Save the active region as if killed, but don't kill it.
-In Transient Mark mode, deactivate the mark.
-If `interprogram-cut-function' is non-nil, also save the text for a window
-system cut and paste.
-
-If called interactively and there is no active region, copy any selectable
-thing at point; see `hypb:selectable-thing'.
-
-If you want to append the killed region to the last killed text,
-use \\[append-next-kill] before \\[kill-ring-save].
-
-The copied text is filtered by `filter-buffer-substring' before it is
-saved in the kill ring, so the actual saved text might be different
-from what was in the buffer.
-
-When called from Lisp, save in the kill ring the stretch of text
-between BEG and END, unless the optional argument REGION is
-non-nil, in which case ignore BEG and END, and save the current
-region instead.
-
-This command is similar to `copy-region-as-kill', except that it gives
-visual feedback indicating the extent of the region being copied."
-  ;; Pass mark first, then point, because the order matters when
-  ;; calling `kill-append'.
-  (interactive (list (mark) (point)
-                    (prefix-numeric-value current-prefix-arg)))
-  (let (thing)
-    (if (or (use-region-p)
-           (not (called-interactively-p 'interactive)))
-       (copy-region-as-kill beg end region)
-      (setq thing (hypb:selectable-thing))
-      (if (stringp thing)
-         (progn (kill-new thing)
-                (setq deactivate-mark t))
-       (copy-region-as-kill beg end region)))
-    ;; This use of called-interactively-p is correct because the code it
-    ;; controls just gives the user visual feedback.
-    (when (called-interactively-p 'interactive)
-      (if thing
-         (message "Saved selectable thing: %s" thing)
-       (indicate-copied-region)))))
 
 ;;;###autoload
 (defun hypb:locate (search-string &optional filter arg)
@@ -835,40 +744,6 @@ The value returned is the value of the last form in BODY."
             (select-frame-set-input-focus (window-frame window)))
     (error "(hypb:select-window-frame): Argument must be a live window, not 
'%s'" window)))
 
-(defun hypb:selectable-thing ()
-  "Return any selectable thing at point as a string or nil if none."
-  (cond ((klink:absolute (klink:at-p)))
-       ((derived-mode-p 'kotl-mode)
-        (kcell-view:absolute-reference))
-       ((let* ((hbut (hbut:at-p))
-               (start (when hbut (hattr:get hbut 'lbl-start)))
-               (end (when hbut (hattr:get hbut 'lbl-end))))
-          (and start end
-               (buffer-substring-no-properties start end))))
-       ((hui-select-at-delimited-thing-p)
-        (hui-select-get-thing))))
-
-(defun hypb:selectable-thing-and-bounds ()
-  "Return a list of any selectable thing at point as: (<string> <start 
position of thing> <end position of thing>) or nil if none.
-Start and end may be nil if thing was generated rather than extracted from a 
region."
-  (let (thing-and-bounds thing start end)
-    (cond ((setq thing-and-bounds (klink:at-p))
-          (when thing-and-bounds
-            (setcar (klink:absolute thing-and-bounds) thing-and-bounds)
-            thing-and-bounds))
-         ((derived-mode-p 'kotl-mode)
-          (list (kcell-view:absolute-reference)))
-         ((setq thing (hbut:at-p)
-                start (when thing (hattr:get thing 'lbl-start))
-                end (when thing (hattr:get thing 'lbl-end)))
-          (and start end
-               (list (buffer-substring-no-properties start end) start end)))
-         ((hui-select-at-delimited-thing-p)
-          (when (setq thing-and-bounds (hui-select-get-region-boundaries))
-            (list (buffer-substring-no-properties (car thing-and-bounds) (cdr 
thing-and-bounds))
-                  (car thing-and-bounds)
-                  (cdr thing-and-bounds)))))))
-
 (defun hypb:set-raw-syntax-descriptor (char raw-descriptor &optional 
syntax-table)
   "Set the syntax of CHAR to RAW-DESCRIPTOR (syntax table value) in the 
current syntax table or optional SYNTAX-TABLE.
 Return the RAW-DESCRIPTOR.  Use the `syntax-after' function to
diff --git a/hyperbole.el b/hyperbole.el
index 966f19e1e4..2c0e27e43e 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -5,7 +5,7 @@
 ;; Author:           Bob Weiner
 ;; Maintainer:       Bob Weiner <[email protected]>, Mats Lidell <[email protected]>
 ;; Created:          06-Oct-92 at 11:52:51
-;; Last-Mod:     10-Apr-22 at 21:12:50 by Bob Weiner
+;; Last-Mod:     17-Apr-22 at 17:35:31 by Bob Weiner
 ;; Released:         03-May-21
 ;; Version:          8.0.0pre
 ;; Keywords:         comm, convenience, files, frames, hypermedia, languages, 
mail, matching, mouse, multimedia, outlines, tools, wp
@@ -156,6 +156,9 @@ Info documentation at \"(hyperbole)Top\".
       (hyperbole--enable-mode)
     (hyperbole--disable-mode)))
 
+(defvar hyperbole--mark-even-if-inactive
+  "Stores value of `mark-even-if-inactive' prior to enabling 
`hyperbole-mode'.")
+
 ;;; ************************************************************************
 ;;; Other required Elisp libraries
 ;;; ************************************************************************
@@ -271,12 +274,12 @@ of the commands."
     (hkey-maybe-set-key "\C-c\C-m" #'hui-select-thing)
     ;;
     ;; Override the {M-w} command from "simple.el" when hyperbole-mode is 
active
-    ;; to allow copying kcell references or regions to the kill ring.
-    (hkey-set-key [remap kill-ring-save] #'hypb:kill-ring-save)
+    ;; to allow copying delimited things, kcell references or regions to the 
kill ring.
+    (hkey-set-key [remap kill-ring-save] #'hui-kill-ring-save)
     ;;
     ;; Override the {C-x r s} command from "register.el" when hyperbole-mode 
is active
-    ;; to allow saving kcell references or regions to a register.
-    (hkey-set-key "\C-xrs" #'hypb:copy-to-register)
+    ;; to allow copying delimited things, kcell references or regions to a 
register.
+    (hkey-set-key "\C-xrs" #'hui-copy-to-register)
     ;;
     ;; Bind {C-c @} to create a user-specified sized grid of windows
     ;; displaying different buffers.
@@ -559,6 +562,11 @@ This is used only when running from git source and not a 
package release."
 
 (defun hyperbole--enable-mode ()
   "Enable Hyperbole global minor mode."
+  ;; Store the current value and set `mark-even-if-inactive' to nil so
+  ;; can select delimited things if the region is not active when
+  ;; hyperbole-mode is enabled.
+  (setq hyperbole--mark-even-if-inactive mark-even-if-inactive
+       mark-even-if-inactive nil)
   ;;
   ;; Abbreviate MSWindows /cygdrive mount point paths.
   (when (file-exists-p "/cygdrive")
@@ -590,6 +598,11 @@ This is used only when running from git source and not a 
package release."
                                     directory-abbrev-alist)
        hpath:posix-mount-point-to-mswindows-alist nil)
   ;;
+  ;; Reset the value of `mark-even-if-inactive' if the user has not
+  ;; changed it while Hyperbole was active.
+  (unless mark-even-if-inactive
+    (setq mark-even-if-inactive hyperbole--mark-even-if-inactive))
+  ;;
   (remove-hook (if (boundp 'write-file-functions)
                   'write-file-functions
                 'write-file-hooks)
diff --git a/kotl/klink.el b/kotl/klink.el
index 95f7b1d927..145ab5025b 100644
--- a/kotl/klink.el
+++ b/kotl/klink.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    15-Nov-93 at 12:15:16
-;; Last-Mod:     10-Apr-22 at 23:11:46 by Bob Weiner
+;; Last-Mod:     17-Apr-22 at 21:02:07 by Bob Weiner
 ;;
 ;; Copyright (C) 1993-2021  Free Software Foundation, Inc.
 ;; See the "../HY-COPY" file for license information.
@@ -202,7 +202,7 @@ link-end-position, (including delimiters)."
   "Add yank-handler to KLINK so link is made relative when yanked into the 
same koutline or the same directory.
 Return the modified KLINK."
   (add-text-properties 0 (length klink)
-                      (list 'yank-handler 'klink:yank-handler
+                      (list 'yank-handler '(klink:yank-handler)
                             'yank-excluded-properties (cons 'yank-handler 
(get-text-property 0 'yank-excluded-properties klink)))
                       klink)
   klink)
diff --git a/kotl/kotl-mode.el b/kotl/kotl-mode.el
index 9a529ad797..ab4cfbee6f 100644
--- a/kotl/kotl-mode.el
+++ b/kotl/kotl-mode.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    6/30/93
-;; Last-Mod:     16-Apr-22 at 18:13:59 by Bob Weiner
+;; Last-Mod:     18-Apr-22 at 00:45:33 by Bob Weiner
 ;;
 ;; Copyright (C) 1993-2021  Free Software Foundation, Inc.
 ;; See the "../HY-COPY" file for license information.
@@ -545,8 +545,8 @@ it is not collapsed."
        (t (let* ((indent (kcell-view:indent))
                  (opoint (set-marker (make-marker) (point)))
                  (start  (set-marker (make-marker) (kcell-view:start)))
-                 (collapsed-p)
                  (end    (set-marker (make-marker) (kcell-view:end-contents)))
+                 (collapsed-p)
                  temp-prefix prev-point)
             (goto-char start)
             ;; Expand cell if collapsed so that filling is done properly.
@@ -574,6 +574,7 @@ it is not collapsed."
             (when (looking-at temp-prefix)
               (replace-match "" t t))
             ;; Return to original point.
+            (set-marker end nil)
             (setq end (kcell-view:end-contents))
             (goto-char (min opoint end))
             ;;
@@ -583,7 +584,6 @@ it is not collapsed."
             ;;
             ;; Remove markers.
             (set-marker start nil)
-            (set-marker end nil)
             (set-marker opoint nil))
           ;; Move to editable point if need be.
           (kotl-mode:to-valid-position))))
@@ -688,15 +688,22 @@ With optional COPY-P equal to 't, copy region to kill 
ring but does not
 kill it.  With COPY-P any other non-nil value, return region as a
 string without affecting kill ring.
 
-If called interactively and there is no active region, copy any selectable
-thing at point; see `hypb:selectable-thing'.
+If called interactively, `transient-mark-mode' is non-nil, and
+there is no active region, copy any delimited selectable thing at
+point; see `hui:delimited-selectable-thing'.
 
 If the buffer is read-only and COPY-P is nil, the region will not be deleted
 but it will be copied to the kill ring and then an error will be signaled.
 
 If a completion is active, this aborts the completion only."
-  (interactive "*r")
+  (interactive
+   (progn (barf-if-buffer-read-only)
+         (list (when mark-active (region-beginning))
+               (when mark-active (region-end)))))
   (let ((read-only (and (not copy-p) buffer-read-only))
+       (kill-commands '(kill-region kotl-mode:completion-kill-region
+                         kotl-mode:kill-region kotl-mode:copy-region-as-kill))
+       thing-and-bounds
        thing)
     (when read-only
       (setq copy-p t))
@@ -705,18 +712,18 @@ If a completion is active, this aborts the completion 
only."
             (delete-region (point) cmpl-last-insert-location)
             (insert cmpl-original-string)
             (setq completion-to-accept nil))
-           ;; If called interactively and no region is active, copy thing at 
point
-           ((and (memq this-command '(kotl-mode:completion-kill-region
-                                      kotl-mode:kill-region 
kotl-mode:copy-region-as-kill))
+           ;; If called interactively, transient-mark-mode is non-nil, and no 
region is active, copy thing at point
+           ((and (memq this-command kill-commands)
+                 transient-mark-mode
                  (not (use-region-p))
-                 (setq thing (hypb:selectable-thing)))
+                 (setq thing-and-bounds 
(hui:delimited-selectable-thing-and-bounds)
+                       start (nth 1 thing-and-bounds)
+                       end   (nth 2 thing-and-bounds)
+                       thing (nth 0 thing-and-bounds)))
             (if (and copy-p (not (eq copy-p t)))
                 ;; Return thing as a string
                 thing
-              (if (eq last-command 'kill-region)
-                  (kill-append thing (< end start))
-                (kill-new thing))
-              (setq deactivate-mark t)))
+              (kotl-mode:kill-or-copy-region start end copy-p thing)))
            ;; If no thing to process, copy region whether active or not
            ((and (number-or-marker-p start)
                  (number-or-marker-p end)
@@ -724,40 +731,47 @@ If a completion is active, this aborts the completion 
only."
                      (kcell-view:cell end)))
             (save-excursion
               (goto-char start)
-              (let ((indent (kcell-view:indent))
-                    killed subst-str)
-                ;; Convert region to string
-                ;; Convert all occurrences of newline + indent
-                ;; to just newline, eliminating indent.
-                ;; Then save to kill ring.
-                (setq subst-str (concat "\\([\n\r]\\)" (make-string indent ?\ 
))
-                      killed
-                      (hypb:replace-match-string
-                       subst-str (buffer-substring start end) "\\1"))
-                (unless copy-p
-                  ;; If last char of region is a newline, then delete indent in
-                  ;; following line.
-                  (delete-region
-                   start (+ end (if (memq (char-after (1- (max start end)))
-                                          '(?\n ?\r))
-                                    indent
-                                  0))))
-                (if (and copy-p (not (eq copy-p t)))
-                    ;; Return killed region as a string.
-                    killed
-                  (if (eq last-command 'kill-region)
-                      (kill-append killed (< end start))
-                    (kill-new killed))
-                  (setq this-command 'kill-region)
-                  (setq deactivate-mark t)
-                  (when read-only (barf-if-buffer-read-only))
-                  nil))))
+              (kotl-mode:kill-or-copy-region start end copy-p)))
            (t (error "(kotl-mode:kill-region): Bad region or not within a 
single Koutline cell")))
-      (when (and copy-p (memq this-command '(kill-region kotl-mode:kill-region 
kotl-mode:copy-region-as-kill)))
+      (when (and copy-p (memq this-command kill-commands))
        (if thing
            (message "Saved selectable thing: %s" thing)
          (indicate-copied-region))))))
 
+(defun kotl-mode:kill-or-copy-region (start end copy-p &optional kill-str)
+  (when (and start end)
+    (let ((indent (kcell-view:indent))
+         subst-str)
+      ;; Convert region to string
+      ;; Convert all occurrences of newline + indent
+      ;; to just newline, eliminating indent.
+      ;; Then save to kill ring.
+      (setq subst-str (concat "\\([\n\r]\\)" (make-string indent ?\ ))
+           kill-str
+           (hypb:replace-match-string
+            subst-str (buffer-substring start end) "\\1"))
+      (unless copy-p
+       ;; If last char of region is a newline, then delete indent in
+       ;; following line.
+       (delete-region
+        start (+ end (if (memq (char-after (1- (max start end)))
+                               '(?\n ?\r))
+                         indent
+                       0))))))
+  (cond ((and copy-p (not (eq copy-p t)))
+        ;; Return killed region as a string.
+        kill-str)
+       ((not (and start end))
+        (signal 'mark-inactive nil))
+       (t (if (eq last-command 'kill-region)
+              (kill-append kill-str (< end start))
+            (kill-new kill-str))
+          (setq this-command 'kill-region)
+          (setq deactivate-mark t)
+          (when (and (not copy-p) buffer-read-only)
+            (barf-if-buffer-read-only))
+          nil)))
+
 ;; Bound to {C-w} when completion.el library is loaded.
 (defalias 'kotl-mode:completion-kill-region 'kotl-mode:kill-region)
 
@@ -1328,8 +1342,8 @@ See also the command `yank-pop' (\\[yank-pop])."
         (indent-str (make-string indent ?\ )))
     ;; Convert all occurrences of newline to newline + cell indent.
     ;; Then insert into buffer.
-    (insert (hypb:replace-match-string
-            "[\n\r]" yank-text (lambda (match) (concat match indent-str)))))
+    (insert-for-yank (hypb:replace-match-string
+                     "[\n\r]" yank-text (lambda (match) (concat match 
indent-str)))))
   (when (consp arg) (kotl-mode:exchange-point-and-mark))
   ;; If we do get all the way thru, make this-command indicate that.
   (when (eq this-command t) (setq this-command 'kotl-mode:yank))
@@ -1369,8 +1383,8 @@ doc string for `insert-for-yank-1', which see."
           (indent-str (make-string indent ?\ )))
       ;; Convert all occurrences of newline to newline + cell indent.
       ;; Then insert into buffer.
-      (insert (hypb:replace-match-string
-              "[\n\r]" yank-text (concat "\\0" indent-str))))
+      (insert-for-yank (hypb:replace-match-string
+                       "[\n\r]" yank-text (concat "\\0" indent-str))))
     ;; Set the window start back where it was in the yank command,
     ;; if possible.
     (set-window-start (selected-window) yank-window-start t)
@@ -2240,8 +2254,7 @@ Return last newly added cell."
                    ;; add as sibling of parent of current cell
                    (t (klabel:increment (klabel:parent klabel))))
              new-cell (kview:add-cell klabel cell-level contents plist
-                                      (or no-fill sibling-p
-                                          (not kotl-mode:refill-flag))))
+                                      no-fill sibling-p))
       ;;
       ;; sibling-p must be true if we are looping here so there is no need to
       ;; conditionalize how to increment the labels.
@@ -2646,15 +2659,31 @@ Prefix ARG selects the cells whose attributes are 
removed or set:
 The cell contents after point become part of the newly created cell.
 The default is to create the new cell as a sibling of the current cell.
 With optional universal ARG, {C-u}, the new cell is added as the child of
-the current cell."
+the current cell.  Non-read-only attributes from the current cell are
+replicated in the new cell."
   (interactive "*P")
   (let ((new-cell-contents (kotl-mode:kill-region
                            (point) (kcell-view:end-contents) 'string))
-       (start (kcell-view:start)))
+       (start (kcell-view:start))
+       (current-plist (kcell-view:plist))
+       plist
+       prop
+       val)
+
+    ;; Create a plist for the new cell, dropping any kcell:read-only-attributes
+    (while current-plist
+      (setq prop (nth 0 current-plist)
+           val  (nth 1 current-plist))
+      (setq current-plist (nthcdr 2 current-plist))
+      (unless (memq prop kcell:read-only-attributes)
+       (setq plist (cons prop (cons val plist)))))
+
     ;; delete any preceding whitespace
     (skip-chars-backward " \t\n\r" start)
     (delete-region (max start (point)) (kcell-view:end-contents))
-    (kotl-mode:add-cell arg new-cell-contents)))
+    (kotl-mode:add-cell arg new-cell-contents
+                       plist
+                       (kcell-view:get-attr 'no-fill))))
 
 (defun kotl-mode:transpose-cells (arg)
   "Exchange current and previous visible cells, leaving point after both.
@@ -3177,7 +3206,7 @@ cases where `kotl-mode:shrink-region-flag' is nil."
   (if (not (eq major-mode 'kotl-mode))
       t
     ;; Deactivate empty region
-    (when (eq (point) (mark))
+    (when (eq (point) (when mark-active (mark)))
        (deactivate-mark))
     (if (not (kotl-mode:valid-region-p))
        (if kotl-mode:shrink-region-flag
diff --git a/kotl/kview.el b/kotl/kview.el
index 5c050aa3f7..c326d61835 100644
--- a/kotl/kview.el
+++ b/kotl/kview.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    6/30/93
-;; Last-Mod:     17-Apr-22 at 12:57:50 by Bob Weiner
+;; Last-Mod:     18-Apr-22 at 00:12:50 by Bob Weiner
 ;;
 ;; Copyright (C) 1993-2021  Free Software Foundation, Inc.
 ;; See the "../HY-COPY" file for license information.
@@ -216,7 +216,7 @@ Any cell that is invisible is also collapsed as indicated 
by a call to
        (concat "\\([\n\r]\\)" (make-string indent ?\ ))
        (buffer-substring start end) "\\1"))))
 
-(defun kcell-view:create (kview cell contents level idstamp klabel &optional 
no-fill)
+(defun kcell-view:create (kview cell contents level idstamp klabel &optional 
no-fill sibling-p)
   "Insert into KVIEW at point, CELL with CONTENTS at LEVEL (1 = first level) 
with IDSTAMP and KLABEL.
 If the current view displays klabels, then KLABEL should be inserted
 prior to this call, with point following it.
@@ -246,10 +246,12 @@ or movement."
       (when no-fill
        (kcell:set-attr cell 'no-fill t))
       (insert fill-prefix)
-      (setq contents (kview:insert-contents cell contents no-fill fill-prefix))
+      (setq contents (kview:insert-contents cell contents
+                                           (or no-fill sibling-p
+                                               (null kotl-mode:refill-flag))
+                                           fill-prefix))
       ;; Insert lines to separate cell from next.
-      (insert (if (or no-fill (equal contents ""))
-                 "\n\n" "\n"))
+      (insert "\n\n")
       (unless (kview:get-attr kview 'blank-lines)
        ;; Make blank lines invisible.
        (kproperty:put (1- (point)) (min (point) (point-max))
@@ -579,7 +581,7 @@ If labels are off, return cell's idstamp as a string."
 ;;; kview - one view per buffer, multiple views per kotl
 ;;;
 
-(defun kview:add-cell (klabel level &optional contents prop-list no-fill)
+(defun kview:add-cell (klabel level &optional contents prop-list no-fill 
sibling-p)
   "Create a new cell with full KLABEL and add it at point at LEVEL within 
outline.
 Optional cell CONTENTS and PROP-LIST may also be given, as well
 as NO-FILL which skips filling of any CONTENTS.  Return new cell.
@@ -589,7 +591,7 @@ level."
                      (if (stringp klabel) (string-to-number klabel) klabel)
                    (kview:id-increment kview)))
         (new-cell (kcell:create prop-list)))
-    (kcell-view:create kview new-cell contents level idstamp klabel no-fill)
+    (kcell-view:create kview new-cell contents level idstamp klabel no-fill 
sibling-p)
     new-cell))
 
 (defun kview:beginning-of-actual-line ()
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 4bce78d34a..fb7a909b4d 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 8.0.0pre, Published March, 2022).
+(Edition 8.0.0pre, Published April, 2022).
 
 Copyright (C) 1989-2022  Free Software Foundation, Inc.
 
@@ -10,7 +10,7 @@ under the terms of the GNU Free Documentation License, 
Version 1.3 or
 any later version published by the Free Software Foundation.
 
 
-GNU Hyperbole sofware is distributed under the terms of the GNU
+GNU Hyperbole software is distributed under the terms of the GNU
 General Public License version 3 or later, as published by the Free
 Software Foundation, Inc.
 
@@ -201,7 +201,7 @@ ul.no-bullet {list-style: none}
     <li><a id="toc-Hiding-and-Showing-1" href="#Hiding-and-Showing">7.6.1 
Hiding and Showing</a></li>
     <li><a id="toc-View-Specs-1" href="#View-Specs">7.6.2 View Specs</a></li>
   </ul></li>
-  <li><a id="toc-Links-1" href="#Links">7.7 Links</a></li>
+  <li><a id="toc-Klinks-1" href="#Klinks">7.7 Klinks</a></li>
   <li><a id="toc-Cell-Attributes-1" href="#Cell-Attributes">7.8 Cell 
Attributes</a></li>
   <li><a id="toc-Koutliner-History-1" href="#Koutliner-History">7.9 Koutliner 
History</a></li>
 </ul></li>
@@ -370,7 +370,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 8.0.0pre
-Printed March 20, 2022.
+Printed April 17, 2022.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -604,7 +604,7 @@ Koutliner
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Viewing-Outlines">Viewing 
Outlines</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#Links">Links</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#Klinks">Klinks</a></td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Cell-Attributes">Cell 
Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -1336,7 +1336,7 @@ on a pathname to display the associated file or directory.
 <span id="index-key-bindings_002c-toggle"></span>
 <span id="index-enable-Hyperbole"></span>
 <span id="index-disable-Hyperbole"></span>
-<span id="index-Hyperbole-minibufer-menu"></span>
+<span id="index-Hyperbole-minibuffer-menu"></span>
 <span id="index-C_002dh-h"></span>
 <span id="index-C_002dh-h-X"></span>
 <span id="index-C_002dh-h-q"></span>
@@ -3087,7 +3087,7 @@ Each line of the summary may be selected to jump to the 
associated section.
 </p>
 <span id="index-ibtypes-actions"></span>
 <span id="index-action-implicit-button"></span>
-<span id="index-functon-call-implicit-button"></span>
+<span id="index-function-call-implicit-button"></span>
 <span id="index-variable-display-implicit-button"></span>
 </dd>
 <dt><code>action</code></dt>
@@ -3212,7 +3212,7 @@ See <samp>../DEMO#Gitlab (Remote) References</samp> for 
examples.
 </li><li> &lt;project&gt;/&lt;ref-item&gt;
 </li><li> /&lt;group&gt;/&lt;project&gt;.
 or
-</li><li> /&lt;project-or-group&gt; (where a group is a colection of projects)
+</li><li> /&lt;project-or-group&gt; (where a group is a collection of projects)
 </li></ul>
 
 <p>&lt;ref-item&gt; is one of these:
@@ -3786,7 +3786,7 @@ Return &lsquo;<samp>t</samp>&rsquo; if found, 
&lsquo;<samp>nil</samp>&rsquo; if
 </dd>
 <dt><code>link-to-web-search</code></dt>
 <dd><p>Search web SERVICE-NAME for SEARCH-TERM.  Uses 
<code>hyperbole-web-search-alist</code>
-to match each service to its search url.  Uses 
<code>hyperbole-web-search-browser-function</code>
+to match each service to its search url or Emacs command.  Uses 
<code>hyperbole-web-search-browser-function</code>
 and the <code>browse-url</code> package to display search results.
 </p>
 <span id="index-actypes-man_002dshow"></span>
@@ -5219,7 +5219,7 @@ commands available in the Koutliner.
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Viewing-Outlines" 
accesskey="6">Viewing Outlines</a></td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Links" 
accesskey="7">Links</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#Klinks" 
accesskey="7">Klinks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#Cell-Attributes" 
accesskey="8">Cell Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
@@ -5375,8 +5375,8 @@ labeling options.  The default, alpha labels, legal 
labels, and
 permanent idstamps (permanent cell ids) are all available.
 </p>
 <span id="index-label-separator_002c-changing"></span>
-<span id="index-cell_002c-label-separator"></span>
-<span id="index-outline_002c-label-separator"></span>
+<span id="index-cell-label-separator"></span>
+<span id="index-outline-label-separator"></span>
 <span id="index-koutliner_002c-C_002dc-M_002dl"></span>
 <span id="index-koutliner_002c-C_002du-C_002dc-M_002dl"></span>
 <p>A cell label is normally followed by a period and a space, called the
@@ -5411,7 +5411,7 @@ Next: <a href="#Editing-Outlines" accesskey="n" 
rel="next">Editing Outlines</a>,
 <span id="index-permanent-identifier-1"></span>
 <span id="index-idstamp-1"></span>
 <p>Idstamps (permanent ids) are associated with each cell.  They maintain
-hyperlinks as cells are reordered within a koutline.  See <a 
href="#Links">Links</a>.
+hyperlinks as cells are reordered within a koutline.  See <a 
href="#Klinks">Klinks</a>.
 Idstamps may be displayed in place of the outline level relative ids.
 Use <kbd>{C-c C-l id <span class="key">RET</span>}</kbd>.
 </p>
@@ -5452,7 +5452,7 @@ since the Koutliner uses differently named commands made 
to act
 like the regular editing commands.  Koutliner commands, however, account
 for the structure and indentation in koutlines.
 </p>
-<span id="index-cell_002c-selection"></span>
+<span id="index-cell-selection"></span>
 <p>You may use the mouse to select parts of the contents of a single cell
 for editing.  But don&rsquo;t drag across cell boundaries and then edit the
 selected region, since that will destroy the outline structure.
@@ -5691,7 +5691,7 @@ with mouse clicks.  Click the Assist Key within the 
indentation to the
 left of a cell and you will be prompted for a tree to move.  Double
 click the Action Key within the contents of the root cell of the tree to
 move and then double click within the root contents of the tree you want
-it to follow as a sucessor.
+it to follow as a successor.
 </p>
 <p>The Koutliner supports copying and moving within a single outline only
 right now, so don&rsquo;t try to to move trees across different outline files.
@@ -5827,7 +5827,7 @@ right margins.
 <span id="index-kotl_002dmode_003arefill_002dflag"></span>
 <span id="index-refilling"></span>
 <span id="index-attribute_002c-no_002dfill"></span>
-<span id="index-cell_002c-no_002dfill-attribute"></span>
+<span id="index-cell-no_002dfill-attribute"></span>
 <p>Set the variable, <code>kotl-mode:refill-flag</code>, to 
&lsquo;<samp>t</samp>&rsquo; if you
 want moving, promoting, demoting, exchanging, splitting and appending
 cells to also automatically refill each cell, aside from any that have
@@ -5857,7 +5857,7 @@ locations.
 </p>
 <span id="index-koutliner_002c-C_002dc-t"></span>
 <p><kbd>{C-c t}</kbd> does not prompt.  It exchanges the current
-and immediatly prior cell, regardless of their levels.  If there is no
+and immediately prior cell, regardless of their levels.  If there is no
 prior cell it exchanges the current and next cell.
 </p>
 <span id="index-cell_002c-mark-and-point"></span>
@@ -5893,7 +5893,7 @@ aside from the creation attributes and idstamp.
 <span id="index-cell_002c-appending"></span>
 <span id="index-appending-to-a-cell"></span>
 <span id="index-attribute_002c-no_002dfill-1"></span>
-<span id="index-cell_002c-no_002dfill-attribute-1"></span>
+<span id="index-cell-no_002dfill-attribute-1"></span>
 <p><kbd>{C-c +}</kbd> appends the contents of a specified cell to the end of
 another cell.  It has no effect on cell attributes, except that if one
 cell has a &lsquo;no-fill&rsquo; attribute, which prevents all but user 
requested
@@ -6035,7 +6035,7 @@ not be displayed; you must display it manually, if 
desired.
 <hr>
 <span id="Viewing-Outlines"></span><div class="header">
 <p>
-Next: <a href="#Links" accesskey="n" rel="next">Links</a>, Previous: <a 
href="#Editing-Outlines" accesskey="p" rel="prev">Editing Outlines</a>, Up: <a 
href="#Koutliner" accesskey="u" rel="up">Koutliner</a> &nbsp; [<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="#Klinks" accesskey="n" rel="next">Klinks</a>, Previous: <a 
href="#Editing-Outlines" accesskey="p" rel="prev">Editing Outlines</a>, Up: <a 
href="#Koutliner" accesskey="u" rel="up">Koutliner</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
 <span id="Viewing-Outlines-1"></span><h3 class="section">7.6 Viewing 
Outlines</h3>
 
@@ -6174,7 +6174,7 @@ following the outline buffer name, unless the variable,
 display.  The modeline display appears as &lt;|viewspec&gt; to aid rapid
 visual location.  The | (pipe character) is also used in links that
 specify view specs to indicate the start of a view spec sequence.
-See <a href="#Links">Links</a>.
+See <a href="#Klinks">Klinks</a>.
 </p>
 <span id="index-outline_002c-view-specs"></span>
 <p>The current view spec is saved whenever the outline is saved.  The next
@@ -6268,11 +6268,11 @@ off blank lines, clip each cell after its second line, 
and hide all
 cells below level one.
 </p>
 <hr>
-<span id="Links"></span><div class="header">
+<span id="Klinks"></span><div class="header">
 <p>
 Next: <a href="#Cell-Attributes" accesskey="n" rel="next">Cell Attributes</a>, 
Previous: <a href="#Viewing-Outlines" accesskey="p" rel="prev">Viewing 
Outlines</a>, Up: <a href="#Koutliner" accesskey="u" rel="up">Koutliner</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>][<a href="#Key-Index" title="Index" 
rel="index">Index</a>]</p>
 </div>
-<span id="Links-1"></span><h3 class="section">7.7 Links</h3>
+<span id="Klinks-1"></span><h3 class="section">7.7 Klinks</h3>
 
 <span id="index-link"></span>
 <span id="index-hyperlink"></span>
@@ -6281,33 +6281,13 @@ Next: <a href="#Cell-Attributes" accesskey="n" 
rel="next">Cell Attributes</a>, P
 <p>Cells may include hyperlinks that refer to other cells or to external
 sources of information.  Explicit Hyperbole buttons may be created as
 usual with mouse drags (see <a href="#By-Dragging">Creation Via Action Key
-Drags</a>).  A <em>klink</em> is a special implicit link button, delimited by
-&lt;&gt; separators, that jumps to a koutline cell.  This section discusses
-klinks.
-</p>
-<span id="index-koutliner_002c-Action-Key_002c-klink"></span>
-<span id="index-Action-Key_002c-klink"></span>
-<span id="index-klink_002c-activating"></span>
-<span id="index-klink-referent"></span>
-<p>Press the Action Key over a klink to follow it.  This will flash the
-klink as a button and then will display its referent in the other
-window.  If the klink contains a view spec, it will be applied when
-the referent is displayed.
-</p>
-<span id="index-klink_002c-inserting"></span>
-<span id="index-koutliner_002c-C_002dc-l"></span>
-<p>There are a number of easy ways to insert klinks into koutlines.  If you
-have mouse support under Hyperbole, simply click the Action Key within
-the indentation to the left of a cell text.  If you then double click on
-some cell, a link to that cell will be inserted where you started.  From
-a keyboard, use <kbd>{C-c l}</kbd> when in a koutline or <kbd>{C-h h k
-l}</kbd> when not in a koutline to insert a klink.  Since klinks are
-implicit buttons, you may instead type in the text of the klink just as
-you see it in the examples below and it will work exactly as if it had
-been entered with the insert link command.
+Drags</a>).  Implicit Hyperbole buttons may be added to Koutline text as
+well.  A <em>klink</em> is a special implicit link button, delimited by
+&lt;&gt; separators, that jumps to a koutline cell and may also adjust the
+current outline viewspecs.  This section discusses klinks.
 </p>
 <span id="index-klink_002c-formats"></span>
-<p>There are basically three forms of klinks:
+<p>There are three forms of klinks:
 </p>
 <dl compact="compact">
 <dd><span id="index-internal-klink"></span>
@@ -6331,7 +6311,7 @@ and the whole outline visible.
 <dt><em>external</em></dt>
 <dd><p>The second klink format is an external link to another koutline, such
 as, &lsquo;<samp>&lt;EXAMPLE.kotl, 3=012 |c1e&gt;</samp>&rsquo;, which 
displays the named file,
-starting at the cell 3 (whose permanent identifer is 012), with the
+starting at the cell 3 (whose permanent identifier is 012), with the
 view specification of: blank lines turned off, cutoff after one line
 per cell, and showing ellipses for cells or trees which are collapsed.
 </p>
@@ -6346,11 +6326,78 @@ and to label cells with the alphanumeric style.
 </p></dd>
 </dl>
 
+<span id="index-koutliner_002c-Action-Key_002c-klink"></span>
+<span id="index-Action-Key_002c-klink"></span>
+<span id="index-klink_002c-activating"></span>
+<span id="index-klink-referent"></span>
+<p>Press the Action Key over a klink to follow it.  This will flash the
+klink as a button and then will display its referent in the other
+window.  If the klink contains a view spec, it will be applied when
+the referent is displayed.
+</p>
+<span id="index-klink_002c-inserting"></span>
+<span id="index-koutliner_002c-C_002dc-l"></span>
+<p>There are a number of easy ways to insert klinks into koutlines.  If you
+have mouse support under Hyperbole, simply click the Action Key within
+the indentation to the left of a cell text.  If you then double click on
+some cell, a link to that cell will be inserted where you started.  From
+a keyboard, use <kbd>{C-c l}</kbd> when in a koutline or <kbd>{C-h h k 
l}</kbd> when
+not in a koutline to insert a klink.  Since klinks are implicit buttons,
+you may instead type in the text of the klink just as you saw them in the
+examples above and they will work exactly as if they had been entered with
+the insert link command.
+</p>
+<span id="index-M_002dw"></span>
+<span id="index-C_002dy"></span>
+<span id="index-klink_002c-copying"></span>
+<span id="index-klink_002c-yanking"></span>
+<span id="index-cell-link"></span>
+<span id="index-cell-reference"></span>
+<span 
id="index-kotl_002dmode_003acopy_002dabsolute_002dklink_002dto_002dkill_002dring"></span>
+<p>If you prefer the standard copy and yank model that Emacs provides, place
+point within a klink when there is no active region and use <kbd>{M-w}</kbd> to
+copy the klink.  To instead copy a reference to the current Koutline cell,
+use <kbd>{M-w}</kbd> <em>outside of</em> a klink when no region is active or
+<kbd>{M-x kotl-mode:copy-absolute-klink-to-kill-ring <span 
class="key">RET</span>}</kbd> anywhere
+within a cell.  Then <kbd>{C-y}</kbd> will yank the last copied text into any
+buffer you desire.  Of course, when a region is active, <kbd>{M-w}</kbd> will
+copy the region as it does normally in Emacs.
+</p>
+<span id="index-C_002dx-r-i"></span>
+<span id="index-C_002dx-r-s"></span>
+<span id="index-klink_002c-to_002ffrom-Emacs-register"></span>
+<span id="index-register_002c-klinks"></span>
+<span 
id="index-kotl_002dmode_003acopy_002dabsolute_002dklink_002dto_002dregister"></span>
+<p>Similarly, you can copy to an Emacs register rather than the kill ring.
+When no region is active/highlighted, <kbd>{C-x r s}</kbd> prompts for an Emacs
+register and saves to it either the current klink or, when outside of a
+klink, a reference to the current cell.  <kbd>{M-x
+kotl-mode:copy-absolute-klink-to-register <span class="key">RET</span>}</kbd> 
anywhere within a cell
+saves a reference to the current cell to a register.
+</p>
+<p><kbd>{C-x r i}</kbd> with the same register then inserts at point the 
Koutline
+reference previously saved.  When a region is active, these operate on the
+region instead.
+</p>
+<span 
id="index-kotl_002dmode_003acopy_002dabsolute_002dklink_002dto_002dkill_002dring-1"></span>
+<span 
id="index-kotl_002dmode_003acopy_002drelative_002dklink_002dto_002dkill_002dring"></span>
+<span 
id="index-kotl_002dmode_003acopy_002dabsolute_002dklink_002dto_002dregister-1"></span>
+<span 
id="index-kotl_002dmode_003acopy_002drelative_002dklink_002dto_002dregister"></span>
+<span id="index-cell-reference_002c-copying"></span>
+<p>There are also commands not bound to keys that always copy a klink reference
+to the current cell:
+</p><div class="example">
+<pre class="example">kotl-mode:copy-absolute-klink-to-kill-ring
+kotl-mode:copy-relative-klink-to-kill-ring
+kotl-mode:copy-absolute-klink-to-register
+kotl-mode:copy-relative-klink-to-register
+</pre></div>
+
 <span id="index-klink_003aignore_002dmodes"></span>
 <span id="index-klink_003ac_002dstyle_002dmodes"></span>
 <span id="index-modes-to-ignore-klinks"></span>
 <span id="index-klinks_002c-ignoring"></span>
-<p>Because  klinks use a very generic syntax, surrounded by &lt;angle 
brackets&gt;,
+<p>Because klinks use a very generic syntax, surrounded by &lt;angle 
brackets&gt;,
 in certain modes, mostly C-based programming modes, certain non-klink syntax
 can be mistakenly identified as klinks.  Therefore, the Koutliner provides
 two customizable variables which disable klink recognition in selected major
@@ -6364,15 +6411,14 @@ is within a comment.
 <p><code>klink:c-style-modes</code> is rarely needed but is there if Hyperbole 
ever
 mistakenly recognizes a pattern within a comment as a klink when it 
isn&rsquo;t.
 </p>
-
 <hr>
 <span id="Cell-Attributes"></span><div class="header">
 <p>
-Next: <a href="#Koutliner-History" accesskey="n" rel="next">Koutliner 
History</a>, Previous: <a href="#Links" accesskey="p" rel="prev">Links</a>, Up: 
<a href="#Koutliner" accesskey="u" rel="up">Koutliner</a> &nbsp; [<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="#Koutliner-History" accesskey="n" rel="next">Koutliner 
History</a>, Previous: <a href="#Klinks" accesskey="p" rel="prev">Klinks</a>, 
Up: <a href="#Koutliner" accesskey="u" rel="up">Koutliner</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a 
href="#Key-Index" title="Index" rel="index">Index</a>]</p>
 </div>
 <span id="Cell-Attributes-1"></span><h3 class="section">7.8 Cell 
Attributes</h3>
 
-<span id="index-cell_002c-attribute"></span>
+<span id="index-cell-attribute"></span>
 <span id="index-attribute"></span>
 <p><em>Attributes</em> are named properties whose values are specific to an
 outline cell.  Thus, each cell, including the invisible 0 root cell,
@@ -6394,7 +6440,7 @@ is always the hidden root cell of the outline tree.
 <dd><p>The e-mail address of the person who created this cell.
 </p>
 <span id="index-create_002dtime-attribute"></span>
-<span id="index-cell_002c-creation-time"></span>
+<span id="index-cell-creation-time"></span>
 </dd>
 <dt><em>create-time</em></dt>
 <dd><p>The time at which the cell was created.  This is stored in a form that
@@ -6432,7 +6478,7 @@ to &lsquo;<samp>nil</samp>&rsquo; is the same as removing 
it.
 
 
 <span id="index-attribute_002c-no_002dfill-2"></span>
-<span id="index-cell_002c-no_002dfill-attribute-2"></span>
+<span id="index-cell-no_002dfill-attribute-2"></span>
 <span id="index-no_002dfill-attribute"></span>
 <p>The &lsquo;no-fill&rsquo; attribute is special.  When set to 
&lsquo;<samp>t</samp>&rsquo;, it
 prevents movement, promotion, demotion, exchange, split or append
@@ -6761,7 +6807,7 @@ documented in this section.
 <span id="index-rolo_002c-r"></span>
 <span id="index-rolo_002c-search-again"></span>
 <p>If your HyRolo search did not match what you want, use <kbd>{r}</kbd> to 
start
-a new regular expresion query or <kbd>{C-u r}</kbd> for a string query.  The
+a new regular expression query or <kbd>{C-u r}</kbd> for a string query.  The
 rest of the match buffer keys work with the search results currently
 displayed.
 </p>
@@ -7666,7 +7712,7 @@ Lisp, aside from the instructions provided here.
 <p><code>(defil TYPE START-DELIM END-DELIM TEXT-REGEXP LINK-EXPR
              &amp;optional START-REGEXP-FLAG END-REGEXP-FLAG DOC)</code>
 </p>
-<p>will create a new Hyperbole implicit button link TYPE (an uquoted
+<p>will create a new Hyperbole implicit button link TYPE (an unquoted
 symbol), recognized in a buffer via START-DELIM and END-DELIM
 (strings) and the TEXT-REGEXP pattern between the delimiters.  With
 optional START-REGEXP-FLAG true, START-DELIM is treated as a regular
@@ -7917,7 +7963,7 @@ buttons.  Examine it within the <samp>hbut.el</samp> file 
for full details.
 <span id="index-ebut_003aprogram"></span>
 <p>The simplest way to create explicit buttons programmatically is to
 call <code>ebut:program</code>.  This generates an explicit button at point
-from LABEL, ACTYPE (action type) and any optional ACTYYPE ARGS.
+from LABEL, ACTYPE (action type) and any optional ACTYPE ARGS.
 It inserts the LABEL text at point surrounded by &lt;( )&gt; delimiters, 
adding any
 necessary instance number of the button after the LABEL.  ACTYPE may
 be a Hyperbole action type name (from defact) or an Emacs Lisp
@@ -8523,7 +8569,7 @@ Smart Key capabilities.  See <a href="#Smart-Keys">Smart 
Keys</a>, for complete
 terminals and pre-dated Emacs&rsquo; own dumb terminal menu support.  They
 are included with InfoDock (which is no longer maintained) and are not
 available separately.  They are not a part of Hyperbole and are not
-necesary for its use but are still supported by the Smart Keys.
+necessary for its use but are still supported by the Smart Keys.
 </p>
 </dd>
 <dt><b>Source Buffer / File</b></dt>
@@ -8880,7 +8926,7 @@ file and are available in future Emacs sessions.
 customizable Hyperbole options.  Hyperbole&rsquo;s customizations are
 further grouped into several sub-categories, one for the Koutliner,
 one for the HyRolo, etc.  You can select either an entire category or a
-specfic option and they will appear in another window for editing.
+specific option and they will appear in another window for editing.
 Simply follow the instructions on screen and then press the &ldquo;Apply
 and Save&rdquo; button to make any changes permanent.
 </p>
@@ -9133,6 +9179,22 @@ is typically bound to <kbd>{C-c /}</kbd> or if not, then 
<kbd>{C-h h f w}</kbd>
 always available.  Your standard web browser will be used to return
 the search results.
 </p>
+<p>The <code>hyperbole-web-search-alist</code> variable controls the items in
+this menu.  Elements of this alist are of the form:
+(&lt;web-service-name&gt; . &lt;url-with-%s-parameter-or-command&gt;).  The 
first
+capitalized character of each &lt;web-service-name&gt; must be unique for
+minibuffer menu selection.  The second part of an element is either:
+</p><dl compact="compact">
+<dt>1.</dt>
+<dd><p>a URL with an embedded %s indicating where to substitute a search term
+that is interactively prompted for when the menu item is activated;
+</p></dd>
+<dt>2.</dt>
+<dd><p>or an Emacs command symbol that interactively prompts for a URL and a
+search term and then displays the search results.
+</p></dd>
+</dl>
+
 <p>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
@@ -9418,7 +9480,7 @@ that links to any other window chosen via the Ace Window 
prompt.
 <dd><span id="index-C_002dh-h-X-1"></span>
 </dd>
 <dt><kbd>{C-h h X}</kbd></dt>
-<dd><span id="index-Hyperbole-minibuffer-menu"></span>
+<dd><span id="index-Hyperbole-minibuffer-menu-1"></span>
 <span id="index-enable-Hyperbole-1"></span>
 <span id="index-disable-Hyperbole-1"></span>
 <p>Hyperbole Mini Menu: Enable Hyperbole minor mode and invoke the
@@ -9441,7 +9503,7 @@ minibuffer menu and disable Hyperbole minor mode.
 <span id="index-C_002dc-RET-1"></span>
 </dd>
 <dt><kbd>{C-c <span class="key">RET</span>}</kbd></dt>
-<dd><p>Mark Things: Mark larger and larger synctactical units in a buffer
+<dd><p>Mark Things: Mark larger and larger syntactical 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
@@ -9455,6 +9517,37 @@ Hyperbole.
 <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 initializing Hyperbole.  See <a 
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a>, for more 
information.
+</p>
+<span id="index-key-binding_002c-M_002dw"></span>
+<span id="index-mark_002deven_002dif_002dinactive"></span>
+<span id="index-hui_002dkill_002dring_002dsave"></span>
+<span id="index-M_002dw-1"></span>
+</dd>
+<dt><kbd>{M-w}</kbd></dt>
+<dd><span id="index-copying-things-to-kill-ring"></span>
+<p>Delimited Thing, Koutline Cell Reference or Region Copy: While Hyperbole is
+active, it sets <code>mark-even-if-inactive</code> to <code>nil</code> and 
overrides
+<kbd>{M-w}</kbd> with its own command, <code>hui-kill-ring-save</code>, which 
copies the
+region only when it is active/highlighted.  When there is no active region,
+<kbd>{M-w}</kbd> does one of the following:
+</p>
+<ol>
+<li> in a Koutline klink, copies the klink;
+</li><li> in a Koutline cell, outside any klink, copies a klink reference to 
the current cell;
+</li><li> on a Hyperbole button, copies the text of the button excluding 
delimiters;
+</li><li> at the start of a paired delimiter, copy the text including the 
delimiters.
+</li></ol>
+
+<span id="index-key-binding_002c-C_002dx-r-s"></span>
+<span id="index-C_002dx-r-s-1"></span>
+</dd>
+<dt><kbd>{C-x r s}</kbd></dt>
+<dd><span id="index-copying-things-to-registers"></span>
+<p>Delimited Thing, Koutline Cell Reference or Region Save to Register: This
+does the same thing as <kbd>{M-w}</kbd> except it copies to an Emacs register
+given by a letter or number rather than the kill ring.  While Hyperbole is 
active,
+it overrides <kbd>{C-x r s}</kbd> with its own command, 
<code>hui-copy-to-register</code>.
+which copies the region only when it is active/highlighted.
 </p></dd>
 </dl>
 
@@ -9494,7 +9587,7 @@ subdirectory.  You can run all of them by moving to the 
Hyperbole home
 directory in a Posix shell and run <code>make test-all</code> or <code>make
 test</code> to run just non-interactive tests.  If any tests fail, you can
 press the Action Key to see the source of the failure.  Full testing is
-suppored under POSIX systems only.
+supported under POSIX systems only.
 </p>
 <p>With Hyperbole active, you can also define implicit buttons that run
 individual or sets of Hyperbole tests.  The file <samp>hypb-ert.el</samp> 
contains
@@ -9931,10 +10024,16 @@ With optional COPY-P equal to t, copy region to kill 
ring but don&rsquo;t
 kill it.  With COPY-P any other non-nil value, return region as a
 string without affecting the kill ring.
 </p>
+<p>If called interactively and there is no active region, copy any
+delimited selectable thing at point; see the documentation for
+<code>hui:delimited-selectable-thing</code>.
+</p>
 <p>If the buffer is read-only and COPY-P is nil, the region will not be
 deleted but it will be copied to the kill ring and then an error will be
 signaled.
 </p>
+<p>If a completion is active, this aborts the completion only.
+</p>
 <span id="index-kotl_002dmode_003akill_002dring_002dsave"></span>
 </dd>
 <dt><code>kotl-mode:kill-ring-save  <kbd>{M-w}</kbd></code></dt>
@@ -10404,7 +10503,7 @@ Next: <a href="#Smart-Mouse-Drags-between-Windows" 
accesskey="n" rel="next">Smar
      (7) dragged from a bottommost modeline when the frame has a non-nil
          <code>drag-with-mode-line</code> property, then move the frame until
          release of the Action Mouse Key;
-     (8) otherwide, dragged from a another modeline to outside of
+     (8) otherwise, dragged from a another modeline to outside of
          Emacs (MacOS only), create a new frame sized to match the
          selected window with the same buffer.
 </pre></div>
@@ -10805,7 +10904,7 @@ Next: <a href="#Smart-Key-_002d-Emacs-Pushbuttons" 
accesskey="n" rel="next">Smar
 
 <span id="index-dired_002dsidebar_002dmode"></span>
 <p>Dired-sidebar is an add-on Emacs package that puts dired in a sidebar
-and optionally integrates with vareous other packages.  Use the Emacs
+and optionally integrates with various other packages.  Use the Emacs
 package manager to install it and then invoke it with
 <kbd>{M-x dired-sidebar-toggle-sidebar <span class="key">RET</span>}</kbd> and 
quit with <kbd>{q}</kbd>.
 </p>
@@ -10819,7 +10918,7 @@ package manager to install it and then invoke it with
      (2) at the end of an entry line: invoke 
&lsquo;action-key-eol-function&rsquo;,
          typically to scroll up proportionally, if an Action Key press; invoke
          &lsquo;assist-key-eol-function&rsquo;, typically to scroll down 
proportionally,
-         if an Asisst Key press;
+         if an Assist Key press;
      (3) on the first line of the buffer (other than the end of line),
          dired is run on the current directory of this dired-sidebar;
      (4) at the end of the first or last line of the buffer,
@@ -10951,7 +11050,7 @@ Next: <a href="#Smart-Key-_002d-Dired-Mode" 
accesskey="n" rel="next">Smart Key -
 terminals and pre-dated Emacs&rsquo; own dumb terminal menu support.  They
 are included with InfoDock (which is no longer maintained) and are not
 available separately.  They are not a part of Hyperbole and are not
-necesary for its use.
+necessary for its use.
 </p>
 <div class="format">
 <pre class="format">When pressed on a Smart Menu item (this is an older 
in-buffer menu
@@ -12808,6 +12907,10 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-C_002dx-C_002de"><code>C-x 
C-e</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Types">Creating Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-m"><code>C-x 
m</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-C_002dx-o"><code>C-x 
o</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-C_002dx-r-i"><code>C-x r 
i</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dx-r-s"><code>C-x r 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dx-r-s-1"><code>C-x r 
s</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-C_002dy"><code>C-y</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Klinks">Klinks</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th id="Key-Index_ky_letter-D">D</th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-d"><code>d</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -12838,7 +12941,7 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a href="#index-keypad-number"><code>keypad 
number</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-Action-Key_002c-cell-argument"><code>koutliner, 
Action Key, cell argument</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-koutliner_002c-Action-Key_002c-hide-or-show-cell"><code>koutliner, 
Action Key, hide or show cell</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-koutliner_002c-Action-Key_002c-klink"><code>koutliner, Action Key, 
klink</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-Action-Key_002c-klink"><code>koutliner, Action Key, 
klink</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-Assist-Key_002c-listing-attributes"><code>koutliner,
 Assist Key, listing attributes</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-_002b"><code>koutliner, C-c 
+</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-a"><code>koutliner, C-c 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
@@ -12855,7 +12958,7 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-e"><code>koutliner, C-c 
e</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-h"><code>koutliner, C-c 
h</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-k"><code>koutliner, C-c 
k</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-l"><code>koutliner, C-c 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-l"><code>koutliner, C-c 
l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-M_002dj"><code>koutliner, C-c 
M-j</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-M_002dl"><code>koutliner, C-c 
M-l</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-koutliner_002c-C_002dc-M_002dq"><code>koutliner, C-c 
M-q</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
@@ -12905,6 +13008,8 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <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="#Implicit-Button-Types">Implicit Button Types</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="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-M_002dup"><code>M-up</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-M_002dw"><code>M-w</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-M_002dw-1"><code>M-w</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Default-Hyperbole-Bindings">Default Hyperbole 
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>
@@ -13377,6 +13482,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hsys_002dorg_002dmode_002dp"><code>hsys-org-mode-p</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Button-Types">Implicit Button 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-htype_002dcreate_002dhook">htype-create-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-htype_002ddelete_002dhook">htype-delete-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hui_002dkill_002dring_002dsave"><code>hui-kill-ring-save</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Default-Hyperbole-Bindings">Default Hyperbole 
Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_002dmenu_002dscreen_002dcommands"><code>hui-menu-screen-commands</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key 
Modeline Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_002dselect_002dgoto_002dmatching_002dtag"><code>hui-select-goto-matching-tag</code></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-hui_002dselect_002dthing"><code>hui-select-thing</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Smart-Key-Thing-Selection">Smart Key Thing 
Selection</a></td></tr>
@@ -13529,10 +13635,10 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-kimport_003astar_002doutline"><code>kimport:star-outline</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Inserting-and-Importing">Inserting and 
Importing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kimport_003asuffix_002dalist">kimport:suffix-alist</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Inserting-and-Importing">Inserting and 
Importing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kimport_003atext"><code>kimport:text</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Inserting-and-Importing">Inserting and 
Importing</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-klink_003ac_002dstyle_002dmodes">klink:c-style-modes</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-klink_003ac_002dstyle_002dmodes">klink:c-style-modes</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-klink_003acreate"><code>klink:create</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Menu-Commands">Menu Commands</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-klink_003acreate-1"><code>klink:create</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-klink_003aignore_002dmodes">klink:ignore-modes</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-klink_003aignore_002dmodes">klink:ignore-modes</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode"><code>kotl-mode</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Inserting-and-Importing">Inserting and 
Importing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode-1"><code>kotl-mode</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Inserting-and-Importing">Inserting and 
Importing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_002dhook">kotl-mode-hook</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
@@ -13554,8 +13660,14 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acell_002dhelp"><code>kotl-mode:cell-help</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acenter_002dline"><code>kotl-mode:center-line</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acenter_002dparagraph"><code>kotl-mode:center-paragraph</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002dabsolute_002dklink_002dto_002dkill_002dring"><code>kotl-mode:copy-absolute-klink-to-kill-ring</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002dabsolute_002dklink_002dto_002dkill_002dring-1"><code>kotl-mode:copy-absolute-klink-to-kill-ring</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002dabsolute_002dklink_002dto_002dregister"><code>kotl-mode:copy-absolute-klink-to-register</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002dabsolute_002dklink_002dto_002dregister-1"><code>kotl-mode:copy-absolute-klink-to-register</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002dafter"><code>kotl-mode:copy-after</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002dbefore"><code>kotl-mode:copy-before</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002drelative_002dklink_002dto_002dkill_002dring"><code>kotl-mode:copy-relative-klink-to-kill-ring</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002drelative_002dklink_002dto_002dregister"><code>kotl-mode:copy-relative-klink-to-register</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002dto_002dregister"><code>kotl-mode:copy-to-register</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003acopy_002dtree_002dor_002dregion_002dto_002dbuffer"><code>kotl-mode:copy-tree-or-region-to-buffer</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-kotl_002dmode_003adelete_002dbackward_002dchar"><code>kotl-mode:delete-backward-char</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Koutliner-Keys">Koutliner Keys</a></td></tr>
@@ -13653,6 +13765,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><th id="Function_fn_letter-M">M</th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-mail"><code>mail</code></a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-mail_002dyank_002doriginal">mail-yank-original</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Buttons-in-Mail">Buttons in Mail</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-mark_002deven_002dif_002dinactive">mark-even-if-inactive</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Default-Hyperbole-Bindings">Default Hyperbole 
Bindings</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th id="Function_fn_letter-O">O</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>
@@ -13789,8 +13902,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> 
Section</th></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th id="Concept-Index_cp_symbol-1">&lt;</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003c_003e-delimiters">&lt;&gt; 
delimiters</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003c_0040-klink_003e">&lt;@ 
klink&gt;</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_003c_003e-delimiters">&lt;&gt; 
delimiters</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_003c_0040-klink_003e">&lt;@ 
klink&gt;</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_003c_007cviewspec_003e">&lt;|viewspec&gt;</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#View-Specs">View Specs</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th id="Concept-Index_cp_symbol-2">|</th><td></td><td></td></tr>
@@ -13807,7 +13920,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Action-Key-drag">Action Key 
drag</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-cell-argument">Action Key, cell 
argument</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-Action-Key_002c-hide-or-show-cell">Action Key, hide or show 
cell</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-Action-Key_002c-klink">Action 
Key, klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Action-Key_002c-klink">Action 
Key, klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Action-Key_002c-web-browsing">Action Key, web 
browsing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Action-Mouse-Key">Action Mouse 
Key</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-Action-Mouse-Key-1">Action Mouse 
Key</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
@@ -13940,12 +14053,20 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-C_002fC_002b_002b-call-trees">C/C++ call 
trees</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-C_002fC_002b_002b-cross_002dreference">C/C++ 
cross-reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-call-tree_002c-C">call tree, 
C</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-cell-attribute">cell 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-cell-creation-time">cell 
creation time</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-cell-label-separator">cell label 
separator</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-cell-link">cell 
link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-cell-no_002dfill-attribute">cell 
no-fill attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-cell-no_002dfill-attribute-1">cell no-fill 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-cell-no_002dfill-attribute-2">cell no-fill 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-cell-reference">cell 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-cell-reference_002c-copying">cell reference, 
copying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-cell-selection">cell 
selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Editing-Outlines">Editing Outlines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-adding">cell, 
adding</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-appending">cell, 
appending</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cell_002c-attribute">cell, 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-collapse">cell, 
collapse</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-cell_002c-creating">cell, 
creating</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cell_002c-creation-time">cell, 
creation time</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-exchanging">cell, 
exchanging</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-expand">cell, 
expand</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-cell_002c-filling">cell, 
filling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
@@ -13954,12 +14075,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-cell_002c-idstamp-0">cell, 
idstamp 0</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Outlines">Creating Outlines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-idstamp-0-1">cell, 
idstamp 0</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-killing">cell, 
killing</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cell_002c-label-separator">cell, 
label separator</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-mark-and-point">cell, 
mark and point</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Transposing">Transposing</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-cell_002c-no_002dfill-attribute">cell, no-fill 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-cell_002c-no_002dfill-attribute-1">cell, no-fill 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-cell_002c-no_002dfill-attribute-2">cell, no-fill 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cell_002c-selection">cell, 
selection</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Editing-Outlines">Editing Outlines</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-cell_002c-show-all">cell, show 
all</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-cell_002c-show-levels">cell, 
show levels</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-cell_002c-show-subtree">cell, 
show subtree</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hiding-and-Showing">Hiding and Showing</a></td></tr>
@@ -14012,6 +14128,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-copy-buffer">copy 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Displaying-Buffers">Displaying Buffers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-copy-region">copy 
region</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-copying">copying</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-copying-things-to-kill-ring">copying things to kill 
ring</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-copying-things-to-registers">copying things to 
registers</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-create-link-button">create link 
button</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-create_002dtime-attribute">create-time 
attribute</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Cell-Attributes">Cell Attributes</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-creating-buttons">creating 
buttons</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
@@ -14153,7 +14271,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-exporting_002c-Koutliner">exporting, 
Koutliner</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menu-Commands">Menu Commands</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-external-display">external 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-external-display-1">external 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-external-klink">external 
klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-external-klink">external 
klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-external-program">external 
program</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-external-viewer">external 
viewer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#External-Viewers">External Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-extracting-from-tar-files">extracting from tar 
files</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Tar-File-Mode">Smart Key - Tar File Mode</a></td></tr>
@@ -14189,7 +14307,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-ftp">ftp</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-function">function</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-function-1">function</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-functon-call-implicit-button">functon call implicit 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-function-call-implicit-button">function call implicit 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th id="Concept-Index_cp_letter-G">G</th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-game_002c-gomoku">game, 
gomoku</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Gomoku-Game">Smart Key - Gomoku Game</a></td></tr>
@@ -14268,8 +14386,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-main-menu">Hyperbole 
main menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-manual">Hyperbole 
manual</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Documentation">Documentation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole-menubar-menu">Hyperbole menubar 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Hyperbole-minibufer-menu">Hyperbole minibufer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invocation">Invocation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-Hyperbole-minibuffer-menu">Hyperbole minibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-Hyperbole-minibuffer-menu">Hyperbole minibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Invocation">Invocation</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-Hyperbole-minibuffer-menu-1">Hyperbole minibuffer 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hyperbole-popup-menu">hyperbole 
popup menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole-pulldown-menu">Hyperbole pulldown 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Hyperbole-report">Hyperbole 
report</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -14281,7 +14399,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole_002c-starting">Hyperbole, 
starting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Hyperbole_002c-system-encapsulation">Hyperbole, system 
encapsulation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Encapsulating-Systems">Encapsulating Systems</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyperbole_002dmode">hyperbole-mode</a>:</td><td>&nbsp;</td><td 
valign="top"><a href="#Invocation">Invocation</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyperlink">hyperlink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyperlink">hyperlink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hyperlink-anchor">hyperlink 
anchor</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hypertext">hypertext</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Hyperbole-Overview">Hyperbole Overview</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hypertext-1">hypertext</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
@@ -14354,7 +14472,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-internal-custom-display">internal custom 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-internal-display">internal 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Referent-Display">Referent Display</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-internal-image-display">internal 
image display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-internal-klink">internal 
klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-internal-klink">internal 
klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-internal-standard-display">internal standard 
display</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-internal-viewer">internal 
viewer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Internal-Viewers">Internal Viewers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Internet-RFC">Internet 
RFC</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -14385,8 +14503,10 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-C_002dh-A">key 
binding, C-h A</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-C_002dh-h">key 
binding, C-h h</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-key-binding_002c-C_002du-C_002dh-A">key binding, C-u C-h 
A</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-key-binding_002c-C_002dx-r-s">key binding, C-x r 
s</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-M_002do">key 
binding, M-o</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-M_002dRET">key 
binding, M-<tt class="key">RET</tt></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-key-binding_002c-M_002dw">key 
binding, M-w</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-menu">key 
binding, menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-key-binding_002c-smart-keys">key 
binding, smart keys</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-key-bindings">key 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Default-Hyperbole-Bindings">Default Hyperbole Bindings</a></td></tr>
@@ -14401,15 +14521,18 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-kill-and-yank-2">kill and 
yank</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-kill-region">kill 
region</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-klink">klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-klink-1">klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-klink-referent">klink 
referent</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-klink_002c-activating">klink, 
activating</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-klink_002c-external">klink, 
external</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-klink_002c-formats">klink, 
formats</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-klink_002c-inserting">klink, 
inserting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-klink_002c-internal">klink, 
internal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-klink_002c-view-spec">klink, 
view spec</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-klinks_002c-ignoring">klinks, 
ignoring</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-klink-1">klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink-referent">klink 
referent</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink_002c-activating">klink, 
activating</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink_002c-copying">klink, 
copying</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink_002c-external">klink, 
external</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink_002c-formats">klink, 
formats</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink_002c-inserting">klink, 
inserting</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink_002c-internal">klink, 
internal</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-klink_002c-to_002ffrom-Emacs-register">klink, to/from Emacs 
register</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink_002c-view-spec">klink, 
view spec</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klink_002c-yanking">klink, 
yanking</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-klinks_002c-ignoring">klinks, 
ignoring</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-knowledge-transfer">knowledge 
transfer</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-Koutline-import">Koutline 
import</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-koutline-link">koutline 
link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -14436,7 +14559,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-level">level</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-level-1">level</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-line-and-column">line and 
column</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-link">link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-link">link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-link-action-types">link action 
types</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-link-button">link 
button</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-link-button-1">link 
button</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
@@ -14596,7 +14719,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-modeline_002c-Smart-Keys">modeline, Smart 
Keys</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-modeline_002c-unbury-buffer">modeline, unbury 
buffer</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Key-Modeline-Clicks">Smart Mouse Key Modeline 
Clicks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-modeline_002c-view-spec">modeline, view 
spec</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-modes-to-ignore-klinks">modes to 
ignore klinks</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-modes-to-ignore-klinks">modes to 
ignore klinks</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-mouse">mouse</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-mouse-bindings">mouse 
bindings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-mouse-drag_002c-link-creation">mouse drag, link 
creation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Dragging">By 
Dragging</a></td></tr>
@@ -14638,6 +14761,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-other-frame">other 
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-other-window">other 
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-outline-file-suffix">outline 
file suffix</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Creating-Outlines">Creating Outlines</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-outline-label-separator">outline 
label separator</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-outline-mode">outline 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Promoting-and-Demoting">Promoting and Demoting</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-outline-mode-1">outline 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-outline-processor">outline 
processor</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
@@ -14655,7 +14779,6 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-outline_002c-importing">outline, 
importing</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-outline_002c-importing-into">outline, importing 
into</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-outline_002c-inserting-into">outline, inserting 
into</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-outline_002c-label-separator">outline, label 
separator</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-outline_002c-label-type">outline, label 
type</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-outline_002c-mailing">outline, 
mailing</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-outline_002c-motion">outline, 
motion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Moving-Around">Moving 
Around</a></td></tr>
@@ -14717,6 +14840,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-region-selection">region 
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-region-throw">region 
throw</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-region_002c-active">region, 
active</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Mouse-Drags-within-a-Window">Smart Mouse Drags within a 
Window</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-register_002c-klinks">register, 
klinks</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-relative-autonumber">relative 
autonumber</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-relative-identifier">relative 
identifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Autonumbering">Autonumbering</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-remote-file">remote 
file</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -14934,7 +15058,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-view-spec_002c-characters">view 
spec, characters</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-view-spec_002c-ellipses">view 
spec, ellipses</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-view-spec_002c-example">view 
spec, example</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-view-spec_002c-klink">view spec, 
klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-view-spec_002c-klink">view spec, 
klink</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Klinks">Klinks</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-view-spec_002c-label-type">view 
spec, label type</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#View-Specs">View Specs</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-view-spec_002c-lines-per-cell">view spec, lines per 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-view-spec_002c-setting">view 
spec, setting</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 c2d76b7bc5..a781c66949 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index e2279afbc3..df84ebdd42 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 94c4b34809..a88c31ee14 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -7,7 +7,7 @@
 @c Author:       Bob Weiner
 @c
 @c Orig-Date:     6-Nov-91 at 11:18:03
-@c Last-Mod:     16-Apr-22 at 17:54:02 by Bob Weiner
+@c Last-Mod:     17-Apr-22 at 23:24:34 by Bob Weiner
 
 @c %**start of header (This is for running Texinfo on a region.)
 @setfilename hyperbole.info
@@ -156,7 +156,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 8.0.0pre
-Printed March 20, 2022.
+Printed April 17, 2022.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -198,7 +198,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 @example
 Edition 8.0.0pre
-March 20, 2022
+April 17, 2022
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -353,7 +353,7 @@ Koutliner
 * Idstamps::
 * Editing Outlines::
 * Viewing Outlines::
-* Links::
+* Klinks::
 * Cell Attributes::
 * Koutliner History::
 
@@ -4372,7 +4372,7 @@ commands available in the Koutliner.
 * Idstamps::
 * Editing Outlines::
 * Viewing Outlines::
-* Links::
+* Klinks::
 * Cell Attributes::
 * Koutliner History::
 @end menu
@@ -5071,7 +5071,7 @@ You must display it manually, if desired.
 Koutline buffer to a @file{.html} file of the same name.  The output file will
 not be displayed; you must display it manually, if desired.
 
-@node Viewing Outlines, Links, Editing Outlines, Koutliner
+@node Viewing Outlines, Klinks, Editing Outlines, Koutliner
 @section   Viewing Outlines
 
 @cindex outline, viewing
@@ -5196,7 +5196,7 @@ following the outline buffer name, unless the variable,
 display.  The modeline display appears as <|viewspec> to aid rapid
 visual location.  The | (pipe character) is also used in links that
 specify view specs to indicate the start of a view spec sequence.
-@xref{klinks}.
+@xref{Klinks}.
 
 @cindex outline, view specs
 The current view spec is saved whenever the outline is saved.  The next
@@ -5358,17 +5358,47 @@ the insert link command.
 @cindex klink, yanking
 @cindex cell link
 @cindex cell reference
+@findex kotl-mode:copy-absolute-klink-to-kill-ring
+If you prefer the standard copy and yank model that Emacs provides, place
+point within a klink when there is no active region and use @bkbd{M-w} to
+copy the klink.  To instead copy a reference to the current Koutline cell,
+use @bkbd{M-w} @emph{outside of} a klink when no region is active or
+@bkbd{M-x kotl-mode:copy-absolute-klink-to-kill-ring @key{RET}} anywhere
+within a cell.  Then @bkbd{C-y} will yank the last copied text into any
+buffer you desire.  Of course, when a region is active, @bkbd{M-w} will
+copy the region as it does normally in Emacs.
+
 @kindex C-x r i
 @kindex C-x r s
 @cindex klink, to/from Emacs register
-If you prefer the standard copy and yank model that Emacs provides, place
-point within a klink when there is no active region and use @bkbd{M-w} to
-copy the klink.  Then @bkbd{C-y} will yank it into any buffer you desire.
-To instead copy a reference to the current Koutline cell, use @bkbd{M-w}
-@emph{outside of} a klink when no region is active.  @bkbd{C-x r s} prompts
-for an Emacs register and saves either the current klink or the current cell
-reference to the register.  @bkbd{C-x r i} with the same register then inserts
-the Koutline reference at point.
+@cindex register, klinks
+@findex kotl-mode:copy-absolute-klink-to-register
+Similarly, you can copy to an Emacs register rather than the kill ring.
+When no region is active/highlighted, @bkbd{C-x r s} prompts for an Emacs
+register and saves to it either the current klink or, when outside of a
+klink, a reference to the current cell.  @bkbd{M-x
+kotl-mode:copy-absolute-klink-to-register @key{RET}} anywhere within a cell
+saves a reference to the current cell to a register.
+
+@bkbd{C-x r i} with the same register then inserts at point the Koutline
+reference previously saved.  When a region is active, these operate on the
+region instead.
+
+@findex kotl-mode:copy-absolute-klink-to-kill-ring
+@findex kotl-mode:copy-relative-klink-to-kill-ring
+@findex kotl-mode:copy-absolute-klink-to-register
+@findex kotl-mode:copy-relative-klink-to-register
+@cindex cell reference, copying
+There are also commands not bound to keys that always copy a klink reference
+to the current cell:
+@example
+@group
+kotl-mode:copy-absolute-klink-to-kill-ring
+kotl-mode:copy-relative-klink-to-kill-ring
+kotl-mode:copy-absolute-klink-to-register
+kotl-mode:copy-relative-klink-to-register
+@end group
+@end example
 
 @vindex klink:ignore-modes
 @vindex klink:c-style-modes
@@ -5388,7 +5418,7 @@ is within a comment.
 @code{klink:c-style-modes} is rarely needed but is there if Hyperbole ever
 mistakenly recognizes a pattern within a comment as a klink when it isn't.
 
-@node Cell Attributes, Koutliner History, Links, Koutliner
+@node Cell Attributes, Koutliner History, Klinks, Koutliner
 @section   Cell Attributes
 
 @cindex cell attribute
@@ -8139,6 +8169,33 @@ 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 initializing Hyperbole.  @xref{Smart Key
 Thing Selection}, for more information.
+
+@cindex key binding, M-w
+@vindex mark-even-if-inactive
+@findex hui-kill-ring-save
+@kitem M-w
+@cindex copying things to kill ring
+Delimited Thing, Koutline Cell Reference or Region Copy: While Hyperbole is
+active, it sets @code{mark-even-if-inactive} to @code{nil} and overrides
+@bkbd{M-w} with its own command, @code{hui-kill-ring-save}, which copies the
+region only when it is active/highlighted.  When there is no active region,
+@bkbd{M-w} does one of the following:
+
+@enumerate
+@item in a Koutline klink, copies the klink;
+@item in a Koutline cell, outside any klink, copies a klink reference to the 
current cell;
+@item on a Hyperbole button, copies the text of the button excluding 
delimiters;
+@item at the start of a paired delimiter, copy the text including the 
delimiters.
+@end enumerate
+
+@cindex key binding, C-x r s
+@kitem C-x r s
+@cindex copying things to registers
+Delimited Thing, Koutline Cell Reference or Region Save to Register: This
+does the same thing as @bkbd{M-w} except it copies to an Emacs register
+given by a letter or number rather than the kill ring.  While Hyperbole is 
active,
+it overrides @bkbd{C-x r s} with its own command, @code{hui-copy-to-register}.
+which copies the region only when it is active/highlighted.
 @end table
 
 @vindex hkey-init
@@ -8547,10 +8604,16 @@ With optional COPY-P equal to t, copy region to kill 
ring but don't
 kill it.  With COPY-P any other non-nil value, return region as a
 string without affecting the kill ring.
 
+If called interactively and there is no active region, copy any
+delimited selectable thing at point; see the documentation for
+@code{hui:delimited-selectable-thing}.
+
 If the buffer is read-only and COPY-P is nil, the region will not be
 deleted but it will be copied to the kill ring and then an error will be
 signaled.
 
+If a completion is active, this aborts the completion only.
+
 @findex kotl-mode:kill-ring-save
 @item kotl-mode:kill-ring-save  @bkbd{M-w}
 Copy region between START and END within a single kcell to kill ring.
diff --git a/man/version.texi b/man/version.texi
index 5cbda9827e..1a518a7fa3 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED March, 2022
-@set UPDATED-MONTH March 2022
+@set UPDATED April, 2022
+@set UPDATED-MONTH April 2022
 @set EDITION 8.0.0pre
 @set VERSION 8.0.0pre

Reply via email to