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

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

[elpa] externals/hyperbole 6550a0ac7c 013/143: hyrolo-any-file-type-prob


From: ELPA Syncer
Subject: [elpa] externals/hyperbole 6550a0ac7c 013/143: hyrolo-any-file-type-problem-p - Add to handle invalid file suffixes
Date: Mon, 19 Feb 2024 15:58:45 -0500 (EST)

branch: externals/hyperbole
commit 6550a0ac7c8ed1e6fd5accc5611944ac62e32732
Author: bw <rsw@gnu.org>
Commit: bw <rsw@gnu.org>

    hyrolo-any-file-type-problem-p - Add to handle invalid file suffixes
    
    Will also install the markdown-mode package as necessary when a Markdown 
file
    is specified in 'hyrolo-file-list'.  This fixes failures with Markdown files
    improperly put into fundamental-mode which means their headings are not
    recognized properly.
    
    hload-path.el (auto-mode-alist): Setup to invoke 'outline-mode' on ".otl"
    suffixed files.
    
    man/hyperbole.texi (HyRolo Concepts):
    hyrolo.el (hyrolo-file-list): Update doc to specify allowable file suffixes
      and types.
---
 ChangeLog          |  18 +++++++++++++
 hload-path.el      |  12 ++++++---
 hui-jmenu.el       |   6 ++---
 hypb.el            |  47 ++++++++++++++++++++++++++++++++-
 hyrolo.el          |  75 +++++++++++++++++++++++++++++++++++++++++++++++------
 man/hyperbole.html |  56 ++++++++++++++++++++++++++++++++-------
 man/hyperbole.info | Bin 615904 -> 617671 bytes
 man/hyperbole.pdf  | Bin 1370426 -> 1371766 bytes
 man/hyperbole.texi |  24 ++++++++++++-----
 9 files changed, 206 insertions(+), 32 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f865876778..92cb4d0681 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
+2023-12-24  Bob Weiner  <rsw@gnu.org>
+
+* hyrolo.el (hyrolo-any-file-type-problem-p): Add to handle file suffixes
+    that HyRolo cannot handle and to install the markdown-mode package as
+    necessary when a Markdown file is specified in 'hyrolo-file-list'.
+            (hyrolo-let-file-list, hyrolo-set-file-list): Call above function.
+    This fixes failures with Markdown files improperly put into 
fundamental-mode
+    which means their headings are not recognized properly.
+
+* hload-path.el (auto-mode-alist): Setup to invoke 'outline-mode' on ".otl"
+    suffixed files.
+
+* man/hyperbole.texi (HyRolo Concepts):
+  hyrolo.el (hyrolo-file-list): Update doc to specify allowable file suffixes
+    and types.
+
 2023-12-23  Bob Weiner  <rsw@gnu.org>
 
+* hypb.el (hypb:major-mode-from-file-name): Add for initial use in "hyrolo.el".
+
 * hactypes.el (link-to-regexp-match): Fix to use arg 'n' in the regexp search.
 
 * kotl/kotl-mode.el (kotl-mode): Ensure local vars are set if current buffer
diff --git a/hload-path.el b/hload-path.el
index 0a9830f6d6..b306fc2950 100644
--- a/hload-path.el
+++ b/hload-path.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    29-Jun-16 at 14:39:33
-;; Last-Mod:     19-Nov-23 at 23:18:02 by Bob Weiner
+;; Last-Mod:     24-Dec-23 at 00:41:54 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -57,16 +57,20 @@ directory separator character.")
 (add-to-list 'load-path (directory-file-name hyperb:dir))
 
 ;;; ************************************************************************
-;;; Koutliner mode and file suffix importation settings
+;;; Koutliner mode and file suffix settings
 ;;; ************************************************************************
 
-;; Perform Koutliner initializations.
-
 (add-to-list 'load-path (expand-file-name "kotl" hyperb:dir))
 ;; Invoke kotl-mode for files ending in ".kotl".
 ;; Also allow ".kot" for DOS and Windows users.
 (add-to-list 'auto-mode-alist '("\\.kotl?\\'" . kotl-mode))
 
+;;; ************************************************************************
+;;; Emacs Outline settings for .otl files
+;;; ************************************************************************
+
+(add-to-list 'auto-mode-alist '("\\.otl\\'" . outline-mode))
+
 ;;; ************************************************************************
 ;;; Hyperbole test importation settings
 ;;; ************************************************************************
diff --git a/hui-jmenu.el b/hui-jmenu.el
index fd72bc4bf1..a07cee36b8 100644
--- a/hui-jmenu.el
+++ b/hui-jmenu.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:     9-Mar-94 at 23:37:28
-;; Last-Mod:      3-Oct-23 at 23:25:31 by Mats Lidell
+;; Last-Mod:     24-Dec-23 at 00:06:07 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -147,9 +147,9 @@ Jump to chosen buffer."
     "----"
     ["Name-Configuration" hywconfig-add-by-name     t]
     ["Delete-Name"        hywconfig-delete-by-name
-     (frame-parameter nil 'hywconfig-names)]
+     (frame-parameter nil 'named-hywconfigs)]
     ["Restore-Name"       hywconfig-restore-by-name
-     (frame-parameter nil 'hywconfig-names)]
+     (frame-parameter nil 'named-hywconfigs)]
     "----"
     ["Pop-from-Ring"      hywconfig-delete-pop      (not 
(hywconfig-ring-empty-p))]
     ["Save-to-Ring"       hywconfig-ring-save       t]
diff --git a/hypb.el b/hypb.el
index 6f1f590593..798337fd21 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:     23-Dec-23 at 01:16:28 by Bob Weiner
+;; Last-Mod:     23-Dec-23 at 23:57:52 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -720,6 +720,51 @@ then `locate-post-command-hook'."
                     current-prefix-arg))
   (locate search-string filter arg))
 
+
+;; Adapted from `set-auto-mode' in "files.el".
+;;;###autoload
+(defun hypb:major-mode-from-file-name (name)
+  "Return `major-mode' function for file NAME from file name alone.
+If no matching rule in `auto-mode-alist' or NAME is invalid,
+return nil."
+  (when (stringp name)
+    (let ((remote-id (file-remote-p name))
+         (case-insensitive-p (file-name-case-insensitive-p
+                              name))
+         mode)
+      ;; Remove backup-suffixes from file name.
+      (setq name (file-name-sans-versions name))
+      ;; Remove remote file name identification.
+      (when (and (stringp remote-id)
+                (string-match (regexp-quote remote-id) name))
+       (setq name (substring name (match-end 0))))
+      (while name
+       ;; Find first matching alist entry.
+       (setq mode
+             (if case-insensitive-p
+                 ;; Filesystem is case-insensitive.
+                 (let ((case-fold-search t))
+                   (assoc-default name auto-mode-alist
+                                  'string-match))
+               ;; Filesystem is case-sensitive.
+               (or
+                ;; First match case-sensitively.
+                (let ((case-fold-search nil))
+                  (assoc-default name auto-mode-alist
+                                 'string-match))
+                ;; Fallback to case-insensitive match.
+                (and auto-mode-case-fold
+                     (let ((case-fold-search t))
+                       (assoc-default name auto-mode-alist
+                                      'string-match))))))
+       (if (and mode
+                (consp mode)
+                (cadr mode))
+           (setq mode (car mode)
+                 name (substring name 0 (match-beginning 0)))
+         (setq name nil)))
+      mode)))
+
 ;;;###autoload
 (defun hypb:map-plist (func plist)
   "Apply FUNC of two args, key and value, to key-value pairs in PLIST."
diff --git a/hyrolo.el b/hyrolo.el
index e182535685..8a19b7337a 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:     22-Dec-23 at 22:44:50 by Bob Weiner
+;; Last-Mod:     24-Dec-23 at 02:38:06 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -17,7 +17,8 @@
 ;;  This is Hyperbole's advanced rolo system, HyRolo, for convenient
 ;;  management of hierarchical, record-oriented information.  Most
 ;;  often this is used for contact management but it can quickly be
-;;  adapted to most any record-oriented lookup task, for fast retrieval.
+;;  adapted to most any record-oriented lookup task, for fast, full-text
+;;  retrieval.
 ;;
 ;;  See all the autoloaded functions herein for interactive commands.
 ;;  See the Info manual entry "(hyperbole)HyRolo" for usage information.
@@ -134,7 +135,9 @@ executable must be found as well (for Oauth security)."
 (defcustom hyrolo-file-list nil
   "List of files containing hyrolo entries.
 The first file should be a user-specific hyrolo file, typically in the home
-directory.
+directory and must have a suffix of either .org (Org mode) or .otl (Emacs
+Outline mode).  Other files in the list may use suffixes of .org, .otl, .md
+(Markdown mode) or .kotl (Koutline mode).
 
 A hyrolo-file consists of:
    (1) an optional header beginning with and ending with a line which matches
@@ -970,7 +973,9 @@ Raise an error if a match is not found."
 ;;;###autoload
 (defun hyrolo-let-file-list (symbol value)
   (set symbol value)
-  (setq hyrolo--expanded-file-list (hyrolo-expand-path-list value)))
+  (setq hyrolo--expanded-file-list (hyrolo-expand-path-list value))
+  (when (hyrolo-any-file-type-problem-p)
+    (error "(HyRolo): Invalid files used in `hyrolo-file-list'; see the 
*HyRolo Errors* buffer")))
 
 ;;;###autoload
 (defun hyrolo-set-file-list (symbol value)
@@ -978,6 +983,8 @@ Raise an error if a match is not found."
   (setq hyrolo--expanded-file-list (hyrolo-expand-path-list value))
   (unless (symbol-value symbol)
     (set-default symbol hyrolo--expanded-file-list))
+  (when (hyrolo-any-file-type-problem-p)
+    (error "(HyRolo): Invalid files used in `hyrolo-file-list'; see the 
*HyRolo Errors* buffer"))
   ;; Prompt user to rename old personal rolo file to new name, if necessary.
   (unless (or noninteractive (hyperb:stack-frame '(hyrolo-rename)))
     (call-interactively 'hyrolo-rename)))
@@ -1416,7 +1423,7 @@ otherwise just use the cdr of the item."
 (defun hyrolo-helm-org-rifle (&optional context-only-flag)
   "Search with helm and interactively show all matches from `hyrolo-file-list'.
 Prompt for the search pattern.
-Search only readable .org and .otl files.  With optional prefix
+Search readable .org and .otl files only.  With optional prefix
 arg CONTEXT-ONLY-FLAG, show one extra line only of context around
 a matching line, rather than entire entries."
   (interactive "P")
@@ -1460,9 +1467,9 @@ entries."
 ;;;###autoload
 (defun hyrolo-helm-org-rifle-directories (&optional context-only-flag &rest 
dirs)
   "Interactively search over Emacs outline format files in rest of DIRS.
-Only readable .org and .otl files are searched.  With optional
-prefix arg CONTEXT-ONLY-FLAG, show one extra line only of context
-around a matching line, rather than entire entries."
+Search readable .org and .otl files only.  With optional prefix
+arg CONTEXT-ONLY-FLAG, show one extra line only of context around
+a matching line, rather than entire entries."
   (interactive "P")
   (let ((hyrolo-file-list (hypb:filter-directories "\\.\\(org\\|otl\\)$" 
dirs)))
     (hyrolo-helm-org-rifle context-only-flag)))
@@ -2172,6 +2179,58 @@ Entry is inserted before point.  The region is between 
START to END."
     (hyrolo-highlight-matches regexp opoint (point))
     (set-buffer hyrolo-buf)))
 
+(defun hyrolo-any-file-type-problem-p ()
+  "Return t if any file from `hyrolo-file-list' has an unusable format.
+The list of unusable files is displayed in a HyRolo error window.
+This will install `markdown-mode' if any Markdown files are specified and the
+package is not installed."
+  ;;  1. Ignore files without suffixes
+  (let ((file-suffixes
+        (delq nil (mapcar (lambda (filename) (file-name-extension filename))
+                          (hyrolo-get-file-list))))
+       file-and-major-mode-list
+       files-no-mode-list
+       package-archives)
+
+    ;;  2. If any `hyrolo-file-list' file has a markdown file suffix,
+    (when (delq nil (mapcar (lambda (suffix)
+                             (string-match 
"\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'"
+                                           suffix))
+                           file-suffixes))
+
+      ;;  3. ensure the markdown-mode package is installed from melpa.
+      (unless (package-installed-p 'markdown-mode)
+       ;;  4. if not, ensure melpa is temporarily added to package
+       ;;     source list and then install markdown-mode.
+       (unless (assoc "melpa" package-archives)
+         (setq package-archives (cl-copy-list package-archives))
+         (add-to-list 'package-archives '("melpa" . 
"https://melpa.org/packages/";) t))
+       (package-install 'markdown-mode)))
+
+    ;;  5. Check that each suffix has an entry in auto-mode-alist,
+    (setq file-and-major-mode-list
+         (mapcar (lambda (filename) (cons filename
+                                          (hypb:major-mode-from-file-name 
filename)))
+                 (hyrolo-get-file-list))
+         files-no-mode-list
+         (delq nil (mapcar (lambda (item) (when (null (cdr item)) (car item)))
+                           file-and-major-mode-list)))
+    ;;  6. if not, display a buffer with the invalid file types and return t
+    (when files-no-mode-list
+      (with-help-window "*HyRolo Errors*"
+       (princ "hyrolo-file-list specifies invalid HyRolo files:\n")
+       (mapc (lambda (spec) (princ (format "\t%S" spec)) (terpri))
+             hyrolo-file-list)
+       (terpri)
+       (princ "When expanded, includes these files that HyRolo cannot 
process\n")
+       (princ "because their file suffixes are not in `auto-mode-alist':\n")
+       (mapc (lambda (file) (princ (format "\t%S" file)) (terpri))
+             files-no-mode-list)
+       (terpri)
+       (princ "Please either remove the above files from `hyrolo-file-list'\n")
+       (princ "or add appropriate entries for them to `auto-mode-alist'.\n"))
+      t)))
+
 (defun hyrolo-buffer-exists-p (hyrolo-buf)
   "Return buffer given by HYROLO-BUF or nil.
 HYROLO-BUF may be a file-name, `buffer-name', or buffer."
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 7ff9fdb17b..bc4a13c7ec 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -382,7 +382,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 9.0.0
-Printed December 3, 2023.
+Printed December 24, 2023.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -3176,6 +3176,15 @@ activated anywhere within such a line.
 breakpoint line.  This works with gdb, dbx, and xdb.  Such lines are
 recognized in any buffer.
 </p>
+<a name="index-ibtypes-hib_002dpython_002dtraceback"></a>
+<a name="index-pdb"></a>
+<a name="index-python-traceback"></a>
+<a name="index-python-error"></a>
+<a name="index-source-line-1"></a>
+</dd>
+<dt><code>hib-python-traceback</code></dt>
+<dd><p>Test for and jump to line referenced in Python pdb, traceback, or 
pytype error.
+</p>
 <a name="index-ibtypes-grep_002dmsg"></a>
 <a name="index-grep"></a>
 <a name="index-compiler-error-1"></a>
@@ -3185,6 +3194,13 @@ recognized in any buffer.
 <dd><p>Jump to the line associated with a grep or compilation error message.
 Messages are recognized in any buffer.
 </p>
+<a name="index-hyrolo_002dstuck_002dmsg"></a>
+<a name="index-hyrolo-error"></a>
+</dd>
+<dt><code>hyrolo-stuck-msg</code></dt>
+<dd><p>Jump to the position where a HyRolo search has become stuck from the 
error.
+Such errors are recognized in any buffer.
+</p>
 <a name="index-ibtypes-ripgrep_002dmsg"></a>
 <a name="index-grep-1"></a>
 <a name="index-ripgrep"></a>
@@ -7137,12 +7153,22 @@ Next: <a href="#HyRolo-Menu" accesskey="n" 
rel="next">HyRolo Menu</a>, Previous:
 
 <a name="index-rolo-file"></a>
 <a name="index-rolo-entry"></a>
-<p>HyRolo manages and searches rolo files.  A <em>rolo file</em> consists of
+<a name="index-hyrolo_002dfile_002dlist"></a>
+<p>HyRolo manages and searches a list of rolo files stored in the
+<code>hyrolo-file-list</code> custom option.  A <em>rolo file</em> consists of
 an optional header that starts and ends with a line of equal signs (at
 least three equal signs starting at the beginning of a line), followed
-by zero or more rolo records which we call entries.  You must manually
-add a header to any rolo file if you want it to have one.  Rolo files
-may be Emacs outline files, Org files, Markdown files or Koutline files.
+by zero or more rolo records which we call entries.
+</p>
+<a name="index-Org-mode"></a>
+<a name="index-Markdown-mode"></a>
+<a name="index-Emacs-Outline-mode"></a>
+<a name="index-Koutline-mode"></a>
+<p>The first file in the list should be a user-specific hyrolo file,
+typically in the home directory and must have a suffix of either .org
+(Org mode) or .otl (Emacs Outline mode).  Other files in the list may
+use suffixes of .org, .otl, .md (Markdown mode) or .kotl (Koutline
+mode).
 </p>
 <p>Rolo <em>entries</em> begin with optional space, followed by a delimiter of
 one or more special characters followed by another space.  Delimiters
@@ -7562,7 +7588,7 @@ Previous: <a href="#HyRolo-Keys" accesskey="p" 
rel="prev">HyRolo Keys</a>, Up: <
 <a name="HyRolo-Settings-1"></a>
 <h3 class="section">8.5 HyRolo Settings</h3>
 
-<a name="index-hyrolo_002dfile_002dlist"></a>
+<a name="index-hyrolo_002dfile_002dlist-1"></a>
 <a name="index-rolo_002c-personal"></a>
 <p>The files used in any rolo search are given by the
 <code>hyrolo-file-list</code> variable, whose default value is typically
@@ -11619,7 +11645,7 @@ Next: <a href="#Smart-Key-_002d-Ivy" accesskey="n" 
rel="next">Smart Key - Ivy</a
 <h4 class="subsection">E.2.2 Smart Key - Org Mode</h4>
 
 <a name="index-hsys_002dorg_002denable_002dsmart_002dkeys-1"></a>
-<a name="index-Org-mode"></a>
+<a name="index-Org-mode-1"></a>
 <div class="format">
 <pre class="format">When in an Org mode context and 
<code>hsys-org-enable-smart-keys</code> is non-nil:
   ACTION KEY
@@ -14532,7 +14558,8 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002demail_002dformat">hyrolo-email-format</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dentry_002dregexp">hyrolo-entry-regexp</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfgrep"><code>hyrolo-fgrep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
-<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfile_002dlist">hyrolo-file-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfile_002dlist">hyrolo-file-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Concepts">HyRolo Concepts</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfile_002dlist-1">hyrolo-file-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dfind_002dfile"><code>hyrolo-find-file</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgoogle_002dcontacts_002dfgrep"><code>hyrolo-google-contacts-fgrep</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dgoogle_002dcontacts_002dflag">hyrolo-google-contacts-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
@@ -14548,6 +14575,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dmode_002dhook">hyrolo-mode-hook</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsave_002dbuffers_002dafter_002duse">hyrolo-save-buffers-after-use</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Settings">HyRolo Settings</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dsort"><code>hyrolo-sort</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dstuck_002dmsg"><code>hyrolo-stuck-msg</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Implicit-Button-Types">Implicit Button 
Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dword"><code>hyrolo-word</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dyank"><code>hyrolo-yank</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyRolo-Menu">HyRolo Menu</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hyrolo_002dyank_002dreformat_002dfunction">hyrolo-yank-reformat-function</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Hook-Variables">Hook Variables</a></td></tr>
@@ -14582,6 +14610,7 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a href="#index-ibtypes-glink"><code>ibtypes 
glink</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-gnus_002dpush_002dbutton"><code>ibtypes 
gnus-push-button</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-grep_002dmsg"><code>ibtypes 
grep-msg</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-ibtypes-hib_002dpython_002dtraceback"><code>ibtypes 
hib-python-traceback</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-hyp_002daddress"><code>ibtypes 
hyp-address</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-hyp_002dsource"><code>ibtypes 
hyp-source</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-ibtypes-hyperbole_002drun_002dtest"><code>ibtypes 
hyperbole-run-test</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -15249,6 +15278,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Emacs-Lisp-variables">Emacs Lisp 
variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Emacs-Lisp-variables-1">Emacs 
Lisp variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Link-Variable-Substitution">Link Variable Substitution</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-emacs-outline">emacs 
outline</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Emacs-Outline-mode">Emacs 
Outline mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo-Concepts">HyRolo Concepts</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Emacs-package-manager">Emacs 
package manager</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Elpa-Stable-Package-Installation">Elpa Stable Package 
Installation</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Emacs-Regression-Test-_0028ERT_0029-symbol">Emacs Regression Test 
(ERT) symbol</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Emacs-Regression-Test-framework">Emacs Regression Test 
framework</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -15428,6 +15458,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-hypertext-2">hypertext</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-HyRolo">HyRolo</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyRolo">HyRolo</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-HyRolo-commands">HyRolo 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-hyrolo-error">hyrolo 
error</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hyrolo-matches">hyrolo 
matches</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-HyRolo-Match-Buffers">Smart Key - HyRolo Match 
Buffers</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-HyRolo-menu">HyRolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Menu">HyRolo 
Menu</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-hyrolo-menu">hyrolo 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Keys">HyRolo 
Keys</a></td></tr>
@@ -15562,6 +15593,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-Koutline-import">Koutline 
import</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-koutline-link">koutline 
link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-koutline-mode">koutline 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Koutline-mode">Koutline 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Concepts">HyRolo 
Concepts</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Koutliner-commands">Koutliner 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Menu-Commands">Menu 
Commands</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Koutliner-import_002fexport-commands">Koutliner import/export 
commands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Menu-Commands">Menu 
Commands</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Koutliner-menu">Koutliner 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Menu-Commands">Menu 
Commands</a></td></tr>
@@ -15630,6 +15662,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-man-pages">man 
pages</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-margin">margin</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Filling">Filling</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-markdown-link">markdown 
link</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Markdown-mode">Markdown 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Concepts">HyRolo 
Concepts</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-markup-pair">markup 
pair</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Thing-Selection">Thing 
Selection</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-markup-pair-1">markup 
pair</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Delimited-Things">Smart Key - Delimited 
Things</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-match-lines">match 
lines</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -15804,7 +15837,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-option-settings">option 
settings</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Org-ID">Org 
ID</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Org-Mode">Smart Key - Org Mode</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Org-link_002c-outside-Org">Org 
link, outside Org</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Org-Mode">Smart Key - Org Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Org-mode">Org 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Org-Mode">Smart Key - Org Mode</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Org-mode">Org 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HyRolo-Concepts">HyRolo 
Concepts</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Org-mode-1">Org 
mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Org-Mode">Smart Key - Org Mode</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-Org-tables">Org 
tables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Promoting-and-Demoting">Promoting and Demoting</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-org_002dmode">org-mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-Org_002dmode">Org-mode</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Questions-and-Answers">Questions and Answers</a></td></tr>
@@ -15859,6 +15893,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-pathname">pathname</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-pathname-variables">pathname 
variables</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-pathname_002c-line-and-column">pathname, line and 
column</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-pdb">pdb</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-permanent-identifier">permanent 
identifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Koutliner">Koutliner</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-permanent-identifier-1">permanent 
identifier</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Idstamps">Idstamps</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-pipe-character">pipe 
character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#View-Specs">View 
Specs</a></td></tr>
@@ -15876,6 +15911,8 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a 
href="#index-proportional-scrolling">proportional 
scrolling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Glossary">Glossary</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-proportional-scrolling-1">proportional 
scrolling</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Smart-Key-_002d-Smart-Scrolling">Smart Key - Smart 
Scrolling</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-pulldown-menu">pulldown 
menu</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-python-error">python 
error</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-python-traceback">python 
traceback</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Concept-Index_cp_letter-Q">Q</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-quit-HyControl">quit 
HyControl</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -16004,6 +16041,7 @@ Previous: <a href="#Function" accesskey="p" 
rel="prev">Function</a>, Up: <a href
 <tr><td></td><td valign="top"><a href="#index-social-media">social 
media</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-social-reference">social 
reference</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-source-line">source 
line</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-source-line-1">source 
line</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-source-point">source 
point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#By-Link">By 
Link</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-splitting-a-cell">splitting a 
cell</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Splitting-and-Appending">Splitting and Appending</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-stable-release-installation">stable release 
installation</a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Elpa-Stable-Package-Installation">Elpa Stable Package 
Installation</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index 8d1890f832..20b8514b45 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 6f491493fe..5966ba07e6 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 562cf9861c..30475d7fd0 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:     21-Dec-23 at 13:10:20 by Bob Weiner
+@c Last-Mod:     24-Dec-23 at 00:20:35 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 9.0.0
-Printed December 21, 2023.
+Printed December 24, 2023.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -198,7 +198,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 @example
 Edition 9.0.0
-December 21, 2023
+December 24, 2023
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -5956,12 +5956,22 @@ tool.
 
 @cindex rolo file
 @cindex rolo entry
-HyRolo manages and searches rolo files.  A @dfn{rolo file} consists of
+@vindex hyrolo-file-list
+HyRolo manages and searches a list of rolo files stored in the
+@code{hyrolo-file-list} custom option.  A @dfn{rolo file} consists of
 an optional header that starts and ends with a line of equal signs (at
 least three equal signs starting at the beginning of a line), followed
-by zero or more rolo records which we call entries.  You must manually
-add a header to any rolo file if you want it to have one.  Rolo files
-may be Emacs outline files, Org files, Markdown files or Koutline files.
+by zero or more rolo records which we call entries.
+
+@cindex Org mode
+@cindex Markdown mode
+@cindex Emacs Outline mode
+@cindex Koutline mode
+The first file in the list should be a user-specific hyrolo file,
+typically in the home directory and must have a suffix of either .org
+(Org mode) or .otl (Emacs Outline mode).  Other files in the list may
+use suffixes of .org, .otl, .md (Markdown mode) or .kotl (Koutline
+mode).
 
 Rolo @dfn{entries} begin with optional space, followed by a delimiter of
 one or more special characters followed by another space.  Delimiters



reply via email to

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