emacs-elpa-diffs
[Top][All Lists]
Advanced

[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&rsquo;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
-&lt;id-of-window-to-display-item-in&gt;}</kbd> and watch the magic happen.  If 
you
-want to display multiple items in different windows, instead use
-the <kbd>{M-o t &lt;id-of-window-to-display-item-in&gt;}</kbd> key sequence to
-<em>throw</em> the item to the window.  To <em>replace</em>
-the selected window&rsquo;s buffer with that of another window, use
-<kbd>{M-o r &lt;id-of-window-displaying-desired-buffer&gt;}</kbd>.  To instead
-<em>swap</em> the selected window&rsquo;s buffer with that of another window,
-use <kbd>{M-o m &lt;id-of-window-to-swap-with&gt;}</kbd>.
+<p>After setup, the leftmost character or two of each window&rsquo;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 &lt;id-of-window-to-display-item-in&gt;}</kbd> and 
watch
+the magic happen.  If you want to display multiple items in different
+windows, instead use the <kbd>{M-o t
+&lt;id-of-window-to-display-item-in&gt;}</kbd> key sequence to <em>throw</em> 
the
+item to the window.  To <em>replace</em> the selected window&rsquo;s buffer
+with that of another window, use <kbd>{M-o r
+&lt;id-of-window-displaying-desired-buffer&gt;}</kbd>.  To instead 
<em>swap</em> the
+selected window&rsquo;s buffer with that of another window, use <kbd>{M-o m
+&lt;id-of-window-to-swap-with&gt;}</kbd>.  And finally, to quickly create a 
link
+between the selected window and another window, use <kbd>{M-o w
+&lt;id-of-referent-window&gt;}</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 &lt;window&gt;</dt>
 <dd><p>insert listing item at point into &lt;window&gt;; if not on a listing 
item,
 trigger an error
@@ -2190,6 +2198,12 @@ trigger an error
 </dd>
 <dt>M-o t &lt;window&gt;</dt>
 <dd><p>throw region, listing item at point, or current buffer to &lt;window&gt;
+</p>
+</dd>
+<dt>M-o w &lt;window&gt;</dt>
+<dd><p>window link, create a new explicit button in the selected (current)
+window, linking to point in the referent &lt;window&gt;, 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 
&lt;window-id&gt;</code></a>:</td><td>&nbsp;</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 
&lt;window-id&gt;</code></a>:</td><td>&nbsp;</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 
&lt;window-id&gt;</code></a>:</td><td>&nbsp;</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 
&lt;window-id&gt;</code></a>:</td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]