branch: externals/hyperbole
commit c51017f96b7e438df5d28e1799f5c270b6459cc5
Author: bw <r...@gnu.org>
Commit: bw <r...@gnu.org>

    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  <r...@gnu.org>
 
+* 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 <r...@gnu.org>.
 
-  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)

Reply via email to