From 9428ee7123c83511cf40a9c8b3de94621e99aa66 Mon Sep 17 00:00:00 2001 From: Bob Weiner Date: Mon, 17 Feb 2020 02:02:15 -0500 Subject: [PATCH] Hyperbole 7.0.9 Test Release --- Changes | 38 ++++++++++++---------- HY-NEWS | 90 +++++++++++++++++++++++++++++++++++++++++++++------ hargs.el | 14 +++++--- hmouse-drv.el | 3 +- hmouse-sh.el | 2 +- hpath.el | 10 ++++-- hypb.el | 37 ++++++++++----------- hyperbole.el | 2 +- 8 files changed, 137 insertions(+), 59 deletions(-) diff --git a/Changes b/Changes index 1e52ea9a..75c7f338 100644 --- a/Changes +++ b/Changes @@ -1,7 +1,13 @@ -2020-02-16 Bob Weiner +2020-02-17 Bob Weiner * Published 7.0.9 test release. +* hpath.el (hpath:substitute-value): Updated to handle Texinfo @-quoted $@{hyperb:dir@} variable substitution. + +* hypb.el (hypb:replace-match-string): Minor code updates. + +2020-02-16 Bob Weiner + * hibtypes.el (grep-msg): Fixed handling files names with spaces followed by a null character rather than a colon as a separator. Note that the null is set to visibly display as a colon in Emacs. hpath.el (hpath:tramp-file-name-regexp): Don't match if a control char is found, notably a null (ASCII 0). @@ -9,8 +15,7 @@ * man/hyperbole.texi (Swapping Buffers): DEMO (Swapping Buffers): Added swapping buffers between frames. - -* hycontrol.el (hycontrol-window-swap-buffers): Fixed so current buffer remains the same but selected window + hycontrol.el (hycontrol-window-swap-buffers): Fixed so current buffer remains the same but selected window changes. (hycontrol-frame-swap-buffers): Fixed so current buffer remains the same but selected frame changes. Also made this work anytime there are two or more frames regardless of how many windows in each. @@ -27,18 +32,17 @@ * hyperbole.el (hyperb:autoloads-exist-p, hyperb:maybe-generate-autoloads, hyperb:generate-autoloads): Added and called from hyperb:init when initializing Hyperbole to generate auto-autoload files when - running froma non-packaged non-release source download of Hyperbole. + running from a non-packaged source download of Hyperbole. * hycontrol.el (hycontrol-quit-frames-mode): - (hycontrol-quit-frames-mode): man/hyperbole.texi (HyControl): Added doc of {q} vs. {Q}. - (hycontrol-quit-windows-mode): Deleted, created one unified quit command. (hycontrol-quit): Renamed from hycontrol-quit-frames-mode. + (hycontrol-quit-windows-mode): Deleted, created one unified quit command. (hycontrol-abort): Renamed from hycontrol-abort-mode. -* hui-window.el (hmouse-alist-add-window-handlers): Added not a modeline depress test for clause that - handles drags from a window to a modeline, since otherwise will catch drags from a modeline that - may move a frame. +* hui-window.el (hmouse-alist-add-window-handlers): Added 'not a modeline depress' test for the + clause that handles drags from a window to a modeline, since otherwise it will catch drags from a + modeline that may move a frame. (hmouse-drag-p): Added to test whether absolute depress and release positions differ. * hui-menu.el (hyperbole-menubar-menu): Removed set-menubar-dirty-flag call. @@ -47,12 +51,11 @@ * hkey-help.txt: hmouse-drv.el (action-key-depress, assist-key-depress): hui-window.el (action-key-modeline, assist-key-modeline): - Modeline window resizing is now handled in action/assist-key-depress - via a call to mouse-drag-mode-line, providing live visual feedback. - The same function is also overloaded in hmouse-drv.el to allow - repositioning frames that have minibuffer windows by dragging - from a bottommost modeline if the frame has a non-nil - 'drag-with-mode-line' parameter. + Modeline window resizing is now handled in action/assist-key-depress via a call to + mouse-drag-mode-line, providing live visual feedback. The same function is also overloaded in + hmouse-drv.el to allow repositioning frames that have minibuffer windows by dragging from a + bottommost modeline if the frame has a non-nil 'drag-with-mode-line' parameter. + man/hyperbole.texi, DEMO (Moving Frames): Added this new section. 2020-02-15 Bob Weiner @@ -77,8 +80,9 @@ calls that look like actypes:: and ibtypes:: jump to the associated defact and defib definitions. -* hbut.el (ibtype:create): Added definition-name property to a tag lookup on ibtypes::grep-msg looks up - the name used in the defib call, grep-msg. This had previously been done for actypes. +* hbut.el (htype:create): Generalized definition-name property used for tag lookup on names like, + ibtypes::grep-msg, which looks for the name used in the defib call, grep-msg. This had + previously been done for actypes. * hpath.el (hpath:posix-to-mswindows-separators): (hpath:mswindows-to-posix-separators) diff --git a/HY-NEWS b/HY-NEWS index f2008ed2..45eb165f 100644 --- a/HY-NEWS +++ b/HY-NEWS @@ -5,6 +5,9 @@ * V7.0.9 =========================================================================== + Many issues were resolved in this test version as documented in "Changes". + Only new features are documented here. + ACE WINDOW PACKAGE INTEGRATION - fast window and buffer switching - After installing the ace-window package and loading Hyperbole, execute @@ -16,21 +19,43 @@ you don't use region highlighting, i.e. transient-mark-mode, then use {C-u M-o t} 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 stillthrows the source buffer to the target - window. + active, this command still throws the source buffer to the target + window. See "DEMO#Displaying File and Buffer Items and Moving Buffers". + + SMART (ACTION AND ASSIST) KEYS + + - Modeline Drag Window Resizing: Smart Key window resizing now provides + live feedback during the drag. + + - Bottommost Modeline Frame Moving: After adding a 'drag-with-mode-line' + frame parameter with a value of t, a drag of any of its bottommost + modelines with either Smart Mouse Key repositions the frame on screen. + See "(hyperbole)Moving Frames" for information on how to configure this + feature. + + CUSTOMIZATON + + - hproperty:flash-face: Face used when flashing a button; now customizable. - DEMO + - hproperty:highlight-face: Face used to highlight a line; now customizable. - - Fixed many smaller issues that caused example implicit buttons to fail. + - inhibit-hsys-org: See ORG MODE section below. GLOSSARY - Hlink Definitions: Added Action Button, Elink, Ilink, Glink definitions. + HYCONTROL + + - Buffer/Window Swapping: Improved {~} so current buffer remains the same but + the selected window changes. Also made frame buffer swapping work anytime + there are two or more frames regardless of how many windows in each. See + "DEMO#Swapping Buffers". + HYROLO - - Hyrolo Add: Fixed new entry addition to add in sorted order and logic - operators to perform properly, after a bug in level calculation had been + - Hyrolo Add: Fixed new entry addition to add in sorted order and make logic + operators perform properly, after a bug in level calculation had been introduced. IMPLICIT BUTTONS @@ -38,13 +63,25 @@ - Double Quoting Key Series: Key series delimited by {} may now be in double quotes, e.g. "{C-x o}". - - Much improved conversion of MSWindows UNC paths to existing Posix mount - points when running Emacs under Windows Subsystem for Linux. + - Windows to Posix Paths: Much improved conversion of MSWindows UNC paths to + existing Posix mount points when running Emacs under Windows Subsystem for + Linux. See + + - Flashing Implicit Buttons: More types of implicit buttons now flash when + activated. + + - Improved Grep Output Parsing: Recognizes file names with spaces followed by + the null (^@, ASCII 0) character. + + - Texinfo @-Quoted Path Variables: Hyperbole now can resolve paths as + complicated as this: @file{$@{hyperb:dir@}/DEMO#POSIX and MSWindows Paths} + in Texinfo files if the Action Key is pressed on the / or after, i.e. after + the variable name. KEYS - - Removed {C-c C-r} key binding for explicit button renaming due to - conflicts with some major modes + - Deleted C-c C-r Global Binding: Removed {C-c C-r} key binding for explicit + button renaming due to conflicts with some major modes ORG MODE @@ -54,6 +91,11 @@ - inhibit-hsys-org: New customization that when set non-nil disables all Smart Key support in any Org major or minor mode. + - hsys-org-hbut-activate-p: Added to org-metareturn-hook so local binding + of {M-RET} in org-mode activates Hyperbole buttons when point is over + them. (It doesn't run the full set of Action Key actions). + + PROGRAMMING - Auto Imenu Reindexing: If using Emacs imenu package, the Action Key @@ -62,6 +104,34 @@ will now automatically rebuild the index to have correct pointers. (Does not require use of the imenu-auto-rescan setting. + - hypb:mark-object: Gives Hyperbole-specific strings and symbols + a hyperbole property that distinguishes them from other objects. + + - hypb:object-p: Tests whether has the hyperbole property. This is useful + in hpath:relative-to and hpath:absolute-to where any string with a + hyperbole property is ignored as a potential path. For example, this + prevents removal of trailing whitespace from normalized key series. + + - hbut:act: Hyperbole button parameter is now optional and defaults to + the located button, the symbol, 'hbut:current. + + - ibtypes tag lookup: Implicit button type names such as ibtypes::grep-msg + are now properly found in tags tables using their defib names + (e.g. grep-msg). + + - hmouse-drag-p: tests whether absolute Smart Mouse Key depress and + release positions differ (relative to display/screen coordinates). + + - hycontrol-quit: Unified the two Hycontrol mode quit commands into this one. + hycontrol-abort: Renamed from hycontrol-abort-mode. + + - hyperb:autoloads-exist-p + hyperb:maybe-generate-autoloads + hyperb:generate-autoloads: Added and called from hyperb:init when + initializing Hyperbole to generate auto-autoload files when + running from a non-packaged source download of Hyperbole. + + =========================================================================== * V7.0.8 =========================================================================== diff --git a/hargs.el b/hargs.el index fb5307cf..eba70f24 100644 --- a/hargs.el +++ b/hargs.el @@ -113,7 +113,9 @@ With optional EXCLUDE-REGEXP, any matched string is ignored if it this regexp." (end-search-func (if end-regexp-flag 're-search-forward 'search-forward)) (count 0) - start end) + first + start + end) (save-excursion (beginning-of-line) (while (and (setq start (funcall start-search-func start-delim limit t)) @@ -125,9 +127,9 @@ With optional EXCLUDE-REGEXP, any matched string is ignored if it this regexp." ;; prior to the original point. (funcall end-search-func end-delim opoint t) (setq count (1+ count))) - (setq start nil)) - (when (and (not start) (> count 0) (zerop (% count 2)) - (string-equal start-delim end-delim)) + (setq first (or first start) + start nil)) + (when (and (not start) (> count 0) (zerop (% count 2))) ;; Since strings can span lines but this function matches only ;; strings that start on the current line, when start-delim and ;; end-delim are the same and there are an even number of @@ -135,7 +137,9 @@ With optional EXCLUDE-REGEXP, any matched string is ignored if it this regexp." ;; search to match to what should probably be the start-delim, ;; assume point is within a string and not between two other strings. ;; -- RSW, 02-05-2019 - (setq start (point))) + (setq start (if (string-equal start-delim end-delim) + (point) + first))) (when start (forward-line 2) (setq limit (point)) diff --git a/hmouse-drv.el b/hmouse-drv.el index af87d537..b83d9faa 100644 --- a/hmouse-drv.el +++ b/hmouse-drv.el @@ -792,8 +792,7 @@ frame instead." (mouse-drag-line start-event 'mode)) ((and (frame-parameter frame 'drag-with-mode-line) (window-at-side-p window 'bottom)) - ;; Drag frame when the window is on the bottom of its frame and - ;; there is no minibuffer window below. + ;; Drag frame when the window is on the bottom of its frame. (mouse-drag-frame start-event 'move))))) (defun hkey-debug () diff --git a/hmouse-sh.el b/hmouse-sh.el index 7644977a..7b89c8df 100644 --- a/hmouse-sh.el +++ b/hmouse-sh.el @@ -477,7 +477,7 @@ With optional MIDDLE-KEY-ONLY-FLAG non-nil, bind only the middle mouse key." ;; for that. Use mouse1 only for setting point and drag selecting ;; regions. ;; - ;; Don't bind mouse1 to action-key-depress-emacs to allow it to + ;; Don't bind mouse-1 to action-key-depress-emacs to allow it to ;; follow links because that will disable the region highlighting ;; that we would rather allow.` (customize-set-variable 'mouse-1-click-follows-link nil) diff --git a/hpath.el b/hpath.el index 545875e6..2fcf42d9 100644 --- a/hpath.el +++ b/hpath.el @@ -1114,7 +1114,8 @@ path form is what is returned for PATH." (setq path (hbut:key-to-label (hbut:label-to-key path))) (or (not (string-match "[()]" path)) (string-match "\\`([^ \t\n\r\)]+)[ *A-Za-z0-9]" path)) - (if (string-match "\\$\{[^\}]+}" path) + ;; Allow for @{ and @} in texinfo-mode + (if (string-match "\\$@?\{[^\}]+@?\}" path) ;; Path may be a link reference with a suffix component ;; following a comma or # symbol, so temporarily strip ;; these, if any, before expanding any embedded variables. @@ -1283,12 +1284,15 @@ in-buffer path will not match." ;; Uses free variables `match' and `start' from `hypb:replace-match-string'. (substitute-in-file-name (hypb:replace-match-string - "\\$\{[^\}]+}" + "\\$@?\{\\([^\}]+\\)@?\}" path (lambda (str) (let* ((var-group (substring path match start)) - (var-name (substring path (+ match 2) (1- start))) (rest-of-path (substring path start)) + (var-ext (substring path (match-beginning 1) (match-end 1))) + (var-name (if (= ?@ (aref var-ext (1- (length var-ext)))) + (substring var-ext 0 -1) + var-ext)) (trailing-dir-sep-flag (and (not (string-empty-p rest-of-path)) (memq (aref rest-of-path 0) '(?/ ?\\)))) (sym (intern-soft var-name))) diff --git a/hypb.el b/hypb.el index 148c7f3f..131ea322 100644 --- a/hypb.el +++ b/hypb.el @@ -551,26 +551,23 @@ that returns a replacement string." (literal newtext) (t (mapconcat (lambda (c) - (if special - (progn - (setq special nil) - (cond ((eq c ?\\) "\\") - ((eq c ?&) - (substring str - (match-beginning 0) - (match-end 0))) - ((and (>= c ?0) (<= c ?9)) - (if (> c (+ ?0 (length - (match-data)))) - ;; Invalid match num - (error "(hypb:replace-match-string) Invalid match num: %c" c) - (setq c (- c ?0)) - (substring str - (match-beginning c) - (match-end c)))) - (t (char-to-string c)))) - (if (eq c ?\\) (progn (setq special t) nil) - (char-to-string c)))) + (cond (special + (setq special nil) + (cond ((eq c ?\\) "\\") + ((eq c ?&) + (match-string 0 str)) + ((and (>= c ?0) (<= c ?9)) + (if (> c (+ ?0 (length + (match-data)))) + ;; Invalid match num + (error "(hypb:replace-match-string) Invalid match num: %c" c) + (setq c (- c ?0)) + (match-string c str))) + (t (char-to-string c)))) + ((eq c ?\\) + (setq special t) + nil) + (t (char-to-string c)))) newtext "")))))) (concat rtn-str (substring str start)))) diff --git a/hyperbole.el b/hyperbole.el index 448b8143..d6fd8086 100644 --- a/hyperbole.el +++ b/hyperbole.el @@ -5,7 +5,7 @@ ;; Author: Bob Weiner ;; Maintainer: Bob Weiner , Mats Lidell ;; Created: 06-Oct-92 at 11:52:51 -;; Released: 16-Feb-20 +;; Released: 17-Feb-20 ;; Version: 7.0.9 ;; Keywords: comm, convenience, files, frames, hypermedia, languages, mail, matching, mouse, multimedia, outlines, tools, wp ;; Package: hyperbole