hyperbole-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Hyperbole implicit buttons for git


From: Robert Weiner
Subject: Re: Hyperbole implicit buttons for git
Date: Sat, 17 Apr 2021 13:54:54 -0400

Hi:

Thanks for using Hyperbole.  Let us know your thoughts and suggestions for improvements as you have done here; it is very helpful.

Your issue is that a hex number by itself is not a commit/git reference to Hyperbole, it requires a prefix in either of the two forms below:

commit fdac2a
git#fdac2a

That gives Hyperbole enough context to choose the right implicit button type and action.  It works in the shell buffer because your git show commit is printing that 'commit ' prefix.

Give it a try.  Note also that bug#1234 with a proper bug number will take you right to that GNU Emacs/Hyperbole bug discussion in Gnus.

Cheers,

Bob


On Sat, Apr 17, 2021 at 6:21 AM <wisepenguin@btopenworld.com> wrote:

Hi Bob,

Thanks to you and Mats for all the work on Hyperbole.


I'm fascinated by what it can do as it seems to offer a nice blend of power

and "transparency" making for a more pleasant interaction inside Emacs.


My issue is I'm having a hard time understanding the documentation

and getting it to work. It has to be me doing something wrong but I cannot see

where.


To help me learn and not be overwhelmed, as well as it's what I'm interested in

currently, I'm focusing on the "Buttons" - more specifically the the implicit buttons,

such as the git reference and I cannot get it to work.


My current understanding of implicit buttons are that Hyperbole can be made

to understand that any structured piece of text can have an action associated

with it. As git commit hashes are structured one action can be to show

the diff of that commit, and as it happens I believe this is the default action

in Hyperbole (more later).


This functionality sounds great - but it doesn't work for me. This is what I'm doing...


* Documentation: https://www.gnu.org/software/hyperbole/man/hyperbole.html#Implicit-Button-Types

* Emacs version 27.2

* Hyperbole 7.1.3 - installed from ELPA, then (require 'hyperbole)

* OpenBSD - but any nix system should be the same

* So that we're using the same details to reproduce I cloned

git://git.savannah.gnu.org/hyperbole.git


The part of documentation which makes me think git hashes should work are


'git-reference'...

a commit reference given by a hex number, 55a1f0

the commit diff is displayed

I don't understand the difference of 'git-commit-reference' as it seems to be handled

by 'git-reference' - but I can't get either to work...


Steps to reproduce the issue


$ cd $HYPERBOLE_CHECKOUT_ROOT

$ emacs README

M-x shell

*shell* $ git log -n5

# Choose random git commit such as fdac2afb96980d1c380d6234b5c919a5d220f78f

# then copy/M-w goto README then at the top paste/C-y it

# e.g. See fdac2afb96980d1c380d6234b5c919a5d220f78f for more details


The intention here is that inside a git project one of the files may reference a

git commit for more details such as why the change was made. I think this is

a great use of an implicit button - as we're already inside a git repo it's implicit

this hash could be a git commit. Doing M-<RET> on that commit in the README

file does nothing for me...


(Hyperbole Action Key): No action defined for this context; try another location


What is confusing me even more is that go back to the *shell* buffer and do

M-<RET> on that same commit and this time it works, it shows the commit

diff.


I'm not sure if this will help...


If given, PROJECT overrides any project value in REFERENCE. If no PROJECT value is provided, it defaults to the value of hibtypes-git-default-project


hibtypes-git-default-project is nil, yet it works frrom *shell* but not

from README. I'm also not sure what it needs to be set to, the docs say

it needs to be a "project name". Why would this not be a path to the git

repo - how does Hyperbole map names to paths?


On a slightly unrelated note doing these same steps on Windows don't work but for

a different reason, and I may be able to provide a patch here. The reason is

that doing M-<RET> on the commit ref in *shell* where Hyperbole does kick in

then issues...


(cd $DIR; git show $REF)


this does not work using the default cmd.exe on Windows due to at least 2 reasons


* ; does not work. Using && does

* When $DIR contains "~" it does not work and needs to be expanded first.


So on Windows a working command is


(cd "/full/path/to/dir" && git show $REF)


It's ok to use forward slashes in the path on Windows.


The simplest patch would be to always use && on all systems as that should work

everywhere. That would leave a remaining patch to handle expanding if

necessary. Any thoughts?


To recap


* I'm doing something wrong but I don't know where

* M-<RET> works for git commits from *shell* and does not from elsewhere

* Potential patch to use && for M-<RET> on git commits


I also have confusion over the HYPB syntax - as to help me learn I wanted

to see if I could write my own implicit git commit show button - but this

email is long enough.


Any pointers to documentation that can help clarify where I'm going wrong

would be a great help.


Kinds Regards

Richard


p.s. Just curious, the latest release on the FTP mirror is 7.1.1, but it seems the

latest is 7.1.3. This tripped me up to start with because 7.1.1 has an error

just doing (require 'hyperbole) which is resolved in 7.1.3.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]