Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: gen-hg-bookmark-string hook in vcs_info is not very helpful

yegle wrote on Fri, 22 Sep 2017 11:33 -0700:
> Specifically, the issue with these lines:
> https://github.com/zsh-users/zsh/blob/master/Functions/VCS_Info/Backends/VCS_INFO_get_data_hg#L140-L142

(Tangential: <http://www.zsh.org/cgi-bin/mla/redirect?WORKERNUMBER=37966>)

>     if VCS_INFO_hook 'gen-hg-bookmark-string' "${hgbmarks[@]}"; then
>         # If there is an active bookmark, annotate it and put it first.
>         if [[ -n $curbm ]] ; then
>             hgbmarks[(i)$curbm]=()
>             hgbmarks[1,0]="${curbm}*"
>         fi
>         hgbmstring=${(j:, :)hgbmarks}
>         # Deannotate the array, in case later code expects it to be valid.
>         # (The order is not restored.)
>         [[ -n $curbm ]] && hgbmarks[1]=${${hgbmarks[1]}[1,-2]}
>     else
>         hgbmstring=${hook_com[hg-bookmark-string]}
>     fi
> Because the existing code append $curbm with *, it seems like I can just
> modify curbm in my hook to add color escape string.

You can't, for two reasons:

1. $curbm is private to VCS_INFO_get_data_hg; it is not part of the API.
The API includes only what's in the manual, e.g., $hook_com and $ret.

2. The codepath you're quoting is the codepath for when there is no
hook.  You have a hook so you _should_ be taking the 'else' branch.  The
reason you don't is that your hook function neglects to set ret=1
before it returns (again, that's documented).

tl;dr: Add "ret=1" in your hook function.

> Can anyone propose a patch to fix this issue and make
> gen-hg-bookmark-string more useful? I would be happy to send a PR if
> the repo is hosted on Github or something more user friendly :-(

For future reference, "save the output of 'git diff' to a *.txt file and
attach it to an email".

Messages sorted by: Reverse Date, Date, Thread, Author