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)