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;