[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hyperbole 81dfd8961b 4/4: Merge pull request #323 from
|
From: |
ELPA Syncer |
|
Subject: |
[elpa] externals/hyperbole 81dfd8961b 4/4: Merge pull request #323 from rswgnu/rsw |
|
Date: |
Mon, 8 May 2023 16:58:05 -0400 (EDT) |
branch: externals/hyperbole
commit 81dfd8961b4d1097ba693885558450953d7031c1
Merge: 025abc4b35 430fd6d23b
Author: Robert Weiner <rsw@gnu.org>
Commit: GitHub <noreply@github.com>
Merge pull request #323 from rswgnu/rsw
Merge rsw latest fixes, ibtype and doc updates
---
ChangeLog | 36 +++-
HY-NEWS | 329 +++++++++++++++++---------------
Makefile | 9 +-
README.md | 2 +-
hibtypes.el | 7 +-
hypb-ert.el | 50 ++++-
kotl/EXAMPLE.kotl | 35 ++--
kotl/kimport.el | 229 ++++++++++++++---------
kotl/kotl-mode.el | 11 +-
man/hkey-help.txt | 1 +
man/hyperbole.html | 404 ++++++++++++++++++++++++----------------
man/hyperbole.info | Bin 598515 -> 601614 bytes
man/hyperbole.pdf | Bin 1350932 -> 1353645 bytes
man/hyperbole.texi | 151 ++++++++-------
man/im/action-key-animation.gif | Bin 752827 -> 669509 bytes
man/version.texi | 4 +-
test/kimport-tests.el | 69 +++++--
17 files changed, 814 insertions(+), 523 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 42d1ba3d81..9287a99290 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+2023-05-07 Bob Weiner <rsw@gnu.org>
+
+* Makefile (manual): Add manual target to build manual without building other
+ doc outputs.
+
+* test/kimport-tests.el: Improve all these tests and add
+ `kimport--aug-post-outline'.
+
+* hypb-ert.el (hyperbole-run-test-definition): Add ibtype that when on the
+ first line of an `ert-deftest' and not at eol nor on a grouping symbol,
+ evaluates the current version of the test and then runs it. Assist Key
+ press in the same spot steps through the test with edebug.
+ (hyperbole-run-test-definition:help, hypb-ert-def-at-p,
+ hypb-ert-run-test-at-definition):
+ Support functions.
+
+2023-05-06 Bob Weiner <rsw@gnu.org>
+
+* kotl/kimport.el (kimport:aug-post-outline, kimport:text):
+ Update to match `kimport:star-outline'.
+ (kimport:aug-post-statements):
+ Update to match `kimport:star-entries'.
+
+* kotl/EXAMPLE.kotl:
+ kotl/kotl-mode.el (kotl-mode):
+ man/hyperbole.texi (Promoting and Demoting): Update so {Shift-TAB} within
+ an Org table in a Koutline moves to the previous field to complement
+ the behavior of {TAB}. This leaves {M-TAB} as the only consistent way
+ to promote trees.
+
+* man/im/action-key-animation.gif: Update this animated gif.
+
2023-04-30 Mats Lidell <matsl@gnu.org>
* test/hui-tests.el (hui--ebut-rename)
@@ -5,7 +37,7 @@
(hui--ebut-rename-nonumbered-label, hui--ebut-rename-numbered-label)
(hui--ebut-rename-all-copies)
test/hbut-tests.el (hypb:program-create-ebut-in-buffer-with-same-label):
- Tests for ebut label rename.
+ Test for ebut label rename.
2023-04-30 Bob Weiner <rsw@gnu.org>
@@ -50,7 +82,7 @@
2023-04-23 Bob Weiner <rsw@gnu.org>
* kotl/klink.el (klink:at-p):
- hbut.el (hbut:outside-comment-p): Make the inside a comment prog
+ hbut.el (hbut:outside-comment-p): Make the inside of comment prog
mode tests in each of these use the same conditional tests.
* Makefile (version): Fix so this outputs the list of files whose
diff --git a/HY-NEWS b/HY-NEWS
index 59bd9069e9..3bcf70955f 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -8,8 +8,8 @@
** ACTION TYPES
*** display-boolean, display-value, display-variable: Made all of these
- interactive, so can be used as button actypes.
-
+ interactive, so can be used as button actypes. See "(hyperbole)
+ actypes display-boolean".
** DOCUMENTATION
@@ -39,108 +39,115 @@
*** Ibut Menu: Documented in the manual, notably the new Ibut/Create
menu item. See "(hyperbole)menu, Ibut/Create".
+ *** Manual Glossary: Added Ace Window, Consult, Org Mode, and Org Roam
+ entries. See "(hyperbole)Glossary".
+
*** Smart Key - Org Mode: Expanded with doc for more extensive behavior.
See "(hyperbole)Smart Key - Org Mode".
- *** Manual Glossary: Added Ace Window, Consult, Org Mode, and Org Roam
entries.
- See "(hyperbole)Glossary".
-
** HYCONTROL (See "(hyperbole)HyControl").
- *** I/J/K/M Key Bindings: In Window Control mode, move directionally (based
- on QUERTY keyboard layout) among windows in the selected frame. In Frame
- Control mode, move directionally among active frames. These keys utilize
- and prompt to install the windmove and framemove packages if not
installed.
- See "(hyperbole)I/J/K/M".
+ *** I/J/K/M Key Bindings: In Window Control mode, move directionally
+ (based on QUERTY keyboard layout) among windows in the selected frame.
+ In Frame Control mode, move directionally among active frames. These
+ keys utilize and prompt to install the windmove and framemove packages
+ if not installed. See "(hyperbole)I/J/K/M".
-** HYPERBOLE SYSTEM (See "(hyperbole)").
- *** Native Compilation: Hyperbole now may be natively compiled (.eln files).
- It works around an Emacs bug where async native comp of a package being
- installed does not load "hyperbole-autoloads.el". When building
Hyperbole
- without a package manager, 'make eln' now builds it natively.
+** HYPERBOLE SYSTEM (See "(hyperbole)").
- *** Natively Compiled Functions as Action Types: Now may be used as Hyperbole
- button action types. See "(hyperbole)Action Types".
+ *** Any Colorized Display: Face display and colorization of Hyperbole
+ buttons now works on any display capable of displaying colors. See
+ "(hyperbole)Button Colors".
- *** Reduced Warnings: Large number of byte-compiler warnings eliminated when
- building the Hyperbole package. None of these warnings should affect use
- of Hyperbole. Most open Hyperbole issues have also been resolved.
+ *** Create Buttons in Current Buffer: Stopped prompting for a source
+ buffer when creating a Hyperbole button. Always use the current
+ buffer and point. See "(hyperbole)Creation".
*** Improved Button Help: {C-h A} now says whether a button is explicit or
implicit. For implicit buttons, it displays the doc from both its
implicit button type and its associated action type.
- {C-h A} now also works on Emacs push-buttons, displaying their attributes
- and associated action. See "(hyperbole)Smart Key help".
-
- *** Improved Smart Key Debugging: {C-h h c d} enables Hyperbole Smart Key
- Action debugging. If an explicit button has an action that overrides its
- default action type action, then the debug messages will now show that
- action. Debug messages now also show all of the attributes of the
current
- button. See "(hyperbole)Smart Key Debugging".
+ {C-h A} now also works on Emacs push-buttons and text property
+ buttons, displaying their attributes and associated action. See
+ "(hyperbole)Smart Key help".
- *** Any Colorized Display: Face display and colorization of Hyperbole
buttons now
- works on any display capable of displaying colors. See
"(hyperbole)Button
- Colors".
-
- *** Create Buttons in Current Buffer: Stopped prompting for a source buffer
- when creating a Hyperbole button. Always use the current buffer and
point.
- See "(hyperbole)Creation".
-
- *** Interactive Org-Roam DB Consult Grep: {M-x hsys-org-roam-consult-grep
RET}
- Interactively greps org-roam files with live in-buffer display as you
move
- through matching lines. It uses the automatically installed
consult-org-roam
- package when invoked. See "(hyperbole)hsys-org-roam-consult-grep".
+ *** Interactive Org-Roam DB Consult Grep: {M-x hsys-org-roam-consult-grep
+ RET} Interactively greps org-roam files with live in-buffer display as
+ you move through matching lines. It uses the automatically installed
+ consult-org-roam package when invoked. See
+ "(hyperbole)hsys-org-roam-consult-grep".
*** mhtml-mode Markup Selection: Hyperbole's matching markup pair selection,
copying and movement now works with Emacs' builtin mhtml-mode. See
"(hyperbole)HTML tag pair".
+ *** Native Compilation: Hyperbole now may be natively compiled (.eln files).
+ It works around an Emacs bug where async native comp of a package being
+ installed does not load "hyperbole-autoloads.el". When building
+ Hyperbole without a package manager, 'make eln' now builds it natively.
+
+ *** Natively Compiled Functions as Action Types: Now may be used as
+ Hyperbole button action types. See "(hyperbole)Action Types".
+
+ *** Reduced Warnings: Large number of byte-compiler warnings eliminated when
+ building the Hyperbole package. None of these warnings should affect
+ use of Hyperbole. Most open Hyperbole issues have also been resolved.
+
*** XEmacs: Removed old XEmacs-compatibility code.
** HYROLO (See "(hyperbole)HyRolo").
- *** Koutline and Markdown File Support: The `hyrolo-file-list' can now
contain
- Koutline or Markdown files and will search their outline entries just
like
- it does for Org and Emacs outline files. See "(hyperbole)HyRolo
Concepts".
+ *** HyRolo Match Buffer Key Bindings: Improved movement keys:
+
+ - {b} Move backward at the same outline level
+ - {f} Move forward at the same outline level
+ - {n} Move to the next visible outline heading
+ - {p} Move to the previous visible outline heading
+ - {u} Move up a heading level
+ - {,} Move to the beginning of the current entry
+ - {.} Move to the end of the current entry
- *** Koutline Fast Search: Koutlines may now be included in `hyrolo-file-list'
- and individual cells extracted properly with any HyRolo query. Then the
- interactive commands to show the top-level matches, an outline of matches
- or to show, hide or move to matches, all work in the match display buffer
- as well.
+ See "(hyperbole)Hyrolo Keys".
- *** Match Buffer Name Change: Changed match buffer name from "*Hyperbole
Rolo*"
- to "*HyRolo*".
+ *** Koutline Fast Search: Koutlines may now be included in
+ `hyrolo-file-list' and individual cells extracted properly with any
+ HyRolo query. Then the interactive commands:
- *** New HyRolo menu items ConsultFind and HelmFind: These appear when you
- independently load consult or helm. These menu items then use the
- related interactive search functions to search over the HyRolo file list.
- See "(hyperbole)Consult" and "(hyperbole)Helm".
+ {t} show the top-level matches
+ {o} show an outline of matches
+ {s} show/expand current match
+ {h} hide current match
+ {f/b/n/p} move to another match
- ConsultFind utilizes `consult-grep' or `consult-ripgrep'.
- HelmFind uses the helm-org-rifle package and searches over .org and
- .otl files exclusively.
+ all work on Koutline cells displayed in the match buffer. See
+ "(hyperbole) HyRolo Concepts".
- *** HyRolo Match Buffer Key Bindings: Improved movement keys:
+ *** Koutline and Markdown File Support: The `hyrolo-file-list' can now
+ contain Koutline or Markdown files and will search their outline entries
+ just like it does for Org and Emacs outline files. See
+ "(hyperbole)HyRolo Concepts".
+
+ *** Match Buffer Name Change: Changed match buffer name from "*Hyperbole
+ Rolo*" to "*HyRolo*".
- - {b} Moves backward at the same outline level
- - {f} Moves forward at the same outline level
- - {n} Moves to the next visible outline heading
- - {p} Moves to the previous visible outline heading
- - {u} Moves up a heading level
- - {.} Moves to the end of the current entry
- - {,} Moves to the beginning of the current entry
+ *** New HyRolo menu items ConsultFind and HelmFind: These appear when you
+ independently load the @file{consult} or @file{helm-org-rifle} package.
+ These menu items then use the related interactive search functions to
+ search over the HyRolo file list.
+
+ ConsultFind utilizes `consult-ripgrep' or `consult-grep'. HelmFind uses
+ the helm-org-rifle package and searches over .org and .otl files
+ exclusively. See "(hyperbole)ConsultFind".
** IMPLICIT BUTTONS
- *** Action Button Result Display: Action buttons now display in the
minibuffer
- the result of evaluating any type of action expression, using Lisp
- readable values.
+ *** Action Button Result Display: Action buttons now display in the
+ minibuffer the result of evaluating any type of action expression,
+ using Lisp readable values.
*** Compilation and Grep Error Lines: Error lines in the Emacs Regression
Test buffer, *ert*, are now supported, as well as the 'Compiling
@@ -155,13 +162,29 @@
Added jumping to the referenced location from Ruby traceback stack
messages.
+ *** Emacs Regression Test Runs: New 'hyperbole-run-test-definition' implicit
+ button type defined in "hypb-ert.el". An Action Key press on the first
+ line of an ert test def and not on a grouping symbol (like a parenthesis)
+ nor at the end of a line, evaluates the definition and runs the test;
+ this ensures that the latest version is always run. An Assist Key press
+ does likewise but runs the test with edebug, stepping through it.
+
+ *** Highlighting of Ibut Names: New `property:ibut-face' used to highlight
+ any <[name]> prefixing an implicit button. All hproperty functions now
+ support this face as well as the `hproperty:but-face' used for explicit
+ buttons.
+
+ *** Jump to Lisp Identifier Definition in More Buffers: Lisp identifiers are
+ now recognized as programming etags in the *Warnings* byte-compilation
+ buffer and in Flymake log and diagnostics buffers.
+
*** Info Nodes: Better handle embedded double quotes and add support for
HTML " quoting.
*** Improved # and Embedded Space Path Handling: If a path exists, don't
- treat its # hash marks as section markers, notably for #autosave#
- files. Allow for unquoted filenames with spaces in them in ls
- listings in shell buffers (assume files are tab-delimited).
+ treat its # hash marks as section markers, notably for #autosave# files.
+ Allow for unquoted filenames with spaces in them in ls listings in shell
+ buffers (assume files are tab-delimited).
*** Ibut/Create Menu Item: Creates a named/labeled implicit button of any
type. Separates the name and the implicit button with " - ".
@@ -169,15 +192,6 @@
*** Relative Info Paths: Info files with relative pathnames outside of the
`Info-directory-list' now resolve properly, e.g. "man/hyperbole.info".
- *** Highlighting of Ibut Names: New `property:ibut-face' used to highlight
- any <[name]> prefixing an implicit button. All hproperty functions
- now support this face as well as the `hproperty:but-face' used for
- explicit buttons.
-
- *** Jump to Lisp Identifier Definition in More Buffers: Lisp identifiers
- are now recognized as programming etags in the *Warnings*
- byte-compilation buffer and in Flymake log and diagnostics buffers.
-
*** Path Implicit Buttons: Much improved relative path handling, including
expanding into executable paths when pathname is prefixed by ! or &,
handling info paths outside `Info-directory-list', like
@@ -197,31 +211,35 @@
** KOUTLINER (See "(hyperbole)Koutliner").
- *** M-S-left and M-S-Right: Org compatibility - Add tree promote and demote
- commands to these keys (same as existing M-left and M-right keys).
+ *** {M-S-<left>} and {M-S-<right>}: Org compatibility - Add tree promote and
+ demote commands to these keys (same as existing {M-<left>} and
+ {M-<right>} keys). See "(hyperbole)Promoting and Demoting".
*** Star Outline Import Indented Headings: Added support for Emacs/Org
star-based headings whose stars do not start at the beginning of a line,
- i.e. are indented.
+ i.e. are indented. See "(hyperbole)Inserting and Importing".
** MENUS (See "(hyperbole)Menus").
*** Minibuffer Menu Changes:
- - Multi-line Menus: When a menu line is too long for the screen,
- it is automatically split into multiple lines and aligned by column
- for ease of access.
+
+ - Multi-line Menus: When a menu line is too long for the screen, it is
+ automatically split into multiple lines and aligned by column for
+ ease of access.
*** Move Prefix Arg Number of Items: {M-b} and {M-f} move backward and
- forward by the number of items specified in any prefix argument given.
+ forward by the number of items specified by any given prefix argument,
+ as do {TAB} and {Shift-TAB}. See "(hyperbole)minibuffer menu".
-** HYPERBOLE PROGRAMMING INTERFACE CHANGES
+** PROGRAMMING INTERFACE CHANGES
*** (hypb:devdocs-lookup): Install and load devdocs package and then
call its `devdocs-lookup' function.
- *** (hpath:resolve): Add to resolve path variables without doing a path
expand.
+ *** (hpath:resolve): Add to resolve path variables without doing a path
+ expand.
*** (hsys-org-meta-return): Centralize sharing of {M-RET} key with Org mode.
@@ -251,10 +269,9 @@
(hyrolo-helm-org-rifle-directory): Behaves similarly but searches
over `org-directory'.
- *** hsys-org-roam.el: This library supports interactively grepping
- over org-roam files with live in-buffer display. It uses the
- automatically installed consult package when `hsys-org-roam-consult-grep'
- is invoked.
+ *** hsys-org-roam.el: This library supports interactively grepping over
+ org-roam files with live in-buffer display. It uses the automatically
+ installed consult package when `hsys-org-roam-consult-grep' is invoked.
*** (hattr:list): Now also returns the attributes of an Emacs push-button
using `hattr:emacs-button-attributes', as recognized by
@@ -262,8 +279,8 @@
*** (hui:ibut-create, ibut:create, ibut:delimit, ibut:edit, ibut:operate):
Add interactive, named/labeled implicit button creation. For
- `ibut:create', improve doc and add but-sym arg which can supply
- all other arguments in its properties.
+ `ibut:create', improve doc and add but-sym arg which can supply all
+ other arguments in its properties.
*** (ibut:label-key-match): Return filtered list of ibut labels.
@@ -281,11 +298,11 @@
(set:replace): Now replaces a non-keyed old-value with a new value.
- (set:replace-member): Added this new function to replace an existing
- set member or to add a new one if no matching existing member.
+ (set:replace-member): Added this new function to replace an existing set
+ member or to add a new one if no matching existing member.
- (set:members): Now keeps members in stable order; previously
- returned in reverse order.
+ (set:members): Now keeps members in stable order; previously returned in
+ reverse order.
*** (hycontrol-framemove-*): Add hycontrol-framemove-direction,
hycontrol-framemove-up, hycontrol-framemove-left,
@@ -306,24 +323,24 @@
*** (hui:menu-choose): Renamed from `hui:menu-select'.
- *** (hyperbole-web-search): Added optional `return-search-expr-flag'
- to return search expression rather than doing the search, to build up
- more involved search commands.
+ *** (hyperbole-web-search): Added optional `return-search-expr-flag' to
+ return search expression rather than doing the search, to build up more
+ involved search commands.
*** (hypb:replace-match-string): Removed this unused function.
*** (hyrolo-verify, hyrolo-isearch, hyrolo-next-match,
- hyrolo-previous-match, hyrolo-isearch-for-regexp):
- Added support for use in main HyRolo file, not just the match buffer.
+ hyrolo-previous-match, hyrolo-isearch-for-regexp): Added support for
+ use in main HyRolo file, not just the match buffer.
- *** (ibut:at-p): Fixed to return nil if name and lbl-key are both nil.
- Also added support for <> and {} ibut delimiters.
+ *** (ibut:at-p): Fixed to return nil if name and lbl-key are both nil. Also
+ added support for <> and {} ibut delimiters.
- *** (hyrolo-find-file-noselect-function): Added so can customize
- low-level function used to read in each file searched by HyRolo.
+ *** (hyrolo-find-file-noselect-function): Added so can customize low-level
+ function used to read in each file searched by HyRolo.
- *** (hyrolo-previous-match): Changed so this can be used in a
- predicate when a match is found.
+ *** (hyrolo-previous-match): Changed so this can be used in a predicate when
+ a match is found.
*** (hyrolo-grep): Added support for `outline-regexp' and `outline-level'
variables from multiple file types.
@@ -331,28 +348,31 @@
(hyrolo-mode-outline-level): Added and used in `hyrolo-mode'.
(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 it to its default value, after which it may be
- modified.
+ `hyrolo-mode-outline-level' and define that function to support star
+ outlines and Koutlines. Also, made `hyrolo-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,
- hyrolo-word): Added optional `headline-only' argument to limit
- searches to headlines.
+ hyrolo-word): Added optional `headline-only' argument to limit searches
+ to headlines.
+
+ *** (hyrolo-next-regexp-match, hyrolo-next-match-function): Added to allow
+ for different hyrolo entry matching functions.
- *** (hyrolo-next-regexp-match, hyrolo-next-match-function): Added to
- allow for different hyrolo entry matching functions.
+ *** (smart-push-button): Added and referenced in `hkey-help' to trigger
+ push-button-specific help output.
** ORG MODE INTEGRATION (See "(hyperbole)Smart Key - Org Mode").
*** Org and Org Roam IDs: New `org-id' implicit button type and
- `link-to-org-id-marker' action type that jump to the referent of an
- Org ID or Org Roam ID at point. If a marker does not yet exist,
- there is the `link-to-org-id' action type. An Action Key drag across
- windows ending at an Org ID will create a link button with this last
- action type, which will jump to the ID's definition regardless of
- whether the link was to the definition or a reference.
+ `link-to-org-id-marker' action type that jump to the referent of an Org
+ ID or Org Roam ID at point. If a marker does not yet exist, there is
+ the `link-to-org-id' action type. An Action Key drag across windows
+ ending at an Org ID will create a link button with this last action
+ type, which will jump to the ID's definition regardless of whether the
+ link was to the definition or a reference. See "(hyperbole) ibtypes
+ org-id".
*** Org Code Blocks: On a header :dir directory, the Action Key displays
that directory in dired. The Assist Key anywhere in the header removes
@@ -362,27 +382,22 @@
targets now work just as they do on radio button targets.
*** Todo Cycling: An Action Key press on an Org mode todo state keyword,
- cycles to the next state. An Assist Key press in the same place
- cycles to the next set of states, if any.
+ cycles to the next state. An Assist Key press in the same place cycles
+ to the next set of states, if any.
- *** {C-c /}: Hyperbole {C-c /} web search binding defers to org-mode
- binding, `org-show-todo-tree' but uses the improved Hyperbole version,
- `hsys-org-todo-occur' which allows filtering to specific todo states.
+ *** {C-c /}: The Hyperbole {C-c /} web search binding defers to the org-mode
+ binding, `org-show-todo-tree', when in Org mode, but uses the improved
+ Hyperbole command version, `hsys-org-todo-occur', which allows filtering
+ to specific todo states.
** SMART (ACTION AND ASSIST) KEYS (See "(hyperbole)Smart Keys").
- *** Smart Dired: Action Key subdirectory selection at point now works on
- any dired header line, not just the first one. Use {i} to insert
- multiple subdirectories in Dired mode. Smart Key end-of-line behavior
- is no longer specified in Dired mode but handled globally for consistency
- across modes.
-
*** Hyperbole Symbol Tags: Hyperbole now includes a pre-built TAGS file so
- that an Action Key press on any Hyperbole symbol jumps to its
- definition without the need for any additional support. This also
- works on Hyperbole type names (which have a hidden prefix) in a help
- buffer where an Action Key press displays the type definition.
+ that an Action Key press on any Hyperbole symbol jumps to its definition
+ without the need for any additional support. This also works on
+ Hyperbole type names (which have a hidden prefix) in a help buffer where
+ an Action Key press displays the type definition.
*** Lisp Load, Autoload and Require Expressions: Action Key press on any
named target in such expressions displays the associated library.
@@ -392,29 +407,41 @@
functions run with a press of the Assist Key on such buttons. See
"(hyperbole)Action Buttons".
+ *** Smart Dired: Action Key subdirectory selection at point now works on any
+ dired header line, not just the first one. Use {i} to insert multiple
+ subdirectories in Dired mode. Smart Key end-of-line behavior is no
+ longer specified in Dired mode but handled globally for consistency
+ across modes. See "(hyperbole)Smart Key - Dired Mode".
+
** TEST CASES
- *** Hyperbole Automated Testing: Automated test cases increased to over
- 285. Simply run 'make test-all' or 'make test' from the command-line
- when in the Hyperbole source directory and you should see all tests
- pass. If any fail, you can press the Action Key to see the source of
- the failure. Full testing is supported under POSIX systems only. See
- "Makefile" and "test/MANIFEST".
+ *** Hyperbole Automated Testing: Automated test cases increased to over 285.
+ Simply run 'make test-all' or 'make test' from the command-line when in
+ the Hyperbole source directory and you should see all tests pass. If
+ any fail, you can press the Action Key to see the source of the failure.
+ Full testing is supported under POSIX systems only. See "Makefile" and
+ "test/MANIFEST".
*** The Hyperbole team's CI/CD process automatically runs all test cases
against Emacs major versions 27, 28 and 29 whenever a code change is
checked in against git.
+ *** QA: Many quality improvements across Hyperbole and integration with
+ Emacs updates with backward compatibility from Emacs 27 through Emacs 29
+ releases.
+
+
+** WINDOW GRIDS (See "(hyperbole)grid of windows").
-** WINDOWS GRIDS (See "(hyperbole)grid of windows").
+ *** Grid by File Pattern: Fixed so prompt for a string pattern rather than a
+ file name and forced use of full pathnames to avoid improper relative
+ path resolution.
- *** Grid by File Pattern: Fixed so prompt for a string pattern rather than
- a file name and forced use of full pathnames to avoid improper relative
- path resolution. See
"(hyperbole)hycontrol-windows-grid-by-file-pattern".
+ Updated to use prefix arg as grid size or to autosize when not given or
+ given an invalid value.
- Updated to use prefix arg as grid size or to autosize when not given
- or given an invalid value.
+ See "(hyperbole)hycontrol-windows-grid-by-file-pattern".
===========================================================================
diff --git a/Makefile b/Makefile
index 8c0ba07234..3545971d98 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
# Author: Bob Weiner
#
# Orig-Date: 15-Jun-94 at 03:42:38
-# Last-Mod: 23-Apr-23 at 14:36:37 by Bob Weiner
+# Last-Mod: 7-May-23 at 20:33:02 by Bob Weiner
#
# Copyright (C) 1994-2023 Free Software Foundation, Inc.
# See the file HY-COPY for license information.
@@ -359,8 +359,11 @@ version: doc
fi
@ echo ""
-# Build the Info, HTML and Postscript versions of the user manual and
README.md.html.
-doc: README.md.html info html pdf
+# Build the README.md.html and Info, HTML and Postscript versions of the user
manual
+doc: README.md.html manual
+
+# Build the Info, HTML and Postscript versions of the user manual
+manual: info html pdf
TEXINFO_SRC = $(man_dir)/hyperbole.texi $(man_dir)/version.texi
$(man_dir)/hkey-help.txt $(man_dir)/im/*.png
diff --git a/README.md b/README.md
index e062b1e35e..57fac24ed7 100644
--- a/README.md
+++ b/README.md
@@ -92,7 +92,7 @@ In short, Hyperbole lets you:
A single key or mouse button automatically does the right thing in
dozens of contexts; just press and go.
-
+<img src="man/im/action-key-animation.gif" alt="Hyperbole Animation of Action
Key Contexts">
3. Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6,
that all renumber automatically as any node or tree is moved in the
diff --git a/hibtypes.el b/hibtypes.el
index b0e723261a..1c49ca0005 100644
--- a/hibtypes.el
+++ b/hibtypes.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 19-Sep-91 at 20:45:31
-;; Last-Mod: 23-Apr-23 at 20:04:58 by Mats Lidell
+;; Last-Mod: 7-May-23 at 13:23:19 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -120,7 +120,8 @@ line and check for a source reference line again."
(hib-python-traceback))))
;;; ========================================================================
-;;; Runs Hyperbole tests
+;;; Action Button Types that run Hyperbole tests;
+;;; ert-deftest ibtype executes current ert test when on first line of def.
;;; ========================================================================
(load "hypb-ert")
@@ -132,7 +133,7 @@ line and check for a source reference line again."
(load "hib-social")
;;; ========================================================================
-;;; Displays Org Roam and Org IDs
+;;; Displays Org Roam and Org IDs.
;;; ========================================================================
(defib org-id ()
diff --git a/hypb-ert.el b/hypb-ert.el
index aafc59ab63..159384a039 100644
--- a/hypb-ert.el
+++ b/hypb-ert.el
@@ -3,7 +3,7 @@
;; Author: Mats Lidell <matsl@gnu.org> and Bob Weiner <rsw@gnu.org>
;;
;; Orig-Date: 31-Mar-21 at 21:11:00
-;; Last-Mod: 11-May-22 at 00:00:42 by Bob Weiner
+;; Last-Mod: 7-May-23 at 20:23:27 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -29,6 +29,7 @@
;;; Code:
+(require 'lisp-mode)
(require 'hload-path)
(require 'ert)
(require 'hbut)
@@ -65,5 +66,52 @@
(hypb-ert-require-libraries)
(ert t))
+;; The following expression is true only when an ert-deftest has been
+;; instrumented by edebug:
+;; (memq 'edebug-enter (flatten-tree (ert-test-body (ert-get-test test-sym))))
+
+(defun hypb-ert-def-at-p ()
+ "Return test name if on the name in the first line of an ert test def."
+ (unless (or (eolp)
+ (memq (char-after (point))
+ '(?\( ?\) ?\[ ?\] ?{ ?} ?< ?>)))
+ (save-excursion
+ (forward-line 0)
+ (when (looking-at (concat "(ert-deftest[ \t]+\\("
+ lisp-mode-symbol-regexp
+ "\\)[ \t]+("))
+ (match-string-no-properties 1)))))
+
+(defun hypb-ert-run-test-at-definition (test-name &optional debug-it)
+ "Assume on the name in the first line of an ert test def, eval and run the
test.
+With optional DEBUG-IT non-nil (when the assist-key is pressed), edebug the
+test when it is run."
+ (let (test-sym)
+ (setq test-sym (intern-soft test-name))
+ ;; Ensure run the latest version of the test, either with the
+ ;; edebugger if already instrumented for it; otherwise, with the
+ ;; normal evaluator.
+ (if (and test-sym debug-it)
+ (edebug-defun)
+ (eval-defun nil))
+ (setq test-sym (intern-soft test-name))
+ (when (and test-sym (ert-test-boundp test-sym))
+ (when (and buffer-file-name (string-prefix-p hyperb:dir
buffer-file-name))
+ (hypb-ert-require-libraries))
+ (ert test-sym))))
+
+(defib hyperbole-run-test-definition ()
+ "If on the name in the first line of an ert test def, eval and run the test.
+With an Assist Key press instead, edebug the test and step through it."
+ (let ((test-name (hypb-ert-def-at-p)))
+ (when test-name
+ (hact 'hypb-ert-run-test-at-definition test-name))))
+
+(defun hyperbole-run-test-definition:help (_hbut)
+ "If on the name in the first line of an ert test def, edebug the test."
+ (let ((test-name (hypb-ert-def-at-p)))
+ (when test-name
+ (hypb-ert-run-test-at-definition test-name t))))
+
(provide 'hypb-ert)
;;; hypb-ert.el ends here
diff --git a/kotl/EXAMPLE.kotl b/kotl/EXAMPLE.kotl
index 4404177a04..8fee7f1554 100644
--- a/kotl/EXAMPLE.kotl
+++ b/kotl/EXAMPLE.kotl
@@ -49,11 +49,9 @@
then yank the contents into another cell with {C-y}.
3b5. Tree Demotion and Promotion: Trees may be demoted pressing {TAB}
- or promoted by pressing {M-TAB} or {SHIFT-TAB}, as in most
- outliners today. Sub-levels move with their parents. {M-0 TAB}
- and {M-0 M-TAB} will demote and promote trees and will
- additionally refill each cell that has not been specially marked
- to prevent refilling.
+ or promoted by pressing {M-TAB}. {M-0 TAB} and {M-0 M-TAB} will
+ demote and promote trees and will additionally refill each cell
+ that has not been specially marked to prevent refilling.
{M-1 TAB} behaves specially. It toggles the function of {TAB} and
{M-TAB} so that they insert a tab character and remove the
@@ -102,8 +100,8 @@
Copying and moving only work within a single outline right now, so
don't try to move or copy trees to another Koutline file.
- {[M-down]} - Move current tree past prefix arg same level trees.
- {[M-up]} - Move current tree back prefix arg same level trees.
+ {M-<down>} - Move current tree past prefix arg same level trees.
+ {M-<up>} - Move current tree back prefix arg same level trees.
{C-c c} - Copy <tree> to follow as sibling of <cell>.
{C-u C-c c} - Copy <tree> to follow as first child of <cell>.
@@ -372,29 +370,30 @@
3d2. Here are two table examples:
- |--------------------------------+---------------------------|
- | Promotion Inside Org Table | Demotion Inside Org Table |
- |--------------------------------+---------------------------|
- | {M-0 Shift-TAB} or {M-0 M-TAB} | {M-0 TAB} |
- | {C-c C-,} | {C-c C-.} |
- | {C-c C-<} | {C-c C->} |
- |--------------------------------+---------------------------|
+ |----------------------------+---------------------------|
+ | Promotion Inside Org Table | Demotion Inside Org Table |
+ |----------------------------+---------------------------|
+ | {M-0 M-TAB} | {M-0 TAB} |
+ | {C-c C-,} | {C-c C-.} |
+ | {C-c C-<} | {C-c C->} |
+ |----------------------------+---------------------------|
|-----------------------------+----------------------------|
| Promotion Outside Org Table | Demotion Outside Org Table |
|-----------------------------+----------------------------|
- | {Shift-TAB} or {M-TAB} | {TAB} |
- | {M-left} | {M-right} |
+ | {M-TAB} or {Shift-TAB} | {TAB} |
+ | {M-<left>} | {M-<right>} |
| {C-c C-,} | {C-c C-.} |
| {C-c C-<} | {C-c C->} |
|-----------------------------+----------------------------|
-
To toggle table editing mode on or off, press the Action
Key on any of the table | symbols and then edit as you
would any Org table. Note how the above tables show how
TAB and Shift-TAB behave differently in and outside of
- tables. See "(Org)Tables" for help on utilizing tables.
+ tables; use M-TAB rather than Shift-TAB for tree promotion
+ consistency anywhere. See "(Org)Tables" for help on utilizing
+ tables.
3e. The Koutliner code runs on any system that supports Emacs,
whether under a window system or from a dumb terminal display.
diff --git a/kotl/kimport.el b/kotl/kimport.el
index 4747d9122d..c4ab4d8e76 100644
--- a/kotl/kimport.el
+++ b/kotl/kimport.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 15-Nov-93 at 11:57:05
-;; Last-Mod: 9-Apr-23 at 18:42:50 by Bob Weiner
+;; Last-Mod: 7-May-23 at 16:11:58 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -103,6 +103,9 @@ information on specific importation formats."
(match-string 0 import-buf-name))))
(setq function (or (cdr (assoc import-suffix kimport:suffix-alist))
(cdr (assq t kimport:mode-alist))))))
+ (when hkey-debug
+ (message "(kimport:file): Buffer: %s; Import-Function: %s"
+ import-buf-name function))
(funcall function import-from output-to children-flag)))
(defun kimport:insert-buffer (buffer)
@@ -183,8 +186,8 @@ Each statement to be imported is delimited by an Augment
relative id at the
end of the statement. \"1\" = level 1, \"1a\" = level 2 in outline and so
on."
(interactive "FImport from Augment post-numbered buffer/file: \nFBuffer/file
to insert cells into: \nP")
- (let ((output-level 1) (klabel "1")
- initially-empty-output no-renumber orig-point count total)
+ (let ((output-level 1) (klabel "1") (count 0)
+ max-pos-and-count initially-empty-output no-renumber orig-point total)
;; Don't change the order of import-from and output-to inits here.
(setq import-from (kimport:copy-and-set-buffer import-from)
output-to (kimport:initialize output-to t)
@@ -207,21 +210,28 @@ on."
(unless initially-empty-output
;; Insert first cell as sibling of current cell.
(set-buffer output-to)
- (if children-flag
- ;; Insert as children.
- (progn (setq klabel (klabel:child (kcell-view:label))
- output-level (klabel:level klabel))
- ;; Move to end of this cell since cell insertion will
- ;; occur at point.
- (goto-char (kcell-view:end)))
- ;; Insert as successors.
- (setq klabel (klabel:increment (kcell-view:label))
- output-level (klabel:level klabel))
- ;; Move to start of line of next tree since cell insertion will occur
- ;; at point.
- (goto-char (kotl-mode:tree-end))))
- (setq count (kimport:aug-post-statements
- import-from output-to klabel output-level 1 0 total)))
+ (cond (children-flag
+ ;; Insert as children.
+ (setq klabel (klabel:child (kcell-view:label))
+ output-level (klabel:level klabel))
+ ;; Move to end of this cell since cell insertion will
+ ;; occur at point.
+ (goto-char (kcell-view:end)))
+ ((string-empty-p (kcell-view:contents))
+ ;; This is an unused cell, fill in from here.
+ (setq klabel (kcell-view:label)
+ output-level (klabel:level klabel))
+ (goto-char (kcell-view:start)))
+ (t ;; Insert as successors.
+ (setq klabel (klabel:increment (kcell-view:label))
+ output-level (klabel:level klabel))
+ ;; Move to start of line of next tree since cell insertion
+ ;; will occur at point.
+ (goto-char (kotl-mode:tree-end)))))
+ (setq max-pos-and-count (kimport:aug-post-statements
+ import-from output-to klabel
+ output-level 1 count total 0)
+ count (cdr max-pos-and-count)))
(pop-to-buffer output-to)
(kfile:narrow-to-kcells)
(unless no-renumber
@@ -249,8 +259,8 @@ placed.
(setq import-from buffer-file-name))
(when (and buffer-file-name (directory-name-p output-to))
(setq output-to (concat (file-name-sans-extension buffer-file-name)
".kotl")))
- (let ((output-level 1) (klabel "1")
- max-pos-and-count initially-empty-output no-renumber orig-point count
total)
+ (let ((output-level 1) (klabel "1") (count 0)
+ max-pos-and-count initially-empty-output no-renumber orig-point total)
;; Don't change the order of import-from and output-to inits here.
(setq import-from (kimport:copy-and-set-buffer import-from)
;; Set current buffer to output-to
@@ -294,11 +304,11 @@ placed.
(t ;; Insert as successors.
(setq klabel (klabel:increment (kcell-view:label))
output-level (klabel:level klabel))
- ;; Move to start of line of next tree since cell insertion will
occur
- ;; at point.
+ ;; Move to start of line of next tree since cell insertion
+ ;; will occur at point.
(goto-char (kotl-mode:tree-end)))))
(setq max-pos-and-count (kimport:star-entries
- import-from output-to klabel output-level 1 0
total 0)
+ import-from output-to klabel output-level 1
count total 0)
count (cdr max-pos-and-count)))
(pop-to-buffer output-to)
(kfile:narrow-to-kcells)
@@ -325,10 +335,15 @@ Import Koutlines with their structure intact. Import text
paragraphs as a sequence of same level cells. The variable,
`paragraph-start,' is used to determine paragraphs."
(interactive "FImport from text/koutline buffer/file: \nFInsert cells into
koutline buffer/file: \nP")
- (let ((klabel "1") (output-level 1) (count 0) initially-empty-output
- no-renumber orig-point total)
+ (when (and buffer-file-name (directory-name-p import-from))
+ (setq import-from buffer-file-name))
+ (when (and buffer-file-name (directory-name-p output-to))
+ (setq output-to (concat (file-name-sans-extension buffer-file-name)
".kotl")))
+ (let ((output-level 1) (klabel "1") (count 0)
+ initially-empty-output no-renumber orig-point total)
;; Don't change the order of import-from and output-to inits here.
(setq import-from (kimport:copy-and-set-buffer import-from)
+ ;; Set current buffer to output-to
output-to (kimport:initialize output-to t)
orig-point (point)
initially-empty-output (zerop (- (point-max) (point-min)))
@@ -341,55 +356,57 @@ paragraphs as a sequence of same level cells. The
variable,
(error "(kimport:text): Import and output buffers may not be the same."))
(set-buffer import-from)
- (let ((kotl-import (eq major-mode 'kotl-mode))
+ (let ((kotl-import (derived-mode-p 'kotl-mode))
visible-cells)
(save-excursion
- (if initially-empty-output
- nil
+ (goto-char (point-min))
+ (unless initially-empty-output
;; Insert first cell as sibling of current cell.
(set-buffer output-to)
- (if children-flag
- ;; Insert as children.
- (progn (setq klabel (klabel:child (kcell-view:label))
- output-level (klabel:level klabel))
- ;; Move to end of this cell since cell insertion will
- ;; occur at point.
- (goto-char (kcell-view:end)))
- ;; Insert as successors.
- (setq klabel (klabel:increment (kcell-view:label))
- output-level (klabel:level klabel))
- ;; Move to start of line of next tree since cell insertion will
occur
- ;; at point.
- (goto-char (kotl-mode:tree-end)))
- (set-buffer import-from))
-
- (if kotl-import
- ;; Importing from a koutline, so handle specially.
- (progn (kotl-mode:beginning-of-buffer)
- ;; Total number of cells.
- (setq total (count-matches "[\n\r][\n\r]")
- visible-cells (count-matches "\n\n")
- count (save-excursion
- ;; Incredible non-local exit to ensure that
- ;; recursion ends at the right time.
- (catch 'end
- (kimport:kcells import-from output-to klabel
- output-level 1
- count total)))))
-
- (outline-show-all)
- (goto-char (point-min))
- ;; Total number of paragraphs.
- (setq total (kimport:count-paragraphs)
- count (kimport:text-paragraphs import-from output-to klabel
- output-level count total))))
+ (cond (children-flag
+ ;; Insert as children.
+ (setq klabel (klabel:child (kcell-view:label))
+ output-level (klabel:level klabel))
+ ;; Move to end of this cell since cell insertion will
+ ;; occur at point.
+ (goto-char (kcell-view:end)))
+ ((string-empty-p (kcell-view:contents))
+ ;; This is an unused cell, fill in from here.
+ (setq klabel (kcell-view:label)
+ output-level (klabel:level klabel))
+ (goto-char (kcell-view:start)))
+ (t ;; Insert as successors.
+ (setq klabel (klabel:increment (kcell-view:label))
+ output-level (klabel:level klabel))
+ ;; Move to start of line of next tree since cell insertion
+ ;; will occur at point.
+ (goto-char (kotl-mode:tree-end))))))
+
+ (if kotl-import
+ ;; Importing from a koutline, so handle specially.
+ (progn (kotl-mode:beginning-of-buffer)
+ ;; Total number of cells.
+ (setq total (count-matches "[\n\r][\n\r]")
+ visible-cells (count-matches "\n\n")
+ count (save-excursion
+ ;; Incredible non-local exit to ensure that
+ ;; recursion ends at the right time.
+ (catch 'end
+ (kimport:kcells import-from output-to klabel
+ output-level 1
+ count total)))))
+ (outline-show-all)
+ (goto-char (point-min))
+ ;; Total number of paragraphs.
+ (setq total (kimport:count-paragraphs)
+ count (kimport:text-paragraphs import-from output-to klabel
+ output-level count total)))
(pop-to-buffer output-to)
(kfile:narrow-to-kcells)
(unless no-renumber
(klabel-type:update-labels klabel))
(goto-char orig-point)
- (if (kotl-mode:buffer-empty-p)
- nil
+ (unless (kotl-mode:buffer-empty-p)
(kotl-mode:to-valid-position))
(if kotl-import
(message "Imported %d of %d visible cells from a %d cell outline."
@@ -433,20 +450,27 @@ paragraphs as a sequence of same level cells. The
variable,
(t nil))))
(defun kimport:aug-post-statements (import-from output-to klabel output-level
- import-level count total)
+ import-level count total max-pos)
"Insert post-numbered Augment statements (contents only) from IMPORT-FROM.
Is inserted in existing OUTPUT-TO.
KLABEL is the label to use for the first imported statement.
OUTPUT-LEVEL is the level at which to insert the first statement.
-IMPORT-LEVEL is the depth of the current statement in the import file,
-\(initially 1).
+IMPORT-LEVEL is the depth of the current statement in the import
+file, \(initially 1).
-COUNT of inserted cells starts at 0. TOTAL is the total number of statements
-in IMPORT-FROM, used to show a running tally of the imported statements."
+COUNT of inserted cells starts at 0. TOTAL is the total number
+of statements in IMPORT-FROM, used to show a running tally of the
+imported statements. MAX-POS is the furthest position searched
+in IMPORT-FROM so far (initially 0).
+
+Return a cons of MAX-POS and COUNT."
(set-buffer import-from)
- (let ((cell-end-regexp " +\\([0-9][0-9a-z]*\\)\n\\(\n+\\|\\'\\)")
- contents start subtree-p end end-contents statement-level
+ (let ((start (point))
+ (cell-end-regexp " +\\([0-9][0-9a-z]*\\)\n\\(\n+\\|\\'\\)")
+ (case-fold-search)
+ max-pos-and-count
+ contents subtree-p end end-contents statement-level
child-label)
;; While find cells at import-level or deeper ...
(while (and (setq start (point))
@@ -465,23 +489,31 @@ in IMPORT-FROM, used to show a running tally of the
imported statements."
(< statement-level
(klabel:level-alpha (match-string 1))))))
(with-current-buffer output-to
- ;; Add the cell starting at point.
- (kview:add-cell klabel output-level contents nil t)
+ (if (and (zerop count) (string-empty-p (kcell-view:contents)))
+ ;; Reuse this initial empty cell in koutline
+ (progn (kview:insert-contents (kcell-view:cell) contents 'no-fill
+ (make-string (kcell-view:indent) ?\ ))
+ (goto-char (kcell-view:end)))
+ ;; Add the cell starting at point.
+ (kview:add-cell klabel output-level contents nil t))
(if subtree-p (setq child-label (klabel:child klabel)))
(message "%d of %d statements converted..."
- (setq count (1+ count)) total)
+ (if (= statement-level 1) (setq count (1+ count)) count)
+ total)
(setq klabel (klabel:increment klabel)))
;;
;; Current buffer returns to `import-from' here.
;; Handle each sub-level through recursion.
(when subtree-p
;; Subtree exists so insert its cells.
- (setq count
+ (setq max-pos-and-count
(kimport:aug-post-statements
import-from output-to child-label (1+ output-level)
- (1+ import-level) count total))))
- (goto-char start))
- count)
+ (1+ import-level) count total max-pos)
+ max-pos (car max-pos-and-count)
+ count (cdr max-pos-and-count))))
+ (goto-char (setq max-pos (max end max-pos))))
+ (cons max-pos count))
;;;###autoload
(defun kimport:copy-and-set-buffer (source)
@@ -592,7 +624,9 @@ IMPORT-LEVEL is the depth of the current cell in the import
file,
\(initially 1).
COUNT of inserted cells starts at 0. TOTAL is the total number of cells
-in IMPORT-FROM, used to show a running tally of the imported cells."
+in IMPORT-FROM, used to show a running tally of the imported cells.
+
+Return COUNT."
(set-buffer import-from)
(goto-char (kcell-view:start))
(let ((again t) contents subtree-p child-label)
@@ -630,8 +664,10 @@ OUTPUT-LEVEL is the level at which to insert the first
entry.
IMPORT-LEVEL is the depth of the current entry in the import file,
\(initially 1).
-COUNT of inserted entries starts at 0. TOTAL is the total number of entries
-in IMPORT-FROM, used to show a running tally of the imported entries.
+COUNT of inserted entries starts at 0. TOTAL is the total number
+of entries in IMPORT-FROM, used to show a running tally of the
+imported entries. MAX-POS is the furthest position searched in
+IMPORT-FROM so far (initially 0).
Return a cons of MAX-POS and COUNT."
(set-buffer import-from)
@@ -655,7 +691,7 @@ Return a cons of MAX-POS and COUNT."
(setq contents (kimport:unindent-region start (point)))
(with-current-buffer output-to
(if (and (zerop count) (string-empty-p (kcell-view:contents)))
- ;; Reuse this initial empty cell in outline
+ ;; Reuse this initial empty cell in koutline
(progn (kview:insert-contents (kcell-view:cell) contents 'no-fill
(make-string (kcell-view:indent) ?\ ))
(goto-char (kcell-view:end)))
@@ -684,16 +720,18 @@ Return a cons of MAX-POS and COUNT."
(cons max-pos count))
(defun kimport:text-paragraphs (import-from output-to klabel
- output-level _count total)
+ output-level count total)
"Insert text paragraphs from IMPORT-FROM into existing OUTPUT-TO.
First cell is inserted with KLABEL at OUTPUT-LEVEL, as the sibling of the
previous cell, with the COUNT of inserted paragraphs starting at 0. TOTAL is
the total number of paragraphs in IMPORT-FROM, used to show a running tally
of the imported paragraphs.
-The variable, `paragraph-start' is used to determine paragraphs."
+The variable, `paragraph-start' is used to determine paragraphs.
+
+Return COUNT."
(set-buffer import-from)
- (let* ((count 0) start end contents)
+ (let* (start end contents)
;; Next line is needed when importing into an existing kview.
(goto-char (point-min))
;; Move past blank lines at point.
@@ -707,13 +745,18 @@ The variable, `paragraph-start' is used to determine
paragraphs."
(setq end (goto-char (match-end 0))))
(/= start end))
(setq contents (kimport:unindent-region start end))
- (set-buffer output-to)
- ;; Add the cell starting at point.
- (kview:add-cell klabel output-level contents nil t)
- (setq count (1+ count))
- (message "%d of %d paragraphs converted..."
- count total)
- (setq klabel (klabel:increment klabel))
+ (with-current-buffer output-to
+ (if (and (zerop count) (string-empty-p (kcell-view:contents)))
+ ;; Reuse this initial empty cell in koutline
+ (progn (kview:insert-contents (kcell-view:cell) contents 'no-fill
+ (make-string (kcell-view:indent) ?\ ))
+ (goto-char (kcell-view:end)))
+ ;; Add the cell starting at point.
+ (kview:add-cell klabel output-level contents nil t))
+ (setq count (1+ count))
+ (message "%d of %d paragraphs converted..."
+ count total)
+ (setq klabel (klabel:increment klabel)))
(set-buffer import-from)
(goto-char end)
;; Move past blank lines separating paragraphs.
diff --git a/kotl/kotl-mode.el b/kotl/kotl-mode.el
index e82d58e618..c7c04b387f 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: 16-Oct-22 at 19:29:20 by Mats Lidell
+;; Last-Mod: 6-May-23 at 12:39:55 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -204,11 +204,10 @@ It provides the following keys:
(orgtbl-make-binding 'orgtbl-meta-return 106
[(meta return)] "\M-\C-m"))
(org-defkey orgtbl-mode-map "\C-d"
- (orgtbl-make-binding 'kotl-mode:delete-char 201
- "\C-d"))
- (org-defkey orgtbl-mode-map [(shift iso-lefttab)]
- (orgtbl-make-binding 'org-shifttab 202
- [(shift iso-lefttab)] [backtab] [(shift
tab)]))
+ (orgtbl-make-binding 'kotl-mode:delete-char 201 "\C-d"))
+ (org-defkey orgtbl-mode-map [S-iso-lefttab]
+ (orgtbl-make-binding 'org-shifttab 107
+ [S-iso-lefttab] [backtab] [(shift tab)]))
(run-hooks 'kotl-mode-hook)
(add-hook 'change-major-mode-hook #'kotl-mode:show-all nil t))
diff --git a/man/hkey-help.txt b/man/hkey-help.txt
index c0adcd11ee..60a6ddd309 100644
--- a/man/hkey-help.txt
+++ b/man/hkey-help.txt
@@ -82,6 +82,7 @@ Hyperbole Key Press/Click in Special Modes
Treemacs Displays item Displays item
Dired Sidebar Displays item Displays item
Emacs Push Button Activates button Button help
+ Emacs Regression Test Def Eval and run test Edebug and run test
Thing Begin or End Mark thing region Mark & kill thing
region
Page Directory Listing Jumps to page <- same
Imenu Programming Identifier Jumps to in-buffer def Prompts for id to
jump to
diff --git a/man/hyperbole.html b/man/hyperbole.html
index fe9e447401..b0ae46c5c5 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -4,7 +4,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This manual is for GNU Hyperbole
-(Edition 8.0.1pre, Published March, 2023).
+(Edition 8.0.1pre, Published May, 2023).
Copyright © 1989-2023 Free Software Foundation, Inc.
@@ -107,7 +107,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
<PRE>
Edition 8.0.1pre
-Printed March 29, 2023.
+Printed May 7, 2023.
Published by the Free Software Foundation, Inc.
Author: Bob Weiner
@@ -624,16 +624,17 @@ on a pathname to display the associated file or directory.
<a class="index-entry-id" id="index-Hyperbole-minibuffer-menu"></a>
<a class="index-entry-id" id="index-C_002dh-h"></a>
<a class="index-entry-id" id="index-C_002dh-h-X"></a>
-<a class="index-entry-id" id="index-C_002dh-h-q"></a>
+<a class="index-entry-id" id="index-C_002dh-h-Q"></a>
<p><kbd class="kbd">{C-h h}</kbd> enables Hyperbole if it has been disabled
and displays a
-Hyperbole menu in the minibuffer for quick keyboard or mouse-based selection.
-Select an item from this menu by typing the item’s first capital letter.
-Use <kbd class="kbd">{q}</kbd> to quit from the minibuffer menu while leaving
Hyperbole enabled.
-Use<kbd class="kbd">{X}</kbd> (note this is capitalized) to quit from the
minibuffer menu
-and disable Hyperbole minor mode.
+Hyperbole menu in the minibuffer for quick keyboard or mouse-based
+selection. Select an item from this menu by typing the item’s first
+capital letter. Use <kbd class="kbd">{Q}</kbd> (note this is capitalized) to
quit from
+the minibuffer menu while leaving Hyperbole enabled. Use <kbd
class="kbd">{X}</kbd>
+(note this is capitalized) to quit from the minibuffer menu and
+disable Hyperbole’s minor mode.
</p>
-<p>Use <kbd class="kbd">{C-h h d d}</kbd> for an interactive demonstration of
standard Hyperbole
-button capabilities.
+<p>Use <kbd class="kbd">{C-h h d d}</kbd> for an interactive demonstration of
standard
+Hyperbole button capabilities.
</p>
<p>Type <kbd class="kbd">{C-h h k e}</kbd> for an interactive demonstration of
the Koutliner,
Hyperbole’s multi-level autonumbered hypertextual outliner.
@@ -938,6 +939,7 @@ Hyperbole Key Press/Click in Special Modes
Treemacs Displays item Displays item
Dired Sidebar Displays item Displays item
Emacs Push Button Activates button Button help
+ Emacs Regression Test Def Eval and run test Edebug and run test
Thing Begin or End Mark thing region Mark & kill
thing region
Page Directory Listing Jumps to page <- same
Imenu Programming Identifier Jumps to in-buffer def Prompts for id to
jump to
@@ -1011,10 +1013,10 @@ the behavior of the Smart Keys within default contexts.
<p>When you use a mouse and you want to find out what either of the Smart
Keys does within a context, depress the one you want to check on and
hold it down, then press the other and release as you please. A help
-buffer will pop up explaining the actions that will be performed in that
-context, if any. A press of either Smart Key at the end of that
-help buffer will restore your display to its configuration prior to
-invoking help.
+buffer will pop up explaining the action that will be performed in that
+context and attributes of the button, if any. A press of either Smart
+Key at the end of that help buffer will restore your display to its
+configuration prior to invoking help.
</p>
<a class="index-entry-id" id="index-C_002dh-A"></a>
<a class="index-entry-id" id="index-C_002du-C_002dh-A"></a>
@@ -1889,14 +1891,14 @@ Next: <a href="#Implicit-Buttons" accesskey="n"
rel="next">Implicit Buttons</a>,
<a class="index-entry-id" id="index-button_002c-global-1"></a>
<a class="index-entry-id" id="index-button-label-1"></a>
<a class="index-entry-id" id="index-label_002c-button-1"></a>
-<p>Sometimes it is
-useful to activate buttons without regard to the information with which
-you are working. In such instances, you use <em class="dfn">global
buttons</em>, which
-are buttons that may be activated or otherwise operated upon by typing
-their labels/names when they are prompted for, rather than selecting the
-buttons within a buffer. In contrast, activation of explicit buttons
-depends upon the information on your screen since they are accessible
-only from within their particular buffers.
+<p>Sometimes it is useful to activate buttons without regard to the
+information with which you are working. In such instances, you use
+<em class="dfn">global buttons</em>, which are buttons that may be activated or
+otherwise operated upon by typing their labels/names when they are
+prompted for, rather than selecting the buttons within a buffer. In
+contrast, activation of explicit buttons depends upon the information on
+your screen since they are accessible only from within their particular
+buffers.
</p>
<p>If you want a permanent link to a file section that you can follow at
any time, you can use a global button. Or what about an Emacs keyboard
@@ -1964,12 +1966,33 @@ directory, typically in another window. An explicit
button could do
the same thing but has to be created manually, rather than recognized
as part of the buffer text.
</p>
-<a class="index-entry-id" id="index-file_002c-hibtypes_002eel"></a>
-<a class="index-entry-id" id="index-context"></a>
-<a class="index-entry-id" id="index-boolean-expressions"></a>
+<a class="index-entry-id" id="index-C_002dh-h-i"></a>
<a class="index-entry-id" id="index-activating-implicit-button"></a>
<a class="index-entry-id" id="index-menu-item_002c-Ibut_002fAct"></a>
+<a class="index-entry-id" id="index-menu_002c-Ibut"></a>
+<a class="index-entry-id" id="index-menu_002c-Implicit_002dButton"></a>
+<a class="index-entry-id" id="index-menu_002c-Ibut_002fActivate"></a>
+<a class="index-entry-id" id="index-menu_002c-Ibut_002fCreate"></a>
+<a class="index-entry-id" id="index-menu_002c-Ibut_002fEdit"></a>
+<a class="index-entry-id" id="index-menu_002c-Ibut_002fLabel"></a>
<a class="index-entry-id" id="index-C_002dh-h-i-a"></a>
+<a class="index-entry-id" id="index-C_002dh-h-i-c"></a>
+<a class="index-entry-id" id="index-C_002dh-h-i-e"></a>
+<a class="index-entry-id" id="index-C_002dh-h-i-l"></a>
+<p>Implicit buttons are managed with the Hyperbole Ibut/ menu accessed
+with <kbd class="kbd">{C-h h i}</kbd>. The Create item, <kbd class="kbd">{C-h
h i c}</kbd>, prompts for
+an implicit button label, an action type, and the action’s associated
+arguments, such as a file to which to link. It then creates the
+button at point. To activate the button with point on its label or
+button text, use the Act menu item, <kbd class="kbd">{C-h h i a}</kbd> or
press the
+Action Key. You can use <kbd class="kbd">{C-h h i e}</kbd> to edit an
implicit button
+(or simply edit it manually). If you want to add a label to an
+existing implicit button without one, use <kbd class="kbd">{C-h h i l}</kbd>
to label
+it.
+</p>
+<a class="index-entry-id" id="index-file_002c-hibtypes_002eel"></a>
+<a class="index-entry-id" id="index-context"></a>
+<a class="index-entry-id" id="index-boolean-expressions"></a>
<p>Unlike explicit buttons, implicit buttons have no individual button
data other than their text and optional labels. You use implicit
button types which include boolean expressions (predicates) that match
@@ -1977,9 +2000,7 @@ to both the label and the context required of any button
of the type.
Each time a Smart Key is pressed at a location, Hyperbole evaluates
the predicates from the list of implicit button types and the first
one that evaluates true is selected and its associated action is
-triggered. Alternatively, you can use the Ibut/Act menu
-item, <kbd class="kbd">{C-h h i a}</kbd>, to activate any implicit button
found at the
-current point.
+triggered.
</p>
<p>All of this happens transparently and is easy to use once you try it.
The Hyperbole Smart Keys offer additional extensive context-sensitive
@@ -2000,24 +2021,6 @@ button with a label of ’My Emacs Files’:
<p>The label is delimited by ‘<samp class="samp"><[</samp>’ and
‘<samp class="samp">]></samp>’ and can be followed
by any number of :, - or = separator characters, including none.
</p>
-<a class="index-entry-id" id="index-C_002dh-h-i"></a>
-<a class="index-entry-id" id="index-menu_002c-Ibut"></a>
-<a class="index-entry-id" id="index-menu_002c-Implicit_002dButton"></a>
-<a class="index-entry-id" id="index-C_002dh-h-i-a-1"></a>
-<a class="index-entry-id" id="index-C_002dh-h-i-c"></a>
-<a class="index-entry-id" id="index-C_002dh-h-i-e"></a>
-<a class="index-entry-id" id="index-C_002dh-h-i-l"></a>
-<p>Implicit buttons are managed with the Hyperbole Ibut/ menu accessed
-with <kbd class="kbd">{C-h h i}</kbd>. The Create item, <kbd class="kbd">{C-h
h i c}</kbd>, prompts for
-an implicit button label, an action type, and the action’s associated
-arguments, such as a file to which to link. It then creates the
-button at point. To activate the button with point on its label or
-button text, use the Act menu item, <kbd class="kbd">{C-h h i a}</kbd> or
press the
-Action Key. You can use <kbd class="kbd">{C-h h i e}</kbd> to edit an
implicit button
-(or simply edit it manually). If you want to add a label to an
-existing implicit button without one, use <kbd class="kbd">{C-h h i l}</kbd>
to label
-it.
-</p>
<ul class="mini-toc">
@@ -2034,11 +2037,13 @@ Next: <a href="#Action-Buttons" accesskey="n"
rel="next">Action Buttons</a>, Pre
<a class="index-entry-id" id="index-ibtypes_002c-list-of"></a>
<a class="index-entry-id" id="index-implicit-button-types"></a>
-<p>Below is a list of standard implicit button types in the order in which
-Hyperbole tries to match to the types when looking for an implicit
-button; <kbd class="kbd">{C-h h i t <kbd class="key">RET</kbd>}</kbd> provides
similar information. See
-the Hyperbole file, <samp class="file">hibtypes.el</samp>, for examples of how
to define
-implicit button types (they are listed in increasing order of priority).
+<p>Below is a list of standard implicit button types in the order in
+which Hyperbole tries to match to the types when looking for an
+implicit button (decreasing priority order). <kbd class="kbd">{C-h h i t
+<kbd class="key">RET</kbd>}</kbd> provides similar information. See the
Hyperbole file,
+<samp class="file">hibtypes.el</samp>, for examples of how to define implicit
button
+types (in the file, they are listed in reverse order, increasing in
+priority).
</p>
<dl class="table">
<dd>
@@ -2638,25 +2643,34 @@ PATH-style variable, the path at point is displayed;
empty paths,
e.g. <samp class="file">::</samp> represent the current directory, <samp
class="file">.</samp>. Must have at
least four paths within the variable value for this to work.
</p>
-
-<a class="index-entry-id" id="index-ibtypes-hyperbole_002drun_002dtests"></a>
+<a class="index-entry-id"
id="index-ibtypes-hyperbole_002drun_002dtest_002ddefinition"></a>
+<a class="index-entry-id" id="index-edebug-a-test"></a>
+<a class="index-entry-id" id="index-debugging-tests"></a>
<a class="index-entry-id" id="index-running-tests"></a>
<a class="index-entry-id" id="index-testing"></a>
<a class="index-entry-id" id="index-ert"></a>
<a class="index-entry-id" id="index-Emacs-Regression-Test-framework"></a>
</dd>
+<dt><code class="code">hyperbole-run-test-definition</code></dt>
+<dd><p>With an Action Key press on the name in the first line of an ert test
+def, evaluate and run the ERT test. With an Assist Key press instead,
+edebug the test and step through it.
+</p>
+<a class="index-entry-id" id="index-ibtypes-hyperbole_002drun_002dtests"></a>
+</dd>
<dt><code class="code">hyperbole-run-tests</code></dt>
-<dd><p>Recognize buttons of the form <code
class="code"><hyperbole-run-tests test-selector></code>
-which when activated run Hyperbole tests using the ERT framework. The
-<code class="code">test-selector</code> argument is as described in <code
class="code">ert-select-tests</code>.
+<dd><p>Recognize Action Buttons of the form <code
class="code"><hyperbole-run-tests
+test-selector></code> which when activated run Hyperbole tests using the ERT
+framework. The <code class="code">test-selector</code> argument is as
described in
+<code class="code">ert-select-tests</code>.
</p>
<a class="index-entry-id" id="index-ibtypes-hyperbole_002drun_002dtest"></a>
</dd>
<dt><code class="code">hyperbole-run-test</code></dt>
-<dd><p>Recognize buttons of the form <code class="code"><hyperbole-run-test
test-name></code>
-which when activated run individual Hyperbole tests, each given
-by the <code class="code"><test-name></code> argument, an unquoted name.
+<dd><p>Recognize Action Buttons of the form <code
class="code"><hyperbole-run-test
+test-name></code> which when activated run individual Hyperbole tests, each
+given by the <code class="code"><test-name></code> argument, an unquoted
name.
</p></dd>
</dl>
@@ -3786,14 +3800,14 @@ See <a class="xref"
href="#Smart-Key-_002d-Default-Context">Smart Key - Default
</p>
<a class="index-entry-id" id="index-minibuffer-menus"></a>
<a class="index-entry-id" id="index-menu-item-key-bindings"></a>
-<p>The rest of this section discusses only the
-specialized <em class="dfn">minibuffer menus</em> which appear in the
minibuffer
-window and work with all emacs versions on all display devices. They
-provide similar capabilities to those of the Hyperbole menubar but
-additionally allow for fast menu item selection via the keyboard or
-mouse. When used with the keyboard, they provide command access
-similar to key bindings. In fact, any menu item can be bound to a
-global key sequence. See <a class="xref"
href="#Binding-Minibuffer-Menu-Items">Binding Minibuffer Menu Items</a>.
+<p>The rest of this section discusses only the specialized
+<em class="dfn">minibuffer menus</em> which appear in the minibuffer window
and work
+with all emacs versions on all display devices. They provide similar
+capabilities to those of the Hyperbole menubar but additionally allow
+for fast menu item selection via the keyboard or mouse. When used
+with the keyboard, they provide command access similar to key
+bindings. In fact, any menu item can be bound to a global key
+sequence. See <a class="xref" href="#Binding-Minibuffer-Menu-Items">Binding
Minibuffer Menu Items</a>.
</p>
<a class="index-entry-id" id="index-C_002dh-h-1"></a>
<a class="index-entry-id" id="index-enable-Hyperbole-mode"></a>
@@ -3825,21 +3839,27 @@ look like this:
<a class="index-entry-id" id="index-M_002df"></a>
<a class="index-entry-id" id="index-Shift_002dTAB"></a>
<a class="index-entry-id" id="index-M_002db"></a>
-<p>All menu items are selected via the first character of their names (letter
-case does not matter), with presses of the Action Key or by using
-<kbd class="kbd">{<kbd class="key">TAB</kbd>}</kbd> or <kbd
class="kbd">{M-f}</kbd> to move forward an item, <kbd class="kbd">{Shift-<kbd
class="key">TAB</kbd>}</kbd>
-or <kbd class="kbd">{M-b}</kbd> to move backward an item and <kbd
class="kbd">{<kbd class="key">RET</kbd>}</kbd> to select the
-current item. A press of the Assist Key on an item displays help for the
-item, including the action that it performs. "/" at the end of an
item name
-indicates that it brings up a submenu.
-</p>
-<a class="index-entry-id" id="index-C_002dt"></a>
-<a class="index-entry-id" id="index-Q"></a>
-<a class="index-entry-id" id="index-X"></a>
-<a class="index-entry-id" id="index-C_002dg"></a>
+<p>A menu item can be selected in a number of ways:
+</p><ul class="itemize mark-bullet">
+<li>from the keyboard, by typing the first capitalized character of its name,
+</li><li>with a press of <kbd class="kbd">{<kbd class="key">RET</kbd>}</kbd>
or the Action Key or Action Mouse Key on the name,
+</li><li>by pressing <kbd class="kbd">{<kbd class="key">TAB</kbd>}</kbd> or
<kbd class="kbd">{M-f}</kbd> to move forward an item,
+</li><li>or by pressing <kbd class="kbd">{Shift-<kbd
class="key">TAB</kbd>}</kbd> or <kbd class="kbd">{M-b}</kbd> to move backward
an item.
+</li></ul>
+
+<p>A prefix argument given to one of the movement commands, moves by tht
+number of items within the menu. A press of the Assist Key on an item
+displays help for the item, including the action that it performs.
+"/" at the end of an item name indicates that it brings up a submenu.
+</p>
+<a class="index-entry-id" id="index-C_002dh-h-C_002dt"></a>
+<a class="index-entry-id" id="index-C_002dh-h-Q-1"></a>
+<a class="index-entry-id" id="index-C_002dh-h-X-1"></a>
+<a class="index-entry-id" id="index-C_002dh-h-C_002dg"></a>
<a class="index-entry-id" id="index-menu_002c-top_002dlevel"></a>
<a class="index-entry-id" id="index-top_002dlevel-menu"></a>
<a class="index-entry-id" id="index-menu-prefix"></a>
+<a class="index-entry-id" id="index-menu_002c-entry_002fexit-commands"></a>
<p>While a menu is active, to re-activate the top-level Hyperbole menu,
use <kbd class="kbd">{C-t}</kbd> or press the Action Key while on the menu
prefix
(before the ‘<samp class="samp">></samp>’ character). This
allows you to browse the
@@ -4273,6 +4293,15 @@ of the screen size.
<dd><p>In FRAMES mode, resize frame’s height to about argument percent
of the
screen size.
</p>
+<a class="index-entry-id" id="index-screen_002c-I_002fJ_002fK_002fM"></a>
+<a class="index-entry-id" id="index-I_002fJ_002fK_002fM"></a>
+</dd>
+<dt><kbd class="kbd">{I/J/K/M}</kbd></dt>
+<dd><p>In WINDOWS mode, the keys <kbd class="kbd">{I}</kbd><kbd
class="kbd">{J}</kbd>/<kbd class="kbd">{K}</kbd>/<kbd class="kbd">{M}</kbd> move
+directionally (based on QUERTY key layout) between windows in the
+selected frame. In FRAMES mode, they move directionally through visible
+frames. These use the <samp class="file">windmove</samp> and <samp
class="file">framemove</samp> libraries.
+</p>
<a class="index-entry-id" id="index-screen_002c-W"></a>
<a class="index-entry-id" id="index-W"></a>
</dd>
@@ -4572,7 +4601,7 @@ sizes by which to zoom.
<a class="index-entry-id" id="index-exit-HyControl"></a>
<a class="index-entry-id" id="index-screen_002c-Q-1"></a>
<a class="index-entry-id" id="index-screen_002c-q-1"></a>
-<a class="index-entry-id" id="index-Q-1"></a>
+<a class="index-entry-id" id="index-Q"></a>
</dd>
<dt id='index-q'><span><kbd class="kbd">{Q}</kbd><a class="copiable-link"
href='#index-q'> ¶</a></span></dt>
<dt><kbd class="kbd">{q}</kbd></dt>
@@ -5000,10 +5029,10 @@ substructure) are promoted and demoted, not individual
cells.
<a class="index-entry-id" id="index-koutliner_002c-TAB"></a>
<a class="index-entry-id" id="index-koutliner_002c-M_002dTAB"></a>
<a class="index-entry-id" id="index-koutliner_002c-Shift_002dTAB"></a>
-<a class="index-entry-id" id="index-koutliner_002c-M_002dleft"></a>
-<a class="index-entry-id" id="index-koutliner_002c-M_002dright"></a>
-<a class="index-entry-id" id="index-koutliner_002c-M_002dShift_002dleft"></a>
-<a class="index-entry-id" id="index-koutliner_002c-M_002dShift_002dright"></a>
+<a class="index-entry-id" id="index-koutliner_002c-M_002d_003cleft_003e"></a>
+<a class="index-entry-id" id="index-koutliner_002c-M_002d_003cright_003e"></a>
+<a class="index-entry-id"
id="index-koutliner_002c-M_002dShift_002d_003cleft_003e"></a>
+<a class="index-entry-id"
id="index-koutliner_002c-M_002dShift_002d_003cright_003e"></a>
<a class="index-entry-id" id="index-koutliner_002c-C_002dc-C_002d_002c"></a>
<a class="index-entry-id" id="index-koutliner_002c-C_002dc-C_002d_002e"></a>
<a class="index-entry-id" id="index-koutliner_002c-C_002dc-C_002d_003e"></a>
@@ -5013,9 +5042,9 @@ substructure) are promoted and demoted, not individual
cells.
<pre
class="example-preformatted">|-----------------------------+----------------------------|
| Promotion Outside Org Table | Demotion Outside Org Table |
|-----------------------------+----------------------------|
-| Shift-TAB or M-TAB | TAB |
-| M-left | M-right |
-| M-Shift-left | M-Shift-right |
+| M-TAB or Shift-TAB | TAB |
+| M-<left> | M-<right> |
+| M-Shift-<left> | M-Shift-<right> |
| C-c C-, | C-c C-. |
| C-c C-< | C-c C-> |
|-----------------------------+----------------------------|
@@ -5023,15 +5052,14 @@ substructure) are promoted and demoted, not individual
cells.
<p>Trees may be demoted or promoted by pressing <kbd class="key">TAB</kbd> or
-<kbd class="kbd">{M-<kbd class="key">TAB</kbd>}</kbd> (or <kbd
class="kbd">{<kbd class="key">SHIFT</kbd>-<kbd class="key">TAB</kbd>}</kbd>)
respectively, as
-in most outliners today. <kbd class="kbd">{M-0 <kbd
class="key">TAB</kbd>}</kbd> and <kbd class="kbd">{M-0
-M-<kbd class="key">TAB</kbd>}</kbd> demote and promote trees and additionally
refill each
-cell that is not specially marked to prevent refilling.
-See <a class="xref" href="#Filling">Filling</a>. A positive or negative
prefix argument to these
-commands promotes or demotes the tree up to a maximum of the number of
-levels given by the argument. The outline may not support movement of
-the tree by the number of levels requested, however, in which case the
-maximal possible adjustment is made.
+<kbd class="kbd">{M-<kbd class="key">TAB</kbd>}</kbd>. <kbd class="kbd">{M-0
<kbd class="key">TAB</kbd>}</kbd> and <kbd class="kbd">{M-0 M-<kbd
class="key">TAB</kbd>}</kbd>
+demote and promote trees and additionally refill each cell that is not
+specially marked to prevent refilling. See <a class="xref"
href="#Filling">Filling</a>. A positive or
+negative prefix argument to these commands promotes or demotes the
+tree up to a maximum of the number of levels given by the argument.
+The outline may not support movement of the tree by the number of
+levels requested, however, in which case the maximal possible
+adjustment is made.
</p>
<a class="index-entry-id" id="index-koutliner_002c-M_002d1-TAB"></a>
<a class="index-entry-id" id="index-inserting-tabs"></a>
@@ -5050,10 +5078,10 @@ Use <kbd class="kbd">{M-1 <kbd
class="key">TAB</kbd>}</kbd> to toggle the <kbd c
</p>
<a class="index-entry-id" id="index-Org-tables"></a>
-<p>The Koutliner also supports Org Table editing, see <a data-manual="org"
href="https://www.gnu.org/software/emacs/manual/html_mono/org.html#Tables">Tables</a>
in <cite class="cite">the Org
-Mode Manual</cite>, via Org table minor mode. Use <kbd class="kbd">{M-x
orgtbl-mode <kbd class="key">RET</kbd>}</kbd>
-to toggle this on and off. A press of the Action Key on a <code
class="code">|</code> symbol,
-also toggles this minor mode on or off.
+<p>The Koutliner also supports Org Table editing, see <a data-manual="org"
href="https://www.gnu.org/software/emacs/manual/html_mono/org.html#Tables">Tables</a>
in <cite class="cite">the Org Mode Manual</cite>, via Org table minor mode.
Use <kbd class="kbd">{M-x
+orgtbl-mode <kbd class="key">RET</kbd>}</kbd> to toggle this on and off. A
press of the
+Action Key on a <code class="code">|</code> symbol, also toggles this minor
mode on or
+off.
</p>
<a class="index-entry-id" id="index-outline-mode"></a>
<a class="index-entry-id" id="index-M_002d0-TAB"></a>
@@ -5062,15 +5090,15 @@ also toggles this minor mode on or off.
Outline mode, plus some easier to type ones. The tables below
summarize which keys work whether inside an Org table or outside.
</p>
-<p>Note that you must use <kbd class="kbd">{M-0 <kbd
class="key">TAB</kbd>}</kbd> and <kbd class="kbd">{M-0 M-<kbd
class="key">TAB</kbd>}</kbd> to
-demote/promote Koutline trees when in a table since <kbd class="key">TAB</kbd>
by itself
-moves between fields within a table.
+<p>Note that you must use <kbd class="kbd">{M-0 <kbd
class="key">TAB</kbd>}</kbd> and <kbd class="kbd">{M-0 M-<kbd
class="key">TAB</kbd>}</kbd>
+to demote/promote Koutline trees when in a table since <kbd
class="key">TAB</kbd> and
+<kbd class="kbd">{M-<kbd class="key">TAB</kbd>}</kbd> move between fields
within a table.
</p>
<div class="example">
<pre
class="example-preformatted">|----------------------------+-----------------------------|
| Promotion Inside Org Table | Demotion Inside Org Table |
|----------------------------+-----------------------------|
-| M-0 Shift-TAB or M-0 M-TAB | M-0 TAB |
+| M-0 M-TAB | M-0 TAB |
| C-c C-, | C-c C-. |
| C-c C-< | C-c C-> |
|----------------------------+-----------------------------|
@@ -5090,9 +5118,9 @@ Next: <a href="#Moving-Around" accesskey="n"
rel="next">Moving Around</a>, Previ
<a class="index-entry-id" id="index-Action-Key_002c-cell-argument"></a>
<a class="index-entry-id"
id="index-koutliner_002c-Action-Key_002c-cell-argument"></a>
<p>Like Org mode, you can move the tree rooted at point past trees rooted
-at the same level with <kbd class="kbd">{M-down}</kbd> and before trees with
<kbd class="kbd">{M-up}</kbd>.
-Give a prefix argument to move past that many other trees. (A 0 valued
-argument is automatically changed to 1).
+at the same level with <kbd class="kbd">{M-<down>}</kbd> and before
trees with
+<kbd class="kbd">{M-<up>}</kbd>. Give a prefix argument to move past
that many other
+trees. (A 0 valued argument is automatically changed to 1).
</p>
<p>For maximum flexibility in rearranging outlines, there are commands
that move or copy entire trees anywhere within the outline as
@@ -5110,13 +5138,13 @@ arguments changes each command’s behavior from
insertion at the sibling
level to insertion at the child level.
</p>
<dl class="table">
-<dd><a class="index-entry-id" id="index-M_002ddown"></a>
+<dd><a class="index-entry-id" id="index-M_002d_003cdown_003e"></a>
</dd>
-<dt><kbd class="kbd">{M-down}</kbd></dt>
+<dt><kbd class="kbd">{M-<down>}</kbd></dt>
<dd><p>Move current tree past prefix arg same level trees.
-<a class="index-entry-id" id="index-M_002dup"></a>
+<a class="index-entry-id" id="index-M_002d_003cup_003e"></a>
</p></dd>
-<dt><kbd class="kbd">{M-up}</kbd></dt>
+<dt><kbd class="kbd">{M-<up>}</kbd></dt>
<dd><p>Move current tree back prefix arg same level trees.
</p>
<a class="index-entry-id" id="index-C_002dc-c"></a>
@@ -6066,10 +6094,47 @@ Next: <a href="#HyRolo-Menu" accesskey="n"
rel="next">Rolo Menu</a>, Previous: <
<a class="index-entry-id" id="index-rolo-file"></a>
<a class="index-entry-id" id="index-rolo-entry"></a>
<p>HyRolo manages and searches rolo files. A <em class="dfn">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. You must manually add a header
-to any rolo file if you want it to have one.
+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 regular text files, Emacs outline files, Org files, Markdown
+files or Koutline files.
+</p>
+<p>Rolo <em class="dfn">entries</em> begin with optional space, followed by a
delimiter of
+one or more special characters followed by another space. Delimiters
+vary based on the type of file:
+</p>
+<dl class="table">
+<dt>Emacs Outline Mode</dt>
+<dd><p>*
+</p></dd>
+<dt>Koutline Mode</dt>
+<dd><p>1b3 or 1.2.3
+</p></dd>
+<dt>Markdown Mode</dt>
+<dd><p>#
+</p></dd>
+<dt>Org Mode</dt>
+<dd><p>*
+</p></dd>
+<dt>Text Mode</dt>
+<dd><p>*
+</p></dd>
+</dl>
+
+<p>Entries may be arranged in a hierarchy, where child entries start with
+at least one more delimiter characters than do their parents. Top-level
+level entries use either a single delimiter character or a sequence of
+digits in the case of Koutlines.
+</p>
+<p>Beyond this initial delimiter, entries are completely free-form text.
+It is best to use a "lastname, firstname" format, however, when
adding
+contact entries into a rolo. Then HyRolo will automatically keep your
+entries alphabetized as you enter them. Then you can sort the entries
+if you ever need. This ordering is what the rolo will use if you
+accept the default entry with which it prompts you when adding a new
+entry.
</p>
<p>Here is an example of a simple rolo file. The date at the end is
automatically added by HyRolo whenever a new record is added.
@@ -6084,20 +6149,6 @@ automatically added by HyRolo whenever a new record is
added.
05/24/2020
</pre></div></div>
-<p>We call rolo records, <em class="dfn">entries</em>. Entries begin with a
delimiter
-of one or more ‘*’ characters at the beginning of a line. Entries
may
-be arranged in a hierarchy, where child entries start with one more
‘*’
-character than do their parents. Top-level entries begin with a single
-‘*’.
-</p>
-<p>Beyond this initial delimiter, entries are completely free-form text.
-It is best to use a "lastname, firstname" format, however, when
adding
-contact entries into a rolo. Then HyRolo will automatically keep your
-entries alphabetized as you enter them. Then you can sort the entries
-if you ever need. This ordering is what the rolo will use if you
-accept the default entry with which it prompts you when adding a new
-entry.
-</p>
<p>Any search done on the rolo scans the full text of each entry. During
a search, the rolo file header separator lines and anything in between
are appended to the buffer of matched entries before any entries are
@@ -6152,14 +6203,16 @@ set of commands as the menubar and popup menus, with
more concise labels.
<kbd class="kbd">{C-mouse-3}</kbd> pops up the mode-specific menu in Emacs.
Experiment with
the menu or read the following sections explaining commands.
</p>
-<p>The minibuffer Rolo/ menu offers the following commands:
-</p>
<a class="index-entry-id" id="index-Rolo-commands"></a>
<a class="index-entry-id" id="index-HyRolo-commands"></a>
+<a class="index-entry-id" id="index-ConsultFind"></a>
+<a class="index-entry-id" id="index-HelmFind"></a>
<a class="index-entry-id" id="index-hyrolo_002dadd"></a>
+<a class="index-entry-id" id="index-hyrolo_002dconsult_002dgrep"></a>
<a class="index-entry-id" id="index-hyrolo_002ddisplay_002dmatches"></a>
<a class="index-entry-id" id="index-hyrolo_002dedit"></a>
<a class="index-entry-id" id="index-hyrolo_002dfind_002dfile"></a>
+<a class="index-entry-id" id="index-hyrolo_002dhelm_002dorg_002drifle"></a>
<a class="index-entry-id" id="index-hyrolo_002dkill"></a>
<a class="index-entry-id" id="index-hyrolo_002dmail_002dto"></a>
<a class="index-entry-id" id="index-hyrolo_002dsort"></a>
@@ -6167,13 +6220,18 @@ the menu or read the following sections explaining
commands.
<a class="index-entry-id" id="index-hyrolo_002dfgrep"></a>
<a class="index-entry-id" id="index-hyrolo_002dword"></a>
<a class="index-entry-id" id="index-hyrolo_002dyank"></a>
+<p>The minibuffer Rolo/ menu offers the following commands (ConsultFind
+and HelmFind appear only when associated packages are loaded):
+</p>
<div class="example">
<div class="group"><pre class="example-preformatted">Menu Item Command
Description
=====================================================================
Add hyrolo-add Adds a hyrolo entry
+ConsultFind hyrolo-consult-grep Interactively narrow grep matches
Display hyrolo-display-matches Displays last matches again
Edit hyrolo-edit Edits an existing hyrolo entry
File hyrolo-find-file Edits a <code
class="code">hyrolo-file-list</code> file
+HelmFind hyrolo-helm-org-rifle Interactively narrow entry matches
Info id-info Displays a hyrolo manual entry
Kill hyrolo-kill Deletes a hyrolo entry
Mail hyrolo-mail Mails to an address at point
@@ -7707,12 +7765,14 @@ abstraction.
</p>
<a class="index-entry-id" id="index-consult-package"></a>
<a class="index-entry-id" id="index-consult_002dorg_002droam-package"></a>
+<a class="index-entry-id"
id="index-hsys_002dorg_002droam_002dconsult_002dgrep"></a>
</dd>
<dt><b class="b">Consult</b></dt>
<dd><p>An Emacs extension package that provides asynchronous search and narrow
-wrappers around common search commands like grep, ripgrep, find and locate.
-Hyperbole optionally utilizes this to search the HyRolo. Use the
-<code class="code">consult-org-roam</code> package to search Org Roam notes
similarly.
+wrappers around common search commands like grep, ripgrep, find and
+locate. Hyperbole optionally utilizes this to search the HyRolo. Use
+<code class="code">M-x hsys-org-roam-consult-grep RET</code> to search Org
Roam notes
+similarly.
</p>
</dd>
<dt><b class="b">Context</b></dt>
@@ -7795,6 +7855,17 @@ followed by a global button label and then a closing
>.
end delimiters can go as far as the end of the buffer. Use the
function, <code class="code">(hbut:max-len)</code>, to read the proper value.
</p>
+<a class="index-entry-id" id="index-helm-package"></a>
+<a class="index-entry-id" id="index-org_002drifle-package"></a>
+<a class="index-entry-id" id="index-hyrolo_002dhelm_002dorg_002drifle-1"></a>
+</dd>
+<dt><b class="b">Helm</b></dt>
+<dd><p>An Emacs extension package that provides asynchronous search and narrow
+wrappers around many Emacs commands. Hyperbole optionally utilizes this
+together with the <samp class="file">org-rifle</samp> package to interactively
search the
+HyRolo. Use <code class="code">M-x hyrolo-helm-org-rifle</code> to search
your HyRolo file
+list with these packages.
+</p>
<a class="index-entry-id" id="index-run_002dhooks"></a>
</dd>
<dt><b class="b">Hook Variable</b></dt>
@@ -9014,7 +9085,7 @@ that links to any other window chosen via the Ace Window
prompt.
<a class="index-entry-id" id="index-key-binding_002c-C_002dh-h"></a>
<a class="index-entry-id" id="index-C_002dh-h-2"></a>
</dd>
-<dt id='index-C_002dh-h-X-1'><span><kbd class="kbd">{C-h h}</kbd><a
class="copiable-link" href='#index-C_002dh-h-X-1'> ¶</a></span></dt>
+<dt id='index-C_002dh-h-X-2'><span><kbd class="kbd">{C-h h}</kbd><a
class="copiable-link" href='#index-C_002dh-h-X-2'> ¶</a></span></dt>
<dt id='index-Hyperbole-minibuffer-menu-1'><span><kbd class="kbd">{C-h h
X}</kbd><a class="copiable-link" href='#index-Hyperbole-minibuffer-menu-1'>
¶</a></span></dt>
<dd><a class="index-entry-id" id="index-enable-Hyperbole-1"></a>
<a class="index-entry-id" id="index-disable-Hyperbole-1"></a>
@@ -10372,8 +10443,8 @@ Next: <a href="#Smart-Key-_002d-Ivy" accesskey="n"
rel="next">Smart Key - Ivy</a
<a class="index-entry-id" id="index-Org-ID"></a>
<a class="index-entry-id" id="index-Org-link_002c-outside-Org"></a>
-<a class="index-entry-id" id="index-org_002did"></a>
-<a class="index-entry-id"
id="index-org_002dlink_002doutside_002dorg_002dmode"></a>
+<a class="index-entry-id" id="index-ibtypes-org_002did"></a>
+<a class="index-entry-id"
id="index-ibtypes-org_002dlink_002doutside_002dorg_002dmode"></a>
<p>Org links may be used outside of Org mode buffers. Such links are
handled by the separate implicit button type, <code
class="code">org-link-outside-org-mode</code>.
Org Roam and Org IDs may be activated as hyperbuttons outside of Org mode
buffers.
@@ -10710,7 +10781,7 @@ helm for these Smart Key actions to work. Try them in
your own
version and if there are any issues, install helm from
<samp class="file">github.com/rswgnu/helm</samp>.
</p>
-<a class="index-entry-id" id="index-helm-mode"></a>
+<a class="index-entry-id" id="index-helm_002dmode"></a>
<a class="index-entry-id" id="index-completion-4"></a>
<div class="format">
<div class="group"><pre class="format-preformatted">If pressed within a buffer
in helm major mode:
@@ -12393,8 +12464,6 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<a class="summary-letter-printindex" href="#Key-Index_ky_letter-W"><b>W</b></a>
-<a class="summary-letter-printindex" href="#Key-Index_ky_letter-X"><b>X</b></a>
-
<a class="summary-letter-printindex" href="#Key-Index_ky_letter-Z"><b>Z</b></a>
</td></tr></table>
@@ -12500,7 +12569,6 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dc-_005c"><code>C-c \</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dc-_005c-1"><code>C-c \</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dc-_005e"><code>C-c ^</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Moving-Around">Moving
Around</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dg"><code>C-g</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-A"><code>C-h A</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-Operations">Smart Key
Operations</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-A-1"><code>C-h A</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h"><code>C-h h</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Invocation">Invocation</a></td></tr>
@@ -12513,6 +12581,8 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-c-u"><code>C-h h c u</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Using-URLs-with-Find_002dFile">Using
URLs with Find-File</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-c-u-1"><code>C-h h c
u</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Smart-Key-_002d-WWW-URLs">Smart Key - WWW URLs</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-c-w"><code>C-h h c w</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Web-Search-Engines">Web Search
Engines</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-C_002dg"><code>C-h h
C-g</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Menus">Menus</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-C_002dt"><code>C-h h
C-t</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-d-d"><code>C-h h d d</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hyperbole-Overview">Hyperbole
Overview</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-d-i"><code>C-h h d i</code></a>:</td><td> </td><td
class="printindex-index-section"><a
href="#Documentation">Documentation</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-f-w"><code>C-h h f w</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Web-Search-Engines">Web Search
Engines</a></td></tr>
@@ -12521,7 +12591,6 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-h"><code>C-h h h</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-i"><code>C-h h i</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Buttons">Implicit
Buttons</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-i-a"><code>C-h h i a</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Buttons">Implicit
Buttons</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-i-a-1"><code>C-h h i
a</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-i-c"><code>C-h h i c</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Buttons">Implicit
Buttons</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-i-e"><code>C-h h i e</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Buttons">Implicit
Buttons</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-i-l"><code>C-h h i l</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Buttons">Implicit
Buttons</a></td></tr>
@@ -12532,17 +12601,18 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-k-f-k"><code>C-h h k f
k</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Exporting">Exporting</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-m-c"><code>C-h h m c</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-Debugging">Smart Key
Debugging</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-m-r"><code>C-h h m r</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-Debugging">Smart Key
Debugging</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-q"><code>C-h h q</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Invocation">Invocation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-Q"><code>C-h h Q</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Invocation">Invocation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-Q-1"><code>C-h h Q</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-s-f"><code>C-h h s f</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-s-w"><code>C-h h s w</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-X"><code>C-h h X</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Invocation">Invocation</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-X-1"><code>C-h h X</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-X-1"><code>C-h h X</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-h-X-2"><code>C-h h X</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dh-t"><code>C-h t</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hyperbole-Overview">Hyperbole
Overview</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dM_002dh"><code>C-M-h</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hiding-and-Showing">Hiding and
Showing</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dM_002dx"><code>C-M-x</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Creating-Types">Creating
Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dmouse_002d3"><code>C-mouse-3</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menu-Commands">Menu
Commands</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dmouse_002d3-1"><code>C-mouse-3</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002dt"><code>C-t</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002du"><code>C-u</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002du-1"><code>C-u</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-C_002du-C_002dc-c"><code>C-u C-c
c</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
@@ -12585,6 +12655,7 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><th id="Key-Index_ky_letter-I">I</th><td></td><td></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-I"><code>I</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-i"><code>i</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-I_002fJ_002fK_002fM"><code>I/J/K/M</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Key-Index_ky_letter-J">J</th><td></td><td></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-J"><code>J</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
@@ -12632,13 +12703,13 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-C_002dy"><code>koutliner,
C-y</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Adding-and-Killing">Adding and Killing</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002d0-C_002dc-t"><code>koutliner, M-0 C-c
t</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Transposing">Transposing</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002d1-TAB"><code>koutliner, M-1 <kbd
class="key">TAB</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002d_003cleft_003e"><code>koutliner,
M-<left></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002d_003cright_003e"><code>koutliner,
M-<right></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dj"><code>koutliner,
M-j</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Filling">Filling</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dleft"><code>koutliner,
M-left</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Promoting-and-Demoting">Promoting and Demoting</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dq"><code>koutliner,
M-q</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Filling">Filling</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dRET"><code>koutliner, M-<kbd
class="key">RET</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hiding-and-Showing">Hiding and
Showing</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dright"><code>koutliner,
M-right</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Promoting-and-Demoting">Promoting and Demoting</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dShift_002dleft"><code>koutliner,
M-Shift-left</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dShift_002dright"><code>koutliner,
M-Shift-right</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dShift_002d_003cleft_003e"><code>koutliner,
M-Shift-<left></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dShift_002d_003cright_003e"><code>koutliner,
M-Shift-<right></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-M_002dTAB"><code>koutliner, M-<kbd
class="key">TAB</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-Shift_002dTAB"><code>koutliner, Shift-<kbd
class="key">TAB</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-koutliner_002c-TAB"><code>koutliner, <kbd
class="key">TAB</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
@@ -12652,8 +12723,9 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-m"><code>m</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002d0-M_002dTAB"><code>M-0 M-<kbd
class="key">TAB</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002d0-TAB"><code>M-0 <kbd
class="key">TAB</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002d_003cdown_003e"><code>M-<down></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Relocating-and-Copying">Relocating
and Copying</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002d_003cup_003e"><code>M-<up></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Relocating-and-Copying">Relocating
and Copying</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002db"><code>M-b</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002ddown"><code>M-down</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Relocating-and-Copying">Relocating
and Copying</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002df"><code>M-f</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002do"><code>M-o</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Keyboard-Drags">Keyboard
Drags</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002do-1"><code>M-o</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
@@ -12665,7 +12737,6 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002dRET"><code>M-<kbd
class="key">RET</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-Bindings">Smart Key
Bindings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002dRET-1"><code>M-<kbd
class="key">RET</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002dRET-2"><code>M-<kbd
class="key">RET</kbd></code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002dup"><code>M-up</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Relocating-and-Copying">Relocating
and Copying</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002dw"><code>M-w</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Klinks">Klinks</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002dw-1"><code>M-w</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-M_002dx-kotl_002dmode_003ashow_002dsubtree"><code>M-x
kotl-mode:show-subtree</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hiding-and-Showing">Hiding and
Showing</a></td></tr>
@@ -12684,8 +12755,7 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-p-1"><code>p</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Keys">HyRolo
Keys</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Key-Index_ky_letter-Q">Q</th><td></td><td></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-Q"><code>Q</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-Q-1"><code>Q</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-Q"><code>Q</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-q"><code>q</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Key-Index_ky_letter-R">R</th><td></td><td></td></tr>
@@ -12747,6 +12817,7 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-screen_002c-H"><code>screen, H</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-screen_002c-I"><code>screen, I</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-screen_002c-i"><code>screen, i</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-screen_002c-I_002fJ_002fK_002fM"><code>screen,
I/J/K/M</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-screen_002c-J"><code>screen, J</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-screen_002c-j"><code>screen, j</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-screen_002c-K"><code>screen, K</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
@@ -12797,9 +12868,6 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<tr><td></td><td class="printindex-index-entry"><a
href="#index-w"><code>w</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-W"><code>W</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Key-Index_ky_letter-X">X</th><td></td><td></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-X"><code>X</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Key-Index_ky_letter-Z">Z</th><td></td><td></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-Z"><code>Z</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-z"><code>z</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
@@ -12878,8 +12946,6 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function, Variable and File I
<a class="summary-letter-printindex" href="#Key-Index_ky_letter-W"><b>W</b></a>
-<a class="summary-letter-printindex" href="#Key-Index_ky_letter-X"><b>X</b></a>
-
<a class="summary-letter-printindex" href="#Key-Index_ky_letter-Z"><b>Z</b></a>
</td></tr></table>
@@ -13164,6 +13230,7 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hsys_002dorg_002denable_002dsmart_002dkeys-1">hsys-org-enable-smart-keys</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-_002d-Org-Mode">Smart Key
- Org Mode</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hsys_002dorg_002denable_002dsmart_002dkeys-2">hsys-org-enable-smart-keys</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Questions-and-Answers">Questions
and Answers</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hsys_002dorg_002dmode_002dp"><code>hsys-org-mode-p</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-hsys_002dorg_002droam_002dconsult_002dgrep"><code>hsys-org-roam-consult-grep</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Glossary">Glossary</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-htype_002dcreate_002dhook">htype-create-hook</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hook-Variables">Hook
Variables</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-htype_002ddelete_002dhook">htype-delete-hook</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hook-Variables">Hook
Variables</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hui_002dkill_002dring_002dsave"><code>hui-kill-ring-save</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Default-Hyperbole-Bindings">Default
Hyperbole Bindings</a></td></tr>
@@ -13211,6 +13278,7 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dadd"><code>hyrolo-add</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dadd_002dhook">hyrolo-add-hook</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Keys">HyRolo
Keys</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dadd_002dhook-1">hyrolo-add-hook</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hook-Variables">Hook
Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dconsult_002dgrep"><code>hyrolo-consult-grep</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002ddisplay_002dformat_002dfunction">hyrolo-display-format-function</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Settings">HyRolo
Settings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002ddisplay_002dhook">hyrolo-display-hook</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Hook-Variables">Hook
Variables</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002ddisplay_002dmatches"><code>hyrolo-display-matches</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
@@ -13227,6 +13295,8 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dgoogle_002dcontacts_002dgrep"><code>hyrolo-google-contacts-grep</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Settings">HyRolo
Settings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dgrep"><code>hyrolo-grep</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dhdr_002dregexp">hyrolo-hdr-regexp</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Settings">HyRolo
Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dhelm_002dorg_002drifle"><code>hyrolo-helm-org-rifle</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dhelm_002dorg_002drifle-1"><code>hyrolo-helm-org-rifle</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Glossary">Glossary</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dhighlight_002dface">hyrolo-highlight-face</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Settings">HyRolo
Settings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dkill"><code>hyrolo-kill</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hyrolo_002dkill_002dbuffers_002dafter_002duse">hyrolo-kill-buffers-after-use</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Settings">HyRolo
Settings</a></td></tr>
@@ -13271,6 +13341,7 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-hyp_002daddress"><code>ibtypes
hyp-address</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-hyp_002dsource"><code>ibtypes
hyp-source</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-hyperbole_002drun_002dtest"><code>ibtypes
hyperbole-run-test</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-hyperbole_002drun_002dtest_002ddefinition"><code>ibtypes
hyperbole-run-test-definition</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-hyperbole_002drun_002dtests"><code>ibtypes
hyperbole-run-tests</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-id_002dcflow"><code>ibtypes
id-cflow</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-ilink"><code>ibtypes
ilink</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -13281,6 +13352,8 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-mail_002daddress"><code>ibtypes
mail-address</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-man_002dapropos"><code>ibtypes
man-apropos</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-markdown_002dinternal_002dlink"><code>ibtypes
markdown-internal-link</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-org_002did"><code>ibtypes
org-id</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Smart-Key-_002d-Org-Mode">Smart Key - Org Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-org_002dlink_002doutside_002dorg_002dmode"><code>ibtypes
org-link-outside-org-mode</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-_002d-Org-Mode">Smart Key
- Org Mode</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-patch_002dmsg"><code>ibtypes
patch-msg</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-pathname"><code>ibtypes
pathname</code></a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ibtypes-pathname_002dline_002dand_002dcolumn"><code>ibtypes
pathname-line-and-column</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
@@ -13451,8 +13524,6 @@ Next: <a href="#Concept-Index" accesskey="n"
rel="next">Concept Index</a>, Previ
<tr><td></td><td class="printindex-index-entry"><a
href="#index-objc_002dcpp_002dinclude_002dpath">objc-cpp-include-path</a>:</td><td> </td><td
class="printindex-index-section"><a
href="#Smart-Key-_002d-Objective_002dC-Source-Code">Smart Key - Objective-C
Source Code</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-objc_002dinclude_002dpath">objc-include-path</a>:</td><td> </td><td
class="printindex-index-section"><a
href="#Smart-Key-_002d-Objective_002dC-Source-Code">Smart Key - Objective-C
Source Code</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-org_002dctrl_002dc_002dctrl_002dc"><code>org-ctrl-c-ctrl-c</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-org_002did">org-id</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-_002d-Org-Mode">Smart Key
- Org Mode</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-org_002dlink_002doutside_002dorg_002dmode">org-link-outside-org-mode</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-_002d-Org-Mode">Smart Key
- Org Mode</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-org_002dmeta_002dreturn"><code>org-meta-return</code></a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-outline_002dminor_002dmode-1"><code>outline-minor-mode</code></a>:</td><td> </td><td
class="printindex-index-section"><a
href="#Smart-Key-_002d-Emacs-Outline-Mode">Smart Key - Emacs Outline
Mode</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-outline_002dmode-1"><code>outline-mode</code></a>:</td><td> </td><td
class="printindex-index-section"><a
href="#Smart-Key-_002d-Emacs-Outline-Mode">Smart Key - Emacs Outline
Mode</a></td></tr>
@@ -13807,6 +13878,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function, Variable and Fi
<tr><td></td><td class="printindex-index-entry"><a
href="#index-configuration">configuration</a>:</td><td> </td><td
class="printindex-index-section"><a
href="#Customization">Customization</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-consult-package">consult package</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Glossary">Glossary</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-consult_002dorg_002droam-package">consult-org-roam
package</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Glossary">Glossary</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-ConsultFind">ConsultFind</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-contacts_002c-Google">contacts, Google</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Settings">HyRolo
Settings</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-context">context</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Buttons">Implicit
Buttons</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-context_002dsensitive-help">context-sensitive
help</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
@@ -13844,6 +13916,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function, Variable and Fi
<tr><td></td><td class="printindex-index-entry"><a
href="#index-datestamps">datestamps</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Keys">HyRolo
Keys</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-dbx">dbx</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-debugging-Smart-Keys">debugging Smart
Keys</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Smart-Key-Debugging">Smart Key Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-debugging-tests">debugging tests</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-default-label-type">default label type</a>:</td><td> </td><td
class="printindex-index-section"><a href="#View-Specs">View Specs</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-default-Smart-Key-context">default Smart Key
context</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Smart-Key-Operations">Smart Key Operations</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-definitions">definitions</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Glossary">Glossary</a></td></tr>
@@ -13911,6 +13984,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function, Variable and Fi
<tr><th id="Concept-Index_cp_letter-E">E</th><td></td><td></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-e_002dmail-address">e-mail address</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-e_002dmail-address-1">e-mail address</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Cell-Attributes">Cell
Attributes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-edebug-a-test">edebug a test</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-elink">elink</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-elisp-identifier">elisp identifier</a>:</td><td> </td><td
class="printindex-index-section"><a
href="#Smart-Key-_002d-Lisp-Source-Code">Smart Key - Lisp Source
Code</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-ellipses">ellipses</a>:</td><td> </td><td
class="printindex-index-section"><a href="#View-Specs">View Specs</a></td></tr>
@@ -14035,7 +14109,9 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function, Variable and Fi
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Concept-Index_cp_letter-H">H</th><td></td><td></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-hashtag">hashtag</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
-<tr><td></td><td class="printindex-index-entry"><a
href="#index-helm-mode">helm mode</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-_002d-Helm-Mode">Smart Key
- Helm Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-helm-package">helm package</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Glossary">Glossary</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-helm_002dmode">helm-mode</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-_002d-Helm-Mode">Smart Key
- Helm Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-HelmFind">HelmFind</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-help-buffer">help buffer</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-_002d-Help-Buffers">Smart
Key - Help Buffers</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-help_002c-button">help, button</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Smart-Key-Operations">Smart Key
Operations</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-help_002c-menu-items">help, menu items</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
@@ -14347,6 +14423,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function, Variable and Fi
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Doc">menu, Doc</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Documentation">menu,
Documentation</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-EBut">menu, EBut</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-entry_002fexit-commands">menu, entry/exit
commands</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Explicit_002dButton">menu,
Explicit-Button</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Find">menu, Find</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Find_002fWeb">menu, Find/Web</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
@@ -14359,6 +14436,10 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function, Variable and Fi
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-HyRolo">menu, HyRolo</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyRolo-Menu">HyRolo
Menu</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Ibut">menu, Ibut</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Buttons">Implicit
Buttons</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Ibut-1">menu, Ibut</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Menus">Menus</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Ibut_002fActivate">menu,
Ibut/Activate</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Ibut_002fCreate">menu,
Ibut/Create</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Ibut_002fEdit">menu,
Ibut/Edit</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Ibut_002fLabel">menu,
Ibut/Label</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Implicit_002dButton">menu,
Implicit-Button</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Implicit-Buttons">Implicit Buttons</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-Implicit_002dButton-1">menu,
Implicit-Button</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Menus">Menus</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-menu_002c-KeyBindings">menu,
KeyBindings</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Menus">Menus</a></td></tr>
@@ -14455,6 +14536,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function, Variable and Fi
<tr><td></td><td class="printindex-index-entry"><a
href="#index-Org-tables">Org tables</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Promoting-and-Demoting">Promoting
and Demoting</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-org_002dmode">org-mode</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Implicit-Button-Types">Implicit
Button Types</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-Org_002dmode">Org-mode</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Questions-and-Answers">Questions and
Answers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a
href="#index-org_002drifle-package">org-rifle
package</a>:</td><td> </td><td class="printindex-index-section"><a
href="#Glossary">Glossary</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-org_002droam-package">org-roam package</a>:</td><td> </td><td
class="printindex-index-section"><a href="#Glossary">Glossary</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-other-frame">other frame</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a
href="#index-other-window">other window</a>:</td><td> </td><td
class="printindex-index-section"><a href="#HyControl">HyControl</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index 278cc2d7ea..1ec4517d42 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 0812bf333b..e6df4e2e43 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 4d6b814b29..7fdc3b19ff 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -7,7 +7,7 @@
@c Author: Bob Weiner
@c
@c Orig-Date: 6-Nov-91 at 11:18:03
-@c Last-Mod: 29-Apr-23 at 17:20:22 by Bob Weiner
+@c Last-Mod: 7-May-23 at 20:35:03 by Bob Weiner
@c %**start of header (This is for running Texinfo on a region.)
@setfilename hyperbole.info
@@ -156,7 +156,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
<PRE>
Edition 8.0.1pre
-Printed April 29, 2023.
+Printed May 7, 2023.
Published by the Free Software Foundation, Inc.
Author: Bob Weiner
@@ -198,7 +198,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@example
Edition 8.0.1pre
-April 29, 2023
+May 7, 2023
Published by the Free Software Foundation, Inc.
Author: Bob Weiner
@@ -2125,11 +2125,13 @@ by any number of :, - or = separator characters,
including none.
@cindex ibtypes, list of
@cindex implicit button types
-Below is a list of standard implicit button types in the order in which
-Hyperbole tries to match to the types when looking for an implicit
-button; @bkbd{C-h h i t @key{RET}} provides similar information. See
-the Hyperbole file, @file{hibtypes.el}, for examples of how to define
-implicit button types (they are listed in increasing order of priority).
+Below is a list of standard implicit button types in the order in
+which Hyperbole tries to match to the types when looking for an
+implicit button (decreasing priority order). @bkbd{C-h h i t
+@key{RET}} provides similar information. See the Hyperbole file,
+@file{hibtypes.el}, for examples of how to define implicit button
+types (in the file, they are listed in reverse order, increasing in
+priority).
@table @code
@@ -2720,23 +2722,31 @@ PATH-style variable, the path at point is displayed;
empty paths,
e.g. @file{::} represent the current directory, @file{.}. Must have at
least four paths within the variable value for this to work.
-
-@findex ibtypes hyperbole-run-tests
+@findex ibtypes hyperbole-run-test-definition
+@cindex edebug a test
+@cindex debugging tests
@cindex running tests
@cindex testing
@cindex ert
@cindex Emacs Regression Test framework
+@item hyperbole-run-test-definition
+With an Action Key press on the name in the first line of an ert test
+def, evaluate and run the ERT test. With an Assist Key press instead,
+edebug the test and step through it.
+
+@findex ibtypes hyperbole-run-tests
@item hyperbole-run-tests
-Recognize buttons of the form @code{<hyperbole-run-tests test-selector>}
-which when activated run Hyperbole tests using the ERT framework. The
-@code{test-selector} argument is as described in @code{ert-select-tests}.
+Recognize Action Buttons of the form @code{<hyperbole-run-tests
+test-selector>} which when activated run Hyperbole tests using the ERT
+framework. The @code{test-selector} argument is as described in
+@code{ert-select-tests}.
@findex ibtypes hyperbole-run-test
@item hyperbole-run-test
-Recognize buttons of the form @code{<hyperbole-run-test test-name>}
-which when activated run individual Hyperbole tests, each given
-by the @code{<test-name>} argument, an unquoted name.
+Recognize Action Buttons of the form @code{<hyperbole-run-test
+test-name>} which when activated run individual Hyperbole tests, each
+given by the @code{<test-name>} argument, an unquoted name.
@end table
@@ -3721,14 +3731,14 @@ Action or Assist Key action to use when no matching
context is found.
@cindex minibuffer menus
@cindex menu item key bindings
-The rest of this section discusses only the
-specialized @dfn{minibuffer menus} which appear in the minibuffer
-window and work with all emacs versions on all display devices. They
-provide similar capabilities to those of the Hyperbole menubar but
-additionally allow for fast menu item selection via the keyboard or
-mouse. When used with the keyboard, they provide command access
-similar to key bindings. In fact, any menu item can be bound to a
-global key sequence. @xref{Binding Minibuffer Menu Items}.
+The rest of this section discusses only the specialized
+@dfn{minibuffer menus} which appear in the minibuffer window and work
+with all emacs versions on all display devices. They provide similar
+capabilities to those of the Hyperbole menubar but additionally allow
+for fast menu item selection via the keyboard or mouse. When used
+with the keyboard, they provide command access similar to key
+bindings. In fact, any menu item can be bound to a global key
+sequence. @xref{Binding Minibuffer Menu Items}.
@kindex C-h h
@cindex enable Hyperbole mode
@@ -3761,13 +3771,19 @@ Hy> Act Butfile/ Cust/ Doc/ Ebut/ Find/ Gbut/ Hist
Ibut/ Kotl/ Msg/ Rolo/ Scree
@kindex M-f
@kindex Shift-@key{TAB}
@kindex M-b
-All menu items are selected via the first character of their names (letter
-case does not matter), with presses of the Action Key or by using
-@bkbd{@key{TAB}} or @bkbd{M-f} to move forward an item, @bkbd{Shift-@key{TAB}}
-or @bkbd{M-b} to move backward an item and @bkbd{@key{RET}} to select the
-current item. A press of the Assist Key on an item displays help for the
-item, including the action that it performs. "/" at the end of an item name
-indicates that it brings up a submenu.
+A menu item can be selected in a number of ways:
+@itemize @bullet
+@item from the keyboard, by typing the first capitalized character of its name,
+@item with a press of @bkbd{@key{RET}} or the Action Key or Action Mouse Key
on the name,
+@item by pressing @bkbd{@key{TAB}} or @bkbd{M-f} to move forward an item,
+@item or by pressing @bkbd{Shift-@key{TAB}} or @bkbd{M-b} to move backward an
item.
+@end itemize
+
+@noindent
+A prefix argument given to one of the movement commands, moves by tht
+number of items within the menu. A press of the Assist Key on an item
+displays help for the item, including the action that it performs.
+"/" at the end of an item name indicates that it brings up a submenu.
@kindex C-h h C-t
@kindex C-h h Q
@@ -4802,10 +4818,10 @@ substructure) are promoted and demoted, not individual
cells.
@kindex koutliner, @key{TAB}
@kindex koutliner, M-@key{TAB}
@kindex koutliner, Shift-@key{TAB}
-@kindex koutliner, M-left
-@kindex koutliner, M-right
-@kindex koutliner, M-Shift-left
-@kindex koutliner, M-Shift-right
+@kindex koutliner, M-<left>
+@kindex koutliner, M-<right>
+@kindex koutliner, M-Shift-<left>
+@kindex koutliner, M-Shift-<right>
@kindex koutliner, C-c C-,
@kindex koutliner, C-c C-.
@kindex koutliner, C-c C->
@@ -4816,9 +4832,9 @@ substructure) are promoted and demoted, not individual
cells.
|-----------------------------+----------------------------|
| Promotion Outside Org Table | Demotion Outside Org Table |
|-----------------------------+----------------------------|
-| Shift-TAB or M-TAB | TAB |
-| M-left | M-right |
-| M-Shift-left | M-Shift-right |
+| M-TAB or Shift-TAB | TAB |
+| M-<left> | M-<right> |
+| M-Shift-<left> | M-Shift-<right> |
| C-c C-, | C-c C-. |
| C-c C-< | C-c C-> |
|-----------------------------+----------------------------|
@@ -4826,15 +4842,14 @@ substructure) are promoted and demoted, not individual
cells.
Trees may be demoted or promoted by pressing @key{TAB} or
-@bkbd{M-@key{TAB}} (or @bkbd{@key{SHIFT}-@key{TAB}}) respectively, as
-in most outliners today. @bkbd{M-0 @key{TAB}} and @bkbd{M-0
-M-@key{TAB}} demote and promote trees and additionally refill each
-cell that is not specially marked to prevent refilling.
-@xref{Filling}. A positive or negative prefix argument to these
-commands promotes or demotes the tree up to a maximum of the number of
-levels given by the argument. The outline may not support movement of
-the tree by the number of levels requested, however, in which case the
-maximal possible adjustment is made.
+@bkbd{M-@key{TAB}}. @bkbd{M-0 @key{TAB}} and @bkbd{M-0 M-@key{TAB}}
+demote and promote trees and additionally refill each cell that is not
+specially marked to prevent refilling. @xref{Filling}. A positive or
+negative prefix argument to these commands promotes or demotes the
+tree up to a maximum of the number of levels given by the argument.
+The outline may not support movement of the tree by the number of
+levels requested, however, in which case the maximal possible
+adjustment is made.
@kindex koutliner, M-1 @key{TAB}
@cindex inserting tabs
@@ -4853,10 +4868,11 @@ Use @bkbd{M-1 @key{TAB}} to toggle the @key{TAB} and
@cindex Org tables
-The Koutliner also supports Org Table editing, @pxref{Tables,,, org, the Org
-Mode Manual}, via Org table minor mode. Use @bkbd{M-x orgtbl-mode @key{RET}}
-to toggle this on and off. A press of the Action Key on a @code{|} symbol,
-also toggles this minor mode on or off.
+The Koutliner also supports Org Table editing, @pxref{Tables,,, org,
+the Org Mode Manual}, via Org table minor mode. Use @bkbd{M-x
+orgtbl-mode @key{RET}} to toggle this on and off. A press of the
+Action Key on a @code{|} symbol, also toggles this minor mode on or
+off.
@cindex outline mode
@kindex M-0 @key{TAB}
@@ -4865,16 +4881,16 @@ Tree demotion and promotion keys match the defaults in
Org mode and
Outline mode, plus some easier to type ones. The tables below
summarize which keys work whether inside an Org table or outside.
-Note that you must use @bkbd{M-0 @key{TAB}} and @bkbd{M-0 M-@key{TAB}} to
-demote/promote Koutline trees when in a table since @key{TAB} by itself
-moves between fields within a table.
+Note that you must use @bkbd{M-0 @key{TAB}} and @bkbd{M-0 M-@key{TAB}}
+to demote/promote Koutline trees when in a table since @key{TAB} and
+@bkbd{M-@key{TAB}} move between fields within a table.
@example
@noindent
|----------------------------+-----------------------------|
| Promotion Inside Org Table | Demotion Inside Org Table |
|----------------------------+-----------------------------|
-| M-0 Shift-TAB or M-0 M-TAB | M-0 TAB |
+| M-0 M-TAB | M-0 TAB |
| C-c C-, | C-c C-. |
| C-c C-< | C-c C-> |
|----------------------------+-----------------------------|
@@ -4888,9 +4904,9 @@ moves between fields within a table.
@cindex Action Key, cell argument
@kindex koutliner, Action Key, cell argument
Like Org mode, you can move the tree rooted at point past trees rooted
-at the same level with @bkbd{M-down} and before trees with @bkbd{M-up}.
-Give a prefix argument to move past that many other trees. (A 0 valued
-argument is automatically changed to 1).
+at the same level with @bkbd{M-<down>} and before trees with
+@bkbd{M-<up>}. Give a prefix argument to move past that many other
+trees. (A 0 valued argument is automatically changed to 1).
For maximum flexibility in rearranging outlines, there are commands
that move or copy entire trees anywhere within the outline as
@@ -4908,9 +4924,9 @@ arguments changes each command's behavior from insertion
at the sibling
level to insertion at the child level.
@table @asis
-@kitem M-down
+@kitem M-<down>
Move current tree past prefix arg same level trees.
-@kitem M-up
+@kitem M-<up>
Move current tree back prefix arg same level trees.
@kitem C-c c
@@ -5815,14 +5831,16 @@ set of commands as the menubar and popup menus, with
more concise labels.
@bkbd{C-mouse-3} pops up the mode-specific menu in Emacs. Experiment with
the menu or read the following sections explaining commands.
-The minibuffer Rolo/ menu offers the following commands:
-
@cindex Rolo commands
@cindex HyRolo commands
+@cindex ConsultFind
+@cindex HelmFind
@findex hyrolo-add
+@findex hyrolo-consult-grep
@findex hyrolo-display-matches
@findex hyrolo-edit
@findex hyrolo-find-file
+@findex hyrolo-helm-org-rifle
@findex hyrolo-kill
@findex hyrolo-mail-to
@findex hyrolo-sort
@@ -5830,14 +5848,19 @@ The minibuffer Rolo/ menu offers the following commands:
@findex hyrolo-fgrep
@findex hyrolo-word
@findex hyrolo-yank
+The minibuffer Rolo/ menu offers the following commands (ConsultFind
+and HelmFind appear only when associated packages are loaded):
+
@example
@group
Menu Item Command Description
=====================================================================
Add hyrolo-add Adds a hyrolo entry
+ConsultFind hyrolo-consult-grep Interactively narrow grep matches
Display hyrolo-display-matches Displays last matches again
Edit hyrolo-edit Edits an existing hyrolo entry
File hyrolo-find-file Edits a @code{hyrolo-file-list} file
+HelmFind hyrolo-helm-org-rifle Interactively narrow entry matches
Info id-info Displays a hyrolo manual entry
Kill hyrolo-kill Deletes a hyrolo entry
Mail hyrolo-mail Mails to an address at point
@@ -9571,8 +9594,8 @@ When in an Org mode context and
@code{hsys-org-enable-smart-keys} is non-nil:
@cindex Org ID
@cindex Org link, outside Org
-@vindex org-id
-@vindex org-link-outside-org-mode
+@findex ibtypes org-id
+@findex ibtypes org-link-outside-org-mode
@noindent
Org links may be used outside of Org mode buffers. Such links are
handled by the separate implicit button type, @code{org-link-outside-org-mode}.
diff --git a/man/im/action-key-animation.gif b/man/im/action-key-animation.gif
index b4bd083f08..2c03773720 100644
Binary files a/man/im/action-key-animation.gif and
b/man/im/action-key-animation.gif differ
diff --git a/man/version.texi b/man/version.texi
index 559ebfcf30..c47df44a0a 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED April, 2023
-@set UPDATED-MONTH April 2023
+@set UPDATED May, 2023
+@set UPDATED-MONTH May 2023
@set EDITION 8.0.1pre
@set VERSION 8.0.1pre
diff --git a/test/kimport-tests.el b/test/kimport-tests.el
index 145e1bc75c..98d07e1df6 100644
--- a/test/kimport-tests.el
+++ b/test/kimport-tests.el
@@ -3,7 +3,7 @@
;; Author: Mats Lidell
;;
;; Orig-Date: 9-Apr-23 at 23:31:48
-;; Last-Mod: 11-Apr-23 at 00:59:17 by Mats Lidell
+;; Last-Mod: 7-May-23 at 17:11:53 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -20,9 +20,28 @@
(require 'kimport)
(require 'ert)
+(ert-deftest kimport--aug-post-outline ()
+ "Import .otl star outline as one cell per entry beginning with one or more
stars."
+ (let ((file (make-temp-file "hypb" nil ".aug"
+ (concat "entry1 1\n\nentry1a 1a\n\nentry1b
1b\n\n"
+ "entry2 2\n\nentry3 3\n\nentry3a
3a\n")))
+ (kotl-file (make-temp-file "hypb" nil ".kotl")))
+ (unwind-protect
+ (progn
+ (find-file file)
+ (kimport:file file kotl-file)
+ (find-file kotl-file)
+ (dolist (v '("entry1" "entry1a" "entry1b" "entry2" "entry3"
"entry3a"))
+ (should (looking-at-p v))
+ (should (string-suffix-p (kcell-view:label) v))
+ (unless (kotl-mode:last-cell-p)
+ (kotl-mode:next-cell 1)))
+ (should (kotl-mode:last-cell-p)))
+ (delete-file file)
+ (delete-file kotl-file))))
+
(ert-deftest kimport--text-file ()
- "Import text file as one cell per paragraph."
- (skip-unless false) ;; Skip until text file import if fixed
+ "Import .txt text file into a Koutline, as one cell per paragraph."
(let ((file (make-temp-file "hypb" nil ".txt" "1\n\n2\n\n3\n"))
(kotl-file (make-temp-file "hypb" nil ".kotl")))
(unwind-protect
@@ -32,43 +51,53 @@
(find-file kotl-file)
(dolist (v '(1 2 3))
(should (looking-at-p (number-to-string v)))
- (kotl-mode:forward-cell 1)))
+ (unless (kotl-mode:last-cell-p)
+ (kotl-mode:forward-cell 1)))
+ (should (kotl-mode:last-cell-p)))
(delete-file file)
(delete-file kotl-file))))
(ert-deftest kimport--text-file-two-lines-per-paragraph ()
- "Import text file as one cell per paragraph each two lines."
- (skip-unless false) ;; Skip until text file import if fixed
- (let ((file (make-temp-file "hypb" nil ".txt" "1\n2\n\n\n3\n4\n\n5\n6\n"))
+ "Import .txt text file into a Koutline, as one cell per paragraph.
+Each paragraph is two lines."
+ (let ((file (make-temp-file "hypb" nil ".txt"
+ (concat "par1 line1\npar1 line2\n\n\npar2 line3\n
par2 line4"
+ "\n\n par3 *. line5\n par3 *. line6")))
(kotl-file (make-temp-file "hypb" nil ".kotl")))
(unwind-protect
(progn
(find-file file)
(kimport:file file kotl-file)
(find-file kotl-file)
- (dolist (v '("1\n.*2" "3\n.*4" "5\n.*6"))
+ (dolist (v '("par1 line1\\s-+par1 line2" "par2 line3\\s-+par2 line4"
+ "par3 \\*\\. line5\\s-+par3 \\*\\. line6"))
(should (looking-at-p v))
- (kotl-mode:forward-cell 1)))
+ (unless (kotl-mode:last-cell-p)
+ (kotl-mode:forward-cell 1)))
+ (should (kotl-mode:last-cell-p)))
(delete-file file)
(delete-file kotl-file))))
(ert-deftest kimport--star-outline ()
- "Import star outline as one cell per star."
- (let ((file (make-temp-file "hypb" nil ".org" "* 1\n* 2\n* 3\n"))
+ "Import .otl star outline as one cell per entry beginning with one or more
stars."
+ (let ((file (make-temp-file "hypb" nil ".otl" "* 1\n** 1a\n** 1b\n* 2\n*
3\n** 3a\n"))
(kotl-file (make-temp-file "hypb" nil ".kotl")))
(unwind-protect
(progn
(find-file file)
(kimport:file file kotl-file)
(find-file kotl-file)
- (dolist (v '(1 2 3))
- (should (looking-at-p (number-to-string v)))
- (kotl-mode:forward-cell 1)))
+ (dolist (v '("1" "1a" "1b" "2" "3" "3a"))
+ (should (looking-at-p v))
+ (should (equal (kcell-view:label) v))
+ (unless (kotl-mode:last-cell-p)
+ (kotl-mode:next-cell 1)))
+ (should (kotl-mode:last-cell-p)))
(delete-file file)
(delete-file kotl-file))))
(ert-deftest kimport--star-outline-two-lines-per-star-heading ()
- "Import text file as one cell per paragraph each two lines."
+ "Import .org star outline as one cell per paragraph, each two lines."
(let ((file (make-temp-file "hypb" nil ".org" "* 1\n2\n* 3\n4\n* 5\n6\n"))
(kotl-file (make-temp-file "hypb" nil ".kotl")))
(unwind-protect
@@ -78,12 +107,14 @@
(find-file kotl-file)
(dolist (v '("1\n.*2" "3\n.*4" "5\n.*6"))
(should (looking-at-p v))
- (kotl-mode:forward-cell 1)))
+ (unless (kotl-mode:last-cell-p)
+ (kotl-mode:forward-cell 1)))
+ (should (kotl-mode:last-cell-p)))
(delete-file file)
(delete-file kotl-file))))
(ert-deftest kimport--star-outline-with-siblings ()
- "Import star outline as one cell per star."
+ "Import .org star outline as one cell per entry beginning with one or more
stars."
(let ((file (make-temp-file "hypb" nil ".org" "* 1\n** 2\n*** 3\n"))
(kotl-file (make-temp-file "hypb" nil ".kotl")))
(unwind-protect
@@ -93,8 +124,10 @@
(find-file kotl-file)
(dolist (v '(1 2))
(should (looking-at-p (number-to-string v)))
- (kotl-mode:next-cell 1))
+ (unless (kotl-mode:last-cell-p)
+ (kotl-mode:next-cell 1)))
(should (looking-at-p (number-to-string 3)))
+ (should (kotl-mode:last-cell-p))
(kotl-mode:end-of-buffer)
(should (= (kcell-view:level) 3)))
(delete-file file)