diff --git a/ChangeLog b/ChangeLog
index e6e16939..ab62ebb4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
2026-10-30 Mats Lidell [We work on Hyperbole as a gift to the Emacs community and request
you send us a thank you or a testimonial describing your usage if you
-like Hyperbole to rsw@gnu.org].
+g" \
+ sed -i -e "s+^\[TOC\]++g" \
-e "s+[ \t]*\[man/use-package\](man/use-package)+cat man/use-package+e" README.in.html
- pandoc --from=gfm-tex_math_dollars --to=html+gfm_auto_identifiers -o README.md.html README.in.html
+ pandoc --standalone --embed-resources \
+ -V pagetitle="README.md" \
+ --from=gfm-tex_math_dollars --to=html+gfm_auto_identifiers \
+ --css=man/copy-btn.css --include-after-body=man/copy-btn.html \
+ -o README.md.html README.in.html
rm README.in.html
# website maintenance: "https://www.gnu.org/software/hyperbole/"
diff --git a/README.md.html b/README.md.html
index 285f4a23..63ab7e8f 100644
--- a/README.md.html
+++ b/README.md.html
@@ -1,12 +1,74 @@
-+g" -e "s+\`\`\`+GNU
+
+
+
+
+
+
+
GNU
Hyperbole 9.3.2 - The Everyday Hypertextual Information Manager

Hyperbole has many features you can explore interactively or by reading sections of the reference manual:
@@ -66,43 +128,33 @@Implicit
+ Hyperbole
+ Hyperbole
+ A
+ My
+ What
+ John
+ Daily
+ Daily
ways GNU Hyperbole helps me stay in flow and reduces cognitive
load Doing
-a Research Project and using GNU Hyperbole's Integrated
+ Doing
+a Research Project and using GNU Hyperbole's Integrated
Features Hyperbole includes easy-to-use, powerful hypertextual button types
-without the need to learn a markup language. Hyperbole's button types
+without the need to learn a markup language. Hyperbole's button types
are written in Lisp and can be wholly independent of the web, i.e. web
links are one type of Hyperbole link, not fundamental to its link
architecture. However, Hyperbole is a great assistant when editing HTML
@@ -143,7 +195,7 @@ Hyperbole can dramatically increase your productivity and greatly
-reduce the number of keyboard/mouse keys you'll need to work
+reduce the number of keyboard/mouse keys you'll need to work
efficiently. In short, Hyperbole lets you: Build outlines with multi-level numbered outline nodes, e.g.
@@ -174,13 +226,12 @@ The common thread in all these features is making retrieval,
-management and display of information fast and easy. That is Hyperbole's
+management and display of information fast and easy. That is Hyperbole's
purpose. It may be broad but it works amazingly well. If it is textual
information, Hyperbole can work with it. In contrast to Org mode,
Hyperbole works across all Emacs modes and speeds your work by turning
all kinds of references into clickable hyperlinks and allowing you to
-create new hyperlinks by dragging between two windows. The Hyperbole wiki page
+create new hyperlinks by dragging between two windows. The Hyperbole wiki page
explains the many ways it differs from and is complementary to Org mode.
Hyperbole is designed to work with Org mode, so use them both across
your tasks. Hyperbole works well on GNU Emacs 28 or above. It is designed and
written by Bob Weiner. It is maintained by him and Mats Lidell. Its main
-distribution site is: https://www.gnu.org/software/hyperbole/.
+distribution site is: https://www.gnu.org/software/hyperbole/.
If any term in here is new or unfamiliar to you, you can look it up in
the Hyperbole Glossary. Hyperbole is available for download and
@@ -209,38 +259,35 @@ Once you have Emacs set up at your site, GNU Hyperbole may be
installed by using the Emacs Package Manager. If you are not familiar
-with it, see the Packages section of the GNU Emacs Manual, Emacs
+with it, see the Packages section of the GNU Emacs Manual, Emacs
Packages. To download and install the Hyperbole package, you should add the
following use-package expression into your personal Emacs initialization
-file, see Emacs
+file, see Emacs
Init File for init file details: Now save the init file and restart Emacs. Hyperbole will be
downloaded and compiled for use with your version of Emacs; give it a
minute or two. You may see a few compilation warnings but these can be
-safely ignored and have no impact on Hyperbole's performance. Once Hyperbole has been installed for use at your site and loaded
into your Emacs session, it is ready for use. You will see a Hyperbole
-menu on your menubar and 'Hypb' in the minor-mode section of your
+menu on your menubar and 'Hypb' in the minor-mode section of your
modeline. {C-h h} will display a Hyperbole menu in the minibuffer for
quick keyboard-based selection. You can invoke Hyperbole commands in one of three ways: use the Hyperbole menu on your menubar; type {C-h h} or {M-x hyperbole RET} to bring up the Hyperbole main
menu in the minibuffer window, for fast keyboard or mouse-based
-selection; select an item from this menu by typing the item's first
+selection; select an item from this menu by typing the item's first
letter; use {q} to quit from the menu. use a specific Hyperbole command such as an Action Key click {M-RET}
on a pathname to display the associated file or directory. Use {C-h h d d} for an interactive demonstration of standard
Hyperbole button capabilities. {C-h h k e} offers an interactive demonstration of the Koutliner,
-Hyperbole's multi-level autonumbered hypertextual outliner. To try out HyControl, Hyperbole's interactive frame and window
+Hyperbole's multi-level autonumbered hypertextual outliner. To try out HyControl, Hyperbole's interactive frame and window
control system, use {C-h h s w} for window control or {C-h h s f} for
frame control. {t} switches between window and frame control once in one
-of them. Hyperbole also binds {C-c } for quick access to HyControl's
-window control menu if it was not already bound prior to Hyperbole's
-initialization. A long video demonstrating many of HyControl's features
-is available at https://youtu.be/M3-aMh1ccJk. The above are the best interactive ways to learn about Hyperbole.
Hyperbole also includes the Hyperbole Manual, a full reference manual,
-not a simple introduction. It is included in the "man/" subdirectory of
+not a simple introduction. It is included in the "man/" subdirectory of
the Hyperbole package directory in four forms: hyperbole.info - online Info browser
-version hyperbole.html - web version hyperbole.pdf - printable version hyperbole.texi - source version The Hyperbole package installation places the Info version of this
manual where needed and adds an entry for Hyperbole into the Info
directory under the Emacs category. {C-h h d i} will let you browse the
manual. For web browsing, point your browser at
-"${hyperb:dir}/man/hyperbole.html", wherever the Hyperbole package
+"${hyperb:dir}/man/hyperbole.html", wherever the Hyperbole package
directory is on your system; often this is:
-"~/.emacs.d/elpa/hyperbole-${hyperb:version}/". hyperbole-users@gnu.org
- User list for GNU Hyperbole bug-hyperbole@gnu.org -
List for bug reporting Alternatively, you may download a tar.gz source archive from
either: which will find the closest mirror of the GNU ftp site and show it to
you. If you want to follow along with Hyperbole development and maintain a
-copy/clone of the current version-controlled git tree, use a command listed
+copy/clone of the current version-controlled git tree, use a command listed
here to clone the Hyperbole project tree. Hyperbole consists of six parts: Buttons
-and Smart KeysSummary
delimited series of keys you see in this document and it will execute
them on-the-fly (easy keyboard-macro style buttons in any text).
@@ -156,7 +208,7 @@
Summary
commits. A single key or mouse button automatically does the right thing
in dozens of contexts; just press and go.
+
Summary
across major web search engines with the touch of a few keys.Summary
Web URLs, Info manuals, ftp archives, etc.Upgrading
Installation
-;;; use-package --- Reference configuration -*- mode: emacs-lisp; lexical-binding: t; -*-
+
-
+ ;; (kotl-mode:action-key-default-function 'kotl-mode:show-or-hide-tree)
+ );;; use-package --- Reference configuration -*- mode: emacs-lisp; lexical-binding: t; -*-
-;; NOTE: If you use Emacs 28 or earlier, you'll need to install the
-;; `use-package' Emacs package before using this configuration file
+;; NOTE: If you use Emacs 28 or earlier, you'll need to install the
+;; `use-package' Emacs package before using this configuration file
;; since it is not built-in to your Emacs.
;; -----------------------------------------------------------------
;; Default values herein represent the settings Hyperbole will default
-;; to if not set within this `use-package' configuration.
+;; to if not set within this `use-package' configuration.
(use-package hyperbole
;; Install the package from a package archive if not already installed
:ensure t
- ;; Hyperbole binds {C-h h} in the `global-map' to display its
+ ;; Hyperbole binds {C-h h} in the `global-map' to display its
;; minibuffer command menus. If you prefer a different binding,
;; you can restore the standard Emacs binding of {C-h h} and set
;; your preferred Hyperbole menu binding: example {C-c h} by
;; uncommenting the next three lines:
;; :config
- ;; (global-set-key (kbd "C-h h") #'view-hello-file)
- ;; (global-set-key (kbd "C-c h") #'hyperbole)
+ ;; (global-set-key (kbd "C-h h") #'view-hello-file)
+ ;; (global-set-key (kbd "C-c h") #'hyperbole)
:init
;; Enable or disable the global Hyperbole minor mode on startup:
@@ -267,22 +314,22 @@ Installation
;; your Hyperbole buttons with double square brackets and get Org
;; link highlighting, e.g. [[bug#8291]].
;;
- ;; (push #'hyperbole-activate-button org-open-link-functions)
+ ;; (push #'hyperbole-activate-button org-open-link-functions)
:bind
(:map hyperbole-mode-map
- ;; Bind Smart Keys: {M-RET} executes `action-key' and {C-u M-RET}
- ;; executes `assist-key' via this next binding
- ("M-RET" . hkey-either))
+ ;; Bind Smart Keys: {M-RET} executes `action-key' and {C-u M-RET}
+ ;; executes `assist-key' via this next binding
+ ("M-RET" . hkey-either))
:custom
;; Action and Assist Key Customizations
;; Customize how Hyperbole and Org mode share the M-RET key:
- ;; t - With `hyperbole-mode' enabled, Hyperbole controls the
+ ;; t - With `hyperbole-mode' enabled, Hyperbole controls the
;; key.
;;
- ;; 'buttons - With `hyperbole-mode enabled', Hyperbole controls the
+ ;; 'buttons - With `hyperbole-mode enabled', Hyperbole controls the
;; key only when on a button or link; otherwise, Org
;; controls it. (default)
;;
@@ -291,76 +338,76 @@ Installation
;; HyRolo Customizations
- ;; Uncomment and set `hyrolo-file-list' to a list of files,
+ ;; Uncomment and set `hyrolo-file-list' to a list of files,
;; directories and file wildcard expressions you want to find notes,
;; contacts or any hierarchical records in. Directories are
;; searched recursively and filtered to only Org, Markdown, Koutline
;; and Emacs outline files. The first entry is where HyRolo adds
- ;; new records. (default = '("~/.rolo.org"))
+ ;; new records. (default = '("~/.rolo.org"))
;;
- ;; (hyrolo-file-list '("~/.rolo.org" "~/org/" "~/org-roam/" "~/Documents/notes/"))
+ ;; (hyrolo-file-list '("~/.rolo.org" "~/org/" "~/org-roam/" "~/Documents/notes/"))
;; HyWiki Customizations
- ;; Uncomment and set `hywiki-directory' to the directory to store
- ;; all HyWiki pages in (default = "~/hywiki/").
+ ;; Uncomment and set `hywiki-directory' to the directory to store
+ ;; all HyWiki pages in (default = "~/hywiki/").
;;
- ;; (hywiki-directory "~/hywiki/")
+ ;; (hywiki-directory "~/hywiki/")
;; If using these settings:
;; (hywiki-mode :all)
;; (hsys-org-enable-smart-keys t)
;;
- ;; then when Hyperbole's Action Key, {M-RET}, is pressed on any
+ ;; then when Hyperbole's Action Key, {M-RET}, is pressed on any
;; potential WikiWord, e.g. any capitalized word, in any text or
;; programming buffer comment, it will display a page file of notes
- ;; associated with that WikiWord, creating it if it doesn't exist.
+ ;; associated with that WikiWord, creating it if it doesn't exist.
;;
;; If there are major-modes where you want to disable this
;; capability, uncomment the following line and add the mode names
;; inside the empty list:
- ;; (hywiki-word-create-exclude-action-key-modes '())
+ ;; (hywiki-word-create-exclude-action-key-modes '())
;; Koutliner Customizations
;; Inline image display can be toggled on/off with {C-c C-x C-v} but
;; if you want inline images to display all the time in Koutline
;; buffers, uncomment the next sexpression:
- ;; (add-hook 'kotl-mode-hook 'iimage-mode)
+ ;; (add-hook 'kotl-mode-hook 'iimage-mode)
- ;; NOTE: As of Hyperbole version 9.3.0, the Koutliner uses `C-c ;'
- ;; as the prefix for mode-specific Installation
;; exc-hl-bol - Everywhere except at the start of a headline
(kotl-mode:emulate-tab nil)
- ;; Configure whether `kotl-mode:indent-line' uses tabs and spaces or
+ ;; Configure whether `kotl-mode:indent-line' uses tabs and spaces or
;; spaces only.
;; Potential values are:
- ;; t - may insert literal Installation
;; Today, this does nothing.
;;
;; Uncomment the next expression if you prefer the prior behavior
- ;; but note that if `hywiki-mode' is set to `:all' when point is on
+ ;; but note that if `hywiki-mode' is set to `:all' when point is on
;; a capitalized word, an Action Key press will create a new HyWiki
;; page, as that has higher priority than this setting.
;;
- ;; (kotl-mode:action-key-default-function 'kotl-mode:show-or-hide-tree)
- )
-Invocation



Hyperbole Manual
Mailing Lists
-
Ftp and Git Repository
@@ -471,29 +506,24 @@
Ftp and Git Repository
for use (which will also give you the source code), open a web page
to:
-
-
Hyperbole Components
Hyperbole offers a set of hyperbutton types which supply core hypertext and other behaviors. Buttons may be added to documents (explicit buttons) with a simple drag between windows, no markup @@ -511,42 +541,38 @@
Hyperbole includes two special `Smart Keys', the Action Key and the +
Hyperbole includes two special `Smart Keys', the Action Key and the Assist Key, that perform an extensive array of context-sensitive operations across emacs usage, including activating and showing help for Hyperbole buttons. In many popular Emacs modes, they allow you to perform common, sometimes complex operations without having to use a different key for each operation. Just press a Smart Key and the right thing happens;
Hyperbole's markup-free, personal wiki system with automatic WikiWord +
Hyperbole's markup-free, personal wiki system with automatic WikiWord highlighting and hyperlinking. It uses Org mode for note taking and adds automatic hyperlinking and highlighting of WikiWord references within wiki pages and can be set so WikiWord links appear in all text and programming files, WikiWords can also link to all different types of Emacs objects, if desired.
The Koutliner is an advanced outliner with multi-level autonumbering (alphanumeric or legal-style numbering) and permanent ids attached to each outline node for use as hypertext link anchors, per node properties and flexible view specifications that can be embedded within links or used interactively;
HyRolo is a fast, powerful, hierarchical record full-text search and edit interface with expand/collapse capabilities over search results for quick views. It can be used for contact or note management. It is easy to learn to use since it introduces only a few new mechanisms and has a menu interface, which may be operated from the keyboard or the mouse.
-
HyControl is the fastest, easiest-to-use window and frame (screen) control available for GNU Emacs. With just a few keystrokes, you can -shift from increasing a window's height by 5 lines to moving a frame by +shift from increasing a window's height by 5 lines to moving a frame by 220 pixels or immediately moving it to a screen corner. Text in each window or frame may be enlarged or shrunk (zoomed) for easy viewing, plus many other features;
@@ -555,8 +581,7 @@We find Hyperbole's parts are more powerful as one package, i.e. the -sum is greater than the parts, so we don't offer them separately. +
We find Hyperbole's parts are more powerful as one package, i.e. the +sum is greater than the parts, so we don't offer them separately. Hyperbole is free software, however, so you may modify it as you see fit.
Explicit Buttons created by Hyperbole, accessible from within a single document;
Global Buttons created by Hyperbole, accessible anywhere -within a user's network of documents;
Implicit Buttons buttons created and managed by other programs or embedded within the structure of a document, accessible from within a single document. Hyperbole recognizes implicit buttons by @@ -596,7 +621,7 @@
Some of Hyperbole's most important features include:
+Some of Hyperbole's most important features include:
Buttons may link to information or may execute commands, such as computing a complex value or communicating with external @@ -652,14 +677,13 @@
See the HY-NEWS.org file for a summary of new features in this release.
See #Installation for installation and invocation instructions.
-See the HY-COPY and COPYING files for license information.
+See the HY-COPY and COPYING files for license information.
See the MANIFEST file for summaries of Hyperbole distribution files.
See FAST-DEMO for a demonstration of Hyperbole implicit button capabilities. This is the best way to initially interactively learn about Hyperbole after installing it.
-Various forms of the Hyperbole are below the "man/" subdirectory.
+Various forms of the Hyperbole are below the "man/" subdirectory.
MANIFEST summarizes most of the files in the distribution.
@@ -669,19 +693,18 @@Naming conventions:
All Hyperbole-specific code files begin with an 'h', aside from +
All Hyperbole-specific code files begin with an 'h', aside from the Koutliner files which are in the kotl/ subdirectory and begin with a -'k'.
Hyperbole user-interface files begin with 'hui-' or -'hmouse-'.
Hyperbole user-interface files begin with 'hui-' or +'hmouse-'.
Files that define implicit button types begin with -'hib-'.
Encapsulations of foreign systems begin with 'hsys-'.
Encapsulations of foreign systems begin with 'hsys-'.
Most of the standard Emacs user interface for Hyperbole is located in hui.el. Most of the Hyperbole application -programming interface can be found in hbut.el. hbdata.el encapsulates the button attribute storage +programming interface can be found in hbut.el. hbdata.el encapsulates the button attribute storage implemented by Hyperbole. hmail.el provides a basic abstract interface for integrating mail readers other than Rmail into Hyperbole.
@@ -702,24 +725,24 @@ -- Bob Glickstein
Z-Code Software Corporation
One of the nicest things about Hyperbole is that it's available +
One of the nicest things about Hyperbole is that it's available
everywhere. Org-mode is a mode and its features are only available in
Org files. For instance if you dropped into
-eshell' or ansi-term' and did `ls', you can move point to
-any of the directory's contents, do M-RET (or Shift-Button2) and jump to
-that file. And that's just one example. Note that this means that all
+eshell' or ansi-term' and did `ls', you can move point to
+any of the directory's contents, do M-RET (or Shift-Button2) and jump to
+that file. And that's just one example. Note that this means that all
Hyperbole functionality is available in Org files as well. To me, except
for the Hyperbole outliner, that means complementary not conflicting.
-It's Hyperbole and org-mode, not Hyperbole vs. org-mode.
Additionally, off the bat, I found it very well documented and for me -that's a proxy for the quality of a package. The maintainers are quite -responsive. There's plenty more functionality that I haven't uncovered +that's a proxy for the quality of a package. The maintainers are quite +responsive. There's plenty more functionality that I haven't uncovered yet but due to the ease of installation and the quality of the documentation, digging into it is actually fun.
-- Aditya Siram
GNU Hyperbole is a game-changer for your mental model of information -management and personal productivity. Even if you don't use it you +management and personal productivity. Even if you don't use it you should study one or two of the modules and compare them to how you solve the same problem with your preferred tool of choice. It is subtle, and subtle is one of the hardest and post powerful things to reside in your @@ -727,9 +750,9 @@
-- Grant Rettke__
Org2Blog Maintainer
For me, Emacs isn't Emacs without Hyperbole. I have depended on +
For me, Emacs isn't Emacs without Hyperbole. I have depended on Hyperbole daily since 1992, when I first started using it to manage my -development environment. It didn't take long before I could summon +development environment. It didn't take long before I could summon almost any information I needed directly from within my editing environment with an implicit button. Since I almost never have to slow down to look for things--one context-dependent button usually produces @@ -740,22 +763,22 @@
My Hyperbole button file is my start page in Emacs. It's a quickly +
My Hyperbole button file is my start page in Emacs. It's a quickly searchable index with links to countless resources. We also have a library of implicit buttons that enable rapid navigation from references in our code to our issue tracking system, so clicking a reference like Client6502 opens the relevant conversation. Hyperbole provides a really useful set of power tools. If Emacs is your preferred productivity -environment, it's definitely worth getting familiar with it.
+environment, it's definitely worth getting familiar with it. -- Chris Nuzum
Co-founder, Traction Softwarea, Inc.
I've found Hyperbole (in conjunction with XEmacs) to be very useful +
I've found Hyperbole (in conjunction with XEmacs) to be very useful for signal processing algorithm development.
For me, it has almost completely obsoleted the engineering notebook: I keep a set of files with ideas, algorithms, and results, linked -together and to the implementation in C++ files. Using XEmacs' support -for embedding graphics, I've written a mode that accepts image tags +together and to the implementation in C++ files. Using XEmacs' support +for embedding graphics, I've written a mode that accepts image tags (formatted like HTML), and reads in GIF files to display plots. I have another program that converts the file to HTML (not perfect, but adequate), so I can put any aspect of development on our internal web @@ -774,13 +797,13 @@
Explicit buttons as part of comments made about a structured document. Each button jumps to the document section referred to by the comment. This is very, very useful.
The Hyperbole Koutliner, which I find a very useful tool. I've +
The Hyperbole Koutliner, which I find a very useful tool. I've implemented Emacspeak extensions to support it.
-- TV Raman
Google Inc.I've been a grateful Hyperbole user for a few years now. Hyperbole's +
I've been a grateful Hyperbole user for a few years now. Hyperbole's flexibility and ease of use is a marvel.
Mainly, I write easy little implicit button types (and corresponding action types) to make my life easier. For example, I have an implicit @@ -789,8 +812,8 @@
Other than that, I keep a global button file with 30 or so explicit @@ -819,7 +842,7 @@
Alternative directory organizer: The hierarchical nature of the Unix file system sometimes makes it difficult to find things quickly and easily using directory navigational tools such as dired. Hyperbole -enables me to create various "profile" views of my directory tree, with +enables me to create various "profile" views of my directory tree, with entries in these views referring to files anywhere in the hierarchy.
Organizing and viewing online documentation: using Hyperbole @@ -832,13 +855,13 @@
Hyperbole is the first hyper-link system I've run across that is +
Hyperbole is the first hyper-link system I've run across that is actually part of the environment I use regularly, namely Emacs. The complete flexibility of the links is both impressive and expected -- the idea of making the link itself programmable is clever, and given that one assumes the full power of Emacs. Being able to send email with buttons in it is a very powerful capability. Using ange-ftp mode, one -can make file references "across the world" as easily as normal file +can make file references "across the world" as easily as normal file references.
-- Mark Eichin
Cygnus Support
@@ -850,7 +873,7 @@ The Hyperbole system provides a nice interface to exploring corners -of Unix that I didn't know existed before.
+of Unix that I didn't know existed before. -- Craig Smith
Hyperbole was originally designed to aid in research aimed at @@ -869,3 +892,107 @@
-- The End --
+ + + + + diff --git a/man/Lucide-LICENSE b/man/Lucide-LICENSE new file mode 100644 index 00000000..60f903d9 --- /dev/null +++ b/man/Lucide-LICENSE @@ -0,0 +1,44 @@ +ISC License + +Copyright (c) 2026 Lucide Icons and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + +The following Lucide icons are derived from the Feather project: + +airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + +The MIT License (MIT) (for the icons listed above) + +Copyright (c) 2013-present Cole Bemis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +L diff --git a/man/copy-btn.css b/man/copy-btn.css new file mode 100644 index 00000000..517c424a --- /dev/null +++ b/man/copy-btn.css @@ -0,0 +1,56 @@ +/* + * SUMMARY: CSS for copy button + * + * AUTHOR: Mats Lidell + * + * ORIG-DATE: 27-Oct-26 at 17:10:04 + * LAST-MOD: 29-Oct-26 at 23:12:55 by Mats Lidell + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Copyright (C) 2026 Free Software Foundation, Inc. + * See the "HY-COPY" file for license information. + * This file is part of GNU Hyperbole. + */ + +.code-wrapper { + position: relative; + margin: 1em 0; +} + +.code-wrapper > pre { + margin: 0; +} + +.code-wrapper > button { + position: absolute; + top: 0.5em; + right: 0.5em; + display: flex; + align-items: center; + justify-content: center; + padding: 0.3em; + border: 1px solid #aaa; + border-radius: 4px; + background: #f6f8fa; + color: #333; + cursor: pointer; + z-index: 1; +} + +.code-wrapper > button:hover { + background: #e1e4e8; +} + +.code-wrapper > button:focus-visible { + outline: 2px solid #0969da; + outline-offset: 2px; +} + +.code-wrapper > button[data-copied="true"] { + color: #1a7f37; +} + +.code-wrapper > button svg { + display: block; +} diff --git a/man/copy-btn.html b/man/copy-btn.html new file mode 100644 index 00000000..6e93b8cf --- /dev/null +++ b/man/copy-btn.html @@ -0,0 +1,17 @@ + + + diff --git a/man/copy-btn.js b/man/copy-btn.js new file mode 100644 index 00000000..dd5eeacd --- /dev/null +++ b/man/copy-btn.js @@ -0,0 +1,85 @@ +// SUMMARY: Copy Button for use with code examples. +// +// AUTHOR: Mats Lidell +// +// ORIG-DATE: 27-Oct-26 at 17:10:04 +// LAST-MOD: 30-Oct-26 at 00:06:25 by Mats Lidell +// +// SPDX-License-Identifier: GPL-3.0-or-later +// +// Copyright (C) 2026 Free Software Foundation, Inc. +// See the "../HY-COPY" file for license information. +// This file is part of GNU Hyperbole. +// +// The svg icons are Copyright (c) 2026 Lucide Icons and Contributors. +// See "Lucide-LICENSE" for the license information. +// +// Description: +// +// Adds a copy text button to a set of HTML elements that contains +// code. For the ccs that goes with the button see file +// "copy-btn.css" + +const lucideCopy = ` + `; + +const lucideCheck = ` + `; + +function clearButton(button) { + button.innerHTML = lucideCopy; + button.title = "Copy"; + button.setAttribute("aria-label", "Copy"); + button.dataset.copied = "false"; +} + +function checkButton(button) { + button.innerHTML = lucideCheck; + button.title = "Copied"; + button.setAttribute("aria-label", "Copied"); + button.dataset.copied = "true"; +} + +// The query selectors finds these elements for where to add a copy +// button. +// +// README.in.md - ```elisp -> pre.elisp +// +// Hyperbole.texi - @lisp -> pre.lisp-preformatted +// - @lisp > @verbatiminclude -> .example.lisp > pre-verbatim +// +document.querySelectorAll("pre.elisp, pre.lisp-preformatted, .example.lisp > pre.verbatim") + .forEach(pre => { + const div = document.createElement("div"); + div.className = "code-wrapper"; + const btn = document.createElement("button"); + btn.type = "button"; + let resetTimer; + + clearButton(btn); + clearTimeout(resetTimer); + btn.addEventListener("click", async () => { + try { + await navigator.clipboard.writeText(pre.textContent); + checkButton(btn); + clearTimeout(resetTimer); + resetTimer = setTimeout(() => clearButton(btn), 2000); + } catch (e) { + console.error("Copy error:", e); + } + }); + pre.before(div); + div.appendChild(pre); + div.appendChild(btn); + }); diff --git a/man/hyperbole.html b/man/hyperbole.html index b45e0374..21d59925 100644 --- a/man/hyperbole.html +++ b/man/hyperbole.html @@ -1,10 +1,10 @@ - + - + @@ -361,10 +414,8 @@This edition of the GNU Hyperbole Manual is for use with any version @@ -780,17 +829,15 @@
Hyperbole is an efficient, programmable hypertextual information management @@ -887,10 +934,8 @@
Database vendors apply tremendous resources to help solve corporate @@ -928,10 +973,8 @@
If you use Hyperbole, you may join the mailing list @@ -1200,10 +1241,8 @@
Once Hyperbole has been installed for use at your site, loaded into your @@ -1213,16 +1252,14 @@
You can invoke Hyperbole’s commands in one of three ways: @@ -1284,10 +1321,8 @@
Typically, {C-h A} and {C-u C-h A} which show Action and @@ -1778,10 +1801,8 @@
Smart Mouse Key clicks on a window’s modeline offer many powerful browsing @@ -2015,10 +2034,8 @@
Smart Mouse Key drags let you display buffers and windows however you want @@ -2159,18 +2166,16 @@
Explicit buttons are a fundamental building block for creating personal @@ -4331,20 +4308,18 @@
Creating explicit buttons is fun and easy. You can always try them out @@ -4365,16 +4340,14 @@
HyWikiWords link to HyWiki pages by default. But there are many other @@ -5285,10 +5230,8 @@
The HyWiki minibuffer menu at {C-h h h} offers quick access to important HyWiki features. @@ -5852,10 +5789,8 @@
The Kotl/ menu entry on the Hyperbole minibuffer menu provides access to @@ -6579,10 +6508,8 @@
Text editing within the Koutliner works just as it does for other @@ -6757,22 +6678,20 @@
The Koutliner move and copy commands rearrange entire trees. The @@ -7361,10 +7264,8 @@
The Rolo submenu of the Hyperbole menu offers a full set of commands @@ -8273,10 +8152,8 @@
This chapter is for people who wish to customize Hyperbole, to extend @@ -8846,18 +8715,16 @@
Implicit buttons leverage the same action types used by explicit and @@ -9194,16 +9055,14 @@
The simplest way to create a new implicit link type (from which any @@ -9261,10 +9120,8 @@
If you understand Emacs regular expressions (see Syntax of
@@ -9340,10 +9197,8 @@ 12.2.2.2 Impli
Hyperbole must be obtained and setup at your site before you can @@ -10429,15 +10268,13 @@
After installing and configuring Hyperbole, see Invocation.
;;; use-package --- Reference configuration -*- mode: emacs-lisp; lexical-binding: t; -*- ;; NOTE: If you use Emacs 28 or earlier, you'll need to install the @@ -10738,7 +10572,8 @@
+
If you avoid package managers and like to manually install packages, @@ -10824,10 +10655,8 @@
Hyperbole’s default key bindings can be viewed and edited from @@ -11551,10 +11356,8 @@
Hyperbole includes over 660 automated test cases in the test/ @@ -11588,10 +11391,8 @@
This appendix documents Hyperbole’s context-sensitive Smart Key @@ -12215,15 +12014,13 @@
If in ID Edit mode (a package within InfoDock, not included in @@ -12905,10 +12670,8 @@E.2.8 Smart Key
Smart Menus are an older in-buffer menu system that worked on dumb @@ -12999,10 +12758,8 @@
Because of the way helm is written, you may need a modified version of @@ -13191,10 +12938,8 @@
When the Jedi identifier server or the OO-Browser has been loaded and the press is @@ -13570,10 +13295,8 @@E.2.28 Sm
When pressed within a man page apropos buffer or listing: @@ -13913,10 +13616,8 @@E.2.39 Smar
This appendix is included for a number of reasons: @@ -14741,10 +14410,8 @@