branch: externals/hyperbole
commit 72d17af6e81c30dddf42dfaa5f9a21f228701f16
Merge: ffd2dcbb85 3940e00d12
Author: Bob Weiner <r...@gnu.org>
Commit: Bob Weiner <r...@gnu.org>

    Merge branch 'rsw' into HEAD
---
 ChangeLog                    |  99 ++++++++++++++++++++++++++++++++++++-
 DEMO                         |   2 -
 FAST-DEMO                    |   1 -
 HY-COPY                      |   2 +-
 HY-NEWS                      |   2 -
 Makefile                     |  22 +++++----
 hargs.el                     |  10 ++--
 hmouse-drv.el                |   8 +--
 hmouse-tag.el                |   4 +-
 hpath.el                     |   4 +-
 hsys-flymake.el              |  28 +++++------
 hsys-org.el                  |  81 +++++++++++++++++++++++++++---
 hsys-xref.el                 |   4 +-
 hui-mouse.el                 |  32 +++++++++---
 hui.el                       |  12 +++--
 hypb.el                      |  38 ++++++++++++---
 hyperbole.el                 |  14 ++++--
 hyrolo.el                    | 114 ++++++++++++++++++++++++++-----------------
 test/demo-tests.el           |   1 -
 test/hui-tests.el            |   5 +-
 test/hy-test-dependencies.el |  23 +++++++--
 test/hy-test-helpers.el      |   4 +-
 test/hyrolo-tests.el         |   7 ++-
 23 files changed, 386 insertions(+), 131 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b22591cf36..35b0fe694f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,7 +9,104 @@
     (ebut-delete-removes-ebut-in-message-mode-buffer): Add tests for
     non-file buffer and non-file in message-mode buffer.
 
-2024-01-09  Bob Weiner  <r...@gnu.org>
+2024-01-13  Bob Weiner  <r...@gnu.org>
+
+* test/hy-test-dependencies.el: Print status of resolving any
+    multi-version/mixed Org installations.
+
+* hyrolo.el (hyrolo-any-file-type-problem-p): Disable printing
+    output if 'hyrolo-boolean-only-flag' is non-nil, used in
+    testing.
+ test/hyrolo-tests.el (hyrolo-tests--get-file-list-wrong-suffix):
+    Use above flag.
+
+* Makefile (test-ert): Do not ellide any stack traces, i.e. set
+    'ert-batch-print-length' to nil.
+    Change test SELECTOR= to test= and document how to run.
+
+* hyrolo.el (hyrolo-any-file-type-problem-p): Disable printing of
+    any output when 'hyrolo-boolean-only-flag' is non-nil, typically
+    used for testing purposes.
+
+* hui.el (hui:ebut-unmark): Fix to handle a non-file-based buffer as
+    'key-src'.
+
+* hsys-org.el (hsys-org-fix-version): Add.  Add .org suffix to
+    'auto-mode-alist' as it may be removed in this function.  Return
+    t when Org is reloaded, nil if not.  Require Org libraries even
+    when no reload is done.  Handle when 'org-version' differs from
+    version number in 'org-dir'.
+  hyperbole.el (hyperb:init): Add call to 'hsys-org-fix-version' when
+    detect a mixed version installation of Org, typically part of
+    built-in Org loaded before loading a newer packaged version.
+
+* hargs.el (hargs:at-p): Fix 'no-default' arg handling to not select
+    non-existent dirs and files when no-default is true.
+
+* hsys-xref.el (hsys-xref-definitions): Fix to pass symbol, not string to
+    'ert-test-boundp'.
+
+* hmouse-drv.el (hkey-help-show): Rename local var from 'org-help' to
+    'hkey-org-help' to eliminate any confusion that this is an Org variable.
+
+* hyrolo.el (hyrolo-any-file-type-problem-p): Print error buffer to stdout
+    when run noninteractively (batch mode).
+
+* hyrolo.el (hyrolo-org-mode): Conditionalize org-fold usage as it is only
+    available in newer Org versions.  Add missing forward declarations.
+
+* hyrolo.el (hyrolo-org-mode): Add newer Org 9.7-pre hide/show support.
+  test/hyrolo-tests.el (hyrolo-tests--outline-hide-show-heading,
+                       
hyrolo-tests--outline-show-when-moving-out-of-hidden-line):
+    The above change fixes these tests, so they have been re-enabled.
+
+* hmouse-tag.el (smart-lisp-identifier-chars): Add @ char as advised
+    functions use the orig-function@advice-wrapper-name to refer to the
+    advice.
+
+* hpath.el (hpath:variables): Move 'load-path' and 'exec-path' before
+    'Info-directory-list' as they should be higher priority matches.
+    Remove old 'Info-directory'.
+
+2024-01-12  Bob Weiner  <r...@gnu.org>
+
+* hypb.el (hypb:display-file-with-logo): Expand any folded headings
+    in the file.
+
+    Improve use in tests by doing the following when in batch mode
+    (noninteractive): Kill off any non-modified buffer showing the file
+    to display before freshly reading it.
+
+2024-01-10  Bob Weiner  <r...@gnu.org>
+
+* hui-mouse.el (hkey-alist): Move 'smart-eolp' to immediately before
+    'smart-org' clause.
+  hsys-org.el (hsys-org-cycle-bob-file-list): Add to list files auto
+    set to 'org-mode' with minor 'view-mode' that allow org global
+    cycling of headings with {TAB} when at the beginning of buffer and
+    not on a heading.
+  hyrolo.el (hyrolo-verify): Allow buffers associated with files from
+    'hsys-org-cycle-bob-file-list' as well.
+  hui-mouse.el (smart-org-bob-and-non-heading-p): Check whether {TAB} or
+    {M-RET} should org-global-cycle at point."
+               (smart-eolp): Allow for org global cycling at start of
+    buffer on a non-heading line in Hyperbole doc files when displayed from
+    Hyperbole menu items.
+  hypb.el (hypb:insert-hyperbole-banner): Update so Hyperbole logo link
+    does not include the first blank line, allowing for a different
+    action on {RET} there.
+
+* hyrolo.el (hyrolo-verify): Remove mentions of HyNote (not in this release).
+
+* hypb.el (hypb:display-file-with-logo): Remove call (skip-syntax-forward "-")
+    so point stays at the beginning of buffer for Org global display cycling.
+    Replace 'id-browse-file' and 'view-mode' with 'hyrolo-mode'.
+
+* hsys-flymake.el (repeat-mode): Add missing (require 'repeat) since
+    'repeat-mode' function used herein is not autoloaded.
+                  (flymake-mode-hook): Check whether `repeat-mode' is
+    fboundp or not before trying to enable it (should be autoloaded when
+    it exists, probably in Emacs 28 or greater).
 
 * hsys-xref.el: Add forgotten file.
 
diff --git a/DEMO b/DEMO
index dea93b59ec..48df6e4b27 100644
--- a/DEMO
+++ b/DEMO
@@ -1,5 +1,3 @@
--*- Mode: org; org-cycle-global-at-bob: t; hsys-org-enable-smart-keys: t -*-
-
 * GNU Hyperbole Full Demo/Tutorial by Bob Weiner
 
   Send an email or a testimonial if you like Hyperbole to <r...@gnu.org>.
diff --git a/FAST-DEMO b/FAST-DEMO
index 8c0c6982ac..1e032c4fff 100644
--- a/FAST-DEMO
+++ b/FAST-DEMO
@@ -1,4 +1,3 @@
--*- Mode: org; org-cycle-global-at-bob: t; hsys-org-enable-smart-keys: t -*-
 
 * GNU Hyperbole Fast Demo by Bob Weiner
 
diff --git a/HY-COPY b/HY-COPY
index a9335e0425..abd302f665 100644
--- a/HY-COPY
+++ b/HY-COPY
@@ -4,7 +4,7 @@
 
 The following copyright applies to the GNU Hyperbole software.
 
-Copyright (C) 1989-2022  Free Software Foundation, Inc.
+Copyright (C) 1989-2024  Free Software Foundation, Inc.
 
 Originally developed with support from Motorola Inc., who donated all
 such work to the Free Software Foundation, Inc. in the 1990s.
diff --git a/HY-NEWS b/HY-NEWS
index 5ea5c7929c..bc544534d9 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -1,5 +1,3 @@
--*- Mode: org; org-cycle-global-at-bob: t; hsys-org-enable-smart-keys: t -*-
-
 *                        What's New in GNU Hyperbole
                                 by Bob Weiner
 
diff --git a/Makefile b/Makefile
index e58eae5ad5..5fc7426c91 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 # Author:       Bob Weiner
 #
 # Orig-Date:    15-Jun-94 at 03:42:38
-# Last-Mod:      7-Jan-24 at 14:27:34 by Bob Weiner
+# Last-Mod:     13-Jan-24 at 19:12:58 by Bob Weiner
 #
 # Copyright (C) 1994-2023  Free Software Foundation, Inc.
 # See the file HY-COPY for license information.
@@ -70,8 +70,9 @@
 #               * Developer targets
 #
 #               To run unit tests:
-#                   make test           - run not interactive tests in batch 
mode
-#                   make test-all       - run all tests starting an Emacs in 
windowed mode
+#                   make test                  - run non-interactive tests in 
batch mode
+#                   make test-all              - run all tests starting an 
interactive Emacs
+#                   make test test=<test-name> - run a single test or tests 
matching the name
 #
 #               Verify hyperbole installation using different sources:
 #                   make install-<source>
@@ -459,7 +460,7 @@ packageclean:
          cd $(pkg_hyperbole)/man/im && $(RM) -r .DS_Store core .place* ._* .*~ 
*~ \
            *.ps *\# *- *.orig *.rej .nfs* CVS .cvsignore; fi
 
-# Ert test
+# ERT test
 .PHONY: tests test test-ert all-tests test-all
 tests: test
 test: test-ert
@@ -469,10 +470,10 @@ test: test-ert
 LET_VARIABLES = (auto-save-default) (enable-local-variables :all)
 LOAD_TEST_ERT_FILES=$(patsubst %,(load-file \"%\"),${TEST_ERT_FILES})
 
-# Run make test SELECTOR=<ert-test-selector> to limit batch test to
+# Run make test test=<ert-test-selector> to limit batch test to
 # tests specified by the selector. See "(ert)test selectors"
-ifeq ($(origin SELECTOR), command line)
-HYPB_ERT_BATCH = (ert-run-tests-batch-and-exit \"${SELECTOR}\")
+ifeq ($(origin test), command line)
+HYPB_ERT_BATCH = (ert-run-tests-batch-and-exit \"${test}\")
 else
 HYPB_ERT_BATCH = (ert-run-tests-batch-and-exit)
 endif
@@ -487,9 +488,10 @@ endif
 test-ert:
        @echo "# Tests: $(TEST_ERT_FILES)"
        $(EMACS_BATCH) --eval "(load-file \"test/hy-test-dependencies.el\")" \
-       --eval "(let ((auto-save-default) (ert-batch-print-level 10) 
(ert-batch-print-length 20) \
-               $(HYPB_ERT_BATCH_BT) (ert-batch-backtrace-right-margin 2048)) \
-       $(LOAD_TEST_ERT_FILES) $(HYPB_ERT_BATCH))"
+       --eval "(let ((auto-save-default) (ert-batch-print-level 10) \
+                     (ert-batch-print-length nil) (backtrace-line-length 5000) 
\
+                     $(HYPB_ERT_BATCH_BT) (ert-batch-backtrace-right-margin 
2048)) \
+                  $(LOAD_TEST_ERT_FILES) $(HYPB_ERT_BATCH))"
 
 all-tests: test-all
 test-all:
diff --git a/hargs.el b/hargs.el
index fb58c616a3..355a01007b 100644
--- a/hargs.el
+++ b/hargs.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    31-Oct-91 at 23:17:35
-;; Last-Mod:      1-Dec-23 at 11:23:52 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 16:09:00 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -658,9 +658,9 @@ Handles all of the interactive argument types that 
`hargs:iform-read' does."
               ((hpath:at-p 'file))
               ;; Unquoted remote file name.
               ((hpath:is-p (hpath:remote-at-p) 'file))
-              ;; Possibly non-existent file name
-              ((when no-default (hpath:at-p 'file 'non-exist)))
               (no-default nil)
+              ;; Possibly non-existent file name
+              ((hpath:at-p 'file 'non-exist))
               ((buffer-file-name))))
        ((eq hargs:reading-type 'directory)
         (cond ((derived-mode-p 'dired-mode)
@@ -672,9 +672,9 @@ Handles all of the interactive argument types that 
`hargs:iform-read' does."
               ((hpath:at-p 'directory))
               ;; Unquoted remote directory name.
               ((hpath:is-p (hpath:remote-at-p) 'directory))
-              ;; Possibly non-existent directory name
-              ((when no-default (hpath:at-p 'directory 'non-exist)))
               (no-default nil)
+              ;; Possibly non-existent directory name
+              ((hpath:at-p 'directory 'non-exist))
               (default-directory)))
        ((eq hargs:reading-type 'string)
         (or (hargs:delimited "\"" "\"") (hargs:delimited "'" "'")
diff --git a/hmouse-drv.el b/hmouse-drv.el
index fa7f3822f4..fb40cad7ef 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    04-Feb-90
-;; Last-Mod:      3-Jan-24 at 02:24:39 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 15:32:40 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1240,7 +1240,7 @@ the current window.  By default, it is displayed 
according to the setting of
 `hpath:display-where'."
   (if (bufferp buffer) (setq buffer (buffer-name buffer)))
   (if (null buffer) (setq buffer (buffer-name (current-buffer))))
-  (let ((org-help (and (stringp buffer) (string-match "\\`\\*Org Help\\*" 
buffer)))
+  (let ((hkey-org-help (and (stringp buffer) (string-match "\\`\\*Org Help\\*" 
buffer)))
        (owind (selected-window)))
     (and (stringp buffer)
         (string-match "^\\*Help\\|Help\\*$" buffer)
@@ -1262,7 +1262,7 @@ the current window.  By default, it is displayed 
according to the setting of
                            (selected-window))
                           (t (hpath:display-buffer buf)))))
          ;; Ignore org-mode's temp help buffers which it handles on its own.
-         (when (and wind (not org-help))
+         (when (and wind (not hkey-org-help))
            (setq minibuffer-scroll-window wind)
            ;; Don't use help-mode in buffers already set up with a
            ;; quit-key to bury the buffer, e.g. minibuffer completions,
@@ -1275,7 +1275,7 @@ the current window.  By default, it is displayed 
according to the setting of
              (when (derived-mode-p 'help-mode)
                (local-set-key "q" #'hkey-help-hide)))))
       ;; If in an *Org Help* buffer, reselect the Org buffer.
-      (when org-help
+      (when hkey-org-help
        (select-window owind))
       ;; If in a *Completions* buffer, re-select the window that
       ;; generated the completions.
diff --git a/hmouse-tag.el b/hmouse-tag.el
index ae64e23b86..29bf64d525 100644
--- a/hmouse-tag.el
+++ b/hmouse-tag.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    24-Aug-91
-;; Last-Mod:      7-Jan-24 at 14:34:32 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 01:29:42 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -598,7 +598,7 @@ in the current directory or any of its ancestor 
directories."
   "Regexp matching the first character of a Lisp identifier.")
 
 ;;;###autoload
-(defconst smart-lisp-identifier-chars "-_:/*+=%$&?!<>a-zA-Z0-9~^"
+(defconst smart-lisp-identifier-chars "-_:/*+=%$&?!<>a-zA-Z0-9~^@"
   "Regexp matching a valid char in a Lisp identifier except the first char.
 Excludes character matching square brackets, so may be used with
 skip-characters-forward/backward.")
diff --git a/hpath.el b/hpath.el
index 0ed3599ea3..4ee5a5793d 100644
--- a/hpath.el
+++ b/hpath.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:     1-Nov-91 at 00:44:23
-;; Last-Mod:     26-Dec-23 at 22:42:39 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 00:57:41 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -546,7 +546,7 @@ Used only if the function `image-mode' is defined."
 ;; link is later resolved.
 ;;
 (defcustom hpath:variables
-  '(hyperb:dir Info-directory Info-directory-list sm-directory load-path 
exec-path)
+  '(hyperb:dir load-path exec-path Info-directory-list sm-directory)
   "*List of Emacs Lisp variable symbols to substitute within matching link 
paths.
 Each variable value, if bound, must be either a pathname or a list of 
pathnames.
 When embedded within a path, the format is ${variable}."
diff --git a/hsys-flymake.el b/hsys-flymake.el
index 10d167972f..4873af3b7d 100644
--- a/hsys-flymake.el
+++ b/hsys-flymake.el
@@ -3,16 +3,14 @@
 ;; Keywords:     tools
 ;;
 ;; Author:       Bob Weiner
-;; Org:          RWorks
-;; E-mail:       r...@gnu.org
 ;;
 ;; Orig-Date:    31-Dec-23 at 13:54:08
-;; Last-Mod:      4-Jan-24 at 22:51:11 by Bob Weiner
+;; Last-Mod:      9-Jan-24 at 21:29:43 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
 ;; Copyright (C) 2023-2024  Free Software Foundation, Inc.
-;; Licensed under the GNU General Public License, version 3.
+;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
 ;;
@@ -59,11 +57,11 @@
 ;;
 ;;; Code:
 
-;;    Don't require `flymake-mode' or `repeat-mode' here.  Instead we
-;;    leave it to each function to check whether `flymake-mode' is
-;;    enabled and active in the current buffer.  This way, if the user
-;;    never uses `flymake-mode' that library is never loaded and the
-;;    Smart Key context from `hkey-alist' in "hui-mouse.el" that invokes
+;;    Don't require `flymake-mode' or `repeat' here.  Instead we leave
+;;    it to each function to check whether `flymake-mode' is enabled
+;;    and active in the current buffer.  This way, if the user never
+;;    uses `flymake-mode' that library is never loaded and the Smart
+;;    Key context from `hkey-alist' in "hui-mouse.el" that invokes
 ;;    functions from herein, never triggers.
 
 (require 'hbut)
@@ -141,7 +139,7 @@ Issue is inserted into the buffer after the current visible 
line."
 
 ;; flymake-mode does not bind any keys; it has only menu bindings.
 ;; Add key bindings for use in the source buffer on the C-c C-l prefix.
-;; Each time these keys are changed, need to disable repeat-mode and
+;; Each time these keys are changed, need to disable `repeat-mode' and
 ;; then re-enable it to read the updated key bindings.
 (defvar hsys-flymake-mode-control-l-prefix-map
   (let ((map (make-sparse-keymap)))
@@ -155,9 +153,9 @@ Issue is inserted into the buffer after the current visible 
line."
     (define-key map "w" 'hsys-flymake-toggle-wraparound)
     map))
 
-;; Use repeat-mode for appropriate flymake commands so can repeat them
-;; with their last keystroke, e.g. repeat {C-c C-l n} by pressing {n}
-;; repeatedly.
+;; Use `repeat-map' property for appropriate flymake commands so can
+;; repeat them with their last keystroke, e.g. repeat {C-c C-l n} by
+;; pressing {n} repeatedly.
 (defvar hsys-flymake-repeat-map
   (let ((map (make-sparse-keymap)))
     (mapc (lambda (cmd)
@@ -181,7 +179,9 @@ Issue is inserted into the buffer after the current visible 
line."
          (lambda () (when flymake-mode
                       (define-key flymake-mode-map "\C-c"
                         hsys-flymake-mode-control-c-prefix-map)
-                      (repeat-mode 1))))
+                      ;; probably Emacs 28 or greater
+                      (when (fboundp 'repeat-mode)
+                        (repeat-mode 1)))))
 ;; If flymake-mode is already enabled, re-enable it to ensure
 ;; repeat-mode gets enabled.
 (when (and (featurep 'flymake) flymake-mode)
diff --git a/hsys-org.el b/hsys-org.el
index 2d7bf681bb..910b0682d9 100644
--- a/hsys-org.el
+++ b/hsys-org.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:     2-Jul-16 at 14:54:14
-;; Last-Mod:     26-Dec-23 at 12:05:46 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 19:50:40 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -68,12 +68,12 @@
 ;;;###autoload
 (defcustom hsys-org-enable-smart-keys 'unset
   "This applies in Org major/minor modes only when `hyperbole-mode' is active.
-If set to \\='unset prior to loading Hyperbole, then Hyperbole
-initialization will set its value.
+If set to \\='unset prior to loading Hyperbole, then Hyperbole initialization
+will set its value.
 
-The following table shows what the Smart Keys do in various contexts
-with different settings of this option.  For example, a nil value makes
-{M-RET} operate as it normally does within Org mode contexts.
+The following table shows what the Smart Keys do in various contexts with
+different settings of this option.  For example, a nil value makes {M-RET}
+operate as it normally does within Org mode contexts.
 
 
|---------+-------------------+------------------+----------+------------------|
 | Setting | Smart Key Context | Hyperbole Button | Org Link | Fallback Command 
|
@@ -100,6 +100,13 @@ with different settings of this option.  For example, a 
nil value makes
 ;;; Public Action Types
 ;;; ************************************************************************
 
+(defcustom hsys-org-cycle-bob-file-list
+  '("${hyperb:dir}/DEMO" "${hyperb:dir}/FAST-DEMO" "${hyperb:dir}/MANIFEST"
+     "${hyperb:dir}/HY-ABOUT" "${hyperb:dir}/HY-NEWS")
+  "List of files to globally `org-cycle' when at the beginning of the buffer."
+  :type '(repeat file)
+  :group 'hyperbole)
+
 (defact org-link (&optional link)
   "Follow an optional Org mode LINK to its target.
 If LINK is nil, follow any link at point.  Otherwise, trigger an error."
@@ -145,6 +152,68 @@ an error."
 ;;; Public functions
 ;;; ************************************************************************
 
+;;;###autoload
+(defun hsys-org-fix-version ()
+  "If multiple Org versions are loaded, use the one first on `load-path'.
+Always ensure Org libraries have been required.
+Return t if Org is reloaded, else nil."
+  ;; Not all versions of org include this variable, so set it
+  (setq org--inhibit-version-check nil
+       org-list-allow-alphabetical nil)
+  (let ((org-dir (ignore-errors (org-find-library-dir "org")))
+       (org-install-dir
+        (ignore-errors (org-find-library-dir "org-loaddefs")))
+       org-dir-version)
+    (cond ((and org-dir org-install-dir (string-equal org-dir org-install-dir)
+               ;; Still may have a situation where the Org version matches the
+               ;; builtin Org but the directories are for a newer Org
+               ;; package version.
+               (if (string-match "[\\/]org-\\([0-9.]+-?[a-z]*\\)" org-dir)
+                   (string-equal (setq org-dir-version (match-string 1 
org-dir))
+                                 (remove ?- (org-release)))
+                 t))
+          ;; Just require these libraries used for testing to ensure
+          ;; they are loaded from the single Org version used.
+          (mapc (lambda (lib-sym) (require lib-sym nil t))
+                '(org-version org-keys org-compat ol org-table org-macs org-id
+                              org-element org-list org-element org-src 
org-fold org))
+          nil)
+         (t
+          ;; Ensure using any local available packaged version of Org mode
+          ;; rather than built-in which may have been activated before
+          ;; load-path was set correctly.  Avoids mixed version load of Org.
+          (mapc (lambda (lib-sym) (when (featurep lib-sym) (unload-feature 
lib-sym t)))
+                '(org org-version org-keys org-compat ol org-table org-macs 
org-id
+                      org-element org-list org-element org-src org-fold))
+          (package-initialize)
+          (let ((pkg-desc (car (cdr (assq 'org package-archive-contents)))))
+            (package-activate pkg-desc t))
+          ;; Otherwise, `font-lock-ensure' make invoke an undefined matcher
+          ;; function, `org-fontify-inline-src-blocks'.
+          (load "org-src")
+          ;; Otherwise, `org-id-get-create' may call undefined
+          ;; `org-element-cache-active-p'
+          (load "org-element")
+          ;; Otherwise, {M-RET} may not be bound to a key
+          (load "org-keys")
+          ;; Otherwise, `org-file-name-concat' may be undefined
+          (load "org-compat")
+          ;; Otherwise, `org--inhibit-version-check' may be undefined
+          (load "org-macs")
+          ;; Otherwise, `org-list-allow-alphabetical' may be undefined
+          (load "org-list")
+          ;; Otherwise, `org-fold--advice-edit-commands' may be undefined
+          (load "org-fold")
+          ;; Otherwise, `org-link--description-folding-spec' may be undefined
+          (load "ol")
+          (cl-flet ((require (lambda (lib-sym &optional _filename _noerror)
+                               (load (symbol-name lib-sym)))))
+            (require 'org))
+          ;; Next setting may have been deleted with the library
+          ;; unloading, so restore it.
+          (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
+          t))))
+
 ;;;###autoload
 (defun hsys-org-meta-return-shared-p ()
   "Return non-nil if hyperbole-mode is active and shares the org-meta-return 
key."
diff --git a/hsys-xref.el b/hsys-xref.el
index 13b441e6af..e02fff0609 100644
--- a/hsys-xref.el
+++ b/hsys-xref.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    24-Aug-91
-;; Last-Mod:      9-Jan-24 at 12:07:34 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 15:55:13 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -31,7 +31,7 @@
   (let* ((elisp-flag (smart-emacs-lisp-mode-p))
         (xref-backend (or (and elisp-flag
                                (fboundp 'ert-test-boundp)
-                               (ert-test-boundp identifier)
+                               (ert-test-boundp (intern-soft identifier))
                                (boundp 'xref-etags-mode)
                                'etags)
                           (xref-find-backend)))
diff --git a/hui-mouse.el b/hui-mouse.el
index 3c9affdb67..b1ffa16509 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    04-Feb-89
-;; Last-Mod:      4-Jan-24 at 22:51:41 by Bob Weiner
+;; Last-Mod:     10-Jan-24 at 21:26:33 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -40,7 +40,10 @@
 ;;; ************************************************************************
 
 (require 'ert-results nil t) ;; Action Key support in ERT result buffers
-(require 'hsys-flymake)
+;; Library in next line (for code optionally used in `smart-eol') uses
+;; `repeat-map' which was not added to the "repeat.el" library in Emacs 27.1,
+;; so don't use if it fails to load properly.
+(ignore-errors (require 'hsys-flymake))
 (require 'hload-path)
 (require 'hsys-org)
 (require 'hbut)
@@ -292,6 +295,10 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
              (smart-helm-alive-p)))
      . ((funcall (key-binding (kbd "RET"))) . (funcall (key-binding (kbd 
"RET")))))
     ;;
+    ;; If at the end of a line (eol), invoke the associated Smart Key handler 
EOL handler.
+    ((smart-eolp)
+     . ((funcall action-key-eol-function) . (funcall assist-key-eol-function)))
+    ;;
     ;; Handle any Org mode-specific contexts but give priority to Hyperbole
     ;; buttons prior to cycling Org headlines
     ((and (not (hyperb:stack-frame '(smart-org)))
@@ -312,10 +319,6 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
     ((and (fboundp 'xref--item-at-point) (xref--item-at-point))
      . ((xref-goto-xref) . (xref-show-location-at-point)))
     ;;
-    ;; If at the end of a line (eol), invoke the associated Smart Key handler 
EOL handler.
-    ((smart-eolp)
-     . ((funcall action-key-eol-function) . (funcall assist-key-eol-function)))
-    ;;
     ;; The Smart Menu system is an attractive in-buffer menu system
     ;; that works on any display system that supports Emacs.  It
     ;; predates Emacs' menu systems; it is a part of InfoDock.
@@ -1918,6 +1921,15 @@ handled by the separate implicit button type, 
`org-link-outside-org-mode'."
             ;; contexts
             nil)))))
 
+(defun smart-org-bob-and-non-heading-p ()
+  "Check whether {TAB} should globally `org-cycle' at point."
+  (and (bobp)
+       buffer-file-name
+       (derived-mode-p 'org-mode)
+       (not (org-at-heading-p))
+       (member buffer-file-name 
+              (hpath:expand-list hsys-org-cycle-bob-file-list))))
+
 ;;; ************************************************************************
 ;;; smart-outline functions
 ;;; ************************************************************************
@@ -2090,12 +2102,16 @@ If key is pressed:
   "Return t if point is at the end of a visible line but not the end of the 
buffer."
   ;; smart-helm handles eol for helm buffers
   (unless (or (and (smart-helm-alive-p) (equal (helm-buffer-get) 
(buffer-name)))
+             ;; Allow for org global cycling at start of buffer on a
+             ;; non-heading line in Hyperbole doc files when
+             ;; displayed from Hyperbole menu items.
+             (smart-org-bob-and-non-heading-p)
+             ;; If there is a flymake diagnostic issue at eol,
+             ;; drop through this clause to handle it later.
              (and (featurep 'hsys-flymake)
                   (boundp 'flymake-mode)
                   flymake-mode
                   (eolp)
-                  ;; If there is a flymake diagnostic issue at eol,
-                  ;; drop through this clause to handle it later.
                   (hsys-flymake-get-issue-at-position)))
     (if (eq major-mode 'kotl-mode)
        (and (not (kotl-mode:eobp)) (kotl-mode:eolp t))
diff --git a/hui.el b/hui.el
index a2d7db4bd5..3d64713b7a 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:      3-Jan-24 at 23:42:18 by Mats Lidell
+;; Last-Mod:     13-Jan-24 at 18:55:34 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1522,10 +1522,12 @@ With a prefix argument, also delete the button text 
between the delimiters."
          (when (search-forward ebut:label-end nil t) (funcall form)))
       ;; Non-interactive invocation.
       (let (cur-flag)
-       (if (and (or (null key-src) (eq key-src buffer-file-name))
-                (or (null directory) (eq directory default-directory)))
-           (setq cur-flag t)
-         (set-buffer (find-file-noselect (expand-file-name key-src 
directory))))
+       (cond ((and (or (null key-src) (eq key-src buffer-file-name))
+                   (or (null directory) (eq directory default-directory)))
+              (setq cur-flag t))
+             ((bufferp key-src)
+              (set-buffer key-src))
+             (t (set-buffer (find-file-noselect (expand-file-name key-src 
directory)))))
        (unless (stringp but-key)
          (setq but-key (hbut:label-p))
          (unless (stringp but-key)
diff --git a/hypb.el b/hypb.el
index 538107e289..4cd751a9ad 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:      3-Jan-24 at 23:44:37 by Mats Lidell
+;; Last-Mod:     12-Jan-24 at 08:20:56 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1091,17 +1091,43 @@ If FILE is not an absolute path, expand it relative to 
`hyperb:dir'."
     (error "(hypb:display-file-with-logo): 'file' must be a string, not '%s'" 
file))
   (unless (file-name-absolute-p file)
     (setq file (expand-file-name file hyperb:dir)))
-  (let ((existing-buf (when (stringp file) (get-file-buffer file))))
-    ;; A stub for this function is defined in hversion.el when not running in 
InfoDock.
-    (id-browse-file file)
+  (let ((existing-buf (when (stringp file) (get-file-buffer file)))
+       (hsys-org-enable-smart-keys hsys-org-enable-smart-keys))
+
+    ;; Ensure Smart Keys do not defer to Org mode when running tests 
noninteractively
+    (when noninteractive
+      (setq sys-org-enable-smart-keys t))
+
+    (when (and existing-buf noninteractive)
+      ;; Likely are running tests when running non-interactively, so
+      ;; kill existing buffer, so each test run starts from scratch
+      ;; and is consistent.  Trigger an error if buffer has been
+      ;; modified.
+      (when (buffer-modified-p existing-buf)
+       (error "(hypb:display-file-with-logo): Attempt to kill modified buffer: 
%s" existing-buf))
+      (when (kill-buffer existing-buf)
+       (setq existing-buf nil)))
+
+    ;; A stub for the `id-browse-file' function is defined in
+    ;; "hversion.el" when not running in InfoDock.
+    (if (eq (symbol-function #'id-browse-file) #'view-file)
+       (find-file file)
+      ;; Running under InfoDock
+      (id-browse-file file))
+
     (unless existing-buf
       (let ((buffer-read-only))
        (hypb:insert-hyperbole-banner))
       (goto-char (point-min))
-      (skip-syntax-forward "-")
       (set-window-start (selected-window) 1)
       (set-buffer-modified-p nil)
+      (org-mode)
+      (setq-local org-cycle-global-at-bob t)
       (view-mode)
+      ;; Ensure no initial folding of the buffer, possibly from a hook
+      (if (fboundp 'org-fold-show-all)
+         (org-fold-show-all)
+       (org-show-all))
       ;; On some versions of Emacs like Emacs28, need a slight delay
       ;; for file loading before searches will work properly.
       ;; Otherwise, "test/demo-tests.el" may fail.
@@ -1146,7 +1172,7 @@ Without file, the banner is prepended to the current 
buffer."
        (insert "\n")
        (insert-image hyperbole-banner)
        (insert "\n")
-       (setq button (make-button (- (point) 3) (- (point) 2) :type 
'hyperbole-banner))
+       (setq button (make-button (- (point) 2) (- (point) 1) :type 
'hyperbole-banner))
        (button-put button 'help-echo (concat "Click to visit " hypb:home-page))
        (button-put button 'action #'hypb:browse-home-page)
        (button-put button 'face 'default)
diff --git a/hyperbole.el b/hyperbole.el
index 6e7e7f8dc1..ee11cbf1bf 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -8,7 +8,7 @@
 ;; Maintainer:   Mats Lidell <ma...@gnu.org>
 ;; Maintainers:  Robert Weiner <r...@gnu.org>, Mats Lidell <ma...@gnu.org>
 ;; Created:      06-Oct-92 at 11:52:51
-;; Last-Mod:      3-Jan-24 at 02:27:05 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 16:28:45 by Bob Weiner
 ;; Released:     03-Dec-23
 ;; Version:      9.0.0
 ;; Keywords:     comm, convenience, files, frames, hypermedia, languages, 
mail, matching, mouse, multimedia, outlines, tools, wp
@@ -496,6 +496,13 @@ frame, those functions by default still return the prior 
frame."
                                'buttons
                              t)))
   ;;
+  ;; This next function call must be run before any tests involving Org
+  ;; in case the user has installed a new version of Org but Emacs has
+  ;; loaded parts of Org before his load path is finalized.  It loads
+  ;; the newer version of Org, if any, assuming `load-path' is configured
+  ;; correctly.
+  (hsys-org-fix-version)
+  ;;
   ;; When vertico-mode is used, vertico-mouse-mode is needed for the
   ;; Action Key to properly select completions from the candidate
   ;; list, so force its usage when vertico-mode is invoked.
@@ -505,9 +512,10 @@ frame, those functions by default still return the prior 
frame."
   ;;
   ;; Hyperbole initialization is complete.
   (message "Initializing Hyperbole...done"))
+  
 
-;; This call loads the rest of the Hyperbole system.
-(require 'hinit)
+  ;; This call loads the rest of the Hyperbole system.
+  (require 'hinit)
 
 (defun hyperbole--enable-mode ()
   "Enable Hyperbole global minor mode."
diff --git a/hyrolo.el b/hyrolo.el
index b400dc575b..a199de2a88 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:      6-Jan-24 at 10:02:10 by Mats Lidell
+;; Last-Mod:     13-Jan-24 at 20:04:26 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -28,10 +28,11 @@
 ;;; Other required Elisp libraries
 ;;; ************************************************************************
 
-(require 'custom) ;; For 'defface'.
+(require 'custom)   ;; For `defface'
 (require 'hversion)
 (require 'hmail)
-(require 'hypb)  ;; For 'hypb:mail-address-regexp'.
+(require 'hsys-org) ;; For `hsys-org-cycle-bob-file-list'
+(require 'hypb)     ;; For `hypb:mail-address-regexp'
 (require 'outline)
 (require 'package)
 (require 'reveal)
@@ -61,9 +62,12 @@
 (defvar helm-org-rifle-show-level-stars)
 (defvar hproperty:but-emphasize-flag)
 (defvar markdown-regex-header)
+(defvar org-fold-core-style)
+(defvar org-link--link-folding-spec)
 (defvar org-roam-db-autosync-mode)
 (defvar org-roam-directory)
 (defvar plstore-cache-passphrase-for-symmetric-encryption)
+(defvar reveal-auto-hide)
 
 (declare-function consult-grep "ext:consult")
 (declare-function consult-ripgrep "ext:consult")
@@ -78,6 +82,8 @@
 (declare-function helm-org-rifle-org-directory "ext:helm-org-rifle")
 (declare-function helm-org-rifle-show-full-contents "ext:helm-org-rifle")
 (declare-function kotl-mode:to-valid-position "kotl/kotl-mode")
+(declare-function org-fold-initialize "org-fold")
+(declare-function org-fold-core-set-folding-spec-property "org-fold")
 (declare-function org-roam-db-autosync-mode "ext:org-roam")
 (declare-function xml-node-child-string "ext:google-contacts")
 (declare-function xml-node-get-attribute-type "ext:google-contacts")
@@ -1136,16 +1142,19 @@ matched entries."
   (hyrolo-show-levels 1))
 
 (defun hyrolo-verify ()
-  "Verify point is in a HyRolo or HyNote match buffer."
-  (when (not (member (buffer-name) (list hyrolo-display-buffer
-                                        (and (car (hyrolo-get-file-list))
-                                             (file-name-nondirectory (car 
(hyrolo-get-file-list))))
-                                        (when (boundp 'hynote-display-buffer)
-                                          hynote-display-buffer)
-                                        (when (boundp 'hynote-file-list)
-                                          (and (car hynote-file-list)
-                                               (file-name-nondirectory (car 
hynote-file-list)))))))
-    (error "(HyRolo): Use this command in HyRolo/HyNote match buffers or 
primary file buffers")))
+  "Verify point is in a HyRolo match buffer."
+  (when (not (member (buffer-name) (nconc (list hyrolo-display-buffer
+                                               (and (car 
(hyrolo-get-file-list))
+                                                    (file-name-nondirectory 
(car (hyrolo-get-file-list)))))
+                                         (mapcar #'file-name-nondirectory
+                                                 (hpath:expand-list 
hsys-org-cycle-bob-file-list))
+                                         ;; (when (boundp 
'hynote-display-buffer)
+                                         ;;   hynote-display-buffer)
+                                         ;; (when (boundp 'hynote-file-list)
+                                         ;;   (and (car hynote-file-list)
+                                         ;;    (file-name-nondirectory (car 
hynote-file-list))))
+                                         )))
+    (error "(HyRolo): Use this command in HyRolo match buffers or primary file 
buffers")))
 
 (defun hyrolo-widen ()
   "Widen non-special HyRolo buffers mainly for adding entries or editing them."
@@ -2015,7 +2024,7 @@ of the current heading, or to 1 if the current line is 
not a heading."
   "Move back to the start of current subtree and hide everything after the 
heading.
 If within a file header, hide the whole file after the end of the current line.
 
-Necessary, since with reveal-mode active, outline-hide-subtree works
+Necessary, since with reveal-mode active, `outline-hide-subtree' works
 only if on the heading line of the subtree."
   (interactive)
   (if (and (hyrolo-hdr-in-p)
@@ -2411,37 +2420,41 @@ package is not installed."
 
     ;;  6. if not, display a buffer with the invalid file types and return t
     (when (or files-invalid-suffix-list files-no-mode-list)
-      (with-help-window "*HyRolo Errors*"
-       (princ "`hyrolo-file-list' gets its files from these patterns:\n")
-       (mapc (lambda (spec) (princ (format "\t%S\n" spec)))
-             hyrolo-file-list)
-       (terpri)
-       (princ "When expanded, it includes the following files that HyRolo 
cannot process:\n\n")
-
-       (when files-invalid-suffix-list
-         (princ (format "Files with invalid or no suffixes:\n  (valid 
suffixes: %S)\n"
-                        hyrolo-file-suffix-regexp))
-         (mapc (lambda (file) (princ (format "\t%S\n" file)))
-               files-invalid-suffix-list)
+      (unless (and (boundp 'hyrolo-boolean-only-flag) hyrolo-boolean-only-flag)
+       (with-help-window "*HyRolo Errors*"
+         (princ "`hyrolo-file-list' gets its files from these patterns:\n")
+         (mapc (lambda (spec) (princ (format "\t%S\n" spec)))
+               hyrolo-file-list)
          (terpri)
-         (princ "Please remove the above files from `hyrolo-file-list'.\n")
-         (terpri))
-
-       (when files-no-mode-list
-         (princ "Files with invalid modes (file suffixes not in 
`auto-mode-alist'):\n")
-         (mapc (lambda (file) (princ (format "\t%S\n" file)))
-               files-no-mode-list)
-         (terpri)
-         (princ "Please add appropriate entries for the above files to 
`auto-mode-alist'.\n")
-         (terpri))
-
-       (when (hyperb:stack-frame '(hyrolo-file-list-changed))
-         ;; Errors occurred with a let of `hyrolo-file-list' so
-         ;; include backtrace of where this occurred.
-         (princ "Stack trace of where invalid files were referenced:\n")
-         (terpri)
-          ;; (setq backtrace-view (plist-put backtrace-view :show-locals t))
-         (backtrace)))
+         (princ "When expanded, it includes the following files that HyRolo 
cannot process:\n\n")
+
+         (when files-invalid-suffix-list
+           (princ (format "Files with invalid or no suffixes:\n  (valid 
suffixes: %S)\n"
+                          hyrolo-file-suffix-regexp))
+           (mapc (lambda (file) (princ (format "\t%S\n" file)))
+                 files-invalid-suffix-list)
+           (terpri)
+           (princ "Please remove the above files from `hyrolo-file-list'.\n")
+           (terpri))
+
+         (when files-no-mode-list
+           (princ "Files with invalid modes (file suffixes not in 
`auto-mode-alist'):\n")
+           (mapc (lambda (file) (princ (format "\t%S\n" file)))
+                 files-no-mode-list)
+           (terpri)
+           (princ "Please add appropriate entries for the above files to 
`auto-mode-alist'.\n")
+           (terpri))
+
+         (when (hyperb:stack-frame '(hyrolo-file-list-changed))
+           ;; Errors occurred with a let of `hyrolo-file-list' so
+           ;; include backtrace of where this occurred.
+           (princ "Stack trace of where invalid files were referenced:\n")
+           (terpri)
+            ;; (setq backtrace-view (plist-put backtrace-view :show-locals t))
+           (backtrace))
+
+         (when noninteractive
+           (princ (buffer-string)))))
       t)))
 
 (defun hyrolo-buffer-exists-p (hyrolo-buf)
@@ -2600,6 +2613,19 @@ Any non-nil value returned is a cons of (<entry-name> . 
<entry-source>)."
   ;; set its parent mode property to org-mode so can `derived-mode-p'
   ;; checks will pass.
   (put 'hyrolo-org-mode 'derived-mode-parent 'org-mode)
+
+  (when (featurep 'org-fold) ;; newer Org versions
+    (when (and org-link-descriptive
+               (eq org-fold-core-style 'overlays))
+      (add-to-invisibility-spec '(org-link)))
+    (org-fold-initialize (or (and (stringp org-ellipsis) (not (equal "" 
org-ellipsis)) org-ellipsis)
+                             "..."))
+    (make-local-variable 'org-link-descriptive)
+    (when (eq org-fold-core-style 'overlays) (add-to-invisibility-spec 
'(org-hide-block . t)))
+    (if org-link-descriptive
+       (org-fold-core-set-folding-spec-property (car 
org-link--link-folding-spec) :visible nil)
+      (org-fold-core-set-folding-spec-property (car 
org-link--link-folding-spec) :visible t)))
+
   (setq-local hyrolo-entry-regexp "^\\(\\*+\\)\\([     ]+\\)"
              hyrolo-hdr-and-entry-regexp (concat hyrolo-hdr-prefix-regexp 
hyrolo-entry-regexp)
              hyrolo-entry-group-number 1
diff --git a/test/demo-tests.el b/test/demo-tests.el
index 0b1c328de8..8414396d6e 100644
--- a/test/demo-tests.el
+++ b/test/demo-tests.el
@@ -274,7 +274,6 @@
       (should (not (org-check-for-hidden 'headlines)))
       (save-excursion
        (action-key))
-;;; (org-hide-entry)
       (should (org-check-for-hidden 'headlines)))))
 
 ;; Manifest
diff --git a/test/hui-tests.el b/test/hui-tests.el
index c059fc5fda..28e51208af 100644
--- a/test/hui-tests.el
+++ b/test/hui-tests.el
@@ -3,7 +3,7 @@
 ;; Author:       Mats Lidell <ma...@gnu.org>
 ;;
 ;; Orig-Date:    30-Jan-21 at 12:00:00
-;; Last-Mod:     30-Dec-23 at 00:00:18 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 16:30:08 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -935,11 +935,14 @@ With point on label suggest that ibut for rename."
 (ert-deftest hui--link-possible-types ()
   "Verify right type is selected from referent buffer."
 
+  (hsys-org-fix-version)
+
   ;; Org Roam or Org Id       link-to-org-id
   (let ((file (make-temp-file "hypb" nil ".org")))
     (unwind-protect
         (progn
           (find-file file)
+         (erase-buffer)
           (org-id-get-create nil)
           (re-search-forward ":ID:")
          (hy-test-helpers:ensure-link-possible-type 'link-to-org-id))
diff --git a/test/hy-test-dependencies.el b/test/hy-test-dependencies.el
index ecf59675c7..7fc56087c5 100644
--- a/test/hy-test-dependencies.el
+++ b/test/hy-test-dependencies.el
@@ -3,11 +3,11 @@
 ;; Author:       Mats Lidell <ma...@gnu.org>
 ;;
 ;; Orig-Date:    20-Feb-21 at 23:16:00
-;; Last-Mod:      2-Oct-23 at 04:48:58 by Bob Weiner
+;; Last-Mod:     13-Jan-24 at 20:08:39 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
-;; Copyright (C) 2021  Free Software Foundation, Inc.
+;; Copyright (C) 2021-2024  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -18,12 +18,13 @@
 
 ;;; Code:
 
+(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/";))
+(package-initialize)
+
 (require 'hload-path)
+(require 'hyperbole)
 (add-to-list 'load-path (expand-file-name "test" hyperb:dir))
 
-(package-initialize)
-(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/";))
-
 (defun hy-test-ensure-package-installed (pkg-symbol)
   (unless (package-installed-p pkg-symbol)
     (package-refresh-contents)
@@ -35,5 +36,17 @@
 ;; Needed when `hypb:display-file-with-logo' uses `org-mode'.
 (setq hsys-org-enable-smart-keys t)
 
+(require 'pp)
+(terpri)
+(print (format "org-directory = %S" (ignore-errors (org-find-library-dir 
"org"))))
+(print (format "ord-load-dir  = %S" (ignore-errors (org-find-library-dir 
"org-loaddefs"))))
+(print (format "version       = %S" (org-release)))
+(terpri)
+
+(let ((org-reloaded (hsys-org-fix-version)))
+  (if org-reloaded
+      (message "Mixed Org versions fixed and reloaded; version is now %s" 
org-version)
+    (message "Correct, single version of Org is active %s" org-version)))
+
 (provide 'hy-test-dependencies)
 ;;; hy-test-dependencies.el ends here
diff --git a/test/hy-test-helpers.el b/test/hy-test-helpers.el
index 80bd4814f3..1ac28dd1a4 100644
--- a/test/hy-test-helpers.el
+++ b/test/hy-test-helpers.el
@@ -3,7 +3,7 @@
 ;; Author:       Mats Lidell <ma...@gnu.org>
 ;;
 ;; Orig-Date:    30-Jan-21 at 12:00:00
-;; Last-Mod:      7-Jan-24 at 00:56:08 by Mats Lidell
+;; Last-Mod:     13-Jan-24 at 16:21:45 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -19,7 +19,7 @@
 ;;; Code:
 
 (require 'ert)
-(require 'hmouse-drv)                   ;For `action-key'.
+(require 'hmouse-drv)                   ; For `action-key'
 (eval-when-compile (require 'cl-lib))
 
 (defun hy-test-helpers:consume-input-events ()
diff --git a/test/hyrolo-tests.el b/test/hyrolo-tests.el
index e033a471da..4ede38fa42 100644
--- a/test/hyrolo-tests.el
+++ b/test/hyrolo-tests.el
@@ -3,7 +3,7 @@
 ;; Author:       Mats Lidell <ma...@gnu.org>
 ;;
 ;; Orig-Date:    19-Jun-21 at 22:42:00
-;; Last-Mod:      7-Jan-24 at 01:00:43 by Mats Lidell
+;; Last-Mod:     13-Jan-24 at 20:05:16 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -464,7 +464,8 @@ Match a string in the second cell."
   (let ((tmp-file (make-temp-file "hypb" nil)))
     (unwind-protect
         (should-error
-         (let ((hyrolo-file-list (list tmp-file)))
+         (let* ((hyrolo-boolean-only-flag t)
+               (hyrolo-file-list (list tmp-file)))
            ()))
       (hy-delete-file-and-buffer tmp-file))))
 
@@ -773,7 +774,6 @@ Make cell start with HEADING and follow by next line BODY."
 
 (ert-deftest hyrolo-tests--outline-hide-show-heading ()
   "Verify hiding and showing headings."
-  (skip-unless (version< org-version "9.6"))
   (let* ((org-file (make-temp-file "hypb" nil ".org"
                                    (hyrolo-tests--gen-outline ?* "heading" 1 
"body" 2)))
          (hyrolo-file-list (list org-file)))
@@ -815,7 +815,6 @@ Make cell start with HEADING and follow by next line BODY."
 
 (ert-deftest hyrolo-tests--outline-show-when-moving-out-of-hidden-line ()
   "Verify region is shown after moving out of hidden area."
-  (skip-unless (version< org-version "9.6"))
   (let* ((org-file (make-temp-file "hypb" nil ".org"
                                    (hyrolo-tests--gen-outline ?* "heading" 1 
"body" 2)))
          (hyrolo-file-list (list org-file)))


Reply via email to