branch: externals/hyperbole
commit c51017f96b7e438df5d28e1799f5c270b6459cc5
Author: bw <[email protected]>
Commit: bw <[email protected]>
Fix HyRolo search bug in Org mode when no * delim in file, just text
Add links to EmacsConf 2023 Hyperbole videos.
---
ChangeLog | 8 ++++
FAST-DEMO | 130 ++++++++++++++++++++++++++++++++++--------------------------
HY-ANNOUNCE | 6 +++
README.md | 6 +++
hyrolo.el | 19 ++++++---
5 files changed, 106 insertions(+), 63 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index c69866c66e..08502460d9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2023-12-29 Bob Weiner <[email protected]>
+* hyrolo.el (hyrolo-to-entry-end): Fix bug where HyRolo fgrep would get stuck
+ in Org buffers without any outline delimiters due to this function moving
+ backwards.
+
+* HY-ANNOUNCE:
+ README.md:
+ FAST-DEMO (Introductory Videos): Add 3 EmacsConf 2023 videos on Hyperbole.
+
* hui-mouse.el (hkey-alist): Add 'ert-results-mode' support using rsw's new
"ert-results.el" library. Add 'smart-ert-results' and
'smart-ert-results-assist' support functions. Fix many flycheck warnings.
diff --git a/FAST-DEMO b/FAST-DEMO
index 878b9081e1..f42c5b4e52 100644
--- a/FAST-DEMO
+++ b/FAST-DEMO
@@ -4,9 +4,10 @@
Send an email or a testimonial if you like Hyperbole to <[email protected]>.
- This demo is the fast way to get started with Hyperbole after installation.
- The prior, lengthier Hyperbole demo/tutorial can be found in this file:
"DEMO".
- For a non-interactive introduction to Hyperbole concepts, see
"HY-CONCEPTS.kotl".
+ This interactive demo is the fast way to get started with Hyperbole after
+ installation. The prior, lengthier Hyperbole demo/tutorial can be found
+ in this file: "DEMO". For a non-interactive introduction to Hyperbole
+ concepts, see "HY-CONCEPTS.kotl".
* Introductory Videos
@@ -53,10 +54,12 @@
|-----------------------------------------------------+------------------------------|
|-----------------------------------------------------+------------------------------|
| <[Overview and Demo]> |
https://youtu.be/WKwZHSbHmPg |
- | Sections broken out in the prior table |
|
+ | Sections broken out in the prior table |
|
|-----------------------------------------------------+------------------------------|
| <[Quick Introduction]> |
https://youtu.be/K1MNUctggwI |
|-----------------------------------------------------+------------------------------|
+ | <[Top 10 ways Hyperbole amps up Emacs]> |
https://youtu.be/BysjfL25Nlc |
+
|-----------------------------------------------------+------------------------------|
| <[Introduction to Buttons]> |
https://youtu.be/zoEht66N2PI |
|-----------------------------------------------------+------------------------------|
| <[Linking Personal Info with Implicit Buttons]> |
https://youtu.be/TQ_fG7b1iHI |
@@ -65,10 +68,14 @@
|-----------------------------------------------------+------------------------------|
| <[HyRolo, fast contact/hierarchical record viewer]> |
https://youtu.be/xdJGFdgKPFY |
|-----------------------------------------------------+------------------------------|
+ | <[Using Koutline for stream of thought journaling]> |
https://youtu.be/dO-gv898Vmg |
+
|-----------------------------------------------------+------------------------------|
| <[Build a Zettelkasten with HyRolo]> |
https://youtu.be/HdlCK9w-LyQ |
|-----------------------------------------------------+------------------------------|
| <[HyControl, fast Emacs frame and window manager]> |
https://youtu.be/M3-aMh1ccJk |
|-----------------------------------------------------+------------------------------|
+ | <[Writing test cases for GNU Hyperbole]> |
https:/youtu.be/maNQSKxXIzI |
+
|-----------------------------------------------------+------------------------------|
| <[Find/Web Search]> |
https://youtu.be/8lMlJed0-OM |
|-----------------------------------------------------+------------------------------|
@@ -104,31 +111,35 @@
These patterns are called `implicit buttons' and are activated by pressing
{M-RET} (ESC RETURN, ALT-RETURN, or CMD-RETURN) or SHIFT-MIDDLE-MOUSE
anywhere within them (this is known as the Action Key). Hyperbole
- recognizes these buttons using its predefined implicit button types that
- specify how to recognize each type of button and what action it performs.
- (For example, the web links in the table above are implicit buttons that
- display web pages). You can also add your own button and action types.
+ recognizes these buttons using its many predefined implicit button types
+ that specify how to recognize each type of button and what action it
+ performs. (For example, the web links in the table above are implicit
+ buttons that display web pages. So are the series of key presses
+ surrounded by braces throughout this document). You can also add your own
+ button and action types.
Try pressing {M-RET} or SHIFT-MIDDLE-MOUSE on some of the implicit buttons
in double quotes below to activate them and see how they behave. Press
- {C-h A} (the A must be capitalized) on any Hyperbole button to see exactly
- what it does prior to activating it.
+ {C-h A} (the A must be capitalized) on any Hyperbole button or highlighted
+ Emacs push-button to see exactly what it does prior to activating it.
+
+
+** Implicit Link Buttons
You can simply type implicit buttons into a buffer or you can use {C-h h i
- c} to create them and give them names. To create an implicit link button
- from a buffer in one window to another, simply depress the Action Mouse
- Key where you want the new button (but not within a draggable item), drag
- to a point in another Emacs window and release. An implicit link button
- of an appropriate type for the release context will be inserted at the
- original depress point.
-
- If you have exactly two Emacs windows in your current frame or exactly two
- windows visible across two Emacs frames, there is an even simpler way to
- create implicit links. Use the Link menu item, {C-h h i l}, to create a
- new unnamed implicit link button or to edit the one at point. {M-1 C-h h
- i l} will additionally prompt to add a name or rename the button at
- point. With more than two windows, Hyperbole will prompt you to choose
- the referent window and its associated point to which to link. If the Ace
+ c} to create them and give them names. When you have exactly two windows
+ in an Emacs frame, you can instantly create an unnamed implicit link
+ button from the selected window to point in the other window by using {C-h
+ h i l}. {M-1 C-h h i l} creates or renames a named implicit button that
+ looks like <[name]>.
+
+ You can create the same button by depressing the Action Mouse Key in the
+ text of one window and dragging to the text of the other and releasing it.
+ An implicit link button of an appropriate type for the release context
+ will be inserted at the original depress point.
+
+ With more than two windows, Hyperbole will prompt you to choose the
+ referent window and its associated point to which to link. If the Ace
Window package is installed and active, this will be used to choose the
window; otherwise, you will be prompted to select it by mouse.
@@ -362,8 +373,10 @@ pspell-config(1) - prints information about a
libpspell installation
|----------------------------------------------------------------------------|
Implicit button types are stored in their own namespace, 'ibtypes::', so to
-see the doc on the 'pathname' ibtype, use {C-h f ibtypes::pathname RET}. To
-learn how to create new kinds of implicit button and action types, see:
+see the doc on the 'pathname' ibtype, use {C-h f ibtypes::pathname RET}.
+
+See "DEMO#Implicit Buttons" or "(hyperbole)Implicit Buttons" for more detail.
+To learn how to create new kinds of implicit button and action types, see
"(hyperbole)Creating Types".
@@ -372,31 +385,32 @@ learn how to create new kinds of implicit button and
action types, see:
You have learned the basics of Hyperbole implicit button types. Hyperbole
has two other categories of buttons:
- `Explicit buttons' are manually created and embedded within buffers and
- explicitly assigned any of many action types that Hyperbole and Emacs
- include. These contrast with implicit buttons which Hyperbole generates
- automatically by recognizing text patterns in buffers. Explicit buttons
- look like this: <(fake button)>. They are quickly recognizable, yet
- relatively non-distracting as one scans the text in which they are
- embedded. Explicit buttons can link to local and remote files or to a
- section within a document; they can calculate things or query databases
- or show different views of bodies of information. Unlike HTML
- hyperbuttons, there is no markup language to learn nor specific document
- format required. You can create explicit buttons with simple keyboard
- presses or mouse drags from one window to another (when not on a draggable
- item). See the {C-h h e} menu for explicit button commands.
- {C-h h e c} creates an explicit button and {C-h h e l} creates an explicit
- link button between two windows, just like their counterparts for implicit
- butons. See "DEMO#Explicit Buttons" or "(hyperbole)Explicit Buttons" for
- more detail.
-
- `Global buttons' are labeled Hyperbole buttons in your personal button
- file, {C-h h b p}. All global buttons are activated by name with
- completion provided, independent of which buffers are on-screen, {C-h h g
- a}. Global buttons may be <(explicit buttons)> or <[labeled/named]>
- implicit buttons in the personal button file. See the {C-h h g} menu for
- global button commands. See "DEMO#Global Buttons" or "(hyperbole)Global
- Buttons" for more detail.
+ `Explicit buttons' are manually created and embedded within buffers and
+ explicitly assigned any of the many action types that Hyperbole includes.
+ These contrast with implicit buttons which Hyperbole generates
+ automatically by recognizing text patterns in buffers. Explicit buttons
+ look like this: <(fake button)>. They are quickly recognizable, yet
+ relatively non-distracting as one scans the text in which they are
+ embedded. Explicit buttons can link to local and remote files or to a
+ section within a document; they can calculate things or query databases or
+ show different views of bodies of information.
+
+ Unlike HTML hyperbuttons, there is no markup language to learn nor
+ specific document format required. You can create explicit buttons with
+ simple keyboard presses or mouse drags from one window to another (when
+ not on a draggable item). See the {C-h h e} menu for explicit button
+ commands. {C-h h e c} creates an explicit button and {C-h h e l} creates
+ an explicit link button between two windows, just like their counterparts
+ for implicit butons. See "DEMO#Explicit Buttons" or "(hyperbole)Explicit
+ Buttons" for more detail.
+
+ `Global buttons' are explicit or named implicit Hyperbole buttons that are
+ stored in your personal button file edited with {C-h h b p}. Any such
+ button in there becomes global and is accessible by name without the need
+ to have the that file on screen. Simply press {C-h h g a} to activate a
+ global button and you will be prompted with completion for the button
+ name. See the {C-h h g} menu for the rest of the global button commands.
+ See "DEMO#Global Buttons" or "(hyperbole)Global Buttons" for more detail.
* Hyperbole Subsystems
@@ -430,17 +444,17 @@ learn how to create new kinds of implicit button and
action types, see:
use within hyperlink references to the cell.
A demonstration of the Koutliner is found on the Hyperbole Kotl/Example
- menu entry. {C-h h k e}, gives you an editable copy of Hyperbole's example
- Koutliner file. This explains the Koutliner commands and lets you try them
- out as you learn. Additional documentation can be found in
- "(hyperbole)Koutliner". "(hyperbole)Koutliner Keys" summarizes, in
+ menu entry, {C-h h k e}. This gives you an editable copy of Hyperbole's
+ example Koutliner file. This file explains the Koutliner commands and
+ lets you try them out as you learn. Additional documentation can be found
+ in "(hyperbole)Koutliner". "(hyperbole)Koutliner Keys" summarizes, in
alphabetical order, the Koutliner commands which are bound to keys.
* Reference Documentation
As noted at the start, "DEMO" provides a more extensive, interactive look
- into Hyperbole, {C-h h d d}.
+ into Hyperbole, {C-h h d d}, if you have more time.
For a quick, non-interactive introduction to Hyperbole concepts, use
"HY-CONCEPTS.kotl" available with {C-h h d c}.
@@ -451,9 +465,11 @@ learn how to create new kinds of implicit button and
action types, see:
and action types and much more. See "(hyperbole)" or use {C-h h d i}.
It is included in the "${hyperb:dir}/man/" subdirectory of Hyperbole in
- four forms:
+ four forms, accessible as the links below:
"man/hyperbole.info" - online Info browser version
"man/hyperbole.html" - web HTML version
"man/hyperbole.pdf" - printable version
"man/hyperbole.texi" - source form
+
+-- The End --
diff --git a/HY-ANNOUNCE b/HY-ANNOUNCE
index 82c99bcaff..16cccc15d3 100644
--- a/HY-ANNOUNCE
+++ b/HY-ANNOUNCE
@@ -38,6 +38,8 @@ skip to the next section.
|--------------------------------------------------+------------------------------|
| Quick Introduction |
https://youtu.be/K1MNUctggwI |
|--------------------------------------------------+------------------------------|
+ | Top 10 ways Hyperbole amps up Emacs |
https://youtu.be/BysjfL25Nlc |
+
|--------------------------------------------------+------------------------------|
| Introduction to Buttons |
https://youtu.be/zoEht66N2PI |
|--------------------------------------------------+------------------------------|
| Linking Personal Info with Implicit Buttons |
https://youtu.be/TQ_fG7b1iHI |
@@ -46,10 +48,14 @@ skip to the next section.
|--------------------------------------------------+------------------------------|
| HyRolo, fast contact/hierarchical record viewer |
https://youtu.be/xdJGFdgKPFY |
|--------------------------------------------------+------------------------------|
+ | Using Koutline for stream of thought journaling |
https://youtu.be/dO-gv898Vmg |
+
|--------------------------------------------------+------------------------------|
| Build a Zettelkasten with HyRolo |
https://youtu.be/HdlCK9w-LyQ |
|--------------------------------------------------+------------------------------|
| HyControl, fast Emacs frame and window manager |
https://youtu.be/M3-aMh1ccJk |
|--------------------------------------------------+------------------------------|
+ | Writing test cases for GNU Hyperbole |
https:/youtu.be/maNQSKxXIzI |
+
|--------------------------------------------------+------------------------------|
| Find/Web Search |
https://youtu.be/8lMlJed0-OM |
|--------------------------------------------------+------------------------------|
diff --git a/README.md b/README.md
index 68f9955667..9af6b2bc55 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,8 @@ otherwise, skip to the next section.
- [Quick Introduction](https://youtu.be/K1MNUctggwI)
+ - [Top 10 ways Hyperbole amps up
Emacs](https://emacsconf.org/2023/talks/hyperamp/)
+
- [Introduction to Buttons](https://youtu.be/zoEht66N2PI)
- [Linking Personal Info with Implicit
Buttons](https://emacsconf.org/2022/talks/buttons/)
@@ -27,10 +29,14 @@ otherwise, skip to the next section.
- [HyRolo, fast contact/hierarchical record
viewer](https://youtu.be/xdJGFdgKPFY)
+ - [Using Koutline for stream of thought
journaling](https://emacsconf.org/2023/talks/koutline/)
+
- [Build a Zettelkasten with
HyRolo](https://emacsconf.org/2022/talks/rolodex/)
- [HyControl, fast Emacs frame and window
manager](https://youtu.be/M3-aMh1ccJk)
+ - [Writing test cases for GNU
Hyperbole](https://emacsconf.org/2023/talks/test/)
+
- [Find/Web Search](https://youtu.be/8lMlJed0-OM)
- [Linking personal info with implicit
buttons](https://youtu.be/TQ_fG7b1iHI)
diff --git a/hyrolo.el b/hyrolo.el
index e2ae608772..2c68bb7374 100644
--- a/hyrolo.el
+++ b/hyrolo.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 7-Jun-89 at 22:08:29
-;; Last-Mod: 26-Dec-23 at 22:03:08 by Bob Weiner
+;; Last-Mod: 29-Dec-23 at 21:55:32 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -2262,11 +2262,18 @@ before the final newline of the entry.
Return current point."
(interactive "P")
- (hyrolo-move-forward (lambda () (hyrolo-move-to-entry-end
include-sub-entries)))
- (when (and (called-interactively-p 'any)
- (not (eolp)))
- (goto-char (1- (point))))
- (point))
+ ;; In cases where a file lacks any entry delimiters and we consider
+ ;; each line a record, outline commands can falsely move point prior
+ ;; to its current location. Prevent this by moving to the max of
+ ;; the (1+ start point) and the final point.
+ (let ((opoint (point)))
+ (hyrolo-move-forward (lambda () (hyrolo-move-to-entry-end
include-sub-entries)))
+ (when (and (called-interactively-p 'any)
+ (not (eolp)))
+ (goto-char (1- (point))))
+ (when (<= (point) opoint)
+ (goto-char (min (1+ opoint) (point-max))))
+ (point)))
(defun hyrolo-move-to-entry-end (include-sub-entries)
(if (not include-sub-entries)