[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hyperbole 25ba634 31/50: Add fast window link button cr
From: |
Stefan Monnier |
Subject: |
[elpa] externals/hyperbole 25ba634 31/50: Add fast window link button creation via {M-o w} with Ace Window. |
Date: |
Wed, 17 Mar 2021 18:44:19 -0400 (EDT) |
branch: externals/hyperbole
commit 25ba634072daf1ec71cfafeee1a95f94caacc3b5
Author: Bob Weiner <rsw@gnu.org>
Commit: Bob Weiner <rsw@gnu.org>
Add fast window link button creation via {M-o w} with Ace Window.
- Fast Window Links: The hkey-window-link command bound to {M-o w}
rapidly creates a link button at point in the selected window,
linking to point in the window chosen when prompted.
---
Changes | 16 ++++++++++++++++
DEMO | 29 +++++++++++++++++++----------
HY-NEWS | 39 ++++++++++++++++++++++++++-------------
hmouse-drv.el | 33 +++++++++++++++++++++++----------
hui-select.el | 2 +-
hui.el | 45 ++++++++++++++++++++++++++++-----------------
man/hyperbole.html | 51 ++++++++++++++++++++++++++++++++++++---------------
man/hyperbole.info | Bin 542648 -> 543568 bytes
man/hyperbole.pdf | Bin 1298382 -> 1299129 bytes
man/hyperbole.texi | 41 +++++++++++++++++++++++++++++------------
10 files changed, 178 insertions(+), 78 deletions(-)
diff --git a/Changes b/Changes
index bdfeb19..b7568b5 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,21 @@
2021-02-15 Bob Weiner <rsw@gnu.org>
+* hmouse-drv.el (hkey-window-link, hkey-ace-window-setup): Added Ace Window
'w' command to
+ use hui:link-directly to instantly create a link between the selected
window and one
+ chosen via Ace Window.
+ hui.el (hui:hbut-label): Added optional label PROMPT override.
+ (hui:link-directly): Used PROMPT parameter here.
+ hmouse-drv.el (hmouse-choose-windows): Simplified prompts.
+ hui.el (hui:link-directly): Added optional depress-window and release-window
params so
+ can be called with non-Action Key window pairs. Also, made interactive
with mouse
+ key selection of button and referent windows.
+ man/hyperbole.texi (Keyboard Drags):
+ DEMO (Creation via Ace Window):
+ HY-NEWS: Added {M-o w} command.
+
+* hypb.el (hypb:def-to-buffer): Added for quick def copying and insertion in
another buffer.
+ Can be bound and used in key series.
+
* hbut.el (defil): Fixed improper call of regexp-quote when link-expr was not
a string.
* hib-social.el (git-commit-reference): Added flash of button label
diff --git a/DEMO b/DEMO
index 8515f4a..6a3e9fc 100644
--- a/DEMO
+++ b/DEMO
@@ -1027,15 +1027,16 @@ with the Action Mouse Key or by using the Hyperbole
menus.
*** Creation via Dragging
-The most efficient way to create an explicit button interactively is to use
-the Action Mouse Key to drag from a button source window to a window showing
-its link referent. More specifically, you should split your current Emacs
-frame into two windows: one which contains the point at which you want a
-button to be inserted and another which shows the point to which you want to
-link. Depress the Action Mouse Key at the source point for the button
-(anywhere but on a paired delimiter such as double quotes or parentheses).
-Then drag to the other window and release the Action Mouse Key at the start
-point of the link referent. The process becomes quite simple with a little
+An efficient way to create an explicit button interactively is
+to use the Action Mouse Key to drag from a button source window to a
+window showing its link referent. More specifically, you should split
+your current Emacs frame into two windows: one which contains the
+point at which you want a button to be inserted and another which
+shows the point to which you want to link, the referent. Depress the
+Action Mouse Key at the source point for the button (anywhere but on a
+paired delimiter such as double quotes or parentheses). Then drag to
+the other window and release the Action Mouse Key at the start point
+of the link referent. The process becomes quite simple with a little
practice.
Hyperbole uses the link referent context to determine the type of link
@@ -1044,7 +1045,7 @@ applicable from the context, you will be prompted with a
list of the
types. Simply use the Action Key or the first letter of the link
type to select one of the type names and to finish the link creation.
Hyperbole will then insert explicit button delimiters around the button
-label and will display a message in the minibuffer indicating both the
+label and display a message in the minibuffer indicating both the
button name and its action/link type.
When a link is created, if its path contains a match for any of the variable
@@ -1054,6 +1055,14 @@ the variable with a matching value when the link is
later resolved. This
allows the sharing of links over wide areas, where links contain variables
whose values differ between link creator and link activator.
+*** Creation via Ace Window
+
+For the fastest link button creation, use the Emacs package
+'ace-window' (see "(hyperbole)Keyboard Drags" for setup). Once this
+is configured, then {M-o w <window id>} may be used to quickly create
+an explicit link button in the selected window that links to any other
+window chosen via the Ace Window.
+
*** Creation via Menu
You may instead use the Hyperbole menus to create explicit buttons. First,
diff --git a/HY-NEWS b/HY-NEWS
index 39b9da9..8e41734 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -7,26 +7,29 @@
PROGRAMMING
- - defal: Easy-to-use macro that generates new action button types
- from a type name and a single simple regular expression, allowing
+ - Easy Action Link Button Type Creation: `defal' is a new,
+ easy-to-use macro that generates new action button types from a
+ type name and a single simple regular expression, allowing
non-programmers to create their own implicit action button types
- that execute key series, display URLs or display the contents
- of pathnames. See "(hyperbole)Action Button Link Types".
-
- - defil: For those familiar with regular expressions but not much
- Emacs Lisp, this macro creates more flexible implicit button
- types where the delimiters and text substitution can be specified
- with regular expressions. Actions are limited to executing key
- series, displaying URLs or displaying the contents of a pathname.
- See "(hyperbole)Implicit Button Link Types".
+ that execute key series, display URLs or display the contents of
+ pathnames. See "(hyperbole)Action Button Link Types".
+
+ - Easy Implicit Link Button Type Creation: `defil' is a new,
+ easy-to-use macro for those familiar with regular expressions but
+ not much Emacs Lisp. This macro creates more flexible implicit
+ button types than `defal' where the delimiters and text
+ substitution can be specified with regular expressions. Actions
+ are limited to executing key series, displaying URLs or
+ displaying the contents of a pathname. See "(hyperbole)Implicit
+ Button Link Types".
Elisp programmers should use the existing `defib' macro for full
flexibility in implicit button type creation. See "hibytpes.el"
for examples and "(hyperbole)Programmatic Implicit Button Types"
for documentation.
- - defib and defact type definitions are now interactively debuggable
- via edebug-defun {C-M-x}.
+ - Edebuggable Hyperbole Types: `defib' and `defact' type definitions
+ are now interactively debuggable via edebug-defun {C-M-x}.
- kbd-key:is-p: Added this new predicate to test whether point is within
a brace-delimited key series.
@@ -84,6 +87,16 @@
fixed case, so that the case of a value with both upper and lower
case characters is never changed, for example a value of ${HOME}.
+ ACE WINDOW PACKAGE INTEGRATION - fast window and buffer switching
+
+ - After installing the ace-window package and loading Hyperbole, execute
+ (hkey-ace-window-setup "\M-o") to enable the following capabilities:
+
+ - Fast Window Links: The hkey-window-link command bound to {M-o w}
+ rapidly creates a link button at point in the selected window,
+ linking to point in the window chosen when prompted.
+ See "DEMO#Displaying File and Buffer Items and Moving Buffers".
+
===========================================================================
* V7.1.3
diff --git a/hmouse-drv.el b/hmouse-drv.el
index 131e5c3..869a468 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -370,13 +370,15 @@ magic happen."
;; New ace-window frames (window id = z) inherit the size of the
;; prior selected frame; same as HyWindow.
(setq aw-frame-size '(0 . 0)
- aw-dispatch-alist (delq (assq ?t aw-dispatch-alist)
+ aw-dispatch-alist (delq (assq ?i aw-dispatch-alist)
(delq (assq ?r aw-dispatch-alist)
- (delq (assq ?i aw-dispatch-alist)
aw-dispatch-alist))))
- (push '(?i hkey-drag-item "Hyperbole: Drag Item") aw-dispatch-alist)
- ;; Ace-window includes ?m as the swap windows key, so it is not added here.
- (push '(?r hkey-replace "Hyperbole: Replace Here") aw-dispatch-alist)
+ (delq (assq ?t aw-dispatch-alist)
+ (delq (assq ?w aw-dispatch-alist)
aw-dispatch-alist)))))
+ (push '(?w hkey-window-link "Hyperbole: Window Link") aw-dispatch-alist)
(push '(?t hkey-throw "Hyperbole: Throw") aw-dispatch-alist)
+ (push '(?r hkey-replace "Hyperbole: Replace Here") aw-dispatch-alist)
+ ;; Ace-window includes ?m as the swap windows key, so it is not added here.
+ (push '(?i hkey-drag-item "Hyperbole: Drag Item") aw-dispatch-alist)
(ace-window-display-mode 1))
;;;###autoload
@@ -415,9 +417,6 @@ Works only when running under a window system, not from a
dumb terminal."
After the drag, the selected window remains the same as it was before
the drag.
-Optional prefix arg non-nil means emulate Assist Key rather than the
-Action Key.
-
Works only when running under a window system, not from a dumb terminal."
(let ((start-window (selected-window)))
(unwind-protect
@@ -563,6 +562,20 @@ The selected window does not change."
;; Don't use sit-for here because it can be interrupted early.
(sleep-for display-delay))))))
+;;;###autoload
+(defun hkey-window-link (release-window)
+ "Create a new Hyperbole explicit link button in the selected window, linked
to point in RELEASE-WINDOW, interactively chosen via ace-window.
+The selected window does not change."
+ (interactive
+ (list (let ((mode-line-text (concat " Ace - Hyperbole: " (nth 2 (assq ?w
aw-dispatch-alist)))))
+ (aw-select mode-line-text))))
+ (let ((start-window (selected-window)))
+ (unwind-protect
+ (hui:link-directly start-window release-window)
+ ;; Leave start-window selected
+ (when (window-live-p start-window)
+ (hypb:select-window-frame start-window)))))
+
(defun hkey-insert-region (depress-window release-window throw-region-flag
display-delay)
"Throw any active (highlighted) region from DEPRESS-WINDOW to RELEASE-WINDOW.
If THROW-REGION-FLAG is non-nil, the region is thrown even if not
@@ -694,13 +707,13 @@ hkey-swap and hkey-throw."
until (and (mouse-event-p start-event)
(not (string-match "\\`down-" (symbol-name (car
start-event)))))
finally return (posn-window (event-start start-event))))
- (message "Click on the %s start window...Now on the end window..." func)
+ (message "Now click on the %s end window..." func)
(setq end-window
(cl-loop do (setq end-event (read-event))
until (and (mouse-event-p end-event)
(not (string-match "\\`down-" (symbol-name (car
end-event)))))
finally return (posn-window (event-start end-event))))
- (message "Click on the %s start window...Now on the end window...Done"
func)
+ (message "Done" func)
(with-selected-window start-window
(funcall func end-window))))
diff --git a/hui-select.el b/hui-select.el
index 282527e..019cc40 100644
--- a/hui-select.el
+++ b/hui-select.el
@@ -481,7 +481,7 @@ does not have a `>' terminator character."
;;;###autoload
(defun hui-select-and-copy-thing ()
- "Copy the region surrounding the syntactical unit at point."
+ "Copy the region surrounding the syntactical unit at point to the kill ring."
(interactive)
(let ((bounds (hui-select-boundaries (point))))
(when bounds
diff --git a/hui.el b/hui.el
index 4b265b6..608f2ff 100644
--- a/hui.el
+++ b/hui.el
@@ -553,9 +553,10 @@ BUT defaults to the button whose label point is within."
(let ((total (hbut:report but)))
(when total (hui:help-ebut-highlight))))))
-(defun hui:hbut-label (default-label func-name)
- "Read button label from user using DEFAULT-LABEL and caller's FUNC-NAME."
- (hargs:read "Button label: "
+(defun hui:hbut-label (default-label func-name &optional prompt)
+ "Read button label from user using DEFAULT-LABEL and caller's FUNC-NAME.
+Optional PROMPT string replaces the standard prompt of 'Button label: '."
+ (hargs:read (if (stringp prompt) prompt "Button label: ")
(lambda (lbl)
(and (not (string-equal lbl "")) (<= (length lbl)
(hbut:max-len))))
default-label
@@ -686,16 +687,23 @@ Signal an error when no such button is found in the
current buffer."
(ibut:at-p))
(hui:ibut-message t)))))
-(defun hui:link-directly ()
- "Create a Hyperbole link button at depress point, linked to release point.
+(defun hui:link (release-window)
+ "Given RELEASE-WINDOW, return a list of the selected window (where
depressed) and the RELEASE-WINDOW."
+ (list (selected-window) release-window))
+
+(defun hui:link-directly (&optional depress-window release-window)
+ "Create a Hyperbole link button at Action Key depress point, linked to
release point.
+With optional DEPRESS-WINDOW and RELEASE-WINDOW, use the points from those
instead.
See also documentation for `hui:link-possible-types'."
- (let* ((link-types (hui:link-possible-types))
- (but-window action-key-depress-window)
- (num-types (length link-types))
- (release-window (selected-window))
- (but-modify nil)
- type-and-args lbl-key but-loc but-dir)
- (select-window action-key-depress-window)
+ (interactive (hmouse-choose-windows #'hui:link))
+ (let ((but-window (or depress-window action-key-depress-window))
+ (referent-window (or release-window action-key-release-window
(selected-window)))
+ (but-modify nil)
+ link-types num-types type-and-args lbl-key but-loc but-dir)
+ (select-window referent-window)
+ (setq link-types (hui:link-possible-types)
+ num-types (length link-types))
+ (select-window but-window)
(hui:buf-writable-err (current-buffer) "link-directly")
(if (ebut:at-p)
(setq but-modify t
@@ -711,9 +719,11 @@ See also documentation for `hui:link-possible-types'."
((marker-position (hypb:mark-marker t))
(hui:hbut-label-default
(region-beginning) (region-end))))
- "link-directly"))))
- (select-window release-window)
+ "link-directly"
+ "Create button named: "))))
+ (select-window referent-window)
+ ;; num-types is the number of possible link types to choose among
(cond ((= num-types 0)
(error "(link-directly): No possible link type to create"))
((= num-types 1)
@@ -1135,9 +1145,9 @@ button's source file name when the button data is stored
externally."
(defun hui:link-create (modify but-window lbl-key but-loc but-dir
type-and-args)
"Create or modify a new Hyperbole explicit link button.
If MODIFY is non-nil, modify button at point in BUT-WINDOW,
-otherwise, prompt for button label and creates a button.
-LBL-KEY is internal form of button label. BUT-LOC is file or buffer
-in which to create button. BUT-DIR is directory of BUT-LOC.
+otherwise, prompt for button label and create a button.
+LBL-KEY is internal form of button label. BUT-LOC is the file or buffer
+in which to create button. BUT-DIR is the directory of BUT-LOC.
TYPE-AND-ARGS is the action type for the button followed by any
arguments it requires. Any text properties are removed from string
arguments."
@@ -1151,6 +1161,7 @@ arguments."
(defun hui:link-possible-types ()
"Return list of possible link action types during editing of a Hyperbole
button.
+Point must be on the link referent, i.e. in the Action Key release buffer.
Each list element is a list of the link type and any arguments it requires.
The link types considered are fixed; this function must be changed to alter
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 4353a9e..15b2dd2 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -2141,6 +2141,7 @@ for <code>ace-window</code>, then just ensure it is
initialized by calling
<a name="index-M_002do-m-_003cwindow_002did_003e"></a>
<a name="index-M_002do-r-_003cwindow_002did_003e"></a>
<a name="index-M_002do-t-_003cwindow_002did_003e"></a>
+<a name="index-M_002do-w-_003cwindow_002did_003e"></a>
<a name="index-insert-item"></a>
<a name="index-drag-item"></a>
<a name="index-replace-window-buffer"></a>
@@ -2148,20 +2149,26 @@ for <code>ace-window</code>, then just ensure it is
initialized by calling
<a name="index-throw-item"></a>
<a name="index-buffer-replace"></a>
<a name="index-buffers-swap"></a>
+<a name="index-create-link-button"></a>
+<a name="index-window-link-button"></a>
+<a name="index-link-button"></a>
<a name="index-item-drag"></a>
<a name="index-item-insert"></a>
<a name="index-item-throw"></a>
-<p>After setup, the leftmost character or two of each window’s modeline
will show
-the ID to type to use that window as the drag destination. Then whenever point
-is on an item you want displayed in another window, use <kbd>{M-o i
-<id-of-window-to-display-item-in>}</kbd> and watch the magic happen. If
you
-want to display multiple items in different windows, instead use
-the <kbd>{M-o t <id-of-window-to-display-item-in>}</kbd> key sequence to
-<em>throw</em> the item to the window. To <em>replace</em>
-the selected window’s buffer with that of another window, use
-<kbd>{M-o r <id-of-window-displaying-desired-buffer>}</kbd>. To instead
-<em>swap</em> the selected window’s buffer with that of another window,
-use <kbd>{M-o m <id-of-window-to-swap-with>}</kbd>.
+<p>After setup, the leftmost character or two of each window’s modeline
+will show the ID to type to use that window as the drag destination.
+Then whenever point is on an item you want displayed in another
+window, use <kbd>{M-o i <id-of-window-to-display-item-in>}</kbd> and
watch
+the magic happen. If you want to display multiple items in different
+windows, instead use the <kbd>{M-o t
+<id-of-window-to-display-item-in>}</kbd> key sequence to <em>throw</em>
the
+item to the window. To <em>replace</em> the selected window’s buffer
+with that of another window, use <kbd>{M-o r
+<id-of-window-displaying-desired-buffer>}</kbd>. To instead
<em>swap</em> the
+selected window’s buffer with that of another window, use <kbd>{M-o m
+<id-of-window-to-swap-with>}</kbd>. And finally, to quickly create a
link
+between the selected window and another window, use <kbd>{M-o w
+<id-of-referent-window>}</kbd>.
</p>
<a name="index-throw-region"></a>
<a name="index-region-throw"></a>
@@ -2174,7 +2181,8 @@ must differ from the one in the source window. With no
region active,
this command throws the source buffer to the target window.
</p>
<p>In summary:
-</p><dl compact="compact">
+</p>
+<dl compact="compact">
<dt>M-o i <window></dt>
<dd><p>insert listing item at point into <window>; if not on a listing
item,
trigger an error
@@ -2190,6 +2198,12 @@ trigger an error
</dd>
<dt>M-o t <window></dt>
<dd><p>throw region, listing item at point, or current buffer to <window>
+</p>
+</dd>
+<dt>M-o w <window></dt>
+<dd><p>window link, create a new explicit button in the selected (current)
+window, linking to point in the referent <window>, with the link type
+determined by the referent context via <code>hui:link-directly</code>.
</p></dd>
</dl>
@@ -2334,7 +2348,7 @@ to a new location if you need another copy of it.
<p>For details on how to create, activate, delete or modify explicit
buttons, see <a href="#Utilizing-Explicit-Buttons">Utilizing Explicit
Buttons</a>.
</p>
-<a name="index-link-button"></a>
+<a name="index-link-button-1"></a>
<a name="index-referent"></a>
<p>Each explicit button is assigned an action type that determines the actions
it performs. <em>Link action types</em> connect buttons to particular types
@@ -8921,7 +8935,10 @@ in <a href="#HyControl">HyControl</a>.
<dd><p>Drag Operation: Keyboard emulation of the start and stop of mouse
drags to invoke Smart Key actions. This binding is made only if the
key is not bound prior to loading Hyperbole and if Emacs is run under
-a window system.
+a window system. If the Ace Window package is loaded, then Ace Window
+commands are typically bound to <kbd>{M-o}</kbd> instead. Then <kbd>{M-o
w}</kbd>
+may be used to quickly create an explicit link button in the selected window
that
+links to any other window chosen via the Ace Window prompt.
</p>
<a name="index-key-binding_002c-C_002dh-h"></a>
<a name="index-C_002dh-h-1"></a>
@@ -12382,6 +12399,7 @@ Next: <a href="#Function" accesskey="n"
rel="next">Function</a>, Previous: <a hr
<tr><td></td><td valign="top"><a
href="#index-M_002do-m-_003cwindow_002did_003e"><code>M-o m
<window-id></code></a>:</td><td> </td><td valign="top"><a
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-M_002do-r-_003cwindow_002did_003e"><code>M-o r
<window-id></code></a>:</td><td> </td><td valign="top"><a
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-M_002do-t-_003cwindow_002did_003e"><code>M-o t
<window-id></code></a>:</td><td> </td><td valign="top"><a
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
+<tr><td></td><td valign="top"><a
href="#index-M_002do-w-_003cwindow_002did_003e"><code>M-o w
<window-id></code></a>:</td><td> </td><td valign="top"><a
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-M_002dRET"><code>M-<span
class="key">RET</span></code></a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Bindings">Smart Key Bindings</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-M_002dRET-1"><code>M-<span
class="key">RET</span></code></a>:</td><td> </td><td valign="top"><a
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-M_002dRET-2"><code>M-<span
class="key">RET</span></code></a>:</td><td> </td><td valign="top"><a
href="#Default-Global-Bindings">Default Global Bindings</a></td></tr>
@@ -13470,6 +13488,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-copy-buffer">copy
buffer</a>:</td><td> </td><td valign="top"><a
href="#Displaying-Buffers">Displaying Buffers</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-copy-region">copy
region</a>:</td><td> </td><td valign="top"><a
href="#Smart-Key-Thing-Selection">Smart Key Thing Selection</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-copying">copying</a>:</td><td> </td><td valign="top"><a
href="#Relocating-and-Copying">Relocating and Copying</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-create-link-button">create link
button</a>:</td><td> </td><td valign="top"><a
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-create_002dtime-attribute">create-time
attribute</a>:</td><td> </td><td valign="top"><a
href="#Cell-Attributes">Cell Attributes</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-creating-buttons">creating
buttons</a>:</td><td> </td><td valign="top"><a href="#By-Dragging">By
Dragging</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-creating-links">creating
links</a>:</td><td> </td><td valign="top"><a href="#By-Dragging">By
Dragging</a></td></tr>
@@ -13866,7 +13885,8 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a href="#index-line-and-column">line and
column</a>:</td><td> </td><td valign="top"><a
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-link">link</a>:</td><td> </td><td valign="top"><a
href="#Links">Links</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-link-action-types">link action
types</a>:</td><td> </td><td valign="top"><a href="#Action-Types">Action
Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-link-button">link
button</a>:</td><td> </td><td valign="top"><a
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-link-button">link
button</a>:</td><td> </td><td valign="top"><a
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-link-button-1">link
button</a>:</td><td> </td><td valign="top"><a
href="#Explicit-Buttons">Explicit Buttons</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-link-creation">link
creation</a>:</td><td> </td><td valign="top"><a href="#By-Dragging">By
Dragging</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-link-display">link
display</a>:</td><td> </td><td valign="top"><a
href="#Referent-Display">Referent Display</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-link-to-explicit-button">link to
explicit button</a>:</td><td> </td><td valign="top"><a
href="#Implicit-Button-Types">Implicit Button Types</a></td></tr>
@@ -14362,6 +14382,7 @@ Previous: <a href="#Function" accesskey="p"
rel="prev">Function</a>, Up: <a href
<tr><td></td><td valign="top"><a
href="#index-window-configuration-drag">window configuration
drag</a>:</td><td> </td><td valign="top"><a
href="#Saving-and-Restoring-Window-Configurations">Saving and Restoring Window
Configurations</a></td></tr>
<tr><td></td><td valign="top"><a
href="#index-window-configuration-ring">window configuration
ring</a>:</td><td> </td><td valign="top"><a
href="#Window-Configurations">Window Configurations</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-window-configurations">window
configurations</a>:</td><td> </td><td valign="top"><a
href="#Window-Configurations">Window Configurations</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-window-link-button">window link
button</a>:</td><td> </td><td valign="top"><a
href="#Keyboard-Drags">Keyboard Drags</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-window-system">window
system</a>:</td><td> </td><td valign="top"><a
href="#External-Viewers">External Viewers</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-window_002c-clone">window,
clone</a>:</td><td> </td><td valign="top"><a
href="#Cloning-Windows">Cloning Windows</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-window_002c-clone-1">window,
clone</a>:</td><td> </td><td valign="top"><a
href="#HyControl">HyControl</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index b95a0c0..a06132d 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index f6dfe2a..8535ba8 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 963ee94..d14822e 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -1534,6 +1534,7 @@ for @code{ace-window}, then just ensure it is initialized
by calling
@kindex M-o m <window-id>
@kindex M-o r <window-id>
@kindex M-o t <window-id>
+@kindex M-o w <window-id>
@cindex insert item
@cindex drag item
@cindex replace window buffer
@@ -1541,20 +1542,26 @@ for @code{ace-window}, then just ensure it is
initialized by calling
@cindex throw item
@cindex buffer replace
@cindex buffers swap
+@cindex create link button
+@cindex window link button
+@cindex link button
@cindex item drag
@cindex item insert
@cindex item throw
-After setup, the leftmost character or two of each window's modeline will show
-the ID to type to use that window as the drag destination. Then whenever point
-is on an item you want displayed in another window, use @bkbd{M-o i
-<id-of-window-to-display-item-in>} and watch the magic happen. If you
-want to display multiple items in different windows, instead use
-the @bkbd{M-o t <id-of-window-to-display-item-in>} key sequence to
-@emph{throw} the item to the window. To @emph{replace}
-the selected window's buffer with that of another window, use
-@bkbd{M-o r <id-of-window-displaying-desired-buffer>}. To instead
-@emph{swap} the selected window's buffer with that of another window,
-use @bkbd{M-o m <id-of-window-to-swap-with>}.
+After setup, the leftmost character or two of each window's modeline
+will show the ID to type to use that window as the drag destination.
+Then whenever point is on an item you want displayed in another
+window, use @bkbd{M-o i <id-of-window-to-display-item-in>} and watch
+the magic happen. If you want to display multiple items in different
+windows, instead use the @bkbd{M-o t
+<id-of-window-to-display-item-in>} key sequence to @emph{throw} the
+item to the window. To @emph{replace} the selected window's buffer
+with that of another window, use @bkbd{M-o r
+<id-of-window-displaying-desired-buffer>}. To instead @emph{swap} the
+selected window's buffer with that of another window, use @bkbd{M-o m
+<id-of-window-to-swap-with>}. And finally, to quickly create a link
+between the selected window and another window, use @bkbd{M-o w
+<id-of-referent-window>}.
@cindex throw region
@cindex region throw
@@ -1566,7 +1573,9 @@ t <window-id>} for the same effect. The buffer in the
target window
must differ from the one in the source window. With no region active,
this command throws the source buffer to the target window.
+@noindent
In summary:
+
@table @asis
@item M-o i <window>
insert listing item at point into <window>; if not on a listing item,
@@ -1580,6 +1589,11 @@ replace the selected (current) window's buffer with that
of <window>
@item M-o t <window>
throw region, listing item at point, or current buffer to <window>
+
+@item M-o w <window>
+window link, create a new explicit button in the selected (current)
+window, linking to point in the referent <window>, with the link type
+determined by the referent context via @code{hui:link-directly}.
@end table
@c -------
@@ -7434,7 +7448,10 @@ in @ref{HyControl}.
Drag Operation: Keyboard emulation of the start and stop of mouse
drags to invoke Smart Key actions. This binding is made only if the
key is not bound prior to loading Hyperbole and if Emacs is run under
-a window system.
+a window system. If the Ace Window package is loaded, then Ace Window
+commands are typically bound to @bkbd{M-o} instead. Then @bkbd{M-o w}
+may be used to quickly create an explicit link button in the selected window
that
+links to any other window chosen via the Ace Window prompt.
@cindex key binding, C-h h
@kitem C-h h
- [elpa] externals/hyperbole f38a8dd 28/50: Fix Hyrolo logicial searches; bug fixes; handle file:// URLs better, (continued)
- [elpa] externals/hyperbole f38a8dd 28/50: Fix Hyrolo logicial searches; bug fixes; handle file:// URLs better, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole 3469ea3 29/50: Release defil and defal simpler implicit button type create macros, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole 6a8154a 33/50: Add first unit tests (#46), Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole a44b392 34/50: Add UNIX shell error implicit button support, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole aa6f2f6 38/50: Verify error message from hpath:find is correct (#50), Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole aad4494 40/50: Add smart-magit-tab: Do what TAB or RET does, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole d1dcd54 41/50: * Disable magit-auto-revert-mode-enable-in-buffers in hyrolo buffer, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole c7d62e1 46/50: Make defil handle action type symbols and strings, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole 6b2c073 49/50: Correct test cases failing on mac (#55), Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole 4eef4e9 50/50: Install with-simulated-input if not available (#54), Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole 25ba634 31/50: Add fast window link button creation via {M-o w} with Ace Window.,
Stefan Monnier <=
- [elpa] externals/hyperbole 64579b0 30/50: Fix defil with function improper call to regexp-quote, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole fccc0e5 42/50: Limit Action Button function arg to parameter after function name, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole 1219e12 35/50: Merge branch 'master' of hyperbole, Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole 9ca5b0f 45/50: More tests for ib with labels (#53), Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole cd36bea 39/50: Add more defal and defil tests (#51), Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole aeb5a31 37/50: Add defal defil tests plus some extras (#49), Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole 1c21784 44/50: Add tests for ib with labels (#52), Stefan Monnier, 2021/03/17
- [elpa] externals/hyperbole faa061e 48/50: Magit Action/Assist Mouse Key on header line toggles diff/all sections visibility, Stefan Monnier, 2021/03/17