Sorry, I missed this message.  I will read it and respond later this week.
Thanks for the ideas. -- Bob

On Thu, Jan 30, 2020 at 3:35 PM <gravityp...@posteo.de> wrote:

> Glad it wasn't just me! Cool, glad I could help out!
>
> Looking back at the user group, you also asked for feature requests, and
> I had a couple -- though I'm not sure how feasible any of them are.
>
> Feature Idea #1: `jump-to-next-button` Command
> ==============================================
>
> This is something that would be nice to have rather than a missing
> feature, but
> I've often wished there were a command I could bind to a key that would
> jump to
> the next explicit button in a file -- sort of like how you can tab
> between
> fields in the Customize interface. I created a macro to do this using
> regexes,
> but it was kinda... janky.
>
> Feature Idea #2: Honor styling markup from other modes in Koutline Files
> ========================================================================
>
> I use the Markdown and Org styling stuff reflexively in other documents
> -- it would
> probably increase usage if some of those styling options were available
> in KOTL
> files. Ideally Koutliner could draw the markup handling from an existing
> mode
> rather than re-implementing every possible markup language -- but that
> actually
> brings me to...
>
> Feature Idea #3: Treat Koutliner cells as containers for other content
> ======================================================================
>
> I haven't used a lot of Koutliner -- despite loving the Augment-style
> numbering
> -- primarily because it doesn't appear to be compatible with the
> document
> systems I'm already heavily bought into, like Org and Markdown. Now, it
> can
> export outlines to Org and Html, and from there I can get it into
> something
> more familiar, but it feels like there's more opportunity here.
>
> One of the hugely cool things about Koutliner, and which is missing from
> Org,
> is the Cell concept. I like the idea of addressable cells that I can
> work with
> rather than the more loosey-goosey "just add custom ids to each
> headline"
> approach that Org takes.
>
> I don't know how feasible this is, but it would be kinda amazing to be
> able to
> treat Koutliner as kind of an overlay for Org content. So, for example,
> I might
> have a cell:
>
> >    2a. Table of Material for Review
> >
> >        %ORGBLOCK_START%
> >
> >        | Date Due | Item ID |
> >        |----------+---------|
> >        | 1/29     |   21515 |
> >        | 2/20     |   25155 |
> >        | 3/19     |   29901 |
> >        | 4/22     |   31555 |
> >
> >        %ORGBLOCK_END%
>
> And have Koutliner recognize the block start/end tags and let Org do the
> formatting in those places. You could then create formally structured
> Koutliner
> files that also include org-style headings and formatting and whatnot. I
> think
> that'd be awesome.
>
> To go one step further -- some folks are working on adding Transclusion
> fucionality to Org. It would be *even cooler* to be able to just include
> a
> chunk of another file in a Koutliner document, and truly amazing to
> transclude
> a block from any file into a Koutliner doc so the changes don't have to
> be
> tracked -- they just happen.
>
> This would then give me all the benefits of a more rigid document type
> and all
> the flexibility and styling options of a system like org -- plus crazy
> hypertext stuff that even the Web doesn't have.
>
> It's also, like, the most pie-in-the-sky feature request in the
> universe, haha.
>
> Feature Idea #4: Embeddable Global Buttons
> ==========================================
>
> I'm guessing this might become prohibitive from a performance
> perspective if
> you have a very large global button file, but -- it would be awesome if
> I could
> use the button file as a persistent list of buttons that I could add to
> any
> file. Or, more ambitiously, to combine the explicit buttons, and the
> global
> buttons, into a single table/database that I could then draw on to embed
> buttons into my documents anywhere.
>
> Say, for instance, that I've got a global button that jumps to a file
> where I
> collect extracts from the reading I do -- <(Extracts File)>. I can think
> of a
> number of occasions where it would be cool to drop that button into my
> notes.
>
> I also think it would be a handy way to interlink, say, a
> zettelkasten-style notes
> system: I would have collection of global buttons that point to the
> entries in the
> zettelkasten -- and I could then drop them into other notes and other
> files as
> appropriate. For this use case, someone will surely say: "But you can
> just use
> Org links for that!" But what if my notes aren't all in Org? Some are in
> markdown, some are in plain text. What if I wanted to reference a Zettel
> entry
> in some code I'm working on? The thing that's awesome about Hyperbole is
> it
> works everywhere -- and unifying or globalizing the button functionality
> would
> be another way to have Hyperbole act as the hypertext layer for Emacs.
>
> At any rate -- looking forward to the final release of 7.0.8!
>
> On 30.01.2020 06:58, Robert Weiner 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!
> >>
>

Reply via email to