Excellent feedback and error reporting.  Let us work on these and get back to 
you.

And if you have a little time, go to the 7.0.8 announcement post on 
www.reddit.com/r/emacs and add a message describing you day-to-day use of 
Hyperbole and how it helps you.  That would be very helpful

-- 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!
> 

Reply via email to