branch: externals/hyperbole
commit 48762caeee9466e79a7952cf4c69f7d0278db060
Merge: 24985daca0b 1a7611e6d81
Author: Robert Weiner <[email protected]>
Commit: GitHub <[email protected]>

    Merge pull request #1002 from rswgnu/rsw
    
    - hsys-youtube-end-format - Fix so at least plays from start time
    
    - Small doc updates
---
 ChangeLog          |  4 ++++
 FAST-DEMO          | 64 ++++++++++++++++++++++++++++--------------------------
 README.md          |  4 ++++
 README.md.html     |  4 ++++
 README.toc.md      |  4 ++++
 hproperty.el       | 11 +++++-----
 hsys-youtube.el    | 10 +++++----
 hui-mouse.el       | 10 ++++-----
 man/hyperbole.texi | 33 ++++++++++++++++------------
 9 files changed, 85 insertions(+), 59 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 7e6f1caf115..e847f03891c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2026-07-07  Bob Weiner  <[email protected]>
 
+* hsys-youtube.el (hsys-youtube-end-format): YouTube no longer allows end 
times or the
+    embed protocol in video urls, so update this format to at least jump to 
the proper
+    start time.  The end time is sent but ignored.
+
 * hui-mouse.el (hkey-alist): Trigger 'hui-select-thing' or 
'hui-select-mark-delimited-sexp'
     if (point) >= any hbut end point, not just equal to it, as before.  This 
was causing
     a failure to trigger when a HyWikiWord came right before a closing double 
quote that
diff --git a/FAST-DEMO b/FAST-DEMO
index 9faf25fc638..8d469d003bd 100644
--- a/FAST-DEMO
+++ b/FAST-DEMO
@@ -57,37 +57,39 @@
 
 ** Hyperbole Videos
 
-  
|-----------------------------------------------------+-----------------------------------------|
-  | GNU Hyperbole Videos                                | Web Links            
                   |
-  
|-----------------------------------------------------+-----------------------------------------|
-  
|-----------------------------------------------------+-----------------------------------------|
-  | <[Overview and Demo]>                               | 
https://youtu.be/WKwZHSbHmPg            |
-  | Sections broken out in the prior table              |                      
                   |
-  
|-----------------------------------------------------+-----------------------------------------|
-  | <[Unscripted Hyperbole Demo at EmacsATX]>           | <yt-play 
"iuwn8GpRj7w" "0:48" "32:42">  |
-  
|-----------------------------------------------------+-----------------------------------------|
-  | <[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            |
-  
|-----------------------------------------------------+-----------------------------------------|
-  | <[Powerful Productivity with Hyperbole and Org]>    | 
https://youtu.be/BrTpTNEXMyY            |
-  
|-----------------------------------------------------+-----------------------------------------|
-  | <[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            |
-  
|-----------------------------------------------------+-----------------------------------------|
+  
|-----------------------------------------------------+----------------------------------------|
+  | GNU Hyperbole Videos                                | Web Links            
                  |
+  
|-----------------------------------------------------+----------------------------------------|
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[Overview and Demo]>                               | 
https://youtu.be/WKwZHSbHmPg           |
+  | Sections broken out in the prior table              |                      
                  |
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[Unscripted Hyperbole Demo at EmacsATX]>           | <yt-play 
"iuwn8GpRj7w" "0:48" "32:42"> |
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[Quick Introduction]>                              | 
https://youtu.be/K1MNUctggwI           |
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[Top 10 ways Hyperbole amps up Emacs]>             | 
https://youtu.be/BysjfL25Nlc           |
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[HyWiki: Zero Markup Hypertext]>                   | 
https://youtu.be/3zG3lRmi3Zg           |
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[Introduction to Buttons]>                         | 
https://youtu.be/zoEht66N2PI           |
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[Linking Personal Info with Implicit Buttons]>     | 
https://youtu.be/TQ_fG7b1iHI           |
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[Powerful Productivity with Hyperbole and Org]>    | 
https://youtu.be/BrTpTNEXMyY           |
+  
|-----------------------------------------------------+----------------------------------------|
+  | <[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           |
+  
|-----------------------------------------------------+----------------------------------------|
 
 
 * Introduction
diff --git a/README.md b/README.md
index 9896a7f9fcd..8176c3ba954 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,8 @@ otherwise, skip to the next section.
 
    - [Top 10 ways Hyperbole amps up 
Emacs](https://emacsconf.org/2023/talks/hyperamp/)
 
+   - [HyWiki: Zero Markup Hypertext](https://youtu.be/3zG3lRmi3Zg)
+
    - [Introduction to Buttons](https://youtu.be/zoEht66N2PI)
 
    - [Linking Personal Info with Implicit 
Buttons](https://emacsconf.org/2022/talks/buttons/)
@@ -63,6 +65,8 @@ otherwise, skip to the next section.
 
    - [The Emacs Hyperbole](https://mike.hostetlerhome.com/emacs-hyperbole)
 
+   - [HyWiki: Zero Markup 
Hypertext](https://www.chiply.dev/post-hyperbole-hywiki)
+
    - [HyWiki: My Favorite Part of 
Hyperbole](https://kirankp.com/blog/gnu-hyperbole/)
 
    - [Hyperbole VisionQuest Part 
1](https://github.com/termitereform/JunkPile/blob/master/HyperboleNotes.org)
diff --git a/README.md.html b/README.md.html
index 3af2c6be90f..1f110cd2788 100644
--- a/README.md.html
+++ b/README.md.html
@@ -62,6 +62,8 @@ timestamps: 00:48 to 32:42.</p></li>
 Introduction</a></p></li>
 <li><p><a href="https://emacsconf.org/2023/talks/hyperamp/";>Top 10 ways
 Hyperbole amps up Emacs</a></p></li>
+<li><p><a href="https://youtu.be/3zG3lRmi3Zg";>HyWiki: Zero Markup
+Hypertext</a></p></li>
 <li><p><a href="https://youtu.be/zoEht66N2PI";>Introduction to
 Buttons</a></p></li>
 <li><p><a href="https://emacsconf.org/2022/talks/buttons/";>Linking
@@ -87,6 +89,8 @@ implicit buttons</a></p></li>
 <ul>
 <li><p><a href="https://mike.hostetlerhome.com/emacs-hyperbole";>The
 Emacs Hyperbole</a></p></li>
+<li><p><a href="https://www.chiply.dev/post-hyperbole-hywiki";>HyWiki:
+Zero Markup Hypertext</a></p></li>
 <li><p><a href="https://kirankp.com/blog/gnu-hyperbole/";>HyWiki: My
 Favorite Part of Hyperbole</a></p></li>
 <li><p><a
diff --git a/README.toc.md b/README.toc.md
index ce70ff0da46..2dcdab95300 100644
--- a/README.toc.md
+++ b/README.toc.md
@@ -60,6 +60,8 @@ otherwise, skip to the next section.
 
    - [Top 10 ways Hyperbole amps up 
Emacs](https://emacsconf.org/2023/talks/hyperamp/)
 
+   - [HyWiki: Zero Markup Hypertext](https://youtu.be/3zG3lRmi3Zg)
+
    - [Introduction to Buttons](https://youtu.be/zoEht66N2PI)
 
    - [Linking Personal Info with Implicit 
Buttons](https://emacsconf.org/2022/talks/buttons/)
@@ -84,6 +86,8 @@ otherwise, skip to the next section.
 
    - [The Emacs Hyperbole](https://mike.hostetlerhome.com/emacs-hyperbole)
 
+   - [HyWiki: Zero Markup 
Hypertext](https://www.chiply.dev/post-hyperbole-hywiki)
+
    - [HyWiki: My Favorite Part of 
Hyperbole](https://kirankp.com/blog/gnu-hyperbole/)
 
    - [Hyperbole VisionQuest Part 
1](https://github.com/termitereform/JunkPile/blob/master/HyperboleNotes.org)
diff --git a/hproperty.el b/hproperty.el
index 4ad974184e9..79d40e74e57 100644
--- a/hproperty.el
+++ b/hproperty.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    21-Aug-92
-;; Last-Mod:      3-Apr-26 at 19:36:41 by Bob Weiner
+;; Last-Mod:      4-Jul-26 at 17:52:30 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -176,7 +176,7 @@ the PROPERTY at the position matches VALUE."
       (delete-overlay but))))
 
 (defun hproperty:but-clear-all (&optional regexp-match)
-  "Remove highlighting from all named Hyperbole buttons in the current buffer.
+  "Remove highlighting from all current buffer delimited Hyperbole buttons.
 If REGEXP-MATCH is non-nil, only buttons matching this argument are
 de-highlighted."
   (if regexp-match
@@ -195,8 +195,9 @@ de-highlighted."
   (mapc #'delete-overlay hbut-list))
 
 (defun hproperty:but-create (&optional regexp-match)
-  "Highlight all named Hyperbole buttons in buffer.
-De-highlight buttons unless `hproperty:but-highlight-flag' is set.
+  "Highlight all named, delimited Hyperbole buttons in buffer.
+Prior to highlighting, de-highlight buttons unless
+`hproperty:but-highlight-flag' is set.
 
 If REGEXP-MATCH is non-nil, only buttons matching this argument are
 highlighted (all others are unhighlighted).
@@ -286,7 +287,7 @@ with that PROPERTY and VALUE."
   "Return a list of all buttons in the current buffer between START and END.
 If optional PROPERTY and non-nil VALUE are given, return only matching
 buttons.  No ordering is specified; the caller must sort the buttons
-if an order is needed.
+if an order is needed.  (By default, excludes HyWikiWord buttons).
 
 Use `hproperty:but-get-first-in-region' instead if you want only the first
 matching button."
diff --git a/hsys-youtube.el b/hsys-youtube.el
index 78562dad1b0..e51a2720c10 100644
--- a/hsys-youtube.el
+++ b/hsys-youtube.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    10-Jul-22 at 18:10:56
-;; Last-Mod:     19-Jan-24 at 12:11:07 by Mats Lidell
+;; Last-Mod:      7-Jul-26 at 18:03:16 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -59,9 +59,12 @@ where the time string is inserted.  The time string must be a
 colon-separated hours:minutes:seconds string, e.g. 1:2:44 (1 hour, two
 minutes, 45 seconds), where the hours and minutes are optional.")
 
-(defvar hsys-youtube-end-format 
"https://www.youtube.com/embed/%s?autoplay=1&start=%s&end=%s";
+ ;; Old format that used to work:
+ ;; "https://www.youtube.com/embed/%s?autoplay=1&start=%s&end=%s";
+(defvar hsys-youtube-end-format 
"https://www.youtube.com/watch?v=%s&t=%s&end=%s";
   "Format string used to play a section of a Youtube video.
-This requires use of the `embed' api.
+This requires use of the `embed' api (but YouTube has since disallowed
+this in urls, so stop end times no longer work).
 
 The first %s is where the video id string is inserted; the second %s is
 where the start time string in seconds is inserted; the third %s is
@@ -247,4 +250,3 @@ START-TIME-STRING format is invalid, return it unchanged."
 
 (provide 'hsys-youtube)
 ;;; hsys-youtube.el ends here
-
diff --git a/hui-mouse.el b/hui-mouse.el
index bc6600724a9..5355a76d80f 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    04-Feb-89
-;; Last-Mod:      4-Apr-26 at 23:19:29 by Bob Weiner
+;; Last-Mod:      7-Jul-26 at 01:04:32 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -352,8 +352,8 @@ The button's attributes are stored in the symbol, 
`hbut:current'.")
     ;; character of the opening or closing tag.  Ignore delimiters in
     ;; the middle of a Hyperbole button.
     ((and (if (setq hkey-at-hbut (hbut:at-p))
-             (or (eq (point) (hattr:get 'hbut:current 'lbl-end))
-                 (eq (point) (hattr:get 'hbut:current 'name-end)))
+             (or (>= (point) (or (hattr:get 'hbut:current 'lbl-end) (1+ 
(point))))
+                 (>= (point) (or (hattr:get 'hbut:current 'name-end) (1+ 
(point)))))
            t)
          (hui-select-at-delimited-thing-p))
      . ((hui-select-thing) . (progn (hui-select-thing)
@@ -366,8 +366,8 @@ The button's attributes are stored in the symbol, 
`hbut:current'.")
     ;; removed someday.  Ignore delimiters in the middle of a
     ;; Hyperbole button.
     ((and (if hkey-at-hbut
-             (or (eq (point) (hattr:get 'hbut:current 'lbl-end))
-                 (eq (point) (hattr:get 'hbut:current 'name-end)))
+             (or (>= (point) (or (hattr:get 'hbut:current 'lbl-end) (1+ 
(point))))
+                 (>= (point) (or (hattr:get 'hbut:current 'name-end) (1+ 
(point)))))
            t)
          (hui-select-at-delimited-sexp-p))
      . ((hui-select-mark-delimited-sexp)
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index ed4709706cf..3fd5bcf3c47 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:      6-Jul-26 at 22:32:48 by Bob Weiner
+@c Last-Mod:      7-Jul-26 at 18:05:08 by Bob Weiner
 
 @c %**start of header (This is for running Texinfo on a region.)
 @setfilename hyperbole.info
@@ -30,7 +30,7 @@
 @set txicodequoteundirected
 @set txicodequotebacktick
 
-@set UPDATED July 6, 2026
+@set UPDATED July 7, 2026
 @set UPDATED-MONTH July 2026
 @set EDITION 9.0.2pre
 @set VERSION 9.0.2pre
@@ -171,7 +171,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 9.0.2pre
-Printed July 6, 2026.
+Printed July 7, 2026.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -213,7 +213,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 @example
 Edition 9.0.2pre
-July 6, 2026 @c AUTO-REPLACE-ON-SAVE
+July 7, 2026 @c AUTO-REPLACE-ON-SAVE
 
 
   Published by the Free Software Foundation, Inc.
@@ -623,12 +623,15 @@ archives, the World-Wide Web and much more.
 @cindex Hyperbole demo
 @cindex demo file
 @cindex tutorial
+@cindex videos
+@cindex articles
 This is a reference manual with extensive details about Hyperbole use.
 If you prefer a simpler, more interactive introduction to Hyperbole,
 the @file{../FAST-DEMO} file included in the Hyperbole distribution
 demonstrates many of Hyperbole's standard facilities without the need
-to read through this reference manual.  The @file{../FAST-DEMO} is a good
-way to rapidly understand some of what Hyperbole can do for you.  Once
+to read through this reference manual.  The @file{../FAST-DEMO} is a
+good way to rapidly understand some of what Hyperbole can do for you.
+It includes many links to videos and articles about Hyperbole.  Once
 Hyperbole is installed, (@pxref{Setup}), you can access the
 @file{../FAST-DEMO} with the key sequence @bkbd{C-h h d d}.
 
@@ -4749,12 +4752,9 @@ minor mode, @code{hywiki-mode}, is enabled.  The 
@code{hywiki-mode}
 variable is always in one of three states:
 
 @enumerate
-@item @samp{:pages}
-HyWikiWords are active only with pages within @code{hywiki-directory}.
-@item @samp{:all}
-HyWikiWords are active within all text and programming buffers
-@item @samp{nil}
-the mode is disabled, HyWikiWords are disabled.
+@item @samp{:pages} - HyWikiWords are active only with pages within 
@code{hywiki-directory}.
+@item @samp{:all}   - HyWikiWords are active within all text and programming 
buffers
+@item @samp{nil}    - the mode is disabled, HyWikiWords are disabled.
 @end enumerate
 
 @kindex C-h h h m
@@ -4777,7 +4777,7 @@ In summary, to enable @code{hywiki-mode} globally for the 
current
 Emacs session, interactively use @bkbd{C-h h h m a}; programmatically,
 use @code{(hywiki-mode :all)}.  To enable it globally for all future
 Emacs sessions, add this line to your Emacs initialization file:
-@code{(setq hywiki-default-mode :all)}.
+@code{(customize-save-variable 'hywiki-default-mode :all)}.
 
 @cindex HyWiki programming modes
 @vindex hywiki-highlight-all-in-prog-modes
@@ -8054,7 +8054,12 @@ optional DOC string.
 
 When the Action Key is pressed in a buffer between the start and end
 delimiters and the text in-between matches to TEXT-REGEXP, then the
-button is activated and does one of four things with LINK-EXPR:
+button is activated.  To ensure TEXT-REGEXP matches to the full text
+and not just a part, start the REGEXP with "\\`" and end it with
+"\\'", to match to the start and end of string.
+
+@noindent
+When activated, the button does one of four things with LINK-EXPR:
 
 @enumerate
 @item executes it as a brace-delimited key series;

Reply via email to