[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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </td><td valign="top"><a
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-koutline-link">koutline
link</a>:</td><td> </td><td valign="top"><a
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-koutline-mode">koutline
mode</a>:</td><td> </td><td valign="top"><a
href="#Inserting-and-Importing">Inserting and Importing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Koutline-mode">Koutline
mode</a>:</td><td> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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
- [elpa] externals/hyperbole updated (6c5002e670 -> ce463d27c9), ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole f4d6c729a1 001/143: Hyrolo fixes; EXAMPLE.kotl save {C-u C-h h k e} default to home dir, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole e1483d9cff 003/143: Temp commit to save multi-mode updates to HyRolo display buffer, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 802a688acf 006/143: Fix hyrolo-mode-map outlining key bindings, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 5703cf7608 007/143: HyRolo caching and movement fixes, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 6550a0ac7c 013/143: hyrolo-any-file-type-problem-p - Add to handle invalid file suffixes,
ELPA Syncer <=
- [elpa] externals/hyperbole 2173bf7e09 002/143: Add new HYPERAMP.org talk slides and update talks in HY-TALK, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 339c6a2a8d 005/143: Fixes for handling outline-regexp and hyrolo-entry-regexp, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 97111e4bd0 004/143: Merge branch 'master' into rsw, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 1f942eac01 008/143: Fix HyRolo {n} and {p} movement commands, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole ca3cf8e427 017/143: hyrolo.el - Fix {t} and {o} commands, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole bc0c5b9086 044/143: HyRolo - if hyrolo-file-list is set on load, initialize its cache, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 1f45b45af9 047/143: Add hyrolo-get-file-list tests, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 38110ee8f7 065/143: Makefile - Change running of ert tests from interactively to batch, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 407114d7f3 070/143: Run tests in batch mode specified by selector, ELPA Syncer, 2024/02/19
- [elpa] externals/hyperbole 926f8a02fd 010/143: Fix many hyrolo multi-file-format issues; fix hywconfig by name, ELPA Syncer, 2024/02/19