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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/hyperbole 485ecfd13b 7/7: Merge pull request #332 from


From: ELPA Syncer
Subject: [elpa] externals/hyperbole 485ecfd13b 7/7: Merge pull request #332 from rswgnu/rsw
Date: Sun, 21 May 2023 13:58:31 -0400 (EDT)

branch: externals/hyperbole
commit 485ecfd13b32e2bb8caeae1c726f72e2534345a3
Merge: 10a8f7a0d9 a9a9f792dd
Author: Robert Weiner <rsw@gnu.org>
Commit: GitHub <noreply@github.com>

    Merge pull request #332 from rswgnu/rsw
    
    Make Assist Mouse Key drags between windows create implicit link but
---
 ChangeLog         |  18 ++++
 DEMO              |  22 ++++-
 FAST-DEMO         |  13 ++-
 hmouse-drv.el     |  14 ++-
 hmouse-key.el     |   5 +-
 hui-mouse.el      | 259 +++++++++++++++++++++++++++---------------------------
 hui-window.el     |  34 ++++---
 man/hkey-help.txt |  34 +++----
 8 files changed, 231 insertions(+), 168 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d3e108f36e..c041e26855 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
 2023-05-21  Bob Weiner  <rsw@gnu.org>
 
+* hui-mouse.el (hkey-alist): Move . operator to beginning of line for font lock
+    support and add missing . in gnus modes.
+
+* hmouse-drv.el (hkey-mouse-help): Ensure call to hkey-help clears both Action
+    and Assist Key variables, so mouse key help always works.
+
+* man/hkey-help.txt:
+  FAST-DEMO (Implicit Buttons):
+  DEMO (Implicit Buttons, Creation via Dragging, Creation via Ace Window): 
Update
+    to describe implicit button creation via drags.
+  hui-window.el (hmouse-alist): Make change to long-time Assist Mouse Key drag
+    between windows behavior.  Assist Mouse Key drag from an item to another
+    window now displays the item in the release window, just as the Action Key
+    does.  Prior to Hyperbole V9, this would swap window buffers.
+
+* hmouse-key.el (hmouse-update-smart-keys): Ensure reload "hui-window" library
+    so 'hmouse-alist' is redefined.
+
 * hsys-org.el (hsys-org-search-internal-link-p)
                hsys-org-search-radio-target-link-p): Replace 'org-show-context'
     with newer 'org-fold-show-context' and alias this when necessary.
diff --git a/DEMO b/DEMO
index 4d28c70917..3454933741 100644
--- a/DEMO
+++ b/DEMO
@@ -475,6 +475,14 @@ because an implicit button type of 'pathname' is 
recognized and it has
 an associated action type of 'hpath:find' which displays the path in a
 window specified by the setting of 'hpath:display-where').
 
+You can simply type implicit buttons into a buffer or you can use {C-h h i
+c} to create them and give them names.  To create an implicit link button
+from a buffer in one window to another, simply depress the Assist Mouse Key
+where you want the new button (but not within a draggable item), drag to a
+point in another Emacs window and release.  An implicit link button of an
+appropriate type for the release context will be inserted at the original
+depress point.
+
 Hyperbole has many built-in implicit button types, a number of which you
 will see here.  You may also create your own types through the use of
 regular expressions or via Emacs Lisp, see "(hyperbole)Creating Implicit
@@ -1120,7 +1128,8 @@ or to a section within a document; they can calculate 
things or query
 databases or show different views of bodies of information.  Unlike HTML
 hyperbuttons, there is no markup language to learn nor specific document
 format required.  You can create explicit buttons with simple keyboard
-presses or mouse drags from one window to another.
+presses or mouse drags from one window to another (when not depressed on
+a draggable item).
 
 This button prints the <(factorial)> of 5 in the minibuffer when activated
 with the Action Key.  If you instead press the Assist Key, you get help for
@@ -1167,7 +1176,8 @@ with the Action Mouse Key or by using the Hyperbole menus.
 An efficient way to create an explicit button interactively is to use
 the Action Mouse Key to drag from a window where you want the button
 created (button source window) to a window showing its link referent.
-The drag must start outside of an existing Hyperbole button.
+The drag must start outside of a draggable item which includes Hyperbole
+button, dired items and buffer menu items.
 
 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
@@ -1194,13 +1204,19 @@ 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.
 
+If you do the same think with the Assist Mouse Key instead of the Action
+Mouse Key, Hyperbole will create an implicit link button instead of an
+explicit one.  Such buttons are created without names but you can add
+a name preceding such buttons with {C-h h i l} to label them.
+
 *** 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.
+window chosen via the Ace Window.  Use a prefix argument to create an
+implicit link button instead.
 
 *** Creation via Menu
 
diff --git a/FAST-DEMO b/FAST-DEMO
index f5eaf06cf8..e8ff13a966 100644
--- a/FAST-DEMO
+++ b/FAST-DEMO
@@ -78,6 +78,13 @@
   {C-h A} (the A must be capitalized) on any Hyperbole button to see exactly
   what it does prior to activating it.
 
+  You can simply type implicit buttons into a buffer or you can use {C-h h i
+  c} to create them and give them names.  To create an implicit link button
+  from a buffer in one window to another, simply depress the Assist Mouse
+  Key where you want the new button (but not within a draggable item), drag
+  to a point in another Emacs window and release.  An implicit link button
+  of an appropriate type for the release context will be inserted at the
+  original depress point.
 
 * Pathname Implicit Buttons
 
@@ -322,9 +329,9 @@ learn how to create new kinds of implicit button and action 
types, see:
     or show different views of bodies of information.  Unlike HTML
     hyperbuttons, there is no markup language to learn nor specific document
     format required.  You can create explicit buttons with simple keyboard
-    presses or mouse drags from one window to another; See the {C-h h e} menu
-    for explicit button commands.  See "DEMO#Explicit Buttons" or
-    "(hyperbole)Explicit Buttons" for more detail.
+    presses or mouse drags from one window to another (when not on a draggable
+    item).  See the {C-h h e} menu for explicit button commands.  See
+    "DEMO#Explicit Buttons" or "(hyperbole)Explicit Buttons" for more detail.
 
     `Global buttons' are labeled Hyperbole buttons in your personal button
     file, {C-h h b p}.  All global buttons are activated by name with
diff --git a/hmouse-drv.el b/hmouse-drv.el
index 37d7074ef8..bbddd8657b 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    04-Feb-90
-;; Last-Mod:     19-May-23 at 08:03:36 by Bob Weiner
+;; Last-Mod:     21-May-23 at 11:48:16 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1193,11 +1193,23 @@ to the Assist Key.  ARGS is a list of arguments passed 
to
              (cond ((and  action-key-help-flag other-key-released)
                     (setq action-key-help-flag nil)
                     (hmouse-release assisting)
+                    ;; Ensure next call to hkey-help clears both Action
+                    ;; and Assist Key variables.
+                    (setq action-key-depressed-flag nil
+                          action-key-help-flag nil
+                          assist-key-depressed-flag nil
+                          assist-key-help-flag nil)
                     (hmouse-function #'hkey-help assisting args)
                     t)
                    ((and  assist-key-help-flag other-key-released)
                     (setq assist-key-help-flag nil)
                     (hmouse-release assisting)
+                    ;; Ensure next call to hkey-help clears both Action
+                    ;; and Assist Key variables.
+                    (setq action-key-depressed-flag nil
+                          action-key-help-flag nil
+                          assist-key-depressed-flag nil
+                          assist-key-help-flag nil)
                     (hmouse-function #'hkey-assist-help assisting args)
                     t)))
       (when help-shown
diff --git a/hmouse-key.el b/hmouse-key.el
index 11d0103571..470afbb78d 100644
--- a/hmouse-key.el
+++ b/hmouse-key.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    30-May-94 at 00:11:57
-;; Last-Mod:     25-Jul-22 at 23:47:01 by Mats Lidell
+;; Last-Mod:     21-May-23 at 10:17:38 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -131,8 +131,7 @@ Use after any programmatic change is made."
   (makunbound 'hkey-alist)
   (makunbound 'hmouse-alist)
   (let ((load-prefer-newer t))
-    ;; This also reloads "hui-window" where mouse-only actions are defined.
-    (mapc #'load '("hui-mouse" "hibtypes" "hactypes")))
+    (mapc #'load '("hui-mouse" "hui-window" "hibtypes" "hactypes")))
   (message "Hyperbole Smart Key and Smart Mouse Key actions have been 
updated."))
 
 
diff --git a/hui-mouse.el b/hui-mouse.el
index 2932888746..d371bb321e 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    04-Feb-89
-;; Last-Mod:     20-May-23 at 10:52:22 by Bob Weiner
+;; Last-Mod:     21-May-23 at 12:06:23 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -198,46 +198,46 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
   '(
     ;; Company completion mode
     ((and (boundp 'company-active-map)
-         (memq company-active-map (current-minor-mode-maps))) .
-         ((smart-company-to-definition) . (smart-company-help)))
+         (memq company-active-map (current-minor-mode-maps)))
+     . ((smart-company-to-definition) . (smart-company-help)))
     ;;
     ;; Handle any Org mode-specific contexts but give priority to Hyperbole
     ;; buttons prior to cycling Org headlines
     ((and (not (hyperb:stack-frame '(smart-org)))
          (let ((hrule:action #'actype:identity))
-           (smart-org))) .
-     ((smart-org) . (smart-org)))
+           (smart-org)))
+     . ((smart-org) . (smart-org)))
     ;;
     ;; Ivy minibuffer completion mode
-    ((and (boundp 'ivy-mode) ivy-mode (minibuffer-window-active-p 
(selected-window))) .
-     ((ivy-done) . (ivy-dispatching-done)))
+    ((and (boundp 'ivy-mode) ivy-mode (minibuffer-window-active-p 
(selected-window)))
+     . ((ivy-done) . (ivy-dispatching-done)))
     ;;
     ;; Treemacs hierarchical file manager
-    ((eq major-mode 'treemacs-mode) .
-     ((smart-treemacs) . (smart-treemacs)))
+    ((eq major-mode 'treemacs-mode)
+     . ((smart-treemacs) . (smart-treemacs)))
     ;;
     ;; dired-sidebar-mode
-    ((eq major-mode 'dired-sidebar-mode) .
-     ((smart-dired-sidebar) . (smart-dired-sidebar)))
+    ((eq major-mode 'dired-sidebar-mode)
+     . ((smart-dired-sidebar) . (smart-dired-sidebar)))
     ;;
     ;; Handle Emacs push buttons in buffers
-    ((and (fboundp 'button-at) (button-at (point))) .
-     ((smart-push-button nil (mouse-event-p last-command-event))
-      . (smart-push-button-help nil (mouse-event-p last-command-event))))
+    ((and (fboundp 'button-at) (button-at (point)))
+     . ((smart-push-button nil (mouse-event-p last-command-event))
+       . (smart-push-button-help nil (mouse-event-p last-command-event))))
     ;;
     ;; If click in the minibuffer and reading an argument,
     ;; accept argument or give completion help.
     ((and (> (minibuffer-depth) 0)
          (eq (selected-window) (minibuffer-window))
          (not (eq hargs:reading-type 'hmenu))
-         (not (smart-helm-alive-p))) .
-         ((funcall (key-binding (kbd "RET"))) . (smart-completion-help)))
+         (not (smart-helm-alive-p)))
+     . ((funcall (key-binding (kbd "RET"))) . (smart-completion-help)))
     ;;
     ;; If reading a Hyperbole menu item or a Hyperbole completion-based
     ;; argument, allow selection of an item at point.
-    ((and (> (minibuffer-depth) 0) (setq hkey-value (hargs:at-p))) .
-     ((hargs:select-p hkey-value) .
-      (hargs:select-p hkey-value 'assist)))
+    ((and (> (minibuffer-depth) 0) (setq hkey-value (hargs:at-p)))
+     . ((hargs:select-p hkey-value)
+       . (hargs:select-p hkey-value 'assist)))
     ;;
     ;; If reading a Hyperbole menu item and nothing is selected, just return.
     ;; Or if in a helm session with point in the minibuffer, quit the
@@ -245,27 +245,27 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
     ((and (> (minibuffer-depth) 0)
          (eq (selected-window) (minibuffer-window))
          (or (eq hargs:reading-type 'hmenu)
-             (smart-helm-alive-p))) .
-         ((funcall (key-binding (kbd "RET"))) . (funcall (key-binding (kbd 
"RET")))))
+             (smart-helm-alive-p)))
+     . ((funcall (key-binding (kbd "RET"))) . (funcall (key-binding (kbd 
"RET")))))
     ;;
     ;; The ID-edit package supports rapid killing, copying, yanking and
     ;; display management. It is available only as a part of InfoDock.
     ;; It is not included with Hyperbole.
     ((and (boundp 'id-edit-mode) id-edit-mode
          (not buffer-read-only)
-         (not (smart-helm-alive-p))) .
-         ((id-edit-yank) . (id-edit-yank)))
+         (not (smart-helm-alive-p)))
+     . ((id-edit-yank) . (id-edit-yank)))
     ;;
     ;; If in an xref buffer on a listing of matching identifier lines, go to
     ;; the source line referenced by the current entry.
-    ((and (fboundp 'xref--item-at-point) (xref--item-at-point)) .
-     ((xref-goto-xref) . (xref-show-location-at-point)))
+    ((and (fboundp 'xref--item-at-point) (xref--item-at-point))
+     . ((xref-goto-xref) . (xref-show-location-at-point)))
     ;;
     ;; If at the end of a line (eol), invoke the associated Smart Key handler 
EOL handler.
     ((if (eq major-mode 'kotl-mode)
         (and (not (kotl-mode:eobp)) (kotl-mode:eolp t))
-       (smart-eolp)) .
-       ((funcall action-key-eol-function) . (funcall assist-key-eol-function)))
+       (smart-eolp))
+     . ((funcall action-key-eol-function) . (funcall assist-key-eol-function)))
     ;;
     ;; The Smart Menu system is an attractive in-buffer menu system
     ;; that works on any display system that supports Emacs.  It
@@ -274,44 +274,44 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
     ;; Smart Keys.
     ;;
     ;; This selects or gives help for a menu item.
-    ((eq major-mode 'smart-menu-mode) .
-     ((smart-menu-select) . (smart-menu-help)))
+    ((eq major-mode 'smart-menu-mode)
+     . ((smart-menu-select) . (smart-menu-help)))
     ;;
-    ((derived-mode-p 'dired-mode) .
-     ((smart-dired) . (smart-dired-assist)))
+    ((derived-mode-p 'dired-mode)
+     . ((smart-dired) . (smart-dired-assist)))
     ;;
-    ((string-prefix-p "magit-" (symbol-name major-mode)) .
-     ((smart-magit) . (smart-magit-assist)))
+    ((string-prefix-p "magit-" (symbol-name major-mode))
+     . ((smart-magit) . (smart-magit-assist)))
     ;;
     ;; If on a Hyperbole button, perform action or give help.
-    ((hbut:at-p) .
-     ((hui:hbut-act 'hbut:current) . (hui:hbut-help 'hbut:current)))
+    ((hbut:at-p)
+     . ((hui:hbut-act 'hbut:current) . (hui:hbut-help 'hbut:current)))
     ;;
     ;; This potentially displays a Smart Menu.
     ((and (fboundp 'smart-menu-choose-menu)
          (setq hkey-value (and hkey-always-display-menu
                                (smart-menu-choose-menu)))
          (not (and (get-buffer-window *smart-menu-buffer*)
-                   (eq hkey-value *smart-menu-curr*)))) .
-                   ((smart-menu hkey-value) .
-                    (smart-menu hkey-value)))
+                   (eq hkey-value *smart-menu-curr*))))
+     . ((smart-menu hkey-value)
+       . (smart-menu hkey-value)))
     ;;
     ;; View minor mode
-    ((if (boundp 'view-minor-mode) view-minor-mode) .
-     ((cond ((last-line-p)
-            (view-quit))
-           ((pos-visible-in-window-p (point-max))
-            (goto-char (point-max)))
-           (t (scroll-up))) .
-           (scroll-down)))
+    ((if (boundp 'view-minor-mode) view-minor-mode)
+     . ((cond ((last-line-p)
+              (view-quit))
+             ((pos-visible-in-window-p (point-max))
+              (goto-char (point-max)))
+             (t (scroll-up)))
+       . (scroll-down)))
     ;;
     ;; Direct access selection of helm-major-mode completions
     ((setq hkey-value (and (or (eq major-mode 'helm-major-mode)
                               (and (featurep 'helm) (equal helm-action-buffer 
(buffer-name))))
                           (or (eolp)
                               (smart-helm-at-header)
-                              (smart-helm-line-has-action)))) .
-     ((smart-helm) . (smart-helm-assist)))
+                              (smart-helm-line-has-action))))
+     . ((smart-helm) . (smart-helm-assist)))
     ;;
     ;; Support the OO-Browser when available.  It is a separate Emacs
     ;; package not included with Hyperbole.  Within an OO-Browser
@@ -322,8 +322,8 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
         (string-match "-Elements\\'" (buffer-name))
         (and (boundp 'br-feature-tags-file)
              (stringp br-feature-tags-file)
-             (equal br-feature-tags-file buffer-file-name))) .
-             ((smart-element) . (hkey-help)))
+             (equal br-feature-tags-file buffer-file-name)))
+     . ((smart-element) . (hkey-help)))
     ;;
     ;; View major mode
     ((eq major-mode 'view-mode) .
@@ -333,53 +333,55 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
     ;; array/vector, set, function, comment or string that begins or
     ;; ends at point.  For markup pairs, point must be at the first
     ;; character of the opening or closing tag.
-    ((hui-select-at-delimited-thing-p) .
-     ((hui-select-delimited-thing) . (progn (hui-select-delimited-thing)
-                                           (hmouse-kill-region))))
+    ((hui-select-at-delimited-thing-p)
+     . ((hui-select-delimited-thing) . (progn (hui-select-delimited-thing)
+                                             (hmouse-kill-region))))
     ;;
     ;; If the prior test failed and point is at the start or end of an
     ;; sexpression, mark it for editing or kill it (assist key).  This
     ;; only handles the special case where point is just after the
     ;; closing delimiter and not at an end-of-line, so this may be
     ;; removed someday.
-    ((hui-select-at-delimited-sexp-p) .
-     ((hui-select-mark-delimited-sexp) .
-      (progn (hui-select-mark-delimited-sexp) (hmouse-kill-region))))
+    ((hui-select-at-delimited-sexp-p)
+     . ((hui-select-mark-delimited-sexp)
+       . (progn (hui-select-mark-delimited-sexp) (hmouse-kill-region))))
     ;;
-    ((eq major-mode 'occur-mode) .
-     ((occur-mode-goto-occurrence) . (occur-mode-goto-occurrence)))
+    ((eq major-mode 'occur-mode)
+     . ((occur-mode-goto-occurrence) . (occur-mode-goto-occurrence)))
     ;;
-    ((eq major-mode 'moccur-mode) .
-     ((moccur-mode-goto-occurrence) . (moccur-mode-goto-occurrence)))
-    ((eq major-mode 'amoccur-mode) .
-     ((amoccur-mode-goto-occurrence) . (amoccur-mode-goto-occurrence)))
+    ((eq major-mode 'moccur-mode)
+     . ((moccur-mode-goto-occurrence) . (moccur-mode-goto-occurrence)))
+    ((eq major-mode 'amoccur-mode)
+     . ((amoccur-mode-goto-occurrence) . (amoccur-mode-goto-occurrence)))
     ;;
-    ((eq major-mode 'kotl-mode) .
-     ((kotl-mode:action-key) . (kotl-mode:assist-key)))
+    ((eq major-mode 'kotl-mode)
+     . ((kotl-mode:action-key) . (kotl-mode:assist-key)))
     ;;
     ;; Rdb-mode supports direct selection and viewing of in-memory relational
     ;; databases.  Rdb-mode is available as a part of InfoDock.
     ;; It is not included with Hyperbole.
-    ((eq major-mode 'rdb-mode) . ((rdb:action-key) . (rdb:assist-key)))
+    ((eq major-mode 'rdb-mode)
+     . ((rdb:action-key) . (rdb:assist-key)))
     ;;
     ;; Restore window config and hide help buffer when click at buffer end.
     ((if (= (point) (point-max))
-        (string-match "^\\*Help\\|Help\\*$" (buffer-name))) .
-        ((hkey-help-hide) . (hkey-help-hide)))
+        (string-match "^\\*Help\\|Help\\*$" (buffer-name)))
+     . ((hkey-help-hide) . (hkey-help-hide)))
     ;;
     ;; Handle widgets in Custom-mode
-    ((eq major-mode 'Custom-mode) .
-     ((smart-custom) . (smart-custom-assist)))
+    ((eq major-mode 'Custom-mode)
+     . ((smart-custom) . (smart-custom-assist)))
     ;;
     ;; Emacs bookmarks menu (bookmark.el)
-    ((eq major-mode 'bookmark-bmenu-mode) .
-     ((bookmark-jump (bookmark-bmenu-bookmark) 
(hpath:display-buffer-function)) .
-      ;; Below we want the Assist Key to show what the Action Key does.
-      (hkey-help)))
+    ((eq major-mode 'bookmark-bmenu-mode)
+     . ((bookmark-jump (bookmark-bmenu-bookmark) 
(hpath:display-buffer-function))
+       .
+       ;; Below we want the Assist Key to show what the Action Key does.
+       (hkey-help)))
     ;;
     ;; Pages directory listing mode (page-ext.el)
-    ((eq major-mode 'pages-directory-mode) .
-     ((pages-directory-goto) . (pages-directory-goto)))
+    ((eq major-mode 'pages-directory-mode)
+     . ((pages-directory-goto) . (pages-directory-goto)))
     ;;
     ;; Python files - ensure this comes before Imenu for more advanced
     ;; definition lookups
@@ -388,8 +390,8 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
                   (equal (hsys-org-get-value :language) "python"))
              (let ((case-fold-search))
                (string-match "\\`\\([ *]?Pydoc[: ]\\|\\*?Python\\)" 
(buffer-name))))
-         (setq hkey-value (smart-python-at-tag-p))) .
-         ((smart-python hkey-value) . (smart-python hkey-value 'next-tag)))
+         (setq hkey-value (smart-python-at-tag-p)))
+     . ((smart-python hkey-value) . (smart-python hkey-value 'next-tag)))
     ;;
     ;; Imenu listing in GNU Emacs
     ((smart-imenu-item-at-p)
@@ -397,25 +399,25 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
        (imenu-choose-buffer-index)))
     ;;
     ((and (eq major-mode 'c-mode)
-         buffer-file-name (smart-c-at-tag-p)) .
-         ((smart-c) . (smart-c nil 'next-tag)))
+         buffer-file-name (smart-c-at-tag-p))
+     . ((smart-c) . (smart-c nil 'next-tag)))
     ;;
     ((and (eq major-mode 'c++-mode) buffer-file-name
          ;; Don't use smart-c++-at-tag-p here since it will prevent #include
          ;; lines from matching.
-         (smart-c-at-tag-p)) .
-         ((smart-c++) . (smart-c++ nil 'next-tag)))
+         (smart-c-at-tag-p))
+     . ((smart-c++) . (smart-c++ nil 'next-tag)))
     ;;
     ((and (eq major-mode 'asm-mode)
-         buffer-file-name (smart-asm-at-tag-p)) .
-         ((smart-asm) . (smart-asm nil 'next-tag)))
+         buffer-file-name (smart-asm-at-tag-p))
+     . ((smart-asm) . (smart-asm nil 'next-tag)))
     ;;
     ((or (and (smart-lisp-mode-p)
              (or (smart-lisp-at-load-expression-p)
                  (smart-lisp-at-tag-p)))
         ;; Tightly limit Lisp matches in change-log-mode.
-        (smart-lisp-at-change-log-tag-p)) .
-        ((smart-lisp) . (smart-lisp 'show-doc)))
+        (smart-lisp-at-change-log-tag-p))
+     . ((smart-lisp) . (smart-lisp 'show-doc)))
     ;;
     ;;
     ((and (eq major-mode 'java-mode) buffer-file-name
@@ -424,91 +426,92 @@ Its default value is `smart-scroll-down'.  To disable it, 
set it to
              (looking-at "@see[ \t]+")
              (save-excursion
                (and (re-search-backward "[@\n\r\f]" nil t)
-                    (looking-at "@see[ \t]+"))))) .
-                    ((smart-java) . (smart-java nil 'next-tag)))
+                    (looking-at "@see[ \t]+")))))
+     . ((smart-java) . (smart-java nil 'next-tag)))
     ;;
     ((and (memq major-mode '(js2-mode js-mode js3-mode javascript-mode 
html-mode web-mode))
          buffer-file-name
-         (smart-javascript-at-tag-p)) .
-         ((smart-javascript) . (smart-javascript nil 'next-tag)))
+         (smart-javascript-at-tag-p))
+     . ((smart-javascript) . (smart-javascript nil 'next-tag)))
     ;;
     ((and (eq major-mode 'objc-mode) buffer-file-name
-         (smart-objc-at-tag-p)) .
-         ((smart-objc) . (smart-objc nil 'next-tag)))
+         (smart-objc-at-tag-p))
+     . ((smart-objc) . (smart-objc nil 'next-tag)))
     ;;
     ((and (memq major-mode '(fortran-mode f90-mode))
-         buffer-file-name (smart-fortran-at-tag-p)) .
-         ((smart-fortran) . (smart-fortran nil 'next-tag)))
+         buffer-file-name (smart-fortran-at-tag-p))
+     . ((smart-fortran) . (smart-fortran nil 'next-tag)))
     ;;
-    ((eq major-mode 'calendar-mode) .
-     ((smart-calendar) . (smart-calendar-assist)))
+    ((eq major-mode 'calendar-mode)
+     . ((smart-calendar) . (smart-calendar-assist)))
     ;;
     ;; Part of InfoDock
-    ((eq major-mode 'unix-apropos-mode) .
-     ((smart-apropos) . (smart-apropos-assist)))
+    ((eq major-mode 'unix-apropos-mode)
+     . ((smart-apropos) . (smart-apropos-assist)))
     ;;
-    ((eq major-mode 'outline-mode) .
-     ((smart-outline) . (smart-outline-assist)))
+    ((eq major-mode 'outline-mode)
+     . ((smart-outline) . (smart-outline-assist)))
     ;;
-    ((eq major-mode 'Info-mode) .
-     ((smart-info) .  (smart-info-assist)))
+    ((eq major-mode 'Info-mode)
+     . ((smart-info) .  (smart-info-assist)))
     ;;
     ((if (boundp 'hmail:reader)
         (or (eq major-mode hmail:reader)
-            (eq major-mode hmail:lister))) .
-            ((smart-hmail) . (smart-hmail-assist)))
+            (eq major-mode hmail:lister)))
+     . ((smart-hmail) . (smart-hmail-assist)))
     ;;
     ((eq major-mode 'gnus-group-mode)
      (smart-gnus-group) . (smart-gnus-group-assist))
     ;;
     ((eq major-mode 'gnus-summary-mode)
-     (smart-gnus-summary) . (smart-gnus-summary-assist))
+     . ((smart-gnus-summary) . (smart-gnus-summary-assist)))
     ;;
     ((eq major-mode 'gnus-article-mode)
-     (smart-gnus-article) . (smart-gnus-article-assist))
+     . ((smart-gnus-article) . (smart-gnus-article-assist)))
     ;;
-    ((eq major-mode 'Buffer-menu-mode) .
-     ((smart-buffer-menu) . (smart-buffer-menu-assist)))
+    ((eq major-mode 'Buffer-menu-mode)
+     . ((smart-buffer-menu) . (smart-buffer-menu-assist)))
     ;;
-    ((eq major-mode 'ibuffer-mode) .
-     ((smart-ibuffer-menu) . (smart-ibuffer-menu-assist)))
+    ((eq major-mode 'ibuffer-mode)
+     . ((smart-ibuffer-menu) . (smart-ibuffer-menu-assist)))
     ;;
-    ((eq major-mode 'tar-mode) .
-     ((smart-tar) . (smart-tar-assist)))
+    ((eq major-mode 'tar-mode)
+     . ((smart-tar) . (smart-tar-assist)))
     ;;
     ;; Follow references in man pages.
-    ((setq hkey-value (smart-man-entry-ref)) .
-     ((smart-man-display hkey-value) . (smart-man-display hkey-value)))
+    ((setq hkey-value (smart-man-entry-ref))
+     . ((smart-man-display hkey-value) . (smart-man-display hkey-value)))
     ;;
-    ((eq major-mode 'w3-mode) .
-     ((w3-follow-link) . (w3-goto-last-buffer)))
+    ((eq major-mode 'w3-mode)
+     . ((w3-follow-link) . (w3-goto-last-buffer)))
     ;;
-    ((eq major-mode 'hynote-mode) .
-     ((smart-hynote) . (smart-hynote-assist)))
+    ;; Future Hyperbole mode, not yet released
+    ((eq major-mode 'hynote-mode)
+     . ((smart-hynote) . (smart-hynote-assist)))
     ;;
-    ((eq major-mode 'hyrolo-mode) .
-     ((smart-hyrolo) . (smart-hyrolo-assist)))
+    ((eq major-mode 'hyrolo-mode)
+     . ((smart-hyrolo) . (smart-hyrolo-assist)))
     ;;
-    ((eq major-mode 'image-dired-thumbnail-mode) .
-     ((smart-image-dired-thumbnail) . (smart-image-dired-thumbnail-assist)))
+    ((eq major-mode 'image-dired-thumbnail-mode)
+     . ((smart-image-dired-thumbnail) . (smart-image-dired-thumbnail-assist)))
     ;;
     ;; Gomoku game
-    ((eq major-mode 'gomoku-mode) .
-     ((gomoku-human-plays) . (gomoku-human-takes-back)))
+    ((eq major-mode 'gomoku-mode)
+     . ((gomoku-human-plays) . (gomoku-human-takes-back)))
     ;;
     ;; Support the OO-Browser when available.  It is a separate Emacs
     ;; package not included with Hyperbole.  Hyperbole supplies a stub
     ;; `br-in-browser' test for use here.
-    ((or (br-in-browser) (eq major-mode 'br-mode)) .
-     ((smart-br-dispatch) . (smart-br-assist-dispatch)))
+    ((or (br-in-browser) (eq major-mode 'br-mode))
+     . ((smart-br-dispatch) . (smart-br-assist-dispatch)))
     ;;
     ;; Outline minor mode is on and usable.
-    ((and (boundp 'outline-minor-mode) outline-minor-mode) .
-     ((smart-outline) . (smart-outline-assist)))
+    ((and (boundp 'outline-minor-mode) outline-minor-mode)
+     . ((smart-outline) . (smart-outline-assist)))
     ;;
     ;; Todotxt
-    ((eq major-mode 'todotxt-mode) .
-     ((smart-todotxt) . (smart-todotxt-assist))))
+    ((eq major-mode 'todotxt-mode)
+     . ((smart-todotxt) . (smart-todotxt-assist))))
   "Alist of predicates and form-conses for the Action and Assist Keyboard Keys.
 Each element is: (PREDICATE-FORM . (ACTION-KEY-FORM . ASSIST-KEY-FORM)).
 When the Action or Assist Key is pressed, the first or second form,
diff --git a/hui-window.el b/hui-window.el
index ffcac28be9..96c7edd7ef 100644
--- a/hui-window.el
+++ b/hui-window.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    21-Sep-92
-;; Last-Mod:     20-May-23 at 10:37:04 by Bob Weiner
+;; Last-Mod:     21-May-23 at 12:09:22 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -100,8 +100,8 @@ drag release window.")
 (defcustom hmouse-pulse-flag t
   "Non-nil means pulse visually if supported.
 When display supports visual pulsing, then pulse lines and
-buffers when an Action Key drag is used to place a buffer or file
-in a window."
+buffers when an Action Key drag is used to place a buffer, file
+ofr button referent in a window."
   :type 'boolean
   :group 'hyperbole-keys)
 
@@ -178,11 +178,16 @@ and release to register a diagonal drag.")
             ;; Other Modeline click or drag
             ((hmouse-modeline-depress)
              . ((action-key-modeline) . (assist-key-modeline)))
+            ;; Drag between windows and on an item (buffer-name, file-name or 
Hyperbole button)
+            ((and (hmouse-drag-between-windows)
+                  (hmouse-at-item-p (if assist-flag assist-key-depress-window
+                                      action-key-depress-window)))
+             . ((hmouse-drag-item-to-display) . (hmouse-drag-item-to-display)))
+            ;; Drag between windows not on an item
             ((hmouse-drag-between-windows)
              ;; Note that `hui:ebut-link-directly' uses any active
              ;; region as the label of the button to create.
-             . ((or (hmouse-drag-item-to-display) (hui:ebut-link-directly))
-                . (hui:ibut-link-directly)))
+             . ((hui:ebut-link-directly) . (hui:ibut-link-directly)))
             ((hmouse-drag-region-active)
              . ((hmouse-drag-not-allowed) . (hmouse-drag-not-allowed)))
             ((setq hkey-value (hmouse-drag-horizontally))
@@ -196,9 +201,10 @@ and release to register a diagonal drag.")
             ((hmouse-drag-outside-all-windows)
              . ((or (hmouse-drag-item-to-display)
                     (hycontrol-clone-window-to-new-frame))
-                    . (hycontrol-window-to-new-frame)))
+                . (hycontrol-window-to-new-frame)))
             ;; If click in the minibuffer when it is not active (blank),
-            ;; display the Hyperbole minibuffer menu or popup the jump menu.
+            ;; Action Key displays the Hyperbole minibuffer menu and
+            ;; the Assist Key popups the jump menu.
             ((hmouse-inactive-minibuffer-p)
              . ((funcall action-key-minibuffer-function)
                 . (funcall assist-key-minibuffer-function)))
@@ -226,7 +232,9 @@ and release to register a diagonal drag.")
 ;;; ************************************************************************
 
 (defun hmouse-at-item-p (start-window)
-  "Return t if point is on an item draggable by Hyperbole, otherwise nil."
+  "Return t if point is on an item draggable by Hyperbole, otherwise nil.
+Draggable items include Hyperbole buttons, dired items, buffer/ibuffer
+menu items."
   (let* ((buf (when (window-live-p start-window)
                (window-buffer start-window)))
         (mode (when buf
@@ -470,8 +478,7 @@ If free variable `assist-flag' is non-nil, uses Assist Key."
   (if assist-flag
       (and (window-live-p assist-key-depress-window)
           (window-live-p assist-key-release-window)
-          (not (eq assist-key-depress-window
-                   assist-key-release-window)))
+          (not (eq assist-key-depress-window assist-key-release-window)))
     (and (window-live-p action-key-depress-window)
         (window-live-p action-key-release-window)
         (not (eq action-key-depress-window action-key-release-window)))))
@@ -496,9 +503,10 @@ If free variable `assist-flag' is non-nil, uses Assist 
Key."
 
 (defun hmouse-drag-item-to-display (&optional new-window-flag)
   "Drag an item and release where it is to be displayed.
-Depress on a buffer name in Buffer-menu/ibuffer mode or on a
-file/directory in dired mode and release where the item is to be
-displayed.
+Draggable items include Hyperbole buttons, dired items, buffer/ibuffer
+menu items.
+
+Depress on the item and release where the item is to be displayed.
 
 If depress is on an item and release is outside of Emacs, the
 item is displayed in a new frame with a single window.  If the
diff --git a/man/hkey-help.txt b/man/hkey-help.txt
index aeca94bdc3..ab5cbe3b36 100644
--- a/man/hkey-help.txt
+++ b/man/hkey-help.txt
@@ -6,8 +6,8 @@ Hyperbole
   On a minibuffer menu item     Activates item             Item help
   On an explicit button         Activates button           Button help
   Reading argument
-    1st press at an arg value   Value copied to minibuffer <- same
-    2nd press at an arg value   Value used as argument     <- same
+    1st press at an arg value   Copies value to minibuffer <- same
+    2nd press at an arg value   Uses value as argument     <- same
     In minibuffer               Accepts minibuffer arg     Completion help
   On an implicit button/path    Activates button           Button help
   Within a koutline cell        Collapses and expands      Shows tree props
@@ -29,7 +29,7 @@ Mouse-only Control
     string, list or markup
     language tag pair
 
-  Drag from bottom Modeline     Reposition frame as        <- same
+  Drag from bottom Modeline     Repositions frame as       <- same
   in frame with non-nil         drag happens
   drag-with-mode-line param
 
@@ -49,10 +49,10 @@ Mouse-only Control
                                   new window by release
 
   Drag between windows from:
-    but/buffer/file menu item   Displays ref/buffer/file   Swaps window buffers
+    but/buffer/file menu item   Displays ref/buffer/file   <- same
                                   in window of button release 
-    buffer/file menu 1st line   Moves buffer/file menu     Swaps window buffers
-    anywhere else               Creates/modifies a link    Swaps window buffers
+    buffer/file menu 1st line   Moves buffer/file menu     <- same
+    anywhere else               Creates an ebut link       Creates an ibut link
 
   Drag outside of Emacs from:
     but/buffer/file menu item   Displays ref/buffer/file   Moves window to new 
frame
@@ -61,11 +61,11 @@ Mouse-only Control
 
   Modeline Click
     Left modeline edge          Buries current buffer      Unburies bottom 
buffer
-    Right modeline edge         Info manual browser        Smart Key summary
-    Buffer ID                   Dired on buffer's dir      Next buffer
+    Right modeline edge         Displays GNU Info manuals  Displays Smart Key 
summary
+    Buffer ID                   Dired on buffer's dir      Displays next buffer
                                   or on parent when a dir
     Other blank area            Action Key modeline hook   Assist Key modeline 
hook
-                                  Shows/Hides Buffer Menu    Popup Jump & 
Manage Menu
+                                  Shows/Hides Buffer Menu    Popups Jump & 
Manage Menu
 
   Drag in window, region active Error, not allowed         Error, not allowed
   Horizontal drag in a window   Splits window below        Deletes window
@@ -82,8 +82,8 @@ Hyperbole Key Press/Click in Special Modes
   Treemacs                      Displays item              Displays item
   Dired Sidebar                 Displays item              Displays item
   Emacs Push Button             Activates button           Button help
-  Emacs Regression Test Def     Eval and run test          Edebug and run test
-  Thing Begin or End            Mark thing region          Mark & kill thing 
region
+  Emacs Regression Test Def     Evals and runs test        Edebugs and runs 
test
+  Thing Begin or End            Marks thing region         Marks & kills thing 
region
   Page Directory Listing        Jumps to page              <- same
   Imenu Programming Identifier  Jumps to in-buffer def     Prompts for id to 
jump to
   C,C++,Objective-C,Java Modes  Jumps to id/include def    Jumps to next def
@@ -112,14 +112,14 @@ Hyperbole Key Press/Click in Special Modes
   Man Apropos                   Displays man page entry    <- same
   Man Pages                     Follows cross refs, file refs and C code refs
   I/Buffer Menu                 Saves, deletes and displays buffers
-  Todotxt Mode                  Toggle item completion     Edit and archive 
items
+  Todotxt Mode                  Toggles item completion    Edit and archive 
items
 
 Emacs Info Reader
-  Menu Entry or Cross Ref       To referent                <- same
-  Up, Next or Prev Header       To referent                To prior node
-  File entry of Header          To top node                To (DIR) node
-  End of current node           To next node               To previous node
-  Anywhere else                 Scrolls up a windowful     Scrolls wind down
+  Menu Entry or Cross Ref       Jumps to referent          <- same
+  Up, Next or Prev Header       Jumps to referent          Jumps to prior node
+  File entry of Header          Jumps to top node          Jumps to (DIR) node
+  End of current node           Jumps to next node         Jumps to previous 
node
+  Anywhere else                 Scrolls up a windowful     Scrolls down a 
windowful
 
 Subsystems
   Calendar                      Scrolls or shows appts     Scrolls/marks date



reply via email to

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