[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hyperbole 55a1f04 06/53: 2017-09-18 Bob Weiner <address
From: |
Robert Weiner |
Subject: |
[elpa] externals/hyperbole 55a1f04 06/53: 2017-09-18 Bob Weiner <address@hidden> |
Date: |
Wed, 15 Nov 2017 22:46:58 -0500 (EST) |
branch: externals/hyperbole
commit 55a1f0482b5145cb0dab0d8cd592631c6b29951c
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>
2017-09-18 Bob Weiner <address@hidden>
* hui-mouse.el (smart-helm): Finalized and added doc. of contexts and
actions.
* hui-window.el (smart-coords-in-window-p):
(hmouse-drag-window-side): Handled null value of coords.
2017-09-17 Bob Weiner <address@hidden>
* hui-mouse.el (hkey-alist): Changed minibuffer handling to support Helm.
* man/hkey-help.txt: Small updates to Special Mode doc.
* hmouse-key.el (hmouse-add-unshifted-keys): Added to allow user init
of unshifted Smart Keys. For GNU Emacs only, this binds
[mouse-2] to the Action Key and [mouse-3] to the Assist Key.
man/hyperbole.texi (Smart Key Bindings): Added doc for
hmouse-add-unshifted-keys.
* hmouse-sh.el (hmouse-get-unshifted-bindings): Uncommented inclusion of
mouse-3 for times when user manually sets mouse-3 as the Assist Key.
Otherwise, hmouse-toggle-bindings will never change its value.
(hmouse-bind-key, hmouse-bind-shifted-key): Added and used
these to ensure depress and release bindings are wholly reset before
rebinding them under GNU Emacs.
2017-09-14 Bob Weiner <address@hidden>
* hpath.el (hpath:external-open-office-suffixes): Added .odt suffix.
* hui-select.el (hui-select-at-p): Protect against empty buffer error.
2017-09-12 Bob Weiner <address@hidden>
* hibtypes.el (grep-msg):
(pathname): Don't match in helm completion buffers.
* hui-mouse.el (smart-helm-line-has-action): Ignore any actions helm
imputes to header lines and candidate separator lines in helm
completion buffers, as they are non-actionable lines. Also, ignore
if at the end of the buffer.
(hkey-alist): Lowered smart-helm priority so can use Smart
Key end-of-line functions in such buffers.
* hsys-www.el (eww-link-at-point): Basic stylistic improvements.
2017-09-11 Bob Weiner <address@hidden>
hyrolo.el: Added basic commentary to the file header.
---
Changes | 61 ++++++++-
hibtypes.el | 62 +++++----
hmouse-key.el | 5 +
hmouse-sh.el | 391 +++++++++++++++++++++++++++++++++--------------------
hpath.el | 2 +-
hsys-www.el | 23 ++--
hui-mouse.el | 172 +++++++++++++++--------
hui-select.el | 21 +--
hui-window.el | 6 +-
hyrolo.el | 8 ++
man/hkey-help.txt | 5 +-
man/hyperbole.texi | 14 +-
12 files changed, 504 insertions(+), 266 deletions(-)
diff --git a/Changes b/Changes
index d84e6c2..44b7f55 100644
--- a/Changes
+++ b/Changes
@@ -1,13 +1,64 @@
+2017-09-18 Bob Weiner <address@hidden>
+
+* hui-mouse.el (smart-helm): Finalized and added doc. of contexts and actions.
+
+* hui-window.el (smart-coords-in-window-p):
+ (hmouse-drag-window-side): Handled null value of coords.
+
+2017-09-17 Bob Weiner <address@hidden>
+
+* hui-mouse.el (hkey-alist): Changed minibuffer handling to support Helm.
+
+* man/hkey-help.txt: Small updates to Special Mode doc.
+
+* hmouse-key.el (hmouse-add-unshifted-keys): Added to allow user init
+ of unshifted Smart Keys. For GNU Emacs only, this binds
+ [mouse-2] to the Action Key and [mouse-3] to the Assist Key.
+ man/hyperbole.texi (Smart Key Bindings): Added doc for
hmouse-add-unshifted-keys.
+
+* hmouse-sh.el (hmouse-get-unshifted-bindings): Uncommented inclusion of
+ mouse-3 for times when user manually sets mouse-3 as the Assist Key.
+ Otherwise, hmouse-toggle-bindings will never change its value.
+ (hmouse-bind-key, hmouse-bind-shifted-key): Added and used
+ these to ensure depress and release bindings are wholly reset before
+ rebinding them under GNU Emacs.
+
+2017-09-14 Bob Weiner <address@hidden>
+
+* hpath.el (hpath:external-open-office-suffixes): Added .odt suffix.
+
+* hui-select.el (hui-select-at-p): Protect against empty buffer error.
+
+2017-09-12 Bob Weiner <address@hidden>
+
+* hibtypes.el (grep-msg):
+ (pathname): Don't match in helm completion buffers.
+
+* hui-mouse.el (smart-helm-line-has-action): Ignore any actions helm
+ imputes to header lines and candidate separator lines in helm
+ completion buffers, as they are non-actionable lines. Also, ignore
+ if at the end of the buffer.
+ (hkey-alist): Lowered smart-helm priority so can use Smart
+ Key end-of-line functions in such buffers.
+
+* hsys-www.el (eww-link-at-point): Basic stylistic improvements.
+
+2017-09-11 Bob Weiner <address@hidden>
+
+hyrolo.el: Added basic commentary to the file header.
+
2017-09-10 Bob Weiner <address@hidden>
* hui-mouse.el (smart-helm, smart-helm-assist, smart-helm-line-has-action):
hsettings.el (helm-allow-mouse): Set to t.
New helm completion activation support.
- Added to allow mouse direct selection of helm completion items. The
- smart-helm function behaves similarly to the {C-j} and {C-z} key bindings
- that helm mode provides when a helm completion is active but the Smart
- Keys work in the completions buffer regardless of whether a helm
- completion is active or not.
+ Added to allow mouse direct selection of helm completion items and to see
+ match item actions prior to invoking them. The smart-helm function
+ behaves similarly to the {C-j} and {C-z} key bindings that helm mode
+ provides when a helm completion is active. If helm is not active,
+ Hyperbole resumes the prior helm session before triggering the action.
+ The smart-helm-assist function displays the match item and its associated
+ action.
* hsys-www.el (www-url): Added Action and Assist Key support for browsing
links in eww (the Emacs web browser) and for activating history links
diff --git a/hibtypes.el b/hibtypes.el
index 33acc24..795bd6a 100644
--- a/hibtypes.el
+++ b/hibtypes.el
@@ -85,10 +85,11 @@ See `hpath:suffixes' variable documentation for suffixes
that are added to or
removed from pathname when searching for a valid match.
See `hpath:find' function documentation for special file display options."
;;
- ;; Ignore paths in Buffer menu and dired modes.
- (unless (delq nil (mapcar (lambda (substring) (string-match
- substring (format-mode-line
mode-name)))
- '("Buffer Menu" "IBuffer" "Dired")))
+ ;; Ignore paths in Buffer menu, dired and helm modes.
+ (unless (or (eq major-mode 'helm-major-mode)
+ (delq nil (mapcar (lambda (substring) (string-match
+ substring
(format-mode-line mode-name)))
+ '("Buffer Menu" "IBuffer" "Dired"))))
(let ((path (hpath:at-p))
full-path)
(if path
@@ -103,7 +104,7 @@ See `hpath:find' function documentation for special file
display options."
(if full-path
(hact 'link-to-file full-path)
(hact 'error "(pathname): \"%s\" not found in `load-path'"
- path)))
+ path)))
;; Match only if "(filename)" references a valid Info file
;; and point is within the filename, not on any delimiters
;; so that delimited thing matches trigger later.
@@ -559,34 +560,35 @@ location from which to retrieve RFCs."
(defib grep-msg ()
"Jumps to line associated with grep or compilation error msgs.
Messages are recognized in any buffer."
- (progn
- ;; Locate and parse grep messages found in any buffer.
+ ;; Locate and parse grep messages found in any buffer other than a
+ ;; helm completion buffer.
+ (unless (eq major-mode 'helm-major-mode)
(save-excursion
(beginning-of-line)
(if (or
- ;; UNIX C compiler and Introl 68HC11 C compiler errors
- (looking-at "\\([^ \t\n\r:]+\\): ?\\([0-9]+\\)[ :]")
- ;; HP C compiler errors
- (looking-at
- "[a-zA-Z0-9]+: \"\\([^\t\n\r\",]+\\)\", line \\([0-9]+\\):")
- ;; BSO/Tasking 68HC08 C compiler errors
- (looking-at
- "[a-zA-Z 0-9]+: \\([^ \t\n\r\",]+\\) line \\([0-9]+\\)[ \t]*:")
- ;; UNIX Lint errors
- (looking-at "[^:]+: \\([^ \t\n\r:]+\\): line \\([0-9]+\\):")
- ;; SparcWorks C compiler errors (ends with :)
- ;; IBM AIX xlc C compiler errors (ends with .)
- (looking-at "\"\\([^\"]+\\)\", line \\([0-9]+\\)[:.]")
- ;; Introl as11 assembler errors
- (looking-at " \\*+ \\([^ \t\n\r]+\\) - \\([0-9]+\\) ")
- ;; perl5: ... at file.c line 10
- (looking-at ".+ at \\([^ \t\n\r]+\\) line +\\([0-9]+\\)")
- ;; Weblint
- (looking-at "\\([^ \t\n\r:()]+\\)(\\([0-9]+\\)): ")
- ;; Microsoft JVC
- ;; file.java(6,1) : error J0020: Expected 'class' or 'interface'
- (looking-at
- "^\\(\\([a-zA-Z]:\\)?[^:\( \t\n\r-]+\\)[:\(][ \t]*\\([0-9]+\\),"))
+ ;; UNIX C compiler and Introl 68HC11 C compiler errors
+ (looking-at "\\([^ \t\n\r:]+\\): ?\\([0-9]+\\)[ :]")
+ ;; HP C compiler errors
+ (looking-at
+ "[a-zA-Z0-9]+: \"\\([^\t\n\r\",]+\\)\", line \\([0-9]+\\):")
+ ;; BSO/Tasking 68HC08 C compiler errors
+ (looking-at
+ "[a-zA-Z 0-9]+: \\([^ \t\n\r\",]+\\) line \\([0-9]+\\)[ \t]*:")
+ ;; UNIX Lint errors
+ (looking-at "[^:]+: \\([^ \t\n\r:]+\\): line \\([0-9]+\\):")
+ ;; SparcWorks C compiler errors (ends with :)
+ ;; IBM AIX xlc C compiler errors (ends with .)
+ (looking-at "\"\\([^\"]+\\)\", line \\([0-9]+\\)[:.]")
+ ;; Introl as11 assembler errors
+ (looking-at " \\*+ \\([^ \t\n\r]+\\) - \\([0-9]+\\) ")
+ ;; perl5: ... at file.c line 10
+ (looking-at ".+ at \\([^ \t\n\r]+\\) line +\\([0-9]+\\)")
+ ;; Weblint
+ (looking-at "\\([^ \t\n\r:()]+\\)(\\([0-9]+\\)): ")
+ ;; Microsoft JVC
+ ;; file.java(6,1) : error J0020: Expected 'class' or 'interface'
+ (looking-at
+ "^\\(\\([a-zA-Z]:\\)?[^:\( \t\n\r-]+\\)[:\(][ \t]*\\([0-9]+\\),"))
(let* ((file (match-string-no-properties 1))
(line-num (match-string-no-properties 2))
(but-label (concat file ":" line-num))
diff --git a/hmouse-key.el b/hmouse-key.el
index f63735b..279bafa 100644
--- a/hmouse-key.el
+++ b/hmouse-key.el
@@ -98,6 +98,11 @@ Assist Key = shift-right mouse key."
(if hmouse-middle-flag "{Mouse-2} and {Shift Mouse-2} invoke"
"{Shift-Mouse-2} invokes"))))
+(defun hmouse-add-unshifted-keys ()
+ "GNU Emacs only: binds [mouse-2] to the Action Key and [mouse-3] to the
Assist Key."
+ (hmouse-install t)
+ (hmouse-bind-key 3 #'assist-key-depress-emacs #'assist-mouse-key-emacs))
+
(defun hmouse-toggle-bindings ()
"Toggles between Smart Mouse Key settings and their prior bindings.
Under InfoDock, the first invocation of this command will make the middle
diff --git a/hmouse-sh.el b/hmouse-sh.el
index ee347ed..a778a3d 100644
--- a/hmouse-sh.el
+++ b/hmouse-sh.el
@@ -25,12 +25,229 @@
;;; ************************************************************************
;; Other mouse event location prefixes to possibly handle:
-;; header-line
;; vertical-scroll-bar
;; horizontal-scroll-bar
;; right-divider
;; bottom-divider
+(defun hmouse-bind-key (mouse-key-number depress-cmd release-cmd)
+ "Ensure MOUSE-KEY-NUMBER (1-5), e.g. 1 for [mouse-1], is globally bound to
DEPRESS-CMD and RELEASE-CMD (includes depresses and drags).
+Use nil as cmd values to unbind a key."
+ ;; Works under GNU Emacs only.
+ (hmouse-set-key-list
+ depress-cmd
+ (nth (1- mouse-key-number)
+ '(
+ ([down-mouse-1] [header-line down-mouse-1]
+ [left-fringe down-mouse-1]
+ [right-fringe down-mouse-1]
+ [vertical-line down-mouse-1]
+ [mode-line down-mouse-1])
+
+ ([down-mouse-2] [header-line down-mouse-2]
+ [left-fringe down-mouse-2]
+ [right-fringe down-mouse-2]
+ [vertical-line down-mouse-2]
+ [mode-line down-mouse-2])
+
+ ([down-mouse-3] [header-line down-mouse-3]
+ [left-fringe down-mouse-3]
+ [right-fringe down-mouse-3]
+ [vertical-line down-mouse-3]
+ [mode-line down-mouse-3])
+
+ ([down-mouse-4] [header-line down-mouse-4]
+ [left-fringe down-mouse-4]
+ [right-fringe down-mouse-4]
+ [vertical-line down-mouse-4]
+ [mode-line down-mouse-4])
+
+ ([down-mouse-5] [header-line down-mouse-5]
+ [left-fringe down-mouse-5]
+ [right-fringe down-mouse-5]
+ [vertical-line down-mouse-5]
+ [mode-line down-mouse-5])
+ )))
+
+ (hmouse-set-key-list
+ release-cmd
+ (nth (1- mouse-key-number)
+ '(
+ ([drag-mouse-1] [mouse-1]
+ [double-mouse-1] [triple-mouse-1]
+ [header-line drag-mouse-1]
+ [header-line mouse-1]
+ [left-fringe drag-mouse-1]
+ [left-fringe mouse-1]
+ [right-fringe drag-mouse-1]
+ [right-fringe mouse-1]
+ [vertical-line drag-mouse-1]
+ [vertical-line mouse-1]
+ [mode-line drag-mouse-1]
+ [mode-line mouse-1])
+
+ ([drag-mouse-2] [mouse-2]
+ [double-mouse-2] [triple-mouse-2]
+ [header-line drag-mouse-2]
+ [header-line mouse-2]
+ [left-fringe drag-mouse-2]
+ [left-fringe mouse-2]
+ [right-fringe drag-mouse-2]
+ [right-fringe mouse-2]
+ [vertical-line drag-mouse-2]
+ [vertical-line mouse-2]
+ [mode-line drag-mouse-2]
+ [mode-line mouse-2])
+
+ ([drag-mouse-3] [mouse-3]
+ [double-mouse-3] [triple-mouse-3]
+ [header-line drag-mouse-3]
+ [header-line mouse-3]
+ [left-fringe drag-mouse-3]
+ [left-fringe mouse-3]
+ [right-fringe drag-mouse-3]
+ [right-fringe mouse-3]
+ [vertical-line drag-mouse-3]
+ [vertical-line mouse-3]
+ [mode-line drag-mouse-3]
+ [mode-line mouse-3])
+
+ ([drag-mouse-4] [mouse-4]
+ [double-mouse-4] [triple-mouse-4]
+ [header-line drag-mouse-4]
+ [header-line mouse-4]
+ [left-fringe drag-mouse-4]
+ [left-fringe mouse-4]
+ [right-fringe drag-mouse-4]
+ [right-fringe mouse-4]
+ [vertical-line drag-mouse-4]
+ [vertical-line mouse-4]
+ [mode-line drag-mouse-4]
+ [mode-line mouse-4])
+
+ ([drag-mouse-5] [mouse-5]
+ [double-mouse-5] [triple-mouse-5]
+ [header-line drag-mouse-5]
+ [header-line mouse-5]
+ [left-fringe drag-mouse-5]
+ [left-fringe mouse-5]
+ [right-fringe drag-mouse-5]
+ [right-fringe mouse-5]
+ [vertical-line drag-mouse-5]
+ [vertical-line mouse-5]
+ [mode-line drag-mouse-5]
+ [mode-line mouse-5])
+ ))))
+
+(defun hmouse-bind-shifted-key (shifted-mouse-key-number depress-cmd
release-cmd)
+ "Ensure shifted MOUSE-KEY-NUMBER (1-5), e.g. 1 for [Smouse-1], is globally
bound to DEPRESS-CMD and RELEASE-CMD (includes depresses and drags).
+Use nil as CMD value to unbind the key."
+ ;; Works under GNU Emacs only.
+ (hmouse-set-key-list
+ depress-cmd
+ (nth (1- shifted-mouse-key-number)
+ '(
+ ([S-down-mouse-1] [header-line S-down-mouse-1]
+ [left-fringe S-down-mouse-1]
+ [right-fringe S-down-mouse-1]
+ [vertical-line S-down-mouse-1]
+ [mode-line S-down-mouse-1])
+
+ ([S-down-mouse-2] [header-line S-down-mouse-2]
+ [left-fringe S-down-mouse-2]
+ [right-fringe S-down-mouse-2]
+ [vertical-line S-down-mouse-2]
+ [mode-line S-down-mouse-2])
+
+ ([S-down-mouse-3] [header-line S-down-mouse-3]
+ [left-fringe S-down-mouse-3]
+ [right-fringe S-down-mouse-3]
+ [vertical-line S-down-mouse-3]
+ [mode-line S-down-mouse-3])
+
+ ([S-down-mouse-4] [header-line S-down-mouse-4]
+ [left-fringe S-down-mouse-4]
+ [right-fringe S-down-mouse-4]
+ [vertical-line S-down-mouse-4]
+ [mode-line S-down-mouse-4])
+
+ ([S-down-mouse-5] [header-line S-down-mouse-5]
+ [left-fringe S-down-mouse-5]
+ [right-fringe S-down-mouse-5]
+ [vertical-line S-down-mouse-5]
+ [mode-line S-down-mouse-5])
+ )))
+
+ (hmouse-set-key-list
+ release-cmd
+ (nth (1- shifted-mouse-key-number)
+ '(
+ ([S-drag-mouse-1] [S-mouse-1]
+ [S-double-mouse-1] [S-triple-mouse-1]
+ [header-line S-drag-mouse-1]
+ [header-line S-mouse-1]
+ [left-fringe S-drag-mouse-1]
+ [left-fringe S-mouse-1]
+ [right-fringe S-drag-mouse-1]
+ [right-fringe S-mouse-1]
+ [vertical-line S-drag-mouse-1]
+ [vertical-line S-mouse-1]
+ [mode-line S-drag-mouse-1]
+ [mode-line S-mouse-1])
+
+ ([S-drag-mouse-2] [S-mouse-2]
+ [S-double-mouse-2] [S-triple-mouse-2]
+ [header-line S-drag-mouse-2]
+ [header-line S-mouse-2]
+ [left-fringe S-drag-mouse-2]
+ [left-fringe S-mouse-2]
+ [right-fringe S-drag-mouse-2]
+ [right-fringe S-mouse-2]
+ [vertical-line S-drag-mouse-2]
+ [vertical-line S-mouse-2]
+ [mode-line S-drag-mouse-2]
+ [mode-line S-mouse-2])
+
+ ([S-drag-mouse-3] [S-mouse-3]
+ [S-double-mouse-3] [S-triple-mouse-3]
+ [header-line S-drag-mouse-3]
+ [header-line S-mouse-3]
+ [left-fringe S-drag-mouse-3]
+ [left-fringe S-mouse-3]
+ [right-fringe S-drag-mouse-3]
+ [right-fringe S-mouse-3]
+ [vertical-line S-drag-mouse-3]
+ [vertical-line S-mouse-3]
+ [mode-line S-drag-mouse-3]
+ [mode-line S-mouse-3])
+
+ ([S-drag-mouse-4] [S-mouse-4]
+ [S-double-mouse-4] [S-triple-mouse-4]
+ [header-line S-drag-mouse-4]
+ [header-line S-mouse-4]
+ [left-fringe S-drag-mouse-4]
+ [left-fringe S-mouse-4]
+ [right-fringe S-drag-mouse-4]
+ [right-fringe S-mouse-4]
+ [vertical-line S-drag-mouse-4]
+ [vertical-line S-mouse-4]
+ [mode-line S-drag-mouse-4]
+ [mode-line S-mouse-4])
+
+ ([S-drag-mouse-5] [S-mouse-5]
+ [S-double-mouse-5] [S-triple-mouse-5]
+ [header-line S-drag-mouse-5]
+ [header-line S-mouse-5]
+ [left-fringe S-drag-mouse-5]
+ [left-fringe S-mouse-5]
+ [right-fringe S-drag-mouse-5]
+ [right-fringe S-mouse-5]
+ [vertical-line S-drag-mouse-5]
+ [vertical-line S-mouse-5]
+ [mode-line S-drag-mouse-5]
+ [mode-line S-mouse-5])
+ ))))
+
(defun hmouse-get-bindings (hmouse-middle-flag)
"Returns the list of current bindings of mouse keys used by Hyperbole.
If HMOUSE-MIDDLE-FLAG is non-nil, includes the middle mouse key binding as
well.
@@ -149,9 +366,9 @@ These may be the bindings prior to initializing Hyperbole
or the Hyperbole bindi
(if (not (eq window-system 'dps))
;; X, OS X or MS Windows
'([down-mouse-2] [drag-mouse-2] [mouse-2]
- ;; [down-mouse-3] [drag-mouse-3] [mouse-3]
+ [down-mouse-3] [drag-mouse-3] [mouse-3]
[double-mouse-2] [triple-mouse-2]
- ;; [double-mouse-3] [triple-mouse-3]
+ [double-mouse-3] [triple-mouse-3]
[header-line down-mouse-2] [header-line drag-mouse-2]
[header-line mouse-2]
[left-fringe down-mouse-2] [left-fringe drag-mouse-2]
@@ -160,34 +377,34 @@ These may be the bindings prior to initializing Hyperbole
or the Hyperbole bindi
[right-fringe mouse-2]
[vertical-line down-mouse-2] [vertical-line
drag-mouse-2]
[vertical-line mouse-2]
- ;; [left-fringe down-mouse-3] [left-fringe
drag-mouse-3]
- ;; [left-fringe mouse-3]
- ;; [right-fringe down-mouse-3] [right-fringe
drag-mouse-3]
- ;; [right-fringe mouse-3]
- ;; [vertical-line down-mouse-3] [vertical-line
drag-mouse-3]
- ;; [vertical-line mouse-3]
+ [left-fringe down-mouse-3] [left-fringe drag-mouse-3]
+ [left-fringe mouse-3]
+ [right-fringe down-mouse-3] [right-fringe
drag-mouse-3]
+ [right-fringe mouse-3]
+ [vertical-line down-mouse-3] [vertical-line
drag-mouse-3]
+ [vertical-line mouse-3]
[mode-line down-mouse-2] [mode-line drag-mouse-2]
[mode-line mouse-2]
- ;; [mode-line down-mouse-3] [mode-line drag-mouse-3]
- ;; [mode-line mouse-3]
+ [mode-line down-mouse-3] [mode-line drag-mouse-3]
+ [mode-line mouse-3]
))))
("xemacs" .
(nconc
(mapcar (lambda (key)
(cons key (global-key-binding key)))
'([button2] [button2up]
- ;; [button3] [button3up]
+ [button3] [button3up]
))
- ;; (if (boundp 'mode-line-map)
- ;; (mapcar (function
- ;; (lambda (key)
- ;; (cons key (lookup-key mode-line-map key))))
- ;; '([button3] [button3up])))
+ (if (boundp 'mode-line-map)
+ (mapcar (function
+ (lambda (key)
+ (cons key (lookup-key mode-line-map key))))
+ '([button3] [button3up])))
))
("xterm" .
(mapcar (lambda (key) (cons key (lookup-key mouse-map key)))
(list x-button-middle x-button-middle-up
- ;; x-button-right x-button-right-up
+ x-button-right x-button-right-up
)))
)))))
@@ -258,88 +475,13 @@ select the corresponding element around point."
(hyperb:emacs-p
(setq hmouse-set-point-command 'hmouse-move-point-emacs)
(if (eq window-system 'dps)
- ;; NEXTSTEP offers only 2 shift-mouse buttons which we use
- ;; as the Smart Keys.
+ ;; NEXTSTEP offers only 2 shift-mouse buttons which we use as the
Smart Keys.
(progn
- (hmouse-set-key-list #'action-key-depress-emacs
- '([S-down-mouse-1] [header-line S-down-mouse-1]
- [left-fringe S-down-mouse-1]
- [right-fringe S-down-mouse-1]
- [vertical-line S-down-mouse-1]
- [mode-line S-down-mouse-1]))
- (hmouse-set-key-list #'action-mouse-key-emacs
- '([S-drag-mouse-1] [S-mouse-1]
- [S-double-mouse-1] [S-triple-mouse-1]
- [header-line S-drag-mouse-1]
- [header-line S-mouse-1]
- [left-fringe S-drag-mouse-1]
- [left-fringe S-mouse-1]
- [right-fringe S-drag-mouse-1]
- [right-fringe S-mouse-1]
- [vertical-line S-drag-mouse-1]
- [vertical-line S-mouse-1]
- [mode-line S-drag-mouse-1]
- [mode-line S-mouse-1]))
-
- (hmouse-set-key-list #'assist-key-depress-emacs
- '([S-down-mouse-2] [header-line S-down-mouse-2]
- [left-fringe S-down-mouse-2]
- [right-fringe S-down-mouse-2]
- [vertical-line S-down-mouse-2]
- [mode-line S-down-mouse-2]))
- (hmouse-set-key-list #'assist-mouse-key-emacs
- '([S-drag-mouse-2] [S-mouse-2]
- [S-double-mouse-2] [S-triple-mouse-2]
- [header-line S-drag-mouse-2]
- [header-line S-mouse-2]
- [left-fringe S-drag-mouse-2]
- [left-fringe S-mouse-2]
- [right-fringe S-drag-mouse-2]
- [right-fringe S-mouse-2]
- [vertical-line S-drag-mouse-2]
- [vertical-line S-mouse-2]
- [mode-line S-drag-mouse-2]
- [mode-line S-mouse-2])))
+ (hmouse-bind-shifted-key 1 #'action-key-depress-emacs
#'action-mouse-key-emacs)
+ (hmouse-bind-shifted-key 2 #'assist-key-depress-emacs
#'assist-mouse-key-emacs))
;; X, OS X or MS Windows
- (hmouse-set-key-list #'action-key-depress-emacs
- '([S-down-mouse-2] [header-line S-down-mouse-2]
- [left-fringe S-down-mouse-2]
- [right-fringe S-down-mouse-2]
- [vertical-line S-down-mouse-2]
- [mode-line S-down-mouse-2]))
- (hmouse-set-key-list #'action-mouse-key-emacs
- '([S-drag-mouse-2] [S-mouse-2]
- [S-double-mouse-2] [S-triple-mouse-2]
- [header-line S-drag-mouse-2]
- [header-line S-mouse-2]
- [left-fringe S-drag-mouse-2]
- [left-fringe S-mouse-2]
- [right-fringe S-drag-mouse-2]
- [right-fringe S-mouse-2]
- [vertical-line S-drag-mouse-2]
- [vertical-line S-mouse-2]
- [mode-line S-drag-mouse-2]
- [mode-line S-mouse-2]))
-
- (hmouse-set-key-list #'assist-key-depress-emacs
- '([S-down-mouse-3] [header-line S-down-mouse-3]
- [left-fringe S-down-mouse-3]
- [right-fringe S-down-mouse-3]
- [vertical-line S-down-mouse-3]
- [mode-line S-down-mouse-3]))
- (hmouse-set-key-list #'assist-mouse-key-emacs
- '([S-drag-mouse-3] [S-mouse-3]
- [S-double-mouse-3] [S-triple-mouse-3]
- [header-line S-drag-mouse-3]
- [left-fringe S-drag-mouse-3]
- [left-fringe S-mouse-3]
- [right-fringe S-drag-mouse-3]
- [right-fringe S-mouse-3]
- [header-line S-mouse-3]
- [vertical-line S-drag-mouse-3]
- [vertical-line S-mouse-3]
- [mode-line S-drag-mouse-3]
- [mode-line S-mouse-3]))))
+ (hmouse-bind-shifted-key 2 #'action-key-depress-emacs
#'action-mouse-key-emacs)
+ (hmouse-bind-shifted-key 3 #'assist-key-depress-emacs
#'assist-mouse-key-emacs)))
;;
;; XEmacs
((featurep 'xemacs)
@@ -367,25 +509,18 @@ select the corresponding element around point."
(define-key mouse-map x-button-s-middle-up 'action-mouse-key)
(define-key mouse-map x-button-s-right 'assist-key-depress)
(define-key mouse-map x-button-s-right-up 'assist-mouse-key)
- ;; Use these instead of the above for a true META-BUTTON binding.
- ;; (define-key mouse-map x-button-m-middle 'assist-key-depress)
- ;; (define-key mouse-map x-button-m-middle-up 'assist-mouse-key)
)
;;
;; NeXT
((equal (hyperb:window-system) "next")
(setq hmouse-set-point-command 'hmouse-move-point-eterm)
- ;; Use left button to set point.
- ;; Use shift-left button instead of non-existent middle as Action Key.
+ ;; NEXTSTEP offers only 2 shift-mouse buttons which we use as the Smart
Keys.
(mapc
(lambda (region)
(global-set-mouse (cons region '(shift left)) 'action-key-depress)
(global-set-mouse (cons region '(shift up left)) 'action-mouse-key)
(global-set-mouse (cons region '(shift right)) 'assist-key-depress)
(global-set-mouse (cons region '(shift up right)) 'assist-mouse-key)
- ;; Use these instead of the above for a true META-BUTTON binding.
- ;; (global-set-mouse (cons region '(meta right))
'assist-key-depress)
- ;; (global-set-mouse (cons region '(meta up right)) 'assist-mouse-key)
)
'(text scrollbar modeline minibuffer))
))
@@ -404,45 +539,8 @@ select the corresponding element around point."
;;
(if (not (eq window-system 'dps))
;; X, OS X or MS Windows
- (progn (hmouse-set-key-list #'action-key-depress-emacs
- '([down-mouse-2] [header-line down-mouse-2]
- [left-fringe down-mouse-2]
- [right-fringe down-mouse-2]
- [vertical-line down-mouse-2]
- [mode-line down-mouse-2]))
- (hmouse-set-key-list #'action-mouse-key-emacs
- '([drag-mouse-2] [mouse-2]
- [double-mouse-2] [triple-mouse-2]
- [header-line drag-mouse-2]
- [header-line mouse-2]
- [left-fringe drag-mouse-2]
- [left-fringe mouse-2]
- [right-fringe drag-mouse-2]
- [right-fringe mouse-2]
- [vertical-line drag-mouse-2]
- [vertical-line mouse-2]
- [mode-line drag-mouse-2]
- [mode-line mouse-2]))
-
- ;; (hmouse-set-key-list #'assist-key-depress-emacs
- ;; '([down-mouse-3] [header-line down-mouse-3]
- ;; [left-fringe down-mouse-3]
- ;; [right-fringe down-mouse-3]
- ;; [vertical-line down-mouse-3]
- ;; [mode-line down-mouse-3]))
- ;; (hmouse-set-key-list #'assist-mouse-key-emacs
- ;; '([drag-mouse-3] [mouse-3]
- ;; [double-mouse-3] [triple-mouse-3]
- ;; [header-line drag-mouse-3]
- ;; [header-line mouse-3]
- ;; [left-fringe drag-mouse-3]
- ;; [left-fringe mouse-3]
- ;; [right-fringe drag-mouse-3]
- ;; [right-fringe mouse-3]
- ;; [vertical-line drag-mouse-3]
- ;; [vertical-line mouse-3]
- ;; [mode-line drag-mouse-3]
- ;; [mode-line mouse-3]))
+ (progn (hmouse-bind-key 2 #'action-key-depress-emacs
#'action-mouse-key-emacs)
+ ;; (hmouse-bind-key 3 #'assist-key-depress-emacs
#'assist-mouse-key-emacs)
)))
;;
;; XEmacs
@@ -474,9 +572,6 @@ select the corresponding element around point."
(define-key mouse-map x-button-middle-up 'action-mouse-key)
;; (define-key mouse-map x-button-right 'assist-key-depress)
;; (define-key mouse-map x-button-right-up 'assist-mouse-key)
- ;; Use these instead of the above for a true META-BUTTON binding.
- ;; (define-key mouse-map x-button-m-middle 'assist-key-depress)
- ;; (define-key mouse-map x-button-m-middle-up 'assist-mouse-key)
)))
(provide 'hmouse-sh)
diff --git a/hpath.el b/hpath.el
index 7e9a270..ee886b9 100644
--- a/hpath.el
+++ b/hpath.el
@@ -43,7 +43,7 @@ Default is `nil' since this can slow down normal file
finding."
;;; FILE VIEWER COMMAND SETTINGS
;;; ************************************************************************
-(defcustom hpath:external-open-office-suffixes
"doc[mx]?\\|ods\\|ppsx?\\|ppt[mx]?\\|xls[mx]?"
+(defcustom hpath:external-open-office-suffixes
"doc[mx]?\\|od[st]\\|ppsx?\\|ppt[mx]?\\|xls[mx]?"
"*Regexp of Open Office document suffix alternatives to display externally.
See http://www.openwith.org/programs/openoffice for a full list of
possible suffixes."
diff --git a/hsys-www.el b/hsys-www.el
index 38e3557..c46b138 100644
--- a/hsys-www.el
+++ b/hsys-www.el
@@ -37,18 +37,23 @@
;; eww-mode should define these next functions but presently does not,
;; so define them here when needed.
-(unless (fboundp 'eww-at-link)
- (defun eww-at-link ()
- "Return any eww web page hyperlink url at point or nil if none."
+(unless (fboundp 'eww-link-at-point)
+ (defun shr-link-at-point ()
+ "Return any shr hyperlink url at point or nil if none."
(get-text-property (point) 'shr-url))
+ (defun eww-link-at-point ()
+ "Return any eww web page hyperlink url at point or nil if none."
+ (shr-link-at-point))
(defun eww-bookmark-property (property)
- "Return the value of PROPERTY, a symbol, for the current eww bookmark line
or nil."
+ "Return value of PROPERTY, a symbol, for current eww bookmark line or nil."
(if (eq major-mode 'eww-bookmark-mode)
- (plist-get (get-text-property (line-beginning-position) 'eww-bookmark)
property)))
+ (plist-get (get-text-property (line-beginning-position) 'eww-bookmark)
+ property)))
(defun eww-history-property (property)
- "Return the value of PROPERTY, a symbol, for the current eww history line
or nil."
+ "Return value of PROPERTY, a symbol, for current eww history line or nil."
(if (eq major-mode 'eww-history-mode)
- (plist-get (get-text-property (line-beginning-position) 'eww-history)
property))))
+ (plist-get (get-text-property (line-beginning-position) 'eww-history)
+ property))))
(defib www-url ()
"Follow any non-ftp url (link) at point.
@@ -60,8 +65,8 @@ Valid values of this variable include
`browse-url-default-browser' and
;; Don't match if at the end of the buffer; end of line is
;; handled elsewhere.
nil)
- ((and (eq major-mode 'eww-mode) (eww-at-link))
- (ibut:label-set (eww-at-link))
+ ((and (eq major-mode 'eww-mode) (eww-link-at-point))
+ (ibut:label-set (eww-link-at-point))
(hact 'eww-follow-link))
((eq major-mode 'eww-bookmark-mode)
(ibut:label-set (concat (eww-bookmark-property :title)
diff --git a/hui-mouse.el b/hui-mouse.el
index 186fb4b..af003d8 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -88,16 +88,13 @@ Its default value is #'smart-scroll-down."
((and (fboundp 'button-at) (button-at (point))) .
((push-button) . (smart-push-button-help)))
;;
- ;; Direct access selection of helm-major-mode completions
- ((and (eq major-mode 'helm-major-mode) (smart-helm-line-has-action)) .
- ((smart-helm) . (smart-helm-assist)))
- ;;
;; 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-p 'hmenu))) .
- ((exit-minibuffer) . (smart-completion-help)))
+ (not (eq hargs:reading-p 'hmenu))
+ (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.
@@ -109,14 +106,15 @@ Its default value is #'smart-scroll-down."
((and (> (minibuffer-depth) 0)
(eq (selected-window) (minibuffer-window))
(eq hargs:reading-p 'hmenu)) .
- ((exit-minibuffer) . (exit-minibuffer)))
+ ((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)) .
- ((id-edit-yank) . (id-edit-yank)))
+ (not buffer-read-only)
+ (not (smart-helm-alive-p))) .
+ ((id-edit-yank) . (id-edit-yank)))
;;
((and (fboundp 'xref--item-at-point) (xref--item-at-point)) .
((xref-goto-xref) . (xref-show-location-at-point)))
@@ -158,6 +156,14 @@ Its default value is #'smart-scroll-down."
(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 (eobp)
+ (smart-helm-at-header)
+ (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
;; OOBR-FTR buffer, an *Implementors* listing buffer, or an
@@ -246,20 +252,20 @@ Its default value is #'smart-scroll-down."
((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) . (smart-javascript nil 'next-tag)))
;;
((and (or (and (eq major-mode 'python-mode) buffer-file-name)
(string-match "^Pydoc:\\|\\*?Python" (buffer-name)))
(smart-python-at-tag-p)) .
- ((smart-python) . (smart-python nil 'next-tag)))
+ ((smart-python) . (smart-python 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) . (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)))
+ ((smart-fortran) . (smart-fortran nil 'next-tag)))
;;
((eq major-mode 'occur-mode) .
((occur-mode-goto-occurrence) . (occur-mode-goto-occurrence)))
@@ -284,7 +290,7 @@ Its default value is #'smart-scroll-down."
((if (boundp 'hmail:reader)
(or (eq major-mode hmail:reader)
(eq major-mode hmail:lister))) .
- ((smart-hmail) . (smart-hmail-assist)))
+ ((smart-hmail) . (smart-hmail-assist)))
;;
((eq major-mode 'gnus-group-mode)
(smart-gnus-group) . (smart-gnus-group-assist))
@@ -378,7 +384,7 @@ smart keyboard keys.")
(save-excursion (end-of-line) (eobp)))
(defun smart-completion-help ()
- "Offer completion help for current minibuffer argument, if any."
+ "Offers completion help for current minibuffer argument, if any."
(if (where-is-internal 'minibuffer-completion-help (current-local-map))
(minibuffer-completion-help)))
@@ -397,36 +403,88 @@ smart keyboard keys.")
;;; smart-helm functions
;;; ************************************************************************
+(defun smart-helm-at-header ()
+ "Return t iff Action Mouse Key depress was on the first header line of the
current buffer."
+ (or (helm-pos-header-line-p)
+ (and (eventp action-key-depress-args)
+ (eq (posn-area (event-start action-key-depress-args))
+ 'header-line))))
+
(defun smart-helm-line-has-action ()
- "Return the current helm selection item or nil if line lacks an associated
action.
-Assume Hyperbole has already checked that point is in a helm completion
buffer."
- (let* ((helm-buffer (buffer-name))
- (selection (helm-get-selection)))
- (and (listp selection) selection)))
+ "Marks and returns the actions for the helm selection item at point, or nil
if line lacks any action.
+Assumes Hyperbole has already checked that point is in a helm buffer."
+ (if hkey-debug (setq cursor-type t))
+ (let ((helm-buffer (if (equal helm-action-buffer (buffer-name)) helm-buffer
(buffer-name))))
+ (save-excursion
+ (with-helm-buffer
+ (when (not (or (eobp)
+ (smart-helm-at-header)
+ (helm-pos-candidate-separator-p)))
+ (helm-mark-current-line)
+ (helm-get-current-action))))))
+
+(defun smart-helm-alive-p ()
+ ;; Handles case where helm-action-buffer is visible but helm-buffer
+ ;; is not, which (helm-alive-p) doesn't handle.
+ (and (featurep 'helm)
+ helm-alive-p
+ (window-live-p (helm-window))
+ (minibuffer-window-active-p (minibuffer-window))))
+
+(defun smart-helm-resume-helm ()
+ "Resumes helm session for the current buffer if not already active."
+ (unless (smart-helm-alive-p)
+ (unless (equal helm-action-buffer (buffer-name))
+ ;; helm-resume doesn't seem to set this properly.
+ (setq helm-buffer (buffer-name)))
+ (helm-resume helm-buffer)
+ (sit-for 0.2)))
(defun smart-helm()
- "Selects and executes the helm line at point."
- (let ((helm-buffer (buffer-name))
- (helm-alive-p t))
- (with-helm-window
- (setq cursor-type t)
- (helm-mark-current-line)
- ;; Hyperbole has checked that this line has an action prior
- ;; to invoking this function.
- (helm-execute-persistent-action))
+ "Executes helm actions based on Action Key click locations:
+ On a candidate line, performs the candidate's first action and remains in
the minibuffer;
+ On the first header line, displays a list of actions available for the
selected candidate;
+ On an action list line, performs the action after exiting the minibuffer;
+ At the end of the buffer, quits from helm and exits the minibuffer."
+ (let ((non-text-area-p (and (eventp action-key-depress-args)
+ (posn-area (event-start
action-key-depress-args))))
+ (eob (eobp)))
+ (smart-helm-resume-helm)
(if (> (minibuffer-depth) 0)
- (select-window (minibuffer-window)))))
+ (select-window (minibuffer-window)))
+ (when (smart-helm-alive-p)
+ (let* ((key (kbd (cond
+ (eob "C-g")
+ ;; If line of the key press is the first /
+ ;; header line in the window or outside the
+ ;; buffer area, then use {TAB} command to
+ ;; switch between match list and action list.
+ (non-text-area-p "TAB")
+ ;; RET: Performs action of selection and exits the
minibuffer.
+ ;; C-j: Performs action of selection and stays in
minibuffer.
+ (hkey-value
+ (if (helm-action-window) "RET" "C-j"))
+ (t "RET"))))
+ (binding (key-binding key)))
+ (if hkey-debug
+ (message "(HyDebug): In smart-helm, key to execute is: {%s};
binding is: %s"
+ (key-description key) binding))
+ (call-interactively binding)
+ ))))
(defun smart-helm-assist()
"Displays the selected item (including its action for the helm line at
point."
- (let* ((helm-buffer (buffer-name))
- (selection (helm-get-selection)))
- (with-helm-window
- (setq cursor-type t)
- (helm-mark-current-line)
+ (smart-helm-resume-helm)
+ ;; Hyperbole has checked that this line has an action prior
+ ;; to invoking this function.
+ (unwind-protect
(with-help-window "*Helm Help*"
- (princ "The current helm selection item is:\n")
- (print selection)))
+ (let ((helm-buffer (if (equal helm-action-buffer (buffer-name))
helm-buffer (buffer-name))))
+ (with-helm-buffer
+ (princ "The current helm selection item is:\n\t")
+ (princ (helm-get-selection (helm-buffer-get)))
+ (princ "\nwith an action of:\n\t")
+ (princ (helm-get-current-action)))))
(if (> (minibuffer-depth) 0)
(select-window (minibuffer-window)))))
@@ -455,9 +513,9 @@ If key is pressed:
(interactive)
(cond ((last-line-p) (Buffer-menu-execute))
((bolp) (Buffer-menu-mark))
- ((save-excursion
- (goto-char (1- (point)))
- (bolp))
+ ((save-excursion
+ (goto-char (1- (point)))
+ (bolp))
(Buffer-menu-save))
((br-in-browser) (br-buffer-menu-select))
(t (Buffer-menu-select))))
@@ -481,8 +539,8 @@ If assist-key is pressed:
(cond ((last-line-p) (progn (list-buffers) (forward-line 3)))
((bolp) (Buffer-menu-unmark))
((save-excursion
- (goto-char (1- (point)))
- (bolp))
+ (goto-char (1- (point)))
+ (bolp))
(Buffer-menu-unmark))
(t (Buffer-menu-delete))))
@@ -716,7 +774,7 @@ If key is pressed within:
(if gnus-current-article
(progn (goto-char (point-min))
(re-search-forward
- (format "^.[ ]+%d:" gnus-current-article) nil t)
+ (format "^.[ ]+%d:" gnus-current-article) nil t)
(setq this-command 'gnus-summary-next-page)
(call-interactively 'gnus-summary-next-page))
(goto-char (point-min))
@@ -913,20 +971,20 @@ If INDEX-ITEM is both a function and a variable, the
function
definition is used by default; in such a case, when optional
VARIABLE-FLAG is non-nil, the variable definition is used instead."
(when (stringp index-item)
- ;; Convert a string to an alist element.
- (if variable-flag
- ;; Match to variable definitions only.
- (setq index-item (assoc index-item
- (cdr (assoc "Variables"
(imenu--make-index-alist)))))
- ;; First try to match a function definition and if that fails,
- ;; then allow variable definitions and other types of matches as well.
- (let ((alist (imenu--make-index-alist)))
- (setq index-item (or (assoc index-item alist)
- ;; Does nothing unless the dash Emacs Lisp
- ;; library is available for the -flatten
function.
- (and (require 'dash nil t)
- (assoc index-item (-flatten alist)))))))
- (if index-item (cdr index-item))))
+ ;; Convert a string to an alist element.
+ (if variable-flag
+ ;; Match to variable definitions only.
+ (setq index-item (assoc index-item
+ (cdr (assoc "Variables"
(imenu--make-index-alist)))))
+ ;; First try to match a function definition and if that fails,
+ ;; then allow variable definitions and other types of matches as well.
+ (let ((alist (imenu--make-index-alist)))
+ (setq index-item (or (assoc index-item alist)
+ ;; Does nothing unless the dash Emacs Lisp
+ ;; library is available for the -flatten function.
+ (and (require 'dash nil t)
+ (assoc index-item (-flatten alist)))))))
+ (if index-item (cdr index-item))))
;;; ************************************************************************
;;; smart-info functions
diff --git a/hui-select.el b/hui-select.el
index beb318d..104107c 100644
--- a/hui-select.el
+++ b/hui-select.el
@@ -208,16 +208,17 @@
"Return non-nil if the character after optional POS (or point) matches a
syntax entry in `hui-select-syntax-alist'.
The non-nil value returned is the function to call to select that syntactic
unit."
(interactive "d")
- (or (numberp pos) (setq pos (point)))
- (setq hui-select-previous 'char)
- (let* ((syntax (char-syntax (or (char-after pos) (char-before pos))))
- (pair (assq syntax hui-select-syntax-alist)))
- (and pair (or hui-select-whitespace (not (eq (cdr pair)
'thing-whitespace)))
- ;; Ignore matches that are preceded by '\' as a quote, e.g. ?\'
- (or (not (char-after pos))
- (= pos (point-min))
- (and (char-before pos) (/= ?\\ (char-before pos))))
- (cdr pair))))
+ (unless (and (bobp) (eobp))
+ (or (numberp pos) (setq pos (point)))
+ (setq hui-select-previous 'char)
+ (let* ((syntax (char-syntax (or (char-after pos) (char-before pos))))
+ (pair (assq syntax hui-select-syntax-alist)))
+ (and pair (or hui-select-whitespace (not (eq (cdr pair)
'thing-whitespace)))
+ ;; Ignore matches that are preceded by '\' as a quote, e.g. ?\'
+ (or (not (char-after pos))
+ (= pos (point-min))
+ (and (char-before pos) (/= ?\\ (char-before pos))))
+ (cdr pair)))))
;;;###autoload
(defun hui-select-goto-matching-delimiter ()
diff --git a/hui-window.el b/hui-window.el
index 8c5dd07..bce76ce 100644
--- a/hui-window.el
+++ b/hui-window.el
@@ -307,7 +307,8 @@ If free variable `assist-flag' is non-nil, uses Assist Key."
(and assist-key-depress-window assist-key-release-window
(not (eq assist-key-depress-window
assist-key-release-window)))
- (and action-key-depress-window action-key-release-window
+ (and (not (smart-helm-alive-p)) ;; Ignore Action Key drag if helm is
active.
+ action-key-depress-window action-key-release-window
(not (eq action-key-depress-window action-key-release-window)))))
(defun hmouse-drag-diagonally ()
@@ -462,7 +463,8 @@ Beeps and prints message if the window cannot be split
further."
(defun smart-coords-in-window-p (coords window)
"Tests if COORDS are in WINDOW. Returns WINDOW if they are, nil otherwise."
- (cond ((and hyperb:emacs-p (eventp coords))
+ (cond ((null coords) nil)
+ ((and hyperb:emacs-p (eventp coords))
(eq (posn-window (event-start coords)) window))
((if (featurep 'xemacs)
(if (eventp coords)
diff --git a/hyrolo.el b/hyrolo.el
index acc5057..d213dc9 100644
--- a/hyrolo.el
+++ b/hyrolo.el
@@ -10,6 +10,14 @@
;; This file is part of GNU Hyperbole.
;;; Commentary:
+;;
+;; This is Hyperbole's advanced rolo system, HyRolo, for convenient
+;; management of hierarchical, record-oriented information. Most
+;; often this is used for contact management but it can quickly be
+;; adapted to most any record-oriented lookup task, for fast retrieval.
+;;
+;; See all the autoloaded functions herein for interactive commands.
+;; See the Info manual entry "(hyperbole)HyRolo" for usage information.
;;; Code:
;;; ************************************************************************
diff --git a/man/hkey-help.txt b/man/hkey-help.txt
index 641879b..cbbb8f1 100644
--- a/man/hkey-help.txt
+++ b/man/hkey-help.txt
@@ -51,11 +51,12 @@ Hyperbole Key Press/Click in Special Modes
Page Directory Listing Jumps to page <- same
Imenu Programming Identifier Jumps to in-buffer def Prompts for
identifier to jump to
C,C++,Objective-C,Java Modes Jumps to id/include def Jumps to next def
+ Assembly Language Mode Jumps to id/include def Jumps to next def
Java Cross-reference Tag Jumps to identifier def Jumps to next def
JavaScript and Python Modes Jumps to identifier def Jumps to next def
- Assembly Language Mode Jumps to id/include def Jumps to next def
- Any Lisp or Fortran Mode Jumps to id def Jumps to next def
+ Any Lisp or Fortran Mode Jumps to identifier def Jumps to next def
Emacs Lisp Compiler Error Jumps to def with error <- same
+ Other Compiler Error Jumps to src error line <- same
Grep or Occur Match Jumps to match source line <- same
Multi-buffer Occur Match Jumps to match source line <- same
Etags `TAGS' file entry Jumps to source line Button help
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 4c1caa2..61a5743 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -152,7 +152,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
<PRE>
Edition 6.0.3
-Printed September 8, 2016.
+Printed September 17, 2017.
Published by the Free Software Foundation, Inc.
Author: Bob Weiner
@@ -2097,12 +2097,22 @@ operation from any keyboard.
@kindex middle mouse key
@vindex hmouse-middle-flag
From the mouse, the @dfn{Action Key} is bound to your shift-middle
-mouse key (or shift-left on a 2-button mouse) and the @dfn{Assist Key}
+mouse key (or shift-left on a 2-button mouse). The @dfn{Assist Key}
is bound to your shift-right mouse key, assuming Hyperbole is run
under an external window system. (InfoDock users or those who set the
variable, @code{hmouse-middle-flag}, to @samp{t} before loading
Hyperbole, may also use the middle mouse key as the Action Key).
address@hidden hmouse-add-unshifted-keys
address@hidden unshifted mouse bindings
address@hidden unshifted mouse keys
address@hidden mouse keys, unshifted
address@hidden smart keys, unshifted
+If you want the middle mouse key as the Action Key and the right mouse
+key as the Assist Key for ease of use, then within your personal
address@hidden/.emacs} file, add:
+ @code{(add-hook 'hyperbole-init-hook 'hmouse-add-unshifted-keys)}.
+
@cindex key binding, smart keys
@cindex smart key commands
@cindex smart key assignments
- [elpa] externals/hyperbole 2161b1c 22/53: Added hmouse-pulse-flag and more pulsing; fixed many small internal Hyperbole button handling functions., (continued)
- [elpa] externals/hyperbole 2161b1c 22/53: Added hmouse-pulse-flag and more pulsing; fixed many small internal Hyperbole button handling functions., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 547c18f 26/53: Added gh#status to show github status; eliminated annot-bib matches from programming modes., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole cf8ae0c 49/53: Makefile (help): Removed misplaced double quote characters., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 50dc88d 23/53: V6.0.2c - Smart Key and popup menu buffer fixes; simplified Assist Key handling code, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 1188e43 51/53: smart-clib-sym: Removed file-newer Perl script dependency; file-newer: Removed., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole c45ce9b 52/53: Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 45714d5 46/53: Minor doc and code improvements, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 9b2d75a 53/53: Merge branch 'externals/hyperbole' of git+ssh://git.sv.gnu.org/srv/git/emacs/elpa into externals/hyperbole, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole a76d502 34/53: Hyperbole 6.0.2f pre-release, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 450688e 39/53: Corrected mouse-position and mouse-pixel-position to return selected frame; added key sequences with args support., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 55a1f04 06/53: 2017-09-18 Bob Weiner <address@hidden>,
Robert Weiner <=
- [elpa] externals/hyperbole ff2c292 20/53: Minor bug fixes for Koutlines; updated Hyperbole manual version, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 5d6b9cd 05/53: 2017-09-10 Bob Weiner <address@hidden>, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole ce6fa24 41/53: Updated HY-NEWS with all new features for next major release., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 152e2be 47/53: Highlighted explicit buttons when yanked; fixed region location bugs with hmouse-drag-thing and region kill, copy and yank, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 8fbfc1b 35/53: Renamed @ command functions to hycontrol-windows-grid. Updated manual and DEMO with newest commands., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole aba412a 32/53: HyControl changes: now a global minor mode; added @ window grid creation command; inverted selected mode-line for emphasis, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole bab59c8 25/53: V6.0.2d - Improved README and added git#=branch:file implicit button syntax., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 7503a3d 37/53: Action Mouse Key drag to modeline splits destination window before displaying the target item/buffer; added css to format Hyperbole HTML manual, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 1aec56c 27/53: Added drags between frames and outside Emacs, new mode-line drags, dired item drags,, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 2be4dd0 48/53: Fixed a bunch of small issues and released Hyperbole 7., Robert Weiner, 2017/11/15