branch: externals/hyperbole
commit ca3cf8e42784c25ba8ffa6dc9520bd0f78c309c4
Author: bw <[email protected]>
Commit: bw <[email protected]>
hyrolo.el - Fix {t} and {o} commands
Disable reveal-mode until can get it to work properly with
outline-minor-mode.
Fix hyrolo-tests.el tests that prompt to re-read-in files.
---
ChangeLog | 66 ++++++++++---
HY-NEWS | 2 +-
hib-doc-id.el | 4 +-
hyrolo-logic.el | 2 +-
hyrolo.el | 265 +++++++++++++++++++++++++++++++--------------------
kotl/kimport.el | 6 +-
kotl/kotl-mode.el | 10 +-
man/hyperbole.html | 8 +-
man/hyperbole.info | Bin 618111 -> 618127 bytes
man/hyperbole.pdf | Bin 1372120 -> 1372135 bytes
man/hyperbole.texi | 6 +-
test/hyrolo-tests.el | 42 ++++----
12 files changed, 254 insertions(+), 157 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 14128fd64b..06bd7e6f06 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,46 @@
+2023-12-26 Bob Weiner <[email protected]>
+
+* test/hyrolo-tests.el: Fix with-simulated-input where prompting for 'y'.
+
+* hyrolo.el (hyrolo-map-matches, hyrolo-funcall-match): Ensure point ends up
+ on a visible point so that reveal-mode does not force and unhide of the
entry.
+ Remove the above logic from 'hyrolo-show-levels' since it calls
+ 'hyrolo-map-matches'.
+ (hyrolo-mode): For now, stop enabling 'reveal-mode' until can get
it
+ working right with the enabling of 'outline-minor-mode' when switch major
modes
+ in "*HyRolo*", typically using 'hyrolo-funcall-match' or
'hyrolo-map-matches'.
+
+* test/hyrolo-tests.el (hyrolo-sort-test): Enable this test.
+ hyrolo.el (hyrolo-add): Fix this function to insert sub-entries in the right
+ location so 'hyrolo-sort-test' passes.
+
2023-12-25 Bob Weiner <[email protected]>
+* hyrolo.el (hyrolo-entry-regexp): Rename to 'hyrolo-hdr-and-entry-regexp' and
+ in 'hyrolo-mode' extend its value to include all multiple trailing
whitespace
+ chars after the entry delimiter.
+ Add new variable `hyrolo-entry-regexp' which does not match to file headers.
+
+* hyrolo.el (require 'reveal): Add since overload its functions now.
+
+* kotl/kotl-mode.el (kotl-mode:reveal-toggle-invisible): Fix by adding
+ 'get-buffer' call around 'hyrolo-display-buffer'. Otherwise, the buffer
+ comparison would always fail.
+
* hyrolo.el (hyrolo-hdr-move-after-p): Modify to handle when point is not at
the start of but is on a hdr separator or loc line.
- (hyrolo-to-entry-beginning): Fix to move past any file hdr.
+ (hyrolo-to-entry-beginning): Fix to move past any file hdr.
+ (hyrolo-map-matches): Fix calls to this that are mode-specific by
adding
+ second arg of t.
+ (hyrolo-show-levels): Rewrite so handles all behavior for {t} and
{o}
+ key bindings.
+ (hyrolo-overview, hyrolo-top-level): Simplify for new version of
+ 'hyrolo-show-levels'.
+ (outline-mode-hook): Fix to apture only one whitespace char in
+ 'outline-regexp' so 'hyrolo-outline-level' function works properly.
+ (hyrolo-grep-file): Require a final blank line so that
+ 'outline-hide-sublevels' won't hide it and combine with any next file
header.
+ (hyrolo-min-matched-level): Fix to start with max val rather than min
val.
* man/hyperbole.texi (HyRolo Keys): Document [ and ] keys to move to prev and
next buffer/file @loc> line.
@@ -20,7 +58,7 @@
(outline-mode-hook): Add to configure outline-mode for use with
HyRolo.
(hyrolo-org-mode): Update to set all local hyrolo variables.
-* kotl/kotl-mode.el (kotl-mode): Set 'outline-regexp' to match
'hyrolo-entry-regexp'
+* kotl/kotl-mode.el (kotl-mode): Set 'outline-regexp' to match
'hyrolo-hdr-and-entry-regexp'
to account for file headers in 'hyrolo-mode' (multi-format major-mode).
2023-12-24 Bob Weiner <[email protected]>
@@ -77,7 +115,7 @@
* kotl/kotl-mode.el (kotl-mode): Disable 'change-major-mode-hook' addition of
'kotl-mode:show-all' if in the HyRolo display buffer.
-* hyrolo.el (hyrolo-entry-regexp): Add 'hyrolo-hdr-regexp' and
'hbut:source-prefix'
+* hyrolo.el (hyrolo-hdr-and-entry-regexp): Add 'hyrolo-hdr-regexp' and
'hbut:source-prefix'
so are not skipped during hide/show operations. Also do this in
'markdown-mode-hook' and 'kotl-mode'.
@@ -237,7 +275,7 @@
in HyRolo display match buffer when displaying parts of Koutlines.
* hyrolo.el (hyrolo-cache-set-major-mode): Move to this function the
- addition of 'hyrolo-hdr-regexp' to both 'hyrolo-entry-regexp' and
+ addition of 'hyrolo-hdr-regexp' to both 'hyrolo-hdr-and-entry-regexp' and
'outline-regexp' within the *HyRolo* display match buffer.
(hyrolo-markdown-outline-level, hyrolo-cache-set-major-mode):
Fix markdown 'outline-level' function to always return a non-nil level.
@@ -293,7 +331,7 @@
(hyrolo-grep-file): Add call to 'hyrolo--cache-locals'.
(hyrolo-grep): Remove concatenated 'outline-regexps' and
'hyrolo-entry-regexps'.
They are no longer used. Move header matching in `outline-regexp' and
- `hyrolo-entry-regexp' to 'hyrolo--cache-matched-buffer'.
+ `hyrolo-hdr-and-entry-regexp' to 'hyrolo--cache-matched-buffer'.
2023-12-07 Mats Lidell <[email protected]>
@@ -548,7 +586,7 @@
(hyrolo-find-file): Improve 'outline-regexp' handling and set
'outline-level' function if an Emacs outline.
(hyrolo-add): Compare entry-regexp against default-value of
- 'hyrolo-entry-regexp' rather than a literal string.
+ 'hyrolo-hdr-and-entry-regexp' rather than a literal string.
2023-11-14 Bob Weiner <[email protected]>
@@ -3170,7 +3208,7 @@ name with 'name' and 'name-key'.
hyrolo-google-contacts-grep, hyrolo-grep-file,
hyrolo-display-to-entry-end, hyrolo-name-at):
kotl/kimport.el (kimport:star-entries): Don't fold case when searching
- for 'hyrolo-entry-regexp'.
+ for 'hyrolo-hdr-and-entry-regexp'.
(hyrolo-isearch-for-regexp): Add 2nd parameter, 'fold-search-flag'
used to set 'case-fold-search'.
@@ -3229,11 +3267,11 @@ name with 'name' and 'name-key'.
* hyrolo.el (hyrolo-grep): Add support for 'outline-regexp' and
'outline-level' variables from multiple file types. This includes
- adding 'hyrolo-hdr-regexp' to both 'hyrolo-entry-regexp' and
+ adding 'hyrolo-hdr-regexp' to both 'hyrolo-hdr-and-entry-regexp' and
'outline-regexp' within the *HyRolo* match buffer.
(hyrolo-mode): Set local value of 'outline-level' to
'hyrolo-mode-outline-level' and define that function to support
- star outlines and Koutlines. Also, make 'hyrolo-entry-regexp'
+ star outlines and Koutlines. Also, make 'hyrolo-hdr-and-entry-regexp'
local and set it to its default value, after which it may be
modified.
(hyrolo-previous-match): Change so can be used in a
@@ -3241,7 +3279,7 @@ name with 'name' and 'name-key'.
(hyrolo-mode-outline-level): Add and use in 'hyrolo-mode'.
* kotl/kotl-mode.el (kotl-mode): Add local settings of:
- 'hyrolo-entry-regexp', 'outline-level', and 'outline-regexp'
+ 'hyrolo-hdr-and-entry-regexp', 'outline-level', and 'outline-regexp'
specific to Koutlines.
kotl/kview.el (kview:outline-regexp): Regexp quote
use of 'kview:default-label-separator'.
@@ -6436,7 +6474,7 @@ Delete knode.el and integrate functionality into kcell.el.
This makes behavior across magit lines consistent and pathnames can still
be displayed using the Assist Key (invokes magit {RET} key).
-* hyrolo.el (hyrolo-to-entry-end): Default to using entire hyrolo-entry-regexp
+* hyrolo.el (hyrolo-to-entry-end): Default to using entire
hyrolo-hdr-and-entry-regexp
to determine the outline depth when no hyrolo-entry-group-number is
included in the expression. Fixes issue that could call (goto-char nil).
@@ -7643,7 +7681,7 @@ V7.1.0 test release changes ^^^^:
using {q} to quit from the hyrolo match buffer.
* hyrolo-logic.el (hyrolo-map-logic): Fixed function call.
- Changed: (match-string-no-properties hyrolo-entry-regexp
+ Changed: (match-string-no-properties hyrolo-hdr-and-entry-regexp
To: (match-string-no-properties hyrolo-entry-group-number)
* hsys-org.el (inhibit-hsys-org): Added customization to allow disabling all
Smart Key support when in an
@@ -7675,7 +7713,7 @@ V7.1.0 test release changes ^^^^:
(hyrolo-to):
(hyrolo-to-entry-end): Fixed bug that caused addition of new
entries at the end of the hyrolo file,
rather than in sorted order. Also caused hyrolo-logic functions to fail.
- The issue was that 'hyrolo-entry-regexp' had been updated to include the
whitespace following the entry prefix
+ The issue was that 'hyrolo-hdr-and-entry-regexp' had been updated to
include the whitespace following the entry prefix
and this whitespace was improperly included when computing the hierarchy
level of the entry. Also, changed
'curr-entry-level' parameter from a string to an integer to reduce length
comparisons.
(hyrolo-r-not): Fixed typo 'path' should be 'pat'.
@@ -8380,7 +8418,7 @@ for expanded Org mode reference handling.
2019-06-16 Bob Weiner <[email protected]>
* hyrolo.el: Replaced buffer-substring-no-properties with
match-string-no-properties where possible.
- (hyrolo-entry-regexp): Changed to require whitespace following
the entry prefix.
+ (hyrolo-hdr-and-entry-regexp): Changed to require whitespace
following the entry prefix.
(hyrolo-entry-group-number): Added.
2019-06-12 Bob Weiner <[email protected]>
diff --git a/HY-NEWS b/HY-NEWS
index d5aceac2d9..5ea5c7929c 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -486,7 +486,7 @@
(hyrolo-mode): Set the local value of `outline-level' to
`hyrolo-mode-outline-level' and define that function to support star
- outlines and Koutlines. Also, made `hyrolo-entry-regexp' local and set
+ outlines and Koutlines. Also, made `hyrolo-hdr-and-entry-regexp' local
and set
it to its default value, after which it may be modified.
*** (hyrolo-fgrep-file, hyrolo-grep-file, hyrolo-fgrep, hyrolo-grep,
diff --git a/hib-doc-id.el b/hib-doc-id.el
index 3f321d740b..55043eab0e 100644
--- a/hib-doc-id.el
+++ b/hib-doc-id.el
@@ -134,7 +134,7 @@ an error."
(delim-doc-id (concat doc-id-start doc-id doc-id-end)))
(cond ((null doc-id-indices)
(error "(doc-id-index-entry): You must set the `doc-id-indices'
variable first"))
- ((let ((hyrolo-entry-regexp doc-id-index-entry-regexp))
+ ((let ((hyrolo-hdr-and-entry-regexp doc-id-index-entry-regexp))
(zerop (hyrolo-grep (funcall doc-id-match doc-id)
1 doc-id-indices nil nil 'no-display)))
(error "(doc-id-index-entry): %s not found in document index"
@@ -175,7 +175,7 @@ match the function stored in `doc-id-p'."
(defun doc-id:help (but)
"Display site-specific document index entry given by doc-id BUT.
Also display standard Hyperbole help for implicit button BUT."
- (let ((hyrolo-entry-regexp doc-id-index-entry-regexp)
+ (let ((hyrolo-hdr-and-entry-regexp doc-id-index-entry-regexp)
(hyrolo-display-buffer (hypb:help-buf-name "Doc ID"))
(doc-id (hbut:key-to-label (hattr:get but 'lbl-key))))
(cond ((null doc-id-indices)
diff --git a/hyrolo-logic.el b/hyrolo-logic.el
index 833bb9ce32..097efd474a 100644
--- a/hyrolo-logic.el
+++ b/hyrolo-logic.el
@@ -246,7 +246,7 @@ SEXP that match entries."
(end)
(end-entry-hdr)
(num-found 0))
- (while (re-search-forward hyrolo-entry-regexp nil t)
+ (while (re-search-forward hyrolo-hdr-and-entry-regexp nil t)
(setq end-entry-hdr (match-end hyrolo-entry-group-number)
start (match-beginning hyrolo-entry-group-number)
end (hyrolo-to-entry-end include-sub-entries))
diff --git a/hyrolo.el b/hyrolo.el
index dc5f03626b..8b9866f41f 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: 25-Dec-23 at 03:05:40 by Bob Weiner
+;; Last-Mod: 26-Dec-23 at 01:45:22 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -34,6 +34,7 @@
(require 'hypb) ;; For 'hypb:mail-address-regexp'.
(require 'outline)
(require 'package)
+(require 'reveal)
(require 'set)
(require 'sort)
(require 'xml)
@@ -144,7 +145,7 @@ A hyrolo-file consists of:
(1) an optional header beginning with and ending with a line which matches
`hyrolo-hdr-regexp';
(2) one or more rolo entries which each begin with
- `hyrolo-entry-regexp' and may be nested."
+ `hyrolo-hdr-and-entry-regexp' and may be nested."
:type '(repeat file)
:initialize #'custom-initialize-default
:set #'hyrolo-set-file-list
@@ -175,20 +176,19 @@ file are added.")
(defvar hyrolo-entry-group-number 1
"Group number whose length represents the level of any entry matched.
-See `hyrolo-entry-regexp'")
+See `hyrolo-hdr-and-entry-regexp'")
(defvar hyrolo-entry-trailing-space-group-number 2
- "Group number within `hyrolo-entry-regexp' containing trailing space.")
+ "Group number within `hyrolo-hdr-and-entry-regexp' containing trailing
space.")
(defvar hyrolo-hdr-prefix-regexp
(concat hyrolo-hdr-regexp
"\\|^" (if (boundp 'hbut:source-prefix) hbut:source-prefix "@loc> ")
"\\|")
- "Regular expression to prefix to `hyrolo-entry-regexp' and `outline-regexp'.
+ "Regular expression to prefix to `hyrolo-hdr-and-entry-regexp' and
`outline-regexp'.
It must not contain any parenthesized match groupings.")
-(defvar hyrolo-entry-regexp
- (concat hyrolo-hdr-prefix-regexp "^\\(\\*+\\)\\([ \t]+\\)")
+(defvar hyrolo-entry-regexp "^\\([*\^L]+\\)\\([ \t\n\r]+\\)"
"Regular expression to match the beginning of a HyRolo entry.
This pattern must match the beginning of a line.
`hyrolo-entry-group-number' must capture the entry's level in the
@@ -196,10 +196,16 @@ hierarchy. `hyrolo-entry-trailing-space-group-number'
must capture
the entire single line whitespace following the entry hierarchy
level.")
+(defvar hyrolo-hdr-and-entry-regexp
+ (concat hyrolo-hdr-prefix-regexp hyrolo-entry-regexp)
+ "Regular expression to match the beginning of a HyRolo file header or entry.
+This pattern must match the beginning of a line.")
+
;; Support hyrolo searches in markdown files
(add-hook 'markdown-mode-hook
(lambda ()
- (setq-local hyrolo-entry-regexp (concat hyrolo-hdr-prefix-regexp
"^\\(#+\\)\\([ \t\n\r]+\\)")
+ (setq-local hyrolo-entry-regexp "^\\(#+\\)\\([ \t\n\r]+\\)"
+ hyrolo-hdr-and-entry-regexp (concat
hyrolo-hdr-prefix-regexp hyrolo-entry-regexp)
hyrolo-entry-group-number 1
;; `hyrolo-add' handles removing # prefix from
;; trailing-space grouping below
@@ -210,12 +216,13 @@ level.")
;; Support hyrolo searches in Emacs outline files
(add-hook 'outline-mode-hook
(lambda ()
- (setq-local hyrolo-entry-regexp (concat hyrolo-hdr-prefix-regexp
"^\\([*\^L]+\\)\\([ \t\n\r]+\\)")
+ (setq-local hyrolo-entry-regexp "^\\([*\^L]+\\)\\([ \t\n\r]+\\)"
+ hyrolo-hdr-and-entry-regexp (concat
hyrolo-hdr-prefix-regexp hyrolo-entry-regexp)
hyrolo-entry-group-number 1
;; `hyrolo-add' handles removing # prefix from
;; trailing-space grouping below
hyrolo-entry-trailing-space-group-number 2
- outline-regexp hyrolo-entry-regexp
+ outline-regexp (concat hyrolo-hdr-prefix-regexp
"^\\([*\^L]+\\)\\([ \t\n\r]\\)")
outline-level #'hyrolo-outline-level)))
(defcustom hyrolo-date-format "%m/%d/%Y"
@@ -241,7 +248,7 @@ It must contain a %s indicating where to put the entry name
and a second
:group 'hyperbole-hyrolo)
(defvar hyrolo-entry-name-regexp "[-_a-zA-Z0-9@.]+\\( ?, ?[-_a-zA-Z0-9@.]+\\)?"
- "*Regexp matching a hyrolo entry name after matching to
`hyrolo-entry-regexp'.")
+ "*Regexp matching a hyrolo entry name after matching to
`hyrolo-hdr-and-entry-regexp'.")
(defconst hyrolo-markdown-suffix-regexp
"md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn"
"Regexp matching Markdown file suffixes.")
@@ -408,7 +415,7 @@ entry which begins with the parent string."
(message "Locating insertion point for `%s'..." name))
(let ((parent "")
(level "")
- (entry-regexp (default-value 'hyrolo-entry-regexp))
+ (entry-regexp hyrolo-entry-regexp)
end)
(hyrolo-widen)
(goto-char (point-min))
@@ -420,7 +427,8 @@ entry which begins with the parent string."
name (substring name (min (1+ end) (length name))))
(if (re-search-forward
(concat entry-regexp (regexp-quote parent) "\\s-") nil t)
- (setq level (match-string-no-properties hyrolo-entry-group-number))
+ (progn (setq level (match-string-no-properties
hyrolo-entry-group-number))
+ (goto-char (match-beginning 0)))
(error "(hyrolo-add): Insertion failed, `%s' parent entry not found in
\"%s\""
parent file)))
(when (looking-at hyrolo-entry-regexp)
@@ -437,7 +445,7 @@ entry which begins with the parent string."
;; entry by moving to an entry with the same (or nearest) first character
;; to that of `name'.
(if (and (= level-len 1)
- (equal entry-regexp (default-value 'hyrolo-entry-regexp)))
+ (equal entry-regexp hyrolo-entry-regexp))
(let ((case-fold-search))
(goto-char (point-min))
(if (re-search-forward (concat entry-regexp
@@ -474,7 +482,7 @@ entry which begins with the parent string."
(save-excursion
(re-search-forward
hyrolo-entry-name-regexp nil t)
(point))))
- (when (and (eq major-mode 'markdown-mode)
+ (when (and (derived-mode-p 'markdown-mode)
(string-match "\\`.*#+" entry-spc))
(setq entry-spc (substring entry-spc (length (match-string 0
entry-spc)))))
(cond ((string-lessp entry name)
@@ -852,7 +860,7 @@ Return t if entry is killed, nil otherwise."
(case-fold-search)
start end level-len)
(setq buffer-read-only nil)
- (re-search-backward hyrolo-entry-regexp nil t)
+ (re-search-backward hyrolo-hdr-and-entry-regexp nil t)
(setq end (match-end 0))
(setq start (line-beginning-position)
level-len (length (buffer-substring-no-properties start
end)))
@@ -880,7 +888,7 @@ Return t if entry is killed, nil otherwise."
"Interactively search for an entry beginning with a set of search
characters."
(interactive)
(hyrolo-funcall-match
- (lambda () (hyrolo-isearch-for-regexp hyrolo-entry-regexp nil))))
+ (lambda () (hyrolo-isearch-for-regexp hyrolo-hdr-and-entry-regexp nil))))
(defun hyrolo-mail-to ()
"Start composing mail addressed to the first e-mail address at or after
point."
@@ -914,22 +922,18 @@ Raise an error if a match is not found."
(error (substitute-command-keys "(hyrolo-next-match): Use
{\\[hyrolo-grep-or-fgrep]} to do a search first"))))))
(defun hyrolo-overview (levels-to-show)
- "Show the first line of all levels of rolo matches.
+ "Show the first line of all levels of HyRolo matches.
With a prefix argument of LEVELS-TO-SHOW > 0, show the first
-lines of entries only to that depth."
+lines of entries only to that depth relative to the first level
+of matches for the file of matches at point."
(interactive "P")
- (hyrolo-verify)
- ;; Use {t} to display top-level cells only.
- (hyrolo-map-matches
- (lambda ()
- (if (or (null levels-to-show)
- (if (called-interactively-p 'interactive)
- (progn (setq levels-to-show (prefix-numeric-value
current-prefix-arg))
- (<= levels-to-show 0))
- (not (integerp levels-to-show))))
- (setq levels-to-show 100))
- (outline-hide-subtree) ;; Ensure reveal-mode does not expand current
entry.
- (hyrolo-show-levels levels-to-show))))
+ (when (or (null levels-to-show)
+ (if (called-interactively-p 'interactive)
+ (progn (setq levels-to-show (prefix-numeric-value
current-prefix-arg))
+ (<= levels-to-show 0))
+ (not (integerp levels-to-show))))
+ (setq levels-to-show 100))
+ (hyrolo-show-levels levels-to-show))
(defun hyrolo-previous-match ()
"Move point back to the start of the previous rolo search match.
@@ -1116,8 +1120,8 @@ Useful when bound to a mouse key."
(if (buffer-narrowed-p)
(hyrolo-widen)
(let (case-fold-search)
- (when (or (looking-at hyrolo-entry-regexp)
- (re-search-backward hyrolo-entry-regexp nil t))
+ (when (or (looking-at hyrolo-hdr-and-entry-regexp)
+ (re-search-backward hyrolo-hdr-and-entry-regexp nil t))
(forward-char)
(narrow-to-region (1- (point)) (hyrolo-display-to-entry-end)))))
(hyrolo-shrink-window)
@@ -1128,11 +1132,7 @@ Useful when bound to a mouse key."
Top-level matches are those with the lowest outline level among the
matched entries."
(interactive)
- (hyrolo-verify)
- (hyrolo-map-matches
- (lambda ()
- (outline-hide-subtree)
- (hyrolo-show-levels 1))))
+ (hyrolo-show-levels 1))
(defun hyrolo-verify ()
"Verify point is in a HyRolo or HyNote match buffer."
@@ -1221,7 +1221,7 @@ Output looks like so:
(interactive "P")
(require 'bbdb)
(let ((hyrolo-file-list (list bbdb-file))
- (hyrolo-entry-regexp "^\\[")
+ (hyrolo-hdr-and-entry-regexp "^\\[")
(hyrolo-display-format-function #'hyrolo-bbdb-entry-format)
;; Kill the bbdb file after use if it is not already in a buffer.
(hyrolo-kill-buffers-after-use
@@ -1243,7 +1243,7 @@ but omit file headers, negative values mean find up to
the inverse of that
number of entries and omit file headers. Optional COUNT-ONLY non-nil
means don't retrieve matching entries.
Return number of matching entries found."
- (let ((hyrolo-entry-regexp "^\\[")
+ (let ((hyrolo-hdr-and-entry-regexp "^\\[")
(hyrolo-display-format-function #'hyrolo-bbdb-entry-format)
;; Kill the bbdb file after use if it is not already in a buffer.
(hyrolo-kill-buffers-after-use
@@ -1286,7 +1286,7 @@ Output looks like so:
(call-interactively (if arg 'hyrolo-fgrep 'hyrolo-grep))
(read-only-mode 0)
(let ((case-fold-search t))
- (re-search-forward hyrolo-entry-regexp nil t))
+ (re-search-forward hyrolo-hdr-and-entry-regexp nil t))
(beginning-of-line)
(set-buffer-modified-p nil)
(read-only-mode 1)))
@@ -1696,16 +1696,16 @@ Return number of matching entries found."
(setq hdr-pos (cons (point-min) (point))))
(let* ((case-fold-search t)
match-end)
- (re-search-forward hyrolo-entry-regexp nil t)
+ (re-search-forward hyrolo-hdr-and-entry-regexp nil t)
(while (and (or (null max-matches) (< num-found
max-matches))
(funcall hyrolo-next-match-function pattern
headline-only))
(setq match-end (point))
;; If no entry delimiters found, just return
;; the line of the match alone.
- (unless (re-search-backward hyrolo-entry-regexp nil t)
+ (unless (re-search-backward
hyrolo-hdr-and-entry-regexp nil t)
(goto-char (line-beginning-position)))
(setq entry-start (point))
- (unless (re-search-forward hyrolo-entry-regexp nil t)
+ (unless (re-search-forward
hyrolo-hdr-and-entry-regexp nil t)
(goto-char (line-end-position)))
(unless (hyrolo-to-entry-end t)
;; If at the end of a line, move to the next line;
@@ -1743,6 +1743,12 @@ Return number of matching entries found."
(hyrolo-add-match pattern entry-start
(point)))))))
num-found))
(when (and (> num-found 0) (not count-only))
+ ;; Require a final blank line so that `outline-hide-sublevels'
won't hide
+ ;; it and combine with any next file header.
+ (when (/= (char-after (1- (point-max))) ?\n)
+ (save-excursion
+ (goto-char (point-max))
+ (insert "\n")))
(hyrolo--cache-major-mode (current-buffer)))
(when (< stuck-negative-point 0)
(pop-to-buffer (current-buffer))
@@ -1822,20 +1828,24 @@ This mode does not add any outline-related font-locking.
See the command `outline-mode' for more information on this mode."
nil " Outl" nil
(if hyrolo-outline-minor-mode
+ ;; enable minor mode
(progn
- ;; Turn off this mode if we change major modes.
+ ;; Add hook to turn off this mode when we change major modes.
(add-hook 'change-major-mode-hook
- (lambda () (hyrolo-outline-minor-mode -1))
+ (lambda ()
+ (unless (derived-mode-p 'hyrolo-mode 'kotl-mode
'markdown-mode 'org-mode 'outline-mode)
+ (hyrolo-outline-minor-mode -1)))
nil t)
(setq-local line-move-ignore-invisible t)
;; Cause use of ellipses for invisible text.
(add-to-invisibility-spec '(outline . t)))
+ ;; disable minor mode
(when outline-minor-mode-cycle
(remove-overlays nil nil 'outline-overlay t))
(setq line-move-ignore-invisible nil)
- ;; Cause use of ellipses for invisible text.
+ ;; Disable use of ellipses for invisible text.
(remove-from-invisibility-spec '(outline . t))
- ;; When turning off outline mode, get rid of any outline hiding.
+ ;; Get rid of any outline hiding.
(hyrolo-outline-show-all)))
(defun hyrolo-mode ()
@@ -1851,29 +1861,36 @@ Calls the functions given by `hyrolo-mode-hook'.
1)
outline-heading-alist)
;; This next local value is dynamically overridden in `hyrolo-grep'.
- (setq-local hyrolo-entry-regexp (default-value 'hyrolo-entry-regexp)
+ (setq-local outline-regexp "\\([*\^L]+\\)\\([ \t\n\r]\\)"
+ hyrolo-entry-regexp (concat "^" "\\([*\^L]+\\)\\([ \t\n\r]+\\)")
+ hyrolo-hdr-and-entry-regexp (default-value
'hyrolo-hdr-and-entry-regexp)
;; In `outline-regexp', prevent matching to *word*
;; at the beginning of lines and hanging hyrolo
;; search functions by adding a whitespace char at
;; the end of the match. Note this change adds one
;; level to the level count, so `hyrolo-outline-level'
;; decrements it by one. -- rsw, 2023-11-17
- outline-regexp "\\([*\^L]+\\)\\([ \t\n\r]\\)"
outline-level #'hyrolo-outline-level
;; Can't cycle because {TAB} moves to next match
outline-minor-mode-cycle nil
;; For speed reasons, don't want to ever font-lock
;; in this mode
- outline-minor-mode-highlight nil)
+ outline-minor-mode-highlight nil))
- (reveal-mode 1)) ;; Expose hidden text as move into it.
- (setq major-mode 'hyrolo-mode
- mode-name "HyRolo")
(use-local-map hyrolo-mode-map)
- ;;
(set-syntax-table hyrolo-mode-syntax-table)
- ;;
(hyrolo-outline-minor-mode 1) ;; no keymap
+
+ ;; !! TODO: Disable this until can get it working right with the
+ ;; enabling of outline-minor-mode when switch major modes in *HyRolo*
+ ;; typically using hyrolo-funcall-match or hyrolo-map-matches.
+ ;; (unless (eq major-mode 'hyrolo-mode)
+ ;; (reveal-mode 1)) ;; Expose hidden text as move into it.
+
+ ;; Do this after reveal-mode is enabled.
+ (setq major-mode 'hyrolo-mode
+ mode-name "HyRolo")
+
(run-mode-hooks 'hyrolo-mode-hook))
(defun hyrolo-next-regexp-match (regexp headline-only)
@@ -1932,7 +1949,7 @@ Stop at the first and last subheadings of a superior
heading."
"Hide all body lines in buffer, leaving all headings visible.
Note that this does not hide the lines preceding the first heading line."
(interactive)
- (hyrolo-map-matches #'outline-hide-body))
+ (hyrolo-map-matches #'outline-hide-body t))
(defun hyrolo-outline-hide-entry ()
"Hide the body directly following this heading."
@@ -1964,7 +1981,7 @@ of the current heading, or to 1 if the current line is
not a heading."
(looking-at outline-regexp))
(funcall outline-level))
(t 1))))
- (hyrolo-map-matches (lambda () (outline-hide-sublevels levels))))
+ (hyrolo-map-matches (lambda () (outline-hide-sublevels levels)) t))
(defun hyrolo-outline-hide-subtree ()
"Move back to the start of current subtree and hide everything after the
heading.
@@ -2115,7 +2132,7 @@ nil if not found."
(while (and (not level) (search-forward parent nil t))
(save-excursion
(forward-line 0)
- (when (looking-at (concat hyrolo-entry-regexp
(regexp-quote parent)))
+ (when (looking-at (concat hyrolo-hdr-and-entry-regexp
(regexp-quote parent)))
(setq level (match-string-no-properties
hyrolo-entry-group-number)))))
level))
((equal name real-name)) ;; Try next file-or-buf.
@@ -2310,7 +2327,7 @@ HYROLO-BUF may be a file-name, `buffer-name', or buffer."
(defun hyrolo-display-to-entry-end ()
"Go to end of current entry, ignoring sub-entries."
(let (case-fold-search)
- (if (re-search-forward hyrolo-entry-regexp nil t)
+ (if (re-search-forward hyrolo-hdr-and-entry-regexp nil t)
(progn (beginning-of-line) (point))
(goto-char (point-max)))))
@@ -2417,8 +2434,8 @@ Any non-nil value returned is a cons of (<entry-name> .
<entry-source>)."
(save-excursion
(forward-line 0)
(let (case-fold-search)
- (if (and (or (looking-at hyrolo-entry-regexp)
- (re-search-backward hyrolo-entry-regexp nil t))
+ (if (and (or (looking-at hyrolo-hdr-and-entry-regexp)
+ (re-search-backward hyrolo-hdr-and-entry-regexp nil t))
(save-match-data (not (looking-at hyrolo-hdr-regexp))))
(progn (goto-char (match-end 0))
(skip-chars-forward " \t")
@@ -2443,7 +2460,8 @@ 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)
- (setq-local hyrolo-entry-regexp (concat hyrolo-hdr-prefix-regexp
"^\\(\\*+\\)\\([ ]+\\)")
+ (setq-local hyrolo-entry-regexp "^\\(\\*+\\)\\([ ]+\\)"
+ hyrolo-hdr-and-entry-regexp (concat hyrolo-hdr-prefix-regexp
hyrolo-entry-regexp)
hyrolo-entry-group-number 1
;; `hyrolo-add' handles removing # prefix from
;; trailing-space grouping below
@@ -2506,7 +2524,7 @@ The date format is determined by the setting,
`hyrolo-date-format'."
"Return the minimum HyRolo level within a single file of matches."
(save-excursion
(goto-char (point-min))
- (let ((min-level 1))
+ (let ((min-level 1000))
(when (looking-at outline-regexp)
(funcall outline-level))
(while (outline-next-heading)
@@ -2520,45 +2538,32 @@ The date format is determined by the setting,
`hyrolo-date-format'."
(let ((hyrolo-file-list (hypb:filter-directories file-regexp dirs)))
(call-interactively search-cmd)))
-(defun hyrolo-show-levels (num-levels)
- "Show only the first line of up to NUM-LEVELS of HyRolo matches.
-NUM-LEVELS must be 1 or greater and is relative to the first
-level of matches, so if NUM-LEVELS is 2 and the first level
+(defun hyrolo-show-levels (levels-to-show)
+ "Show only the first line of up to LEVELS-TO-SHOW of HyRolo matches.
+LEVELS-TO-SHOW must be 1 or greater and is relative to the first
+level of matches, so if LEVELS-TO-SHOW is 2 and the first level
matched from an outline is level 3, then levels 3 and 4 will be
shown.
Any call to this function should be wrapped in a call to
`hyrolo-map-matches'."
+ (hyrolo-verify)
(outline-show-all)
- (save-excursion
- (goto-char (point-min))
- (if (not (hyrolo-hdr-move-after-p))
- (outline-hide-sublevels num-levels)
- (goto-char (point-min))
- (let (start
- end
- max-level-to-show)
- (while (re-search-forward hyrolo-hdr-regexp nil t 2)
- (forward-line)
- (setq start (point)
- end (if (re-search-forward hyrolo-hdr-regexp nil t)
- (progn (beginning-of-line) (point))
- (goto-char (point-max))))
- (save-restriction
- (narrow-to-region start end)
- (if (> num-levels 20)
- (setq max-level-to-show num-levels)
- (setq max-level-to-show (+ (hyrolo-min-matched-level)
- (1- num-levels))))
- (outline-hide-sublevels max-level-to-show)))))
- (goto-char (point-min))
- ;; This pause forces a window redisplay that maximizes the
- ;; entries displayed for any final location of point.
- (sit-for 0.001))
- ;; Need to leave point on a visible character or since
- ;; hyrolo uses reveal-mode, redisplay will rexpand
- ;; hidden entries to make point visible.
- (hyrolo-back-to-visible-point))
+ (hyrolo-outline-hide-subtree) ;; Ensure reveal-mode does not expand current
entry.
+ ;; Use {t} to display top-level cells only.
+ (hyrolo-map-matches
+ (lambda ()
+ (save-excursion
+ (save-restriction
+ (goto-char (point-min))
+ (hyrolo-hdr-move-after-p)
+ ;; Prevent collapsing of initial file header
+ (narrow-to-region (point) (point-max))
+ (let ((max-level-to-show (+ (hyrolo-min-matched-level)
+ (1- levels-to-show))))
+ (outline-hide-sublevels max-level-to-show)
+ (goto-char (point-min))))))
+ t))
(defun hyrolo-shrink-window ()
(let* ((lines (count-lines (point-min) (point-max)))
@@ -2700,7 +2705,14 @@ prior to applying FUNC."
(font-lock-mode (if ofont-lock 1 0))
(when (fboundp 'orgtbl-mode)
;; Disable as overrides single letter keys
- (orgtbl-mode 0))))
+ (orgtbl-mode 0))
+ ;; This pause forces a window redisplay that maximizes the
+ ;; entries displayed for any final location of point.
+ (sit-for 0.001)
+ ;; Need to leave point on a visible character or since
+ ;; hyrolo uses reveal-mode, redisplay will rexpand
+ ;; hidden entries to make point visible.
+ (hyrolo-back-to-visible-point)))
(save-excursion
(funcall func)))))
@@ -2742,7 +2754,14 @@ prior to applying FUNC."
(font-lock-mode (if ofont-lock 1 0))
(when (fboundp 'orgtbl-mode)
;; Disable as overrides single letter keys
- (orgtbl-mode 0))))))
+ (orgtbl-mode 0))
+ ;; This pause forces a window redisplay that maximizes the
+ ;; entries displayed for any final location of point.
+ (sit-for 0.001)
+ ;; Need to leave point on a visible character or since
+ ;; hyrolo uses reveal-mode, redisplay will rexpand
+ ;; hidden entries to make point visible.
+ (hyrolo-back-to-visible-point)))))
(funcall func))))
(defun hyrolo-cache-location-start-and-end ()
@@ -2819,10 +2838,10 @@ Ensure MATCHED-BUF's `major-mode' is stored in the hash
table."
(defun hyrolo-cache-set-major-mode (pos)
"Set the `major-mode' for POS in the current HyRolo display buffer.
-Add `hyrolo-hdr-regexp' to `hyrolo-entry-regexp' and `outline-regexp'."
+Add `hyrolo-hdr-regexp' to `hyrolo-hdr-and-entry-regexp' and `outline-regexp'."
(funcall (hyrolo-cache-get-major-mode-from-pos pos))
- (unless (string-prefix-p hyrolo-hdr-regexp hyrolo-entry-regexp)
- (setq-local hyrolo-entry-regexp (concat hyrolo-hdr-prefix-regexp
hyrolo-entry-regexp)))
+ (unless (string-prefix-p hyrolo-hdr-regexp hyrolo-hdr-and-entry-regexp)
+ (setq-local hyrolo-hdr-and-entry-regexp (concat hyrolo-hdr-prefix-regexp
hyrolo-hdr-and-entry-regexp)))
(unless (string-prefix-p hyrolo-hdr-regexp outline-regexp)
(setq-local outline-regexp (concat hyrolo-hdr-prefix-regexp
outline-regexp)))
(when (eq outline-level #'markdown-outline-level)
@@ -2881,6 +2900,48 @@ Add `hyrolo-hdr-regexp' to `hyrolo-entry-regexp' and
`outline-regexp'."
(substitute-key-definition otl-cmd hyrolo-cmd hyrolo-mode-map)))
outline-mode-prefix-map)))
+;;; Integrate reveal-mode with HyRolo.
+
+;; Note that `outline-reveal-toggle-invisible' is the function
+;; stored in the `outline' `reveal-toggle-invisible' property. It
+;; is called from `reveal-open-new-overlays' and -
+;; `reveal-close-old-overlays' which are called from within
+;; `reveal-post-command' on `post-command-hook'. Below we update
+;; `reveal-post-command' to work with HyRolo.
+
+(defun reveal-post-command ()
+ ;; Refresh the spots that might have changed.
+ ;; `Refreshing' here means to try and re-hide the corresponding text.
+ ;; We don't refresh everything correctly:
+ ;; - we only refresh spots in the current window.
+ ;; FIXME: do we actually know that (current-buffer) = (window-buffer) ?
+ (with-local-quit
+ (with-demoted-errors "Reveal: %s"
+ (let ((old-ols
+ (delq nil
+ (mapcar
+ (lambda (x)
+ ;; We refresh any spot in the current window as well
+ ;; as any spots associated with a dead window or
+ ;; a window which does not show this buffer any more.
+ (cond
+ ((eq (car x) (selected-window)) (cdr x))
+ ((not (and (window-live-p (car x))
+ (eq (window-buffer (car x))
+ (current-buffer))))
+ ;; Adopt this since it's owned by a window that's
+ ;; either not live or at least not showing this
+ ;; buffer any more.
+ (setcar x (selected-window))
+ (cdr x))))
+ reveal-open-spots))))
+ (hyrolo-funcall-match
+ (lambda ()
+ (setq old-ols (reveal-open-new-overlays old-ols))
+ (when reveal-auto-hide
+ (reveal-close-old-overlays old-ols)))
+ t)))))
+
(provide 'hyrolo)
;;; hyrolo.el ends here
diff --git a/kotl/kimport.el b/kotl/kimport.el
index 1a5333cc04..d90df7b391 100644
--- a/kotl/kimport.el
+++ b/kotl/kimport.el
@@ -673,19 +673,19 @@ IMPORT-FROM so far (initially 0).
Return a cons of MAX-POS and COUNT."
(set-buffer import-from)
(let ((start (point))
- (hyrolo-entry-regexp kimport:star-heading)
+ (hyrolo-hdr-and-entry-regexp kimport:star-heading)
(case-fold-search)
max-pos-and-count
subtree-p end contents node-level child-label)
;; While find cells at import-level or deeper ...
- (while (and (re-search-forward hyrolo-entry-regexp nil t)
+ (while (and (re-search-forward hyrolo-hdr-and-entry-regexp nil t)
(<= import-level
(setq node-level
(length (match-string 1)))))
(skip-chars-forward " \t")
(setq start (point)
end (hyrolo-to-entry-end)
- subtree-p (if (looking-at hyrolo-entry-regexp)
+ subtree-p (if (looking-at hyrolo-hdr-and-entry-regexp)
(< node-level
(length (match-string 1)))))
(skip-chars-backward "\n\r")
diff --git a/kotl/kotl-mode.el b/kotl/kotl-mode.el
index 96cab5192b..4972c6b5dc 100644
--- a/kotl/kotl-mode.el
+++ b/kotl/kotl-mode.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 6/30/93
-;; Last-Mod: 25-Dec-23 at 00:22:31 by Bob Weiner
+;; Last-Mod: 25-Dec-23 at 23:33:09 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -103,6 +103,7 @@ It provides the following keys:
(interactive)
(mapc #'make-local-variable
'(hyrolo-entry-regexp
+ hyrolo-hdr-and-entry-regexp
hyrolo-entry-group-number
hyrolo-entry-trailing-space-group-number
indent-line-function
@@ -149,7 +150,8 @@ It provides the following keys:
(unless (and (boundp 'kotl-previous-mode) kotl-previous-mode
(eq kotl-previous-mode #'kotl-mode)
(not (string-prefix-p hyrolo-display-buffer (buffer-name))))
- (setq hyrolo-entry-regexp (concat hyrolo-hdr-prefix-regexp "^"
kview:outline-regexp)
+ (setq hyrolo-entry-regexp (concat "^" kview:outline-regexp)
+ hyrolo-hdr-and-entry-regexp (concat hyrolo-hdr-prefix-regexp
hyrolo-entry-regexp)
hyrolo-entry-group-number 2
hyrolo-entry-trailing-space-group-number 3
@@ -168,7 +170,7 @@ It provides the following keys:
mode-line-format (copy-sequence mode-line-format)
mode-line-format (set:remove "%n" mode-line-format)
outline-level #'kcell-view:level
- outline-regexp hyrolo-entry-regexp))
+ outline-regexp hyrolo-hdr-and-entry-regexp))
;;
(when (fboundp 'add-to-invisibility-spec)
(add-to-invisibility-spec '(outline . t)))
@@ -3422,7 +3424,7 @@ but always operates upon the current view."
;; Adapted from outline-reveal-toggle-invisible; called by isearch.
(defun kotl-mode:reveal-toggle-invisible (o hidep)
(if (not (derived-mode-p 'kotl-mode))
- (if (and (eq (current-buffer) hyrolo-display-buffer)
+ (if (and (eq (current-buffer) (get-buffer hyrolo-display-buffer))
(eq (hyrolo-cache-get-major-mode-from-pos (point))
'kotl-mode))
(hyrolo-funcall-match
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 60f037e3e0..027b53f4d2 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -7745,11 +7745,11 @@ is "^===". This allows lines of all equal
signs to visually separate
matching entries retrieved from multiple files during a single search.
</p>
</dd>
-<dt><code>hyrolo-entry-regexp</code>
-<a name="index-hyrolo_002dentry_002dregexp"></a>
+<dt><code>hyrolo-hdr-and-entry-regexp</code>
+<a name="index-hyrolo_002dhdr_002dand_002dentry_002dregexp"></a>
</dt>
<dd><p>The rolo entry start delimiter is given by the regular expression
-variable, <code>hyrolo-entry-regexp</code>, whose default value is
"^\*+", i.e.
+variable, <code>hyrolo-hdr-and-entry-regexp</code>, whose default value is
"^\*+", i.e.
one or more asterisks at the beginning of a line.
</p>
</dd>
@@ -14570,7 +14570,6 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a
href="#index-hyrolo_002dedit_002dhook">hyrolo-edit-hook</a>:</td><td> </td><td
valign="top"><a href="#HyRolo-Keys">HyRolo Keys</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-hyrolo_002dedit_002dhook-1">hyrolo-edit-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_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-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>
@@ -14579,6 +14578,7 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<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>
<tr><td></td><td valign="top"><a
href="#index-hyrolo_002dgoogle_002dcontacts_002dgrep"><code>hyrolo-google-contacts-grep</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_002dgrep"><code>hyrolo-grep</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_002dhdr_002dand_002dentry_002dregexp">hyrolo-hdr-and-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_002dhdr_002dregexp">hyrolo-hdr-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_002dhelm_002dorg_002drifle"><code>hyrolo-helm-org-rifle</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_002dhelm_002dorg_002drifle-1"><code>hyrolo-helm-org-rifle</code></a>:</td><td> </td><td
valign="top"><a href="#Glossary">Glossary</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index c28b93dc06..8d541e8b06 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 81d83e3c11..607290901b 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 5e2cca6020..e94569e7f2 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: 25-Dec-23 at 02:39:36 by Bob Weiner
+@c Last-Mod: 25-Dec-23 at 22:39:22 by Bob Weiner
@c %**start of header (This is for running Texinfo on a region.)
@setfilename hyperbole.info
@@ -6504,9 +6504,9 @@ regular expression variable, @code{hyrolo-hdr-regexp},
whose default value
is "^===". This allows lines of all equal signs to visually separate
matching entries retrieved from multiple files during a single search.
-@item hyrolo-entry-regexp
+@item hyrolo-hdr-and-entry-regexp
The rolo entry start delimiter is given by the regular expression
-variable, @code{hyrolo-entry-regexp}, whose default value is "^\*+", i.e.@:
+variable, @code{hyrolo-hdr-and-entry-regexp}, whose default value is "^\*+",
i.e.@:
one or more asterisks at the beginning of a line.
@item hyrolo-display-format-function
diff --git a/test/hyrolo-tests.el b/test/hyrolo-tests.el
index 6e989e486f..d34dd6512a 100644
--- a/test/hyrolo-tests.el
+++ b/test/hyrolo-tests.el
@@ -3,7 +3,7 @@
;; Author: Mats Lidell <[email protected]>
;;
;; Orig-Date: 19-Jun-21 at 22:42:00
-;; Last-Mod: 23-Dec-23 at 01:25:40 by Bob Weiner
+;; Last-Mod: 26-Dec-23 at 01:57:38 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -23,6 +23,7 @@
(require 'hyrolo)
(require 'hyrolo-demo)
(require 'hy-test-helpers "test/hy-test-helpers")
+(require 'hib-kbd)
(require 'with-simulated-input)
(declare-function hy-test-helpers:consume-input-events "hy-test-helpers")
@@ -214,7 +215,6 @@ and {b} the previous same level cell."
(ert-deftest hyrolo-sort-test ()
"HyRolo files can be sorted."
- :expected-result :failed
(let ((hyrolo-file (make-temp-file "hypb" nil ".otl")))
(unwind-protect
(let ((hyrolo-file-list (list hyrolo-file))
@@ -316,10 +316,10 @@ and {b} the previous same level cell."
(should (looking-at-p "==="))
(hyrolo-next-visible-heading 1)
(should (looking-at-p "* heading")))
- (with-simulated-input "y RET" ; Do you want to revisit the file
normally now?
- (action-key)
- (should (equal (current-buffer) (find-buffer-visiting org-file)))
- (should (looking-at-p "* heading"))))
+ (kbd-key:key-series-to-events "y C-f")
+ (action-key)
+ (should (equal (current-buffer) (find-buffer-visiting org-file)))
+ (should (looking-at-p "* heading")))
(hy-delete-file-and-buffer org-file)
(kill-buffer "*HyRolo*")
(delete-directory temporary-file-directory))))
@@ -343,7 +343,7 @@ and {b} the previous same level cell."
(should (looking-at-p "==="))
(hyrolo-next-visible-heading 1)
(should (looking-at-p ".*1\\. heading")))
- (with-simulated-input "y RET" ; Do you want to revisit the file
normally now?
+ (with-simulated-input "y C-f" ; Do you want to revisit the file
normally now?
(action-key)
(should (equal (current-buffer) (find-buffer-visiting kotl-file)))
(should (looking-at-p "heading"))))
@@ -364,10 +364,9 @@ and {b} the previous same level cell."
(should (looking-at-p "==="))
(hyrolo-next-visible-heading 1)
(should (looking-at-p "* heading")))
- (with-simulated-input "y RET" ; Do you want to revisit the file
normally now?
- (action-key)
- (should (equal (current-buffer) (find-buffer-visiting outl-file)))
- (should (looking-at-p "* heading"))))
+ (action-key)
+ (should (equal (current-buffer) (find-buffer-visiting outl-file)))
+ (should (looking-at-p "* heading")))
(hy-delete-file-and-buffer outl-file)
(kill-buffer "*HyRolo*")
(delete-directory temporary-file-directory))))
@@ -385,10 +384,9 @@ and {b} the previous same level cell."
(should (looking-at-p "==="))
(hyrolo-next-visible-heading 1)
(should (looking-at-p "# heading")))
- (with-simulated-input "y RET" ; Do you want to revisit the file
normally now?
- (action-key)
- (should (equal (current-buffer) (find-buffer-visiting md-file)))
- (should (looking-at-p "# heading"))))
+ (action-key)
+ (should (equal (current-buffer) (find-buffer-visiting md-file)))
+ (should (looking-at-p "# heading")))
(hy-delete-file-and-buffer md-file)
(kill-buffer "*HyRolo*")
(delete-directory temporary-file-directory))))
@@ -415,10 +413,9 @@ Match a string in a level 2 child cell."
(should (looking-at-p "==="))
(hyrolo-next-visible-heading 1)
(should (looking-at-p ".*1a\\. heading")))
- (with-simulated-input "y RET" ; Do you want to revisit the file
normally now?
- (action-key)
- (should (equal (current-buffer) (find-buffer-visiting kotl-file)))
- (should (looking-at-p "heading"))))
+ (action-key)
+ (should (equal (current-buffer) (find-buffer-visiting kotl-file)))
+ (should (looking-at-p "heading")))
(hy-delete-file-and-buffer kotl-file)
(kill-buffer "*HyRolo*")
(delete-directory temporary-file-directory))))
@@ -445,10 +442,9 @@ Match a string in the second cell."
(should (looking-at-p "==="))
(hyrolo-next-visible-heading 1)
(should (looking-at-p ".*2\\. heading")))
- (with-simulated-input "y RET" ; Do you want to revisit the file
normally now?
- (action-key)
- (should (equal (current-buffer) (find-buffer-visiting kotl-file)))
- (should (looking-at-p "heading"))))
+ (action-key)
+ (should (equal (current-buffer) (find-buffer-visiting kotl-file)))
+ (should (looking-at-p "heading")))
(hy-delete-file-and-buffer kotl-file)
(kill-buffer "*HyRolo*")
(delete-directory temporary-file-directory))))