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">• <a href="#Viewing-Outlines">Viewing
Outlines</a></td><td> </td><td align="left" valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a
href="#Links">Links</a></td><td> </td><td align="left" valign="top">
+<tr><td align="left" valign="top">• <a
href="#Klinks">Klinks</a></td><td> </td><td align="left"
valign="top">
</td></tr>
<tr><td align="left" valign="top">• <a href="#Cell-Attributes">Cell
Attributes</a></td><td> </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> <project>/<ref-item>
</li><li> /<group>/<project>.
or
-</li><li> /<project-or-group> (where a group is a colection of projects)
+</li><li> /<project-or-group> (where a group is a collection of projects)
</li></ul>
<p><ref-item> is one of these:
@@ -3786,7 +3786,7 @@ Return ‘<samp>t</samp>’ if found,
‘<samp>nil</samp>’ 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">• <a href="#Viewing-Outlines"
accesskey="6">Viewing Outlines</a></td><td> </td><td align="left"
valign="top">
</td></tr>
-<tr><td align="left" valign="top">• <a href="#Links"
accesskey="7">Links</a></td><td> </td><td align="left" valign="top">
+<tr><td align="left" valign="top">• <a href="#Klinks"
accesskey="7">Klinks</a></td><td> </td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">• <a href="#Cell-Attributes"
accesskey="8">Cell Attributes</a></td><td> </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’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’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
‘<samp>t</samp>’ 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 ‘no-fill’ 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> [<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> [<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 <|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.
-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>
[<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
-<> 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
+<> 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, ‘<samp><EXAMPLE.kotl, 3=012 |c1e></samp>’, 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 <angle
brackets>,
+<p>Because klinks use a very generic syntax, surrounded by <angle
brackets>,
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’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> [<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> [<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 ‘<samp>nil</samp>’ 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 ‘no-fill’ attribute is special. When set to
‘<samp>t</samp>’, 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
&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 <( )> 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’ 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’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 “Apply
and Save” 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:
+(<web-service-name> . <url-with-%s-parameter-or-command>). The
first
+capitalized character of each <web-service-name> 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’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
‘action-key-eol-function’,
typically to scroll up proportionally, if an Action Key press; invoke
‘assist-key-eol-function’, 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’ 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </td><th align="left">
Section</th></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Concept-Index_cp_symbol-1"><</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003c_003e-delimiters"><>
delimiters</a>:</td><td> </td><td valign="top"><a
href="#Links">Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003c_0040-klink_003e"><@
klink></a>:</td><td> </td><td valign="top"><a
href="#Links">Links</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_003c_003e-delimiters"><>
delimiters</a>:</td><td> </td><td valign="top"><a
href="#Klinks">Klinks</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_003c_0040-klink_003e"><@
klink></a>:</td><td> </td><td valign="top"><a
href="#Klinks">Klinks</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-_003c_007cviewspec_003e"><|viewspec></a>:</td><td> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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