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

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

[elpa] externals/hyperbole b77d35deeb 18/28: link-directly at eol within


From: ELPA Syncer
Subject: [elpa] externals/hyperbole b77d35deeb 18/28: link-directly at eol within dired, link to dired directory
Date: Tue, 21 Nov 2023 12:58:18 -0500 (EST)

branch: externals/hyperbole
commit b77d35deeb048d8db04ef5d9c177c8b15bfdcd16
Author: Bob Weiner <rsw@gnu.org>
Commit: Bob Weiner <rsw@gnu.org>

    link-directly at eol within dired, link to dired directory
    
    Fix ignore case issue in hyrolo.
    Update demos and manual with new klink # syntax.
    Fix 2 tests cases due to updated code.
---
 ChangeLog             |   18 +
 FAST-DEMO             |    2 +-
 HY-NEWS               |    5 +
 TAGS                  |  176 ++++----
 hui.el                |   10 +-
 hyrolo.el             |    6 +-
 kotl/EXAMPLE.kotl     | 1100 ++++++++++++++++++++++++-------------------------
 kotl/kexport.el       |    6 +-
 man/hyperbole.html    |   30 +-
 man/hyperbole.info    |  Bin 614592 -> 614586 bytes
 man/hyperbole.pdf     |  Bin 1367121 -> 1367102 bytes
 man/hyperbole.texi    |   32 +-
 man/version.texi      |    4 +-
 test/hui-tests.el     |    6 +-
 test/hyrolo-tests.el  |    3 +-
 test/kexport-tests.el |    6 +-
 16 files changed, 717 insertions(+), 687 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3c9dfca859..d0cfbbb115 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2023-11-05  Bob Weiner  <rsw@gnu.org>
+
+* test/hyrolo-tests.el (hyrolo-demo-show-overview): Fix by adding
+    needed (forward-line 1) before testing for a collapsed node.
+
+* test/kexport-tests.el (kexport:koutline-calls-kexport:html): Fix to
+    have proper file suffixes, now required.
+
+* kotl/kexport.el (kexport:koutline): Trigger proper error if called
+    outside of .kotl file.
+
+* hyrolo.el (hyrolo-google-contacts-grep, hyrolo-grep-file): Ignore case.
+
+2023-11-04  Bob Weiner  <rsw@gnu.org>
+
+* hui.el (hui:link-possible-types): At end of any line in a dired buffer,
+    return (link-to-directory default-directory).
+
 2023-11-01  Bob Weiner  <rsw@gnu.org>
 
 * test/hui-tests.el (hui--ibut-link-directly-to-dired): Fix to be
diff --git a/FAST-DEMO b/FAST-DEMO
index 010df27b27..8b9388f96c 100644
--- a/FAST-DEMO
+++ b/FAST-DEMO
@@ -308,7 +308,7 @@ pspell-config(1)         - prints information about a 
libpspell installation
        All three of the above do essentially the same thing, displaying the
        file.
 
-    <kotl/EXAMPLE.kotl, 3b10 |c2en>
+    <kotl/EXAMPLE.kotl#3b10|c2en>
 
        Display a Hyperbole Koutline starting from cell 3b10 with lines per
        cell clipped to 2.
diff --git a/HY-NEWS b/HY-NEWS
index ba6b5a54fe..02b5be926f 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -488,6 +488,11 @@
   *** (kotl-mode:goto-heading): Added to go to a string heading at the
       beginning of a cell.  Must end with a colon or a newline.
 
+  *** (hui:link-possible-types): At end of any line in a dired buffer,
+    return (link-to-directory default-directory), so when using any
+    link-directly command, always have a way to link to the dired buffer
+    itself.
+
 
 ** ORG MODE INTEGRATION (See "(hyperbole)Smart Key - Org Mode").
 
diff --git a/TAGS b/TAGS
index 015a0753ba..fec404cfec 100644
--- a/TAGS
+++ b/TAGS
@@ -1573,7 +1573,7 @@ hui.el,2336
 (defun hui:ebut-link-create 1742,69541
 (defun hui:ibut-link-create 1765,70740
 (defun hui:link-possible-types 1802,72367
-(defun hui:list-remove-text-properties 1938,77873
+(defun hui:list-remove-text-properties 1942,78040
 
 hvar.el,272
 (defvar var::append-list 34,1095
@@ -1785,62 +1785,62 @@ hyrolo.el,4988
 (defun hyrolo-bbdb-entry-format 1111,45862
 (defun hyrolo-google-contacts-fgrep 1120,46201
 (defun hyrolo-google-contacts-grep 1127,46491
-(defun hyrolo-google-contacts-grep-file 1152,47486
-(defun hyrolo-google-contacts-insert-data 1165,48283
-(defun hyrolo-google-contacts-insert-generic-list 1261,54090
-(defun hyrolo-retrieve-google-contacts 1276,54691
-(defun hyrolo-helm-org-rifle 1300,55764
-(defun hyrolo-helm-org-rifle-directory 1323,56728
-(defun hyrolo-helm-org-rifle-directories 1342,57508
-(defun hyrolo-org 1352,58010
-(defun hyrolo-org-roam 1366,58640
-(defun hyrolo-back-to-visible-point 1387,59630
-(defun hyrolo-backward-same-level 1395,59992
-(defun hyrolo-consult-grep 1402,60260
-(defun hyrolo-fgrep-directories 1438,61856
-(defun hyrolo-fgrep-file 1442,62067
-(defun hyrolo-forward-same-level 1456,62779
-(defun hyrolo-grep-directories 1463,63043
-(defun hyrolo-next-regexp-match 1467,63244
-(defun hyrolo-grep-file 1474,63505
-(defun hyrolo-map-level 1574,67407
-(defun hyrolo-map-single-subtree 1611,69185
-(defun hyrolo-mode 1640,70220
-(defun hyrolo-next-visible-heading 1663,71020
-(defun hyrolo-previous-visible-heading 1671,71318
-(defun hyrolo-to 1679,71620
-(defun hyrolo-to-entry-beginning 1731,73728
-(defun hyrolo-to-entry-end 1746,74306
-(defun hyrolo-up-heading 1771,75128
-(defun hyrolo-add-match 1782,75618
-(defun hyrolo-buffer-exists-p 1794,76162
-(defun hyrolo-current-date 1802,76444
-(defun hyrolo-display-to-entry-end 1806,76598
-(defun hyrolo-format-name 1815,76882
-(defun hyrolo-get-consult-version 1822,77196
-(defun hyrolo-highlight-matches 1833,77664
-(defun hyrolo-isearch-for-regexp 1844,78067
-(defun hyrolo-kill-buffer 1855,78559
-(defun hyrolo-name-and-email 1862,78881
-(defun hyrolo-name-at 1897,80076
-(defun hyrolo-save-buffer 1910,80560
-(defun hyrolo-set-date 1918,80945
-(defun hyrolo-min-matched-level 1937,81664
-(defun hyrolo-search-directories 1945,81962
-(defun hyrolo-show-levels 1952,82319
-(defun hyrolo-shrink-window 1989,83723
-(defun hyrolo-to-buffer 2002,84168
-(defun hyrolo-move-backward 2006,84300
-(defun hyrolo-move-forward 2018,84744
-(defun hyrolo-mode-outline-level 2033,85202
-(defvar hyrolo-entry-group-number 2054,86076
-(defvar hyrolo-entry-trailing-space-group-number 2058,86213
-(defconst hyrolo-hdr-format2061,86339
-(defconst hyrolo-hdr-regexp 2069,86698
-(defconst hyrolo-match-regexp 2074,86909
-(defvar hyrolo--wconfig 2079,87133
-(defvar hyrolo-mode-syntax-table 2082,87226
-(defvar hyrolo-mode-map 2092,87612
+(defun hyrolo-google-contacts-grep-file 1152,47490
+(defun hyrolo-google-contacts-insert-data 1165,48287
+(defun hyrolo-google-contacts-insert-generic-list 1261,54094
+(defun hyrolo-retrieve-google-contacts 1276,54695
+(defun hyrolo-helm-org-rifle 1300,55768
+(defun hyrolo-helm-org-rifle-directory 1323,56732
+(defun hyrolo-helm-org-rifle-directories 1342,57512
+(defun hyrolo-org 1352,58014
+(defun hyrolo-org-roam 1366,58644
+(defun hyrolo-back-to-visible-point 1387,59634
+(defun hyrolo-backward-same-level 1395,59996
+(defun hyrolo-consult-grep 1402,60264
+(defun hyrolo-fgrep-directories 1438,61860
+(defun hyrolo-fgrep-file 1442,62071
+(defun hyrolo-forward-same-level 1456,62783
+(defun hyrolo-grep-directories 1463,63047
+(defun hyrolo-next-regexp-match 1467,63248
+(defun hyrolo-grep-file 1474,63509
+(defun hyrolo-map-level 1574,67415
+(defun hyrolo-map-single-subtree 1611,69193
+(defun hyrolo-mode 1640,70228
+(defun hyrolo-next-visible-heading 1663,71028
+(defun hyrolo-previous-visible-heading 1671,71326
+(defun hyrolo-to 1679,71628
+(defun hyrolo-to-entry-beginning 1731,73736
+(defun hyrolo-to-entry-end 1746,74314
+(defun hyrolo-up-heading 1771,75136
+(defun hyrolo-add-match 1782,75626
+(defun hyrolo-buffer-exists-p 1794,76170
+(defun hyrolo-current-date 1802,76452
+(defun hyrolo-display-to-entry-end 1806,76606
+(defun hyrolo-format-name 1815,76890
+(defun hyrolo-get-consult-version 1822,77204
+(defun hyrolo-highlight-matches 1833,77672
+(defun hyrolo-isearch-for-regexp 1844,78075
+(defun hyrolo-kill-buffer 1855,78567
+(defun hyrolo-name-and-email 1862,78889
+(defun hyrolo-name-at 1897,80084
+(defun hyrolo-save-buffer 1910,80568
+(defun hyrolo-set-date 1918,80953
+(defun hyrolo-min-matched-level 1937,81672
+(defun hyrolo-search-directories 1945,81970
+(defun hyrolo-show-levels 1952,82327
+(defun hyrolo-shrink-window 1989,83731
+(defun hyrolo-to-buffer 2002,84176
+(defun hyrolo-move-backward 2006,84308
+(defun hyrolo-move-forward 2018,84752
+(defun hyrolo-mode-outline-level 2033,85210
+(defvar hyrolo-entry-group-number 2054,86084
+(defvar hyrolo-entry-trailing-space-group-number 2058,86221
+(defconst hyrolo-hdr-format2061,86347
+(defconst hyrolo-hdr-regexp 2069,86706
+(defconst hyrolo-match-regexp 2074,86917
+(defvar hyrolo--wconfig 2079,87141
+(defvar hyrolo-mode-syntax-table 2082,87234
+(defvar hyrolo-mode-map 2092,87620
 
 hywconfig.el,642
 (define-obsolete-variable-alias 'wconfig-ring-max wconfig-ring-max61,2094
@@ -1974,24 +1974,24 @@ hvm.el,874
 (defvar Vm-msg-start-regexp 537,19555
 
 kotl/kexport.el,796
-(defvar kexport:input-filename 40,1318
-(defvar kexport:output-filename 43,1428
-(defcustom kexport:html-description46,1539
-(defcustom kexport:html-keywords 53,1830
-(defvar kexport:kcell-reference-regexp61,2050
-(defvar kexport:kcell-partial-reference-regexp64,2140
-(defvar kexport:html-replacement-alist67,2225
-(defconst kexport:font-awesome-css-url111,4017
-(defconst kexport:font-awesome-css-include116,4243
-(defconst kexport:font-awesome-css-include-with-menus190,5133
-(defconst kexport:font-awesome-collapsible-javascript-btn325,7732
-(defun kexport:koutline 369,8968
-(defun kexport:display 383,9571
-(defun kexport:html 397,10165
-(defun kexport:princ-cell 535,15226
-(defun kexport:html-file-klink 562,16520
-(defun kexport:html-markup 576,17069
-(defun kexport:html-url 584,17332
+(defvar kexport:input-filename 40,1317
+(defvar kexport:output-filename 43,1427
+(defcustom kexport:html-description46,1538
+(defcustom kexport:html-keywords 53,1829
+(defvar kexport:kcell-reference-regexp61,2049
+(defvar kexport:kcell-partial-reference-regexp64,2139
+(defvar kexport:html-replacement-alist67,2224
+(defconst kexport:font-awesome-css-url111,4016
+(defconst kexport:font-awesome-css-include116,4242
+(defconst kexport:font-awesome-css-include-with-menus190,5132
+(defconst kexport:font-awesome-collapsible-javascript-btn325,7731
+(defun kexport:koutline 369,8967
+(defun kexport:display 385,9726
+(defun kexport:html 399,10320
+(defun kexport:princ-cell 537,15381
+(defun kexport:html-file-klink 564,16675
+(defun kexport:html-markup 578,17224
+(defun kexport:html-url 586,17487
 
 kotl/kfile.el,623
 (defconst kfile:version 28,873
@@ -2776,7 +2776,7 @@ test/hui-tests.el,3218
 (ert-deftest hui--ebut-rename-all-copies 761,30294
 (ert-deftest hui--ibut-link-directly-to-file 774,30718
 (ert-deftest hui--ibut-link-directly-to-dired 791,31371
-(ert-deftest hui--ibut-link-directly-with-label 812,32159
+(ert-deftest hui--ibut-link-directly-with-label 812,32165
 
 test/hypb-tests.el,88
 (ert-deftest hypb:installation-type-test 26,562
@@ -2794,11 +2794,11 @@ test/hyrolo-tests.el,570
 (ert-deftest hyrolo-demo-tab-jump-to-first-match 60,1835
 (ert-deftest hyrolo-demo-toggle-visibility 72,2253
 (ert-deftest hyrolo-demo-show-overview 98,3102
-(ert-deftest hyrolo-demo-move-to-beginning-and-end-of-file 124,3956
-(ert-deftest hyrolo-demo-move-between-entries-on-same-level 151,4929
-(ert-deftest hyrolo-demo-no-following-same-level-heading 175,5785
-(ert-deftest hyrolo-sort-test 203,6747
-(ert-deftest hyrolo-sort-records-at-different-levels 234,7905
+(ert-deftest hyrolo-demo-move-to-beginning-and-end-of-file 125,3974
+(ert-deftest hyrolo-demo-move-between-entries-on-same-level 152,4947
+(ert-deftest hyrolo-demo-no-following-same-level-heading 176,5803
+(ert-deftest hyrolo-sort-test 204,6765
+(ert-deftest hyrolo-sort-records-at-different-levels 235,7923
 
 test/kcell-tests.el,136
 (defconst kcell-tests--ref-to-id-tests31,800
@@ -2806,13 +2806,13 @@ test/kcell-tests.el,136
 (ert-deftest kcell-tests--ref-to-id 81,2083
 
 test/kexport-tests.el,407
-(ert-deftest kexport:html-creates-html-file 26,633
-(ert-deftest kexport:html-sets-title-and-header 43,1231
-(ert-deftest kexport:html-contains-each-cell 64,2080
-(ert-deftest kexport:html-creates-hierarchy 84,2791
-(ert-deftest kexport:html-creates-list-hierarchy 110,3778
-(ert-deftest kexport:display-creates-html-file-and-displays-it 133,4743
-(ert-deftest kexport:koutline-calls-kexport:html 152,5509
+(ert-deftest kexport:html-creates-html-file 26,632
+(ert-deftest kexport:html-sets-title-and-header 43,1230
+(ert-deftest kexport:html-contains-each-cell 64,2079
+(ert-deftest kexport:html-creates-hierarchy 84,2790
+(ert-deftest kexport:html-creates-list-hierarchy 110,3777
+(ert-deftest kexport:display-creates-html-file-and-displays-it 133,4742
+(ert-deftest kexport:koutline-calls-kexport:html 152,5508
 
 test/kimport-tests.el,327
 (ert-deftest kimport--aug-post-outline 23,492
diff --git a/hui.el b/hui.el
index 1ee8033be4..ccc50b0490 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:      1-Nov-23 at 22:44:25 by Bob Weiner
+;; Last-Mod:      4-Nov-23 at 11:56:05 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1824,9 +1824,10 @@ File Name                link-to-file
 Koutline Cell            link-to-kcell
 Outline Heading          link-to-string-match
 Buffer attached to File  link-to-file
+EOL in Dired Buffer      link-to-directory (dired dir)
 Buffer without File      link-to-buffer-tmp"
-  ;; Elisp Buffer at Start
-  ;; or End of Sexpression    eval-elisp
+;; Elisp Buffer at Start
+;; or End of Sexpression    eval-elisp
 
   (let (val
        hbut-sym
@@ -1918,6 +1919,9 @@ Buffer without File      link-to-buffer-tmp"
                                                     heading occur 
buffer-file-name))))
                                          (buffer-file-name
                                           (list 'link-to-file buffer-file-name 
(point)))
+                                         ((derived-mode-p 'dired-mode)
+                                          (list 'link-to-directory
+                                                (expand-file-name 
default-directory)))
                                          (t (list 'link-to-buffer-tmp 
(buffer-name)))))
                                      ;;
                                      ;; Deleted link to elisp possibility as 
it can embed
diff --git a/hyrolo.el b/hyrolo.el
index 8185900d0b..c0dcd02441 100644
--- a/hyrolo.el
+++ b/hyrolo.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:     7-Jun-89 at 22:08:29
-;; Last-Mod:     29-Oct-23 at 16:27:08 by Bob Weiner
+;; Last-Mod:      5-Nov-23 at 10:08:50 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1143,7 +1143,7 @@ Output looks like so:
        (current-prefix-arg))
     (call-interactively (if arg 'hyrolo-fgrep 'hyrolo-grep))
     (read-only-mode 0)
-    (let (case-fold-search)
+    (let ((case-fold-search t))
       (re-search-forward hyrolo-entry-regexp nil t))
     (beginning-of-line)
     (set-buffer-modified-p nil)
@@ -1524,7 +1524,7 @@ Return number of matching entries found."
                      (when (re-search-forward hyrolo-hdr-regexp nil t 2)
                        (forward-line)
                        (setq hdr-pos (cons (point-min) (point))))
-                     (let (case-fold-search
+                     (let ((case-fold-search t)
                            opoint)
                        (re-search-forward hyrolo-entry-regexp nil t)
                        (while (and (or (null max-matches) (< num-found 
max-matches))
diff --git a/kotl/EXAMPLE.kotl b/kotl/EXAMPLE.kotl
index a4fe3b56a6..9b3214caac 100644
--- a/kotl/EXAMPLE.kotl
+++ b/kotl/EXAMPLE.kotl
@@ -1,564 +1,564 @@
 ;; -*- Mode: kotl -*- 
 "Kotl-4.0" ;; file-format
 
-  1. The Koutliner is a part of the Hyperbole information management system.
-
-  2. The Koutliner produces hierarchically structured files consisting of
-     trees of cells.
-
-    2a. A cell is an element of the outline which has its own display label
-        and unique, permanent identifier (idstamp).
-
-    2b. Idstamps support the creation of hyperlinks to cells which are
-        maintained as the structure of an outline changes.
-
-  3. Features implemented include:
-
-    3a. Full on screen editing (just like a Macintosh).  Click to type in a
-        node (we call them cells) and just enter text.  Structure is
-        automatically maintained for you.  All of the standard Emacs editor
-        command set is supported both through keyboard, menu and mouse
-        interaction.  Menu usage is documented in the Hyperbole Manual; this
-        document discusses features and their associated keyboard commands
-        only.
-
-    3b. Advanced outline processing
-
-      3b1. Autonumbering: Full auto-numbering in Augment (1a2) or legal
-           (1.1.2) formats.  Augment style is the default.  Use {C-c C-l ?}
-           to see the full set of label types and to select a different
-           label type.
-
-      3b2. Label Separators: By default, the Koutliner separates labels from
-           cell contents by two spaces.  If you want to change the separator
-           for the current outline, use {C-c M-l}.  {C-u C-c M-l} will
-           additionally change the default separator value used when new
-           outlines are created.  For example, use the value ". " to get a
-           trailing period after each cell label.  The separator must be at
-           least two characters long.
-
-      3b3. Cell Creation: {C-j} adds a new cell as a sibling following the
-           current cell.  A non-negative prefix argument, {C-u C-j} or {C-c
-           a} adds the cell as a child of the current cell.  {C-c p} adds the
-           cell as the sibling of the current cell's parent.
-
-      3b4. Cell and Tree Deletion: {C-c C-k} kills the current cell and its
-           entire subtree.  {C-c k} kills the contents of a cell from point
-           through the end of the cell.  {C-u C-c k} kills the entire
-           contents of the cell regardless of the location of point.  You may
-           then yank the contents into another cell with {C-y}.
-
-      3b5. Tree Demotion and Promotion: Trees may be demoted pressing {TAB}
-           or promoted by pressing {M-TAB}.  {M-0 TAB} and {M-0 M-TAB} will
-           demote and promote trees and will additionally refill each cell
-           that has not been specially marked to prevent refilling.
-           
-           {M-1 TAB} behaves specially.  It toggles the function of {TAB} and
-           {M-TAB} so that they insert a tab character and remove the
-           previous character, respectively.  Use {M-1 TAB} to toggle them
-           back to promoting and demoting trees.
-           
-           To insert a literal tab character, use {C-q TAB}.
-
-      3b6. Cell and Tree Filling: {M-q} or {M-j} refills a paragraph within a
-           cell so that its lines wrap within the current margin settings.
-           {C-c M-q} or {C-c M-j} refills all paragraphs within a cell.
-           {C-M-q} or {C-M-j} refills all cells within a tree.
-           
-           Set the variable, kotl-mode:refill-flag, to t if you want moving,
-           promoting, demoting, exchanging, splitting and appending cells to
-           also automatically refill each cell.
-
-      3b7. Cursor Movement:  In addition to normal Emacs movement commands,
-           you can move within a cell or from one cell or tree to another.
-           
-            {C-c ,}       - Move to the beginning of the current cell.
-            {C-c .}       - Move to the end of the current cell.
-           
-            {C-c C-n}     - Move to the next visible cell, regardless of level.
-            {C-c C-p}     - Move to the prev visible cell, regardless of level.
-           
-            {C-c C-f}     - Move forward  to this cell's successor, if any.
-            {C-c C-b}     - Move backward to this cell's predecessor, if any.
-           
-            {C-c C-d}     - Move to first child of current cell, if any.
-           
-            {C-c C-u}     - Move to parent cell of current cell, if any.
-           
-            {C-c <}       - Move to the first sibling at the current level.
-            {C-c >}       - Move to the last  sibling at the current level.
-           
-            {C-c ^}       - Move to the level 1 root of the current tree.
-            {C-c $}       - Move to the last cell in the tree rooted at point.
-
-      3b8. Tree Movement and Copying: Entire outline trees can be moved or
-           copied within an outline with single commands.  Simply invoke
-           the desired command and then double click/press with the Action
-           Key on the desired root cell for each argument for which you are
-           prompted.
-           
-           Copying and moving only work within a single outline right now, so
-           don't try to move or copy trees to another Koutline file.
-           
-            {M-<down>}    - Move current tree past prefix arg same level trees.
-            {M-<up>}      - Move current tree back prefix arg same level trees.
-           
-            {C-c c}       - Copy <tree> to follow as sibling of <cell>.
-            {C-u C-c c}   - Copy <tree> to follow as first child of <cell>.
-           
-            {C-c C-c}     - Copy <tree> to precede <cell>.
-            {C-u C-c C-c} - Copy <tree> as first child of the parent of <cell>.
-           
-            {C-c m}       - Move <tree> to follow as sibling of <cell>.
-            {C-u C-c m}   - Move <tree> to follow as first child of <cell>.
-           
-            {C-c C-m}     - Move <tree> to precede <cell>.
-            {C-u C-c C-m} - Move <tree> as first child of the parent of <cell>.
-           
-           If you have mouse support under Hyperbole, you can move entire
-           trees with mouse clicks.  Simply click the Assist Key within the
-           indentation to the left of a cell text and you will be prompted
-           for a tree to move.  Double click the Action Key within the body
-           of the root cell of the tree to move and then double click within
-           the body of the root cell of the tree you want it to follow.
-
-      3b9. Tree Text or Region Copying to a Non-Koutline Buffer:
-            {C-c M-c} - Copy <tree> text or active region to a non-Koutline 
buffer.
-            {C-c C-@} - Copy <tree> text to an outgoing mail message.
-           
-           Each above command prompts for whether or not to include
-           hidden/invisible text when copying.  If yes, all invisible text
-           is expanded before copying.
-
-     3b10. Cell Transposition:  The move and copy commands rearrange entire
-           trees.  The following two commands exchange the locations of two
-           cells.
-
-       3b10a. {C-c e} prompts for two cell addresses and exchanges the cells.
-
-       3b10b. {C-c t} does not prompt.  It exchanges the current and
-              preceding cells.  If there is no preceding cell it exchanges
-              the current and next cell.
-              
-              {C-c t} with a prefix argument of zero exchanges the cells in
-              which point and mark fall.
-              
-              {C-c t} with a non-zero numeric prefix argument, N, moves
-              the current tree past maximally the next N visible cells.  If
-              there are fewer visible, it makes the current cell the last
-              cell in the outline.
-
-     3b11. Cell Splitting: You can split one cell into two adjacent cells
-           with {C-c s}.  This leaves the cell contents preceding point in
-           the current cell, minus any trailing whitespace, and moves the
-           contents following point to a new sibling cell which is inserted
-           into the outline.  {C-u C-c s} adds the new cell as the first
-           child of the original cell, rather than as its sibling.
-           
-           All cell attributes in the original cell are propagated to the new
-           one.
-
-     3b12. Cell Appending:  {C-c +} appends the contents of a specified cell
-           to the end of another cell.
-
-     3b13. Hiding and Showing:  Individual cells, branches, or particular
-           levels in the outline may be hidden or shown.  These commands work
-           even when an outline buffer is read-only, e.g. when its file is
-           not checked out of a version control system yet.
-
-       3b13a. {C-c C-h}  - Hide (collapse) tree rooted at point.
-              {C-c C-s}  - Show (expand)   tree rooted at point.
-              
-              {C-c C-a}  - Show (expand) all cells in the outline.
-              {C-x $}    - Show all cells down to a particular level.  The
-                           user is prompted for the level or a prefix
-                           argument may be given. 
-                           
-              {C-M-h}    - Hide subtree at point, excluding root. 
-              {M-x kotl-mode:show-subtree RET} - Show subtree at point.
-              
-              {C-c C-o}  - Overview, show only first line of outline
-                           cells.
-              {C-c C-t}  - Top-level, hide all cells below level 1 and show
-                           only the first line of each level 1 cell.
-              Give a prefix argument to either of the above two commands to
-              toggle display of blank lines between cells as well,
-              e.g. {C-u C-c C-o}.  Try it now.
-
-       3b13b. A click or press of the Action Key within a cell's body, but
-              not on a button, toggles between hiding and showing the tree
-              rooted at point.
-
-     3b14. Cell Identifiers: Permanent ids are associated with each cell
-           and can be used in hyperlinks that are maintained as cells are
-           reordered in a file.  (These ids may also be displayed in place
-           of the outline level relative ids.  Use {C-c C-l id RET}).
-           Permanent ids are numbered from 0, where 0 is the root node of
-           the entire outline.  This node is never visible within the
-           outline.  Permanent ids always begin with a 0, as in 012, to
-           distinguish them from relative ids.
-
-     3b15. Cell Attributes: Each cell has its own attribute list.  The
-           attribute lists for the cells in the tree rooted at point can be
-           displayed by pressing the Assist Key.  {C-c h} prompts for a kcell
-           id and displays its attributes.  {C-u C-c h} prompts for a kcell
-           id and displays the attributes for it and its subtree; use 0 as
-           the kcell id to see attributes for all visible cells in the
-           outline, including the invisible 0 cell that is the root of
-           all first-level cells.
-           
-           {C-c C-i} sets an attribute of the cell at point.
-           {C-u C-c C-i} removes an attribute of the cell at point.
-           {C-0 C-c C-i} sets an attribute of the invisible 0 root cell.
-           {C--1 C-c C-i} removes an attribute of the invisible 0 root cell.
-
-     3b16. File Insertion: The elements of another buffer or file may be
-           inserted into a koutline as a set of cells by using the {C-x i}
-           command.  When prompted, you may use a buffer name or file name
-           from which to insert.
-
-       3b16a. The cells will be inserted as the successors of the current
-              cell unless {C-u C-x i} is used and then they are inserted as
-              the initial children of the current cell.
-
-       3b16b. See the documentation for the variables, kimport:mode-alist and
-              kimport:suffix-alist, for information on mode and
-              suffix-specific conversions performed on files before they are
-              inserted.  This same conversion process applies if you invoke
-              {M-x kotl-mode RET} in a non-koutline buffer or if you perform
-              a generic file import as described in <@ 3b16=063>.
-
-       3b16c. Use {M-x kimport:insert-file-contents RET} to insert the
-              entire contents of a file into the current cell at the
-              location of point.  {M-x kimport:insert-buffer RET} does the
-              same for an existing buffer.  {C-x r i} does the same with the
-              contents of a text register that you specify.
-
-     3b17. File Importing: The Koutliner supports conversion of three
-           types of files into koutline files.  You can choose to
-           import a file into an existing koutline, following the tree
-           at point, or to create a new koutline of the imported file
-           contents.  {M-x kimport:file RET} will select the
-           importation type based on the buffer or file name suffix of
-           the file to import.  Use one of the following commands if
-           you want to control the type of importation explicitly.
-
-       3b17a. Text Files
-
-         3b17a1. In a text buffer, use {M-x kotl-mode RET} to convert the
-                 buffer into a koutline in-place.  You will lose the old
-                 format of the buffer when you do this.
-
-         3b17a2. Use {M-x kimport:text RET} and you will be prompted for a
-                 text buffer or file to import and the new koutline buffer or
-                 file to create from its text.  It will also import the
-                 contents, attributes and level structure of cells from a
-                 koutline.
-                 
-                 With this command, your original file remains intact.
-
-       3b17b. Star Outline Files: Star outlines are standard Emacs outlines
-              where each entry begins with one or more asterisk characters.
-              Use {M-x kimport:star-outline RET} and you will be prompted
-              for the star outline buffer or file to import and the new
-              koutline buffer or file to create.
-
-       3b17c. Augment Files Numbered on the Right-Side: (Skip this if you are
-              unfamiliar with this sort of file).  Files exported from the
-              Augment system as text often have alphanumeric statement
-              identifiers on the right side.
-              
-              Use {M-x kimport:aug-post-outline RET} and you will be prompted
-              for the augment buffer or file to import and the koutline to
-              create.
-
-     3b18. File Exporting: The Koutliner can produce a nicely indented HTML
-           version of an outline with hyperlinks and hyperlink anchors
-           intact.  Use {M-x kexport:html RET} to export a koutline file or
-           existing buffer.
-
-     3b19. View Specification: Flexible views of outlines may be specified
-           with succinct single character codes.
-
-       3b19a. The current view spec is shown in the modeline after the buffer
-              name, delimited by <|>.
-
-       3b19b. The current view spec is saved whenever the outline is saved.
-              The next time the outline is read in, this will be the initial
-              view.  The standard initial viewspec is <|ben>.
-
-       3b19c. {C-c C-v} prompts for a view spec string in which the following
-              codes are valid.  Any invalid characters in a view spec are
-              ignored.
-
-         3b19c1. a:  Show all cell levels and all lines in cells.
-
-         3b19c2. b: Turn on blank lines between cells.  Without this code,
-                 blank lines will be turned off.  You can also use the {C-c
-                 b} key binding to toggle line numbers on and off
-                 independent of any other view settings.
-
-         3b19c3. cN: Hide any lines greater than N in each cell.  0 means
-                 don't cutoff any lines.
-
-         3b19c4. e: Show ellipses when some content is hidden (This is
-                 always on in modern versions of Emacs; it cannot be
-                 turned off).
-
-         3b19c5. lN: Hide cells at levels deeper than N.  0 means don't hide
-                 any cells.
-
-         3b19c6. n:  Turn on the default label type.
-                 n0: Display idstamps.
-                 n1: Display alpha labels.
-                 n.: Display legal labels.
-
-       3b19d. Press the Action Key on this view spec of <|c2l1> to turn off
-              blank lines, to clip each cell after its second line, and to
-              hide all cells below level one.  Use {C-u C-c C-a} to restore a
-              view of all cells.
-
-    3c. Klinks: Hyperlinks may be embedded in cells and may refer to other
-        cells.  Explicit Hyperbole buttons may be created as usual via
-        mouse drags, see "(hyperbole)By Dragging".  A klink is a special
-        implicit link button that jumps to a specific outline cell.
-
-      3c1. Here are three klink examples:
-
-        3c1a. <#3b=06> or <@ 3b=06> jumps to the cell within this outline
-              which has permanent id `06' and relative id `3b'.  <@ 06> does
-              the same thing, as does <@ 3b>, though this latter form will
-              not maintain the link properly if the cell is moved elsewhere
-              within the outline.
-
-        3c1b. <EXAMPLE.kotl#4=012|c1e> or <EXAMPLE.kotl, 4=012 |c1e> displays
-              the named file, starting at the unimplemented features section
-              whose permanent identifer is 012, with the view specification
-              of: blank lines turned off, cutoff after one line per cell, and
-              show ellipses for cells or trees which are clipped.
-
-        3c1c. <|ben> is a klink consisting of just a view specification.
-              When activated, it sets the view in the current outline to
-              display blank lines, ellipses following collapsed lines and
-              standard alphanumeric numbering.
-
-      3c2. 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 {C-c l} when in
-           a koutline or {C-h h k l} when not in a koutline to insert a
-           klink.
-
-      3c3. 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 {M-w} to copy the klink.  Then {C-y} will yank it
-           into any buffer you desire.
-
-      3c4. To instead copy a reference to the current Koutline cell, use
-           {M-w} outside of a klink when no region is active.
-
-      3c5. {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.
-
-    3d. Org table editing is supported.
-
-      3d1. You must use the first line of the cell to label your table
-           as tables require only blanks to the left of each row.
-
-      3d2. Here are two table examples:
-           
-           |----------------------------+---------------------------|
-           | Promotion Inside Org Table | Demotion Inside Org Table |
-           |----------------------------+---------------------------|
-           | {M-0 M-TAB}                | {M-0 TAB}                 |
-           | {C-c C-,}                  | {C-c C-.}                 |
-           | {C-c C-<}                  | {C-c C->}                 |
-           |----------------------------+---------------------------|
-                      
-           |-----------------------------+----------------------------|
-           | Promotion Outside Org Table | Demotion Outside Org Table |
-           |-----------------------------+----------------------------|
-           | {M-TAB} or {Shift-TAB}      | {TAB}                      |
-           | {M-<left>}                  | {M-<right>}                |
-           | {C-c C-,}                   | {C-c C-.}                  |
-           | {C-c C-<}                   | {C-c C->}                  |
-           |-----------------------------+----------------------------|
-           
-           To toggle table editing mode on or off, press the Action
-           Key on any of the table | symbols and then edit as you
-           would any Org table.  Note how the above tables show how
-           TAB and Shift-TAB behave differently in and outside of
-           tables; use M-TAB rather than Shift-TAB for tree promotion
-           consistency anywhere.  See "(Org)Tables" for help on utilizing
-           tables.
-
-    3e. The Koutliner code runs on any system that supports Emacs,
-        whether under a window system or from a dumb terminal display.
-
-  4. Major features left to be implemented:
-
-    4a. Branch handling commands (all cells at same level).
-
-    4b. Copying a single cell without its subtree.
-
-    4c. Replacing one cell or one tree with another.
-
-    4d. Transposing two trees, rather than two cells.
-
-    4e. A small amount of work remains to enable setting different per
-        level fonts and colors, so that outline levels are visually easy to
-        distinguish.
-
-    4f. Flexible view handling has been only partially implemented.
+   1. The Koutliner is a part of the Hyperbole information management system.
+
+   2. The Koutliner produces hierarchically structured files consisting of
+      trees of cells.
+
+     2a. A cell is an element of the outline which has its own display label
+         and unique, permanent identifier (idstamp).
+
+     2b. Idstamps support the creation of hyperlinks to cells which are
+         maintained as the structure of an outline changes.
+
+   3. Features implemented include:
+
+     3a. Full on screen editing (just like a Macintosh).  Click to type in a
+         node (we call them cells) and just enter text.  Structure is
+         automatically maintained for you.  All of the standard Emacs editor
+         command set is supported both through keyboard, menu and mouse
+         interaction.  Menu usage is documented in the Hyperbole Manual; this
+         document discusses features and their associated keyboard commands
+         only.
+
+     3b. Advanced outline processing
+
+       3b1. Autonumbering: Full auto-numbering in Augment (1a2) or legal
+            (1.1.2) formats.  Augment style is the default.  Use {C-c C-l ?}
+            to see the full set of label types and to select a different
+            label type.
+
+       3b2. Label Separators: By default, the Koutliner separates labels from
+            cell contents by two spaces.  If you want to change the separator
+            for the current outline, use {C-c M-l}.  {C-u C-c M-l} will
+            additionally change the default separator value used when new
+            outlines are created.  For example, use the value ". " to get a
+            trailing period after each cell label.  The separator must be at
+            least two characters long.
+
+       3b3. Cell Creation: {C-j} adds a new cell as a sibling following the
+            current cell.  A non-negative prefix argument, {C-u C-j} or {C-c
+            a} adds the cell as a child of the current cell.  {C-c p} adds the
+            cell as the sibling of the current cell's parent.
+
+       3b4. Cell and Tree Deletion: {C-c C-k} kills the current cell and its
+            entire subtree.  {C-c k} kills the contents of a cell from point
+            through the end of the cell.  {C-u C-c k} kills the entire
+            contents of the cell regardless of the location of point.  You may
+            then yank the contents into another cell with {C-y}.
+
+       3b5. Tree Demotion and Promotion: Trees may be demoted pressing {TAB}
+            or promoted by pressing {M-TAB}.  {M-0 TAB} and {M-0 M-TAB} will
+            demote and promote trees and will additionally refill each cell
+            that has not been specially marked to prevent refilling.
+            
+            {M-1 TAB} behaves specially.  It toggles the function of {TAB} and
+            {M-TAB} so that they insert a tab character and remove the
+            previous character, respectively.  Use {M-1 TAB} to toggle them
+            back to promoting and demoting trees.
+            
+            To insert a literal tab character, use {C-q TAB}.
+
+       3b6. Cell and Tree Filling: {M-q} or {M-j} refills a paragraph within a
+            cell so that its lines wrap within the current margin settings.
+            {C-c M-q} or {C-c M-j} refills all paragraphs within a cell.
+            {C-M-q} or {C-M-j} refills all cells within a tree.
+            
+            Set the variable, kotl-mode:refill-flag, to t if you want moving,
+            promoting, demoting, exchanging, splitting and appending cells to
+            also automatically refill each cell.
+
+       3b7. Cursor Movement:  In addition to normal Emacs movement commands,
+            you can move within a cell or from one cell or tree to another.
+            
+             {C-c ,}       - Move to the beginning of the current cell.
+             {C-c .}       - Move to the end of the current cell.
+            
+             {C-c C-n}     - Move to the next visible cell, regardless of 
level.
+             {C-c C-p}     - Move to the prev visible cell, regardless of 
level.
+            
+             {C-c C-f}     - Move forward  to this cell's successor, if any.
+             {C-c C-b}     - Move backward to this cell's predecessor, if any.
+            
+             {C-c C-d}     - Move to first child of current cell, if any.
+            
+             {C-c C-u}     - Move to parent cell of current cell, if any.
+            
+             {C-c <}       - Move to the first sibling at the current level.
+             {C-c >}       - Move to the last  sibling at the current level.
+            
+             {C-c ^}       - Move to the level 1 root of the current tree.
+             {C-c $}       - Move to the last cell in the tree rooted at point.
+
+       3b8. Tree Movement and Copying: Entire outline trees can be moved or
+            copied within an outline with single commands.  Simply invoke
+            the desired command and then double click/press with the Action
+            Key on the desired root cell for each argument for which you are
+            prompted.
+            
+            Copying and moving only work within a single outline right now, so
+            don't try to move or copy trees to another Koutline file.
+            
+             {M-<down>}    - Move current tree past prefix arg same level 
trees.
+             {M-<up>}      - Move current tree back prefix arg same level 
trees.
+            
+             {C-c c}       - Copy <tree> to follow as sibling of <cell>.
+             {C-u C-c c}   - Copy <tree> to follow as first child of <cell>.
+            
+             {C-c C-c}     - Copy <tree> to precede <cell>.
+             {C-u C-c C-c} - Copy <tree> as first child of the parent of 
<cell>.
+            
+             {C-c m}       - Move <tree> to follow as sibling of <cell>.
+             {C-u C-c m}   - Move <tree> to follow as first child of <cell>.
+            
+             {C-c C-m}     - Move <tree> to precede <cell>.
+             {C-u C-c C-m} - Move <tree> as first child of the parent of 
<cell>.
+            
+            If you have mouse support under Hyperbole, you can move entire
+            trees with mouse clicks.  Simply click the Assist Key within the
+            indentation to the left of a cell text and you will be prompted
+            for a tree to move.  Double click the Action Key within the body
+            of the root cell of the tree to move and then double click within
+            the body of the root cell of the tree you want it to follow.
+
+       3b9. Tree Text or Region Copying to a Non-Koutline Buffer:
+             {C-c M-c} - Copy <tree> text or active region to a non-Koutline 
buffer.
+             {C-c C-@} - Copy <tree> text to an outgoing mail message.
+            
+            Each above command prompts for whether or not to include
+            hidden/invisible text when copying.  If yes, all invisible text
+            is expanded before copying.
+
+      3b10. Cell Transposition:  The move and copy commands rearrange entire
+            trees.  The following two commands exchange the locations of two
+            cells.
+
+        3b10a. {C-c e} prompts for two cell addresses and exchanges the cells.
+
+        3b10b. {C-c t} does not prompt.  It exchanges the current and
+               preceding cells.  If there is no preceding cell it exchanges
+               the current and next cell.
+               
+               {C-c t} with a prefix argument of zero exchanges the cells in
+               which point and mark fall.
+               
+               {C-c t} with a non-zero numeric prefix argument, N, moves
+               the current tree past maximally the next N visible cells.  If
+               there are fewer visible, it makes the current cell the last
+               cell in the outline.
+
+      3b11. Cell Splitting: You can split one cell into two adjacent cells
+            with {C-c s}.  This leaves the cell contents preceding point in
+            the current cell, minus any trailing whitespace, and moves the
+            contents following point to a new sibling cell which is inserted
+            into the outline.  {C-u C-c s} adds the new cell as the first
+            child of the original cell, rather than as its sibling.
+            
+            All cell attributes in the original cell are propagated to the new
+            one.
+
+      3b12. Cell Appending:  {C-c +} appends the contents of a specified cell
+            to the end of another cell.
+
+      3b13. Hiding and Showing:  Individual cells, branches, or particular
+            levels in the outline may be hidden or shown.  These commands work
+            even when an outline buffer is read-only, e.g. when its file is
+            not checked out of a version control system yet.
+
+        3b13a. {C-c C-h}  - Hide (collapse) tree rooted at point.
+               {C-c C-s}  - Show (expand)   tree rooted at point.
+               
+               {C-c C-a}  - Show (expand) all cells in the outline.
+               {C-x $}    - Show all cells down to a particular level.  The
+                            user is prompted for the level or a prefix
+                            argument may be given. 
+                            
+               {C-M-h}    - Hide subtree at point, excluding root. 
+               {M-x kotl-mode:show-subtree RET} - Show subtree at point.
+               
+               {C-c C-o}  - Overview, show only first line of outline
+                            cells.
+               {C-c C-t}  - Top-level, hide all cells below level 1 and show
+                            only the first line of each level 1 cell.
+               Give a prefix argument to either of the above two commands to
+               toggle display of blank lines between cells as well,
+               e.g. {C-u C-c C-o}.  Try it now.
+
+        3b13b. A click or press of the Action Key within a cell's body, but
+               not on a button, toggles between hiding and showing the tree
+               rooted at point.
+
+      3b14. Cell Identifiers: Permanent ids are associated with each cell
+            and can be used in hyperlinks that are maintained as cells are
+            reordered in a file.  (These ids may also be displayed in place
+            of the outline level relative ids.  Use {C-c C-l id RET}).
+            Permanent ids are numbered from 0, where 0 is the root node of
+            the entire outline.  This node is never visible within the
+            outline.  Permanent ids always begin with a 0, as in 012, to
+            distinguish them from relative ids.
+
+      3b15. Cell Attributes: Each cell has its own attribute list.  The
+            attribute lists for the cells in the tree rooted at point can be
+            displayed by pressing the Assist Key.  {C-c h} prompts for a kcell
+            id and displays its attributes.  {C-u C-c h} prompts for a kcell
+            id and displays the attributes for it and its subtree; use 0 as
+            the kcell id to see attributes for all visible cells in the
+            outline, including the invisible 0 cell that is the root of
+            all first-level cells.
+            
+            {C-c C-i} sets an attribute of the cell at point.
+            {C-u C-c C-i} removes an attribute of the cell at point.
+            {C-0 C-c C-i} sets an attribute of the invisible 0 root cell.
+            {C--1 C-c C-i} removes an attribute of the invisible 0 root cell.
+
+      3b16. File Insertion: The elements of another buffer or file may be
+            inserted into a koutline as a set of cells by using the {C-x i}
+            command.  When prompted, you may use a buffer name or file name
+            from which to insert.
+
+        3b16a. The cells will be inserted as the successors of the current
+               cell unless {C-u C-x i} is used and then they are inserted as
+               the initial children of the current cell.
+
+        3b16b. See the documentation for the variables, kimport:mode-alist and
+               kimport:suffix-alist, for information on mode and
+               suffix-specific conversions performed on files before they are
+               inserted.  This same conversion process applies if you invoke
+               {M-x kotl-mode RET} in a non-koutline buffer or if you perform
+               a generic file import as described in <@ 3b16=063>.
+
+        3b16c. Use {M-x kimport:insert-file-contents RET} to insert the
+               entire contents of a file into the current cell at the
+               location of point.  {M-x kimport:insert-buffer RET} does the
+               same for an existing buffer.  {C-x r i} does the same with the
+               contents of a text register that you specify.
+
+      3b17. File Importing: The Koutliner supports conversion of three
+            types of files into koutline files.  You can choose to
+            import a file into an existing koutline, following the tree
+            at point, or to create a new koutline of the imported file
+            contents.  {M-x kimport:file RET} will select the
+            importation type based on the buffer or file name suffix of
+            the file to import.  Use one of the following commands if
+            you want to control the type of importation explicitly.
+
+        3b17a. Text Files
+
+          3b17a1. In a text buffer, use {M-x kotl-mode RET} to convert the
+                  buffer into a koutline in-place.  You will lose the old
+                  format of the buffer when you do this.
+
+          3b17a2. Use {M-x kimport:text RET} and you will be prompted for a
+                  text buffer or file to import and the new koutline buffer or
+                  file to create from its text.  It will also import the
+                  contents, attributes and level structure of cells from a
+                  koutline.
+                  
+                  With this command, your original file remains intact.
+
+        3b17b. Star Outline Files: Star outlines are standard Emacs outlines
+               where each entry begins with one or more asterisk characters.
+               Use {M-x kimport:star-outline RET} and you will be prompted
+               for the star outline buffer or file to import and the new
+               koutline buffer or file to create.
+
+        3b17c. Augment Files Numbered on the Right-Side: (Skip this if you are
+               unfamiliar with this sort of file).  Files exported from the
+               Augment system as text often have alphanumeric statement
+               identifiers on the right side.
+               
+               Use {M-x kimport:aug-post-outline RET} and you will be prompted
+               for the augment buffer or file to import and the koutline to
+               create.
+
+      3b18. File Exporting: The Koutliner can produce a nicely indented HTML
+            version of an outline with hyperlinks and hyperlink anchors
+            intact.  Use {M-x kexport:html RET} to export a koutline file or
+            existing buffer.
+
+      3b19. View Specification: Flexible views of outlines may be specified
+            with succinct single character codes.
+
+        3b19a. The current view spec is shown in the modeline after the buffer
+               name, delimited by <|>.
+
+        3b19b. The current view spec is saved whenever the outline is saved.
+               The next time the outline is read in, this will be the initial
+               view.  The standard initial viewspec is <|ben>.
+
+        3b19c. {C-c C-v} prompts for a view spec string in which the following
+               codes are valid.  Any invalid characters in a view spec are
+               ignored.
+
+          3b19c1. a:  Show all cell levels and all lines in cells.
+
+          3b19c2. b: Turn on blank lines between cells.  Without this code,
+                  blank lines will be turned off.  You can also use the {C-c
+                  b} key binding to toggle line numbers on and off
+                  independent of any other view settings.
+
+          3b19c3. cN: Hide any lines greater than N in each cell.  0 means
+                  don't cutoff any lines.
+
+          3b19c4. e: Show ellipses when some content is hidden (This is
+                  always on in modern versions of Emacs; it cannot be
+                  turned off).
+
+          3b19c5. lN: Hide cells at levels deeper than N.  0 means don't hide
+                  any cells.
+
+          3b19c6. n:  Turn on the default label type.
+                  n0: Display idstamps.
+                  n1: Display alpha labels.
+                  n.: Display legal labels.
+
+        3b19d. Press the Action Key on this view spec of <|c2l1> to turn off
+               blank lines, to clip each cell after its second line, and to
+               hide all cells below level one.  Use {C-u C-c C-a} to restore a
+               view of all cells.
+
+     3c. Klinks: Hyperlinks may be embedded in cells and may refer to other
+         cells.  Explicit Hyperbole buttons may be created as usual via
+         mouse drags, see "(hyperbole)By Dragging".  A klink is a special
+         implicit link button that jumps to a specific outline cell.
+
+       3c1. Here are three klink examples:
+
+         3c1a. <#3b=08> or <@ 3b=08> jumps to the cell within this outline
+               which has permanent id `08' and relative id `3b'.  <#08> does
+               the same thing, as does <#3b>, though this latter form will
+               not maintain the link properly if the cell is moved elsewhere
+               within the outline.
+
+         3c1b. <EXAMPLE.kotl#4=012|c1e> or <EXAMPLE.kotl, 4=012 |c1e> displays
+               the named file, starting at the unimplemented features section
+               whose permanent identifer is 012, with the view specification
+               of: blank lines turned off, cutoff after one line per cell, and
+               show ellipses for cells or trees which are clipped.
+
+         3c1c. <|ben> is a klink consisting of just a view specification.
+               When activated, it sets the view in the current outline to
+               display blank lines, ellipses following collapsed lines and
+               standard alphanumeric numbering.
+
+       3c2. 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 {C-c l} when in
+            a koutline or {C-h h k l} when not in a koutline to insert a
+            klink.
+
+       3c3. 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 {M-w} to copy the klink.  Then {C-y} will yank it
+            into any buffer you desire.
+
+       3c4. To instead copy a reference to the current Koutline cell, use
+            {M-w} outside of a klink when no region is active.
+
+       3c5. {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.
+
+     3d. Org table editing is supported.
+
+       3d1. You must use the first line of the cell to label your table
+            as tables require only blanks to the left of each row.
+
+       3d2. Here are two table examples:
+            
+            |----------------------------+---------------------------|
+            | Promotion Inside Org Table | Demotion Inside Org Table |
+            |----------------------------+---------------------------|
+            | {M-0 M-TAB}                | {M-0 TAB}                 |
+            | {C-c C-,}                  | {C-c C-.}                 |
+            | {C-c C-<}                  | {C-c C->}                 |
+            |----------------------------+---------------------------|
+                       
+            |-----------------------------+----------------------------|
+            | Promotion Outside Org Table | Demotion Outside Org Table |
+            |-----------------------------+----------------------------|
+            | {M-TAB} or {Shift-TAB}      | {TAB}                      |
+            | {M-<left>}                  | {M-<right>}                |
+            | {C-c C-,}                   | {C-c C-.}                  |
+            | {C-c C-<}                   | {C-c C->}                  |
+            |-----------------------------+----------------------------|
+            
+            To toggle table editing mode on or off, press the Action
+            Key on any of the table | symbols and then edit as you
+            would any Org table.  Note how the above tables show how
+            TAB and Shift-TAB behave differently in and outside of
+            tables; use M-TAB rather than Shift-TAB for tree promotion
+            consistency anywhere.  See "(Org)Tables" for help on utilizing
+            tables.
+
+     3e. The Koutliner code runs on any system that supports Emacs,
+         whether under a window system or from a dumb terminal display.
+
+   4. Major features left to be implemented:
+
+     4a. Branch handling commands (all cells at same level).
+
+     4b. Copying a single cell without its subtree.
+
+     4c. Replacing one cell or one tree with another.
+
+     4d. Transposing two trees, rather than two cells.
+
+     4e. A small amount of work remains to enable setting different per
+         level fonts and colors, so that outline levels are visually easy to
+         distinguish.
+
+     4f. Flexible view handling has been only partially implemented.
 
 
 "ben" ;; kvspec:current
-150 ;; id-counter
+69 ;; id-counter
 alpha ;; label-type
-3 ;; label-min-width
+4 ;; label-min-width
 ". " ;; label-separator
 3 ;; level-indent
 
 ;; depth-first kcell attributes
 [[0
-  (idstamp 0 creator "rsw@gnu.org" create-time "20220117:22:23:52" id-counter 
150 file "/Users/bk/Dropbox/emacs/hyperbole/kotl/EXAMPLE.kotl")]
- [20
-  (creator "rsw@gnu.org" create-time "19940104:17:38:28" no-fill t)]
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07" id-counter 69)]
  [2
-  (creator "rsw@gnu.org" create-time "19940104:17:38:28" no-fill t)]
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [3
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [4
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [5
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [6
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [7
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [8
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [9
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [10
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [11
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [12
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [13
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [14
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [15
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [16
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [17
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [18
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [19
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [20
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [21
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [22
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [23
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [24
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [25
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [26
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [27
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [28
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [29
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [30
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [31
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [32
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [33
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
  [34
-  (creator "rsw@gnu.org" create-time "19940610:16:43:55")]
- [86
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [87
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [88
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [89
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [90
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [91
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [92
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [93
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [94
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [95
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [96
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [97
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [98
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [99
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [100
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [101
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [102
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [103
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [104
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [105
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [106
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [107
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [108
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [109
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [110
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [111
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [112
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [113
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [114
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [115
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [116
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [117
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [118
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [119
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [120
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [121
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [122
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [123
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [124
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [125
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [126
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [127
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [128
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [129
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [130
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [131
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [132
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [133
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [134
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [135
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [136
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [137
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [138
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [139
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [140
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [141
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [142
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [143
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [144
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [145
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [146
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [147
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [148
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [149
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- [150
-  (creator "rsw@gnu.org" create-time "20231030:06:08:35")]
- nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil 
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil 
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil 
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil 
nil nil nil]
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [35
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [36
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [37
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [38
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [39
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [40
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [41
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [42
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [43
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [44
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [45
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [46
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [47
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [48
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [49
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [50
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [51
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [52
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [53
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [54
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [55
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [56
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [57
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [58
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [59
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [60
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [61
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [62
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [63
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [64
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [65
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [66
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [67
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [68
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ [69
+  (creator "rsw@gnu.org" create-time "20231105:21:29:07")]
+ nil]
diff --git a/kotl/kexport.el b/kotl/kexport.el
index e24db29df0..9991d99941 100644
--- a/kotl/kexport.el
+++ b/kotl/kexport.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    26-Feb-98
-;; Last-Mod:      4-Oct-23 at 19:23:08 by Mats Lidell
+;; Last-Mod:      5-Nov-23 at 11:45:00 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -376,7 +376,9 @@ used.  Also converts Urls and Klinks into Html hyperlinks."
   (interactive "P")
   (let ((export-from buffer-file-name)
        (output-to (concat (file-name-sans-extension buffer-file-name) 
".html")))
-    (kexport:html export-from output-to soft-newlines-flag)
+    (if (and buffer-file-name (string-match "\\.kotl?\\'" buffer-file-name))
+       (kexport:html export-from output-to soft-newlines-flag)
+      (error "(kexport:koutline): current buffer must be a Koutline .kotl 
file"))
     output-to))
 
 ;;;###autoload
diff --git a/man/hyperbole.html b/man/hyperbole.html
index ed90f14bb6..e8bb8c5dcf 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -4,7 +4,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <!-- This manual is for GNU Hyperbole
-(Edition 8.0.1pre, Published October, 2023).
+(Edition 8.0.1pre, Published November, 2023).
 
 Copyright © 1989-2023  Free Software Foundation, Inc.
 
@@ -107,7 +107,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 8.0.1pre
-Printed October 29, 2023.
+Printed November 5, 2023.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -6046,22 +6046,22 @@ current outline viewspecs.  This section discusses 
klinks.
 <a class="index-entry-id" id="index-_003c_0040-klink_003e"></a>
 </dd>
 <dt><em class="emph">internal</em></dt>
-<dd><p>&lsquo;<samp class="samp">&lt;@ 2b=06&gt;</samp>&rsquo; is an internal 
klink, since it refers to the koutline in
-which it is embedded.  When activated, it jumps to the cell within the
-current outline which has permanent id &lsquo;06&rsquo; and relative id
-&lsquo;2b&rsquo;.  &lsquo;<samp class="samp">&lt;@ 06&gt;</samp>&rsquo; does 
the same thing, as does &lsquo;<samp class="samp">&lt;@ 2b&gt;</samp>&rsquo;,
-though this latter form will not maintain the link properly if the
-cell is moved elsewhere within the outline.  The form,
-&lsquo;<samp class="samp">&lt;@ 2b=06 |ben&gt;</samp>&rsquo; additionally sets 
the view spec of the current
-outline back to the default value, with a blank line between each cell
-and the whole outline visible.
+<dd><p>&lsquo;<samp class="samp">&lt;#2b=06&gt;</samp>&rsquo; is an internal 
klink, since it refers to the koutline
+in which it is embedded.  When activated, it jumps to the cell within
+the current outline which has permanent id &lsquo;06&rsquo; and relative id 
&lsquo;2b&rsquo;.
+&lsquo;<samp class="samp">&lt;#06&gt;</samp>&rsquo; does the same thing, as 
does &lsquo;<samp class="samp">&lt;#2b&gt;</samp>&rsquo;, though this
+latter form will not maintain the link properly if the cell is moved
+elsewhere within the outline.  The form, &lsquo;<samp 
class="samp">&lt;#2b=06|ben&gt;</samp>&rsquo;
+additionally sets the view spec of the current outline back to the
+default value, with a blank line between each cell and the whole
+outline visible.
 </p>
 <a class="index-entry-id" id="index-external-klink"></a>
 <a class="index-entry-id" id="index-klink_002c-external"></a>
 </dd>
 <dt><em class="emph">external</em></dt>
 <dd><p>The second klink format is an external link to another koutline, such
-as, &lsquo;<samp class="samp">&lt;EXAMPLE.kotl, 3=012 |c1e&gt;</samp>&rsquo;, 
which displays the named file,
+as, &lsquo;<samp class="samp">&lt;EXAMPLE.kotl#3=012|c1e&gt;</samp>&rsquo;, 
which displays the named file,
 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.
@@ -6756,8 +6756,8 @@ Previous: <a href="#HyRolo-Keys" accesskey="p" 
rel="prev">HyRolo Keys</a>, Up: <
 <code class="code">hyrolo-file-list</code> variable, whose default value is 
typically
 <code class="code">&quot;~/.rolo.otl&quot;</code>, in which case, searches 
scan only your personal
 rolo file.  Any entries added to this list should be absolute
-filenames and can be any of the following formats: Emacs outlines
-(.otl), Koutlines (.kotl), Markdown files (.md), or Org files (.org).
+filenames and can be any of the following formats: Org files (.org),
+Emacs outlines (.otl), Koutlines (.kotl), or Markdown files (.md).
 </p>
 <p>If a file in the list does not exist or is not readable, it is
 skipped.  Files are searched in the order in which they appear in the
@@ -10123,7 +10123,7 @@ for valid values of NEW-TYPE.
 <dt><code class="code">kvspec:activate  <kbd class="kbd">{C-c 
C-v}</kbd></code></dt>
 <dd><p>Activate optional VIEW-SPEC or existing view specification over the
 current koutline.  VIEW-SPEC must be a string.  See
-&lsquo;<samp class="samp">&lt;<code 
class="code">${hyperb:dir}</code>/kotl/EXAMPLE.kotl, 2b17=048&gt;</samp>&rsquo; 
for details
+&lsquo;<samp class="samp">&lt;<code 
class="code">${hyperb:dir}</code>/kotl/EXAMPLE.kotl#2b17=048&gt;</samp>&rsquo; 
for details
 on valid view specs.
 </p>
 <a class="index-entry-id" 
id="index-kvspec_003atoggle_002dblank_002dlines-1"></a>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index 259146d6a3..017d255737 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index e2663b203f..9839ac1b5b 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 7b883d768f..5fd2a59e86 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:     29-Oct-23 at 17:52:38 by Bob Weiner
+@c Last-Mod:      5-Nov-23 at 17:10:22 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.1pre
-Printed October 29, 2023.
+Printed November 5, 2023.
 
   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.1pre
-October 29, 2023
+Novemeber 5, 2023
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -5689,21 +5689,21 @@ There are three forms of klinks:
 @cindex klink, internal
 @cindex <@@ klink>
 @item internal
-@samp{<@@ 2b=06>} is an internal klink, since it refers to the koutline in
-which it is embedded.  When activated, it jumps to the cell within the
-current outline which has permanent id `06' and relative id
-`2b'.  @samp{<@@ 06>} does the same thing, as does @samp{<@@ 2b>},
-though this latter form will not maintain the link properly if the
-cell is moved elsewhere within the outline.  The form,
-@samp{<@@ 2b=06 |ben>} additionally sets the view spec of the current
-outline back to the default value, with a blank line between each cell
-and the whole outline visible.
+@samp{<#2b=06>} is an internal klink, since it refers to the koutline
+in which it is embedded.  When activated, it jumps to the cell within
+the current outline which has permanent id `06' and relative id `2b'.
+@samp{<#06>} does the same thing, as does @samp{<#2b>}, though this
+latter form will not maintain the link properly if the cell is moved
+elsewhere within the outline.  The form, @samp{<#2b=06|ben>}
+additionally sets the view spec of the current outline back to the
+default value, with a blank line between each cell and the whole
+outline visible.
 
 @cindex external klink
 @cindex klink, external
 @item external
 The second klink format is an external link to another koutline, such
-as, @samp{<EXAMPLE.kotl, 3=012 |c1e>}, which displays the named file,
+as, @samp{<EXAMPLE.kotl#3=012|c1e>}, which displays the named file,
 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.
@@ -6342,8 +6342,8 @@ The files used in any rolo search are given by the
 @code{hyrolo-file-list} variable, whose default value is typically
 @code{"~/.rolo.otl"}, in which case, searches scan only your personal
 rolo file.  Any entries added to this list should be absolute
-filenames and can be any of the following formats: Emacs outlines
-(.otl), Koutlines (.kotl), Markdown files (.md), or Org files (.org).
+filenames and can be any of the following formats: Org files (.org),
+Emacs outlines (.otl), Koutlines (.kotl), or Markdown files (.md).
 
 If a file in the list does not exist or is not readable, it is
 skipped.  Files are searched in the order in which they appear in the
@@ -9300,7 +9300,7 @@ for valid values of NEW-TYPE.
 @item kvspec:activate  @bkbd{C-c C-v}
 Activate optional VIEW-SPEC or existing view specification over the
 current koutline.  VIEW-SPEC must be a string.  See
-@samp{<@code{$@{hyperb:dir@}}/kotl/EXAMPLE.kotl, 2b17=048>} for details
+@samp{<@code{$@{hyperb:dir@}}/kotl/EXAMPLE.kotl#2b17=048>} for details
 on valid view specs.
 
 @findex kvspec:toggle-blank-lines
diff --git a/man/version.texi b/man/version.texi
index bdcbada14c..f7b32f07fc 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED October, 2023
-@set UPDATED-MONTH October 2023
+@set UPDATED November, 2023
+@set UPDATED-MONTH November 2023
 @set EDITION 8.0.1pre
 @set VERSION 8.0.1pre
diff --git a/test/hui-tests.el b/test/hui-tests.el
index 1b209d2dff..d31abd3964 100644
--- a/test/hui-tests.el
+++ b/test/hui-tests.el
@@ -3,7 +3,7 @@
 ;; Author:       Mats Lidell <matsl@gnu.org>
 ;;
 ;; Orig-Date:    30-Jan-21 at 12:00:00
-;; Last-Mod:      2-Nov-23 at 01:55:44 by Bob Weiner
+;; Last-Mod:      5-Nov-23 at 16:48:49 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -803,8 +803,8 @@ With point on label suggest that ibut for rename."
           (split-window)
           (find-file file)
           (hui:ibut-link-directly (get-buffer-window) (get-buffer-window 
dir-buf))
-         ;; Implicit link should be the dired directory, possibly
-         ;; minus the final directory '/'.
+         ;; Implicit link should be the `dir' dired directory,
+         ;; possibly minus the final directory '/'.
          (goto-char (point-min))
           (should (string-prefix-p (read (current-buffer)) dir)))
       (hy-delete-file-and-buffer file))))
diff --git a/test/hyrolo-tests.el b/test/hyrolo-tests.el
index b972a0e93e..3248f0d697 100644
--- a/test/hyrolo-tests.el
+++ b/test/hyrolo-tests.el
@@ -3,7 +3,7 @@
 ;; Author:       Mats Lidell <matsl@gnu.org>
 ;;
 ;; Orig-Date:    19-Jun-21 at 22:42:00
-;; Last-Mod:     24-Sep-22 at 12:27:35 by Bob Weiner
+;; Last-Mod:      5-Nov-23 at 17:07:36 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -108,6 +108,7 @@
 
         (should (hact 'kbd-key "o"))
         (hy-test-helpers:consume-input-events)
+       (forward-line 1)
         (end-of-line)
         (should (get-char-property (point) 'invisible))
 
diff --git a/test/kexport-tests.el b/test/kexport-tests.el
index 192bb72e2e..ac8854c321 100644
--- a/test/kexport-tests.el
+++ b/test/kexport-tests.el
@@ -3,7 +3,7 @@
 ;; Author:       Mats Lidell <matsl@gnu.org>
 ;;
 ;; Orig-Date:    10-Oct-21 at 17:30:00
-;; Last-Mod:     28-May-23 at 23:15:39 by Mats Lidell
+;; Last-Mod:      5-Nov-23 at 16:55:35 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -151,8 +151,8 @@
 
 (ert-deftest kexport:koutline-calls-kexport:html ()
   "kexport:koutline calls kexport:html and returns html buffer name."
-  (let* ((kotl-file (make-temp-file "hypb"))
-         (html-file (concat kotl-file ".html")))
+  (let* ((kotl-file (make-temp-file "hypb" nil ".kotl"))
+         (html-file (concat (file-name-sans-extension kotl-file) ".html")))
     (unwind-protect
         (cl-letf (((symbol-function 'kexport:html)
                    (lambda (export-from output-to &optional soft-newlines-flag)



reply via email to

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