#3 is now fixed if you 'git pull' again and then restart Emacs. I believe that resolves all the issues you have listed. -- Bob
On Thu, Jan 30, 2020 at 12:58 AM Robert Weiner <rsw...@gmail.com> wrote: > #2 was a change we made to the button flash time handling that did not > account for the persistence of customizable variables. It left you with a > flash time of 1000 seconds that would timeout when you pressed an > additional key. That has been reverted in the latest git repo master if > you ‘git pull’ in the Hyperbole source directory and then restart > Hyperbole/emacs. Buttons should work properly then. > > We have replicated #3 and should have that fixed in another day. > > Good catches. > > -- Bob > > > On Jan 29, 2020, at 4:16 PM, gravityp...@posteo.de wrote: > > > > Good afternoon, > > > > As recommended, I'm submitting my feedback on the 7.0.8 Test Release > here -- hopefully I'm doing this correctly. > > > > --------------------------------------------- > > > > OS: Windows 10 Home, Version 1909, Build 18363.592 > > > > GNU Emacs 26.3 (build 1, x86_64-w64-mingw32) of 2019-08-29 > > > > Hyperbole Built following the instructions on this Reddit post: > > > > > https://www.reddit.com/r/emacs/comments/euzxmx/gnu_hyperbole_708_test_release_with_patches/ > > > > Hyperbole Config: > > > > > ;; hyperbole > > > (require 'hyperbole) > > > (load "hyperbole-autoloads") > > > (load "hyperbole") > > > > > > --------------------------------------------- > > > > Feedback #1: Implicit Buttons are Much Improved! Action buttons are > great! > > ====================================================== > > > > I wanna say, first, that the implicit buttons are much improved in this > release -- both in their ability to find the buttons, and in the options > for labeling and linking. Likewise, the new Action Button syntax is cool! > I'm super excited for the final build. > > > > Feedback #2: Possible Bug Causing Implicit Buttons Require Additional > User Input to Activate > > =================================================================== > > > > Consider line 33 of the Hyperbole Demo document. It reads: > > > >> Hyperbole displays that file when you press {C-h h d a}. Hyperbole > assumes > > > > If I want to invoke the key-sequence implicit button, I move the cursor > there, and hit M-RET or click with the mouse action button. > > > > The expected behavior is, obviously, that the button flashes, then > activates. For me, though, activating the button causes the button to > highlight persistently -- and no action occurs until I make another > keypress. Any keypress that doesn't insert text works: ESC, Right-Arrow, > etc. > > > > Most of the time when I press the extra key, the button then just > activates as normal, and works as expected. Sometimes when I press a key, I > get an error like: > > > >> apply: Wrong type argument: commandp, (keymap (keymap (9 . > backward-button)) ESC-prefix) > > > > The debugger output: > > > >> Debugger entered--Lisp error: (wrong-type-argument commandp (keymap > (keymap (9 . backward-button)) ESC-prefix)) > >> #<subr call-interactively>((keymap (keymap (9 . backward-button)) > ESC-prefix)) > >> apply(#<subr call-interactively> (keymap (keymap (9 . > backward-button)) ESC-prefix) nil) > >> call-interactively@ido-cr+-record-current-command(#<subr > call-interactively> (keymap (keymap (9 . backward-button)) ESC-prefix)) > >> apply(call-interactively@ido-cr+-record-current-command #<subr > call-interactively> (keymap (keymap (9 . backward-button)) ESC-prefix)) > >> call-interactively((keymap (keymap (9 . backward-button)) > ESC-prefix)) > >> (cond ((null binding) (if (kbd-key:special-sequence-p key-series) > (progn (setq unread-command-events (nconc unread-command-events (mapcar > (quote identity) key-series))) t))) ((memq binding (quote (action-key > action-mouse-key hkey-either))) (beep) (message "(kbd-key:act): This key > does what the Action Key does.") t) (t (call-interactively binding) t)) > >> (let ((binding (key-binding key-series))) (cond ((null binding) (if > (kbd-key:special-sequence-p key-series) (progn (setq unread-command-events > (nconc unread-command-events (mapcar ... key-series))) t))) ((memq binding > (quote (action-key action-mouse-key hkey-either))) (beep) (message > "(kbd-key:act): This key does what the Action Key does.") t) (t > (call-interactively binding) t))) > >> kbd-key:act("\033") > >> actypes::kbd-key("\033") > >> apply(actypes::kbd-key "\033") > >> eval((apply action args)) > >> (if (or (symbolp action) (listp action) (hypb:emacs-byte-code-p > action) (and (stringp action) (not (integerp action)) (setq action > (key-binding action)))) (eval act) (eval action)) > >> (or (if (or (symbolp action) (listp action) (hypb:emacs-byte-code-p > action) (and (stringp action) (not (integerp action)) (setq action > (key-binding action)))) (eval act) (eval action)) t) > >> (prog1 (or (if (or (symbolp action) (listp action) > (hypb:emacs-byte-code-p action) (and (stringp action) (not (integerp > action)) (setq action (key-binding action)))) (eval act) (eval action)) t) > (hhist:add hist-elt)) > >> (let ((hist-elt (hhist:element))) (run-hooks (quote > action-act-hook)) (prog1 (or (if (or (symbolp action) (listp action) > (hypb:emacs-byte-code-p action) (and (stringp action) (not (integerp > action)) (setq action (key-binding action)))) (eval act) (eval action)) t) > (hhist:add hist-elt))) > >> (if (null action) (error "(actype:act): Null action for: `%s'" > actype) (and (symbolp action) (symtable:actype-p action) (setq args > (action:path-args-abs args))) (let ((hist-elt (hhist:element))) (run-hooks > (quote action-act-hook)) (prog1 (or (if (or (symbolp action) (listp action) > (hypb:emacs-byte-code-p action) (and (stringp action) (not ...) (setq > action ...))) (eval act) (eval action)) t) (hhist:add hist-elt)))) > >> (let ((prefix-arg current-prefix-arg) (action (actype:action > actype)) (act (quote (apply action args)))) (if (null action) (error > "(actype:act): Null action for: `%s'" actype) (and (symbolp action) > (symtable:actype-p action) (setq args (action:path-args-abs args))) (let > ((hist-elt (hhist:element))) (run-hooks (quote action-act-hook)) (prog1 (or > (if (or (symbolp action) (listp action) (hypb:emacs-byte-code-p action) > (and ... ... ...)) (eval act) (eval action)) t) (hhist:add hist-elt))))) > >> actype:act(actypes::kbd-key "\033\015") > >> apply(actype:act actypes::kbd-key "\033\015") > >> (if hbut (apply hrule:action (hattr:get hbut (quote actype)) > (hattr:get hbut (quote args)))) > >> hbut:act(hbut:current) > >> funcall(hbut:act hbut:current) > >> (cond ((and (called-interactively-p (quote interactive)) (null but)) > (hypb:error "(hbut-operate): No current button to operate upon")) ((not > (hbut:is-p but)) (hypb:error "(hbut-operate): Button is invalid; it has no > attributes")) (t (or but (setq but (quote hbut:current))) (hui:but-flash) > (funcall operation but))) > >> hui:hbut-operate(hbut:act "execute" hbut:current) > >> hui:hbut-act(hbut:current) > >> eval((hui:hbut-act (quote hbut:current))) > >> (progn (if hkey-debug (hkey-debug)) (eval hkey-action)) > >> (if (setq hkey-action (if assist-flag (cdr (cdr hkey-form)) (car > (cdr hkey-form))) pred (car hkey-form) pred-value (eval pred)) (progn (if > hkey-debug (hkey-debug)) (eval hkey-action)) (setq hkey-forms (cdr > hkey-forms))) > >> (while (and (null pred-value) (setq hkey-form (car hkey-forms))) (if > (setq hkey-action (if assist-flag (cdr (cdr hkey-form)) (car (cdr > hkey-form))) pred (car hkey-form) pred-value (eval pred)) (progn (if > hkey-debug (hkey-debug)) (eval hkey-action)) (setq hkey-forms (cdr > hkey-forms)))) > >> (let ((hkey-forms hkey-alist) (pred-value) (hkey-action) hkey-form > pred) (while (and (null pred-value) (setq hkey-form (car hkey-forms))) (if > (setq hkey-action (if assist-flag (cdr (cdr hkey-form)) (car (cdr > hkey-form))) pred (car hkey-form) pred-value (eval pred)) (progn (if > hkey-debug (hkey-debug)) (eval hkey-action)) (setq hkey-forms (cdr > hkey-forms)))) pred-value) > >> hkey-execute(nil) > >> (or (hkey-execute nil) (if (fboundp action-key-default-function) > (progn (funcall action-key-default-function) t))) > >> action-key-internal() > >> (prog1 (action-key-internal) (run-hooks (quote > action-key-depress-hook) (quote action-key-release-hook))) > >> action-key() > >> (if arg (assist-key) (action-key)) > >> hkey-either(nil) > >> funcall-interactively(hkey-either nil) > >> #<subr call-interactively>(hkey-either nil nil) > >> apply(#<subr call-interactively> hkey-either (nil nil)) > >> call-interactively@ido-cr+-record-current-command(#<subr > call-interactively> hkey-either nil nil) > >> apply(call-interactively@ido-cr+-record-current-command #<subr > call-interactively> (hkey-either nil nil)) > >> call-interactively(hkey-either nil nil) > >> command-execute(hkey-either) > > > > I get this behavior in elisp files as well. Consider the following: > > > >> ;; Info-mode > >> (when (eq system-type 'windows-nt) > >> (setq Info-additional-directory-list > >> (quote > >> ("~/Apps/msys2/usr/share/info" "~/Apps/msys2 > /mingw64/share/info")))) > > > > If I move to one of the paths listed, and hit the action button, > Hyperbole correctly recognizes the path as an implicit button, highlights > it, but then doesn't act upon it until I make some additional keypress. > This case does not throw an error, so I can't provide debug information. > > > > Feedback #3: Explicit Buttons Should Be Colored > > =================================== > > > > If I have an explicit button in a file -- <(fake button)> -- it does not > display in red as intended. Examining the way this stuff is set up, it > looks like the button color is tied to the `Hbut` face, and that the `Hbut` > face defaults to > > > >> foreground: SystemWindowText > >> background: SystemWindow > > > > This basically means black text on a white background, just like all the > other normal text in a file. > > > > Modifying these faces doesn't seem to stick, either. If I go into > Hyperbole's customization {C-h h c a} then the Hyperbole Buttons group, > then the `Face Hbut` property and set it to `red` or `#ff0000` -- Hitting > `Apply and Save` creates an entry in my custom.el: > > > >> '(hbut ((t (:background "SystemWindow" :foreground "red"))) t) > > > > and changes the button color correctly... but upon restarting Emacs, it > reverts back to `SystemWindowText`/`SystemWindow`. This is true even when > `custom.el` is loads correctly. I have also tried this without having an > external customization file -- in that case, customizing the face adds the > line above to the bottom of my init, but there's no difference in behavior. > > > > I was able to force the buttons to always be red by creating this hook > -- but that shouldn't be necessary, right? > > > >> (add-hook 'hyperbole-init-hook (lambda () > >> (hproperty:cycle-but-color "red"))) > > > > > > > > > > Thank you for all your hard work on this package. I use Hyperbole > basically every day, and I'm always excited for a new release! > > >