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

Re: Use of vcs_info

Benjamin R. Haskell wrote:
> I don't fully understand how best to use vcs_info.

First just to make sure: you did find the documentation in
zshcontrib(1), right? (man zshcontrib | less -p GATHER)

> My first question is:  what's with the weird $vcs_info_msg_#_ variable 
> names? (Why not an array?)

Those variables are exported (there was a reason for it, I don't
remember what it was exactly). And you can't export arrays.

> But, beyond that, my big question is: Is there a way to access the 
> vcs_comm variable that's sprinkled throughout the VCS_Info functions 

You shouldn't.
That's an associative array to allow bidirectional communication between
various parts of vcs_info. If you want to know some internals, I could
explain them, but for *using* vcs_info, you do not need to know anything
about that particular variable.

> directory?  My guess is that the easiest thing for me to do would be to 
> simply remove the 'local -Ax vcs_comm' line in vcs_info, but everything 
> else is so well-organized that I figured I must just be missing some way 
> to get that variable exported.

What do you need that variable for? Maybe if you'd explain what you want
to do, I'd have a suggestion.

> The most helpful page so far was Frank Terbeck's prompt_ft_setup 
> page[1].  Otherwise I'd've had to have read even more of the code to 
> figure out the various
> zstyle ':vcs_info:*' actionformats ''
> zstyle ':vcs_info:*' formats ''
> zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat
> tricks that are available.
> I already do a bunch of stuff in my pre_cmd and pre_exec functions, and 
> I'd really like to just add some things to my prompt conditioned on 
> whether (for example) the current git repo is in a rebase, and maybe a 
> shortened version of the branch name.  So, is there a way to get the 
> info out of vcs_info?

Yes, there is.
The "shortened" make it a little trickier, though. In currently released
code (4.3.7), you can make one format to just be "%b" and change the
corresponding variable after calling vcs_info your precmd function.

Vcs_info in CVS has hooks. The manual explains them in some detail and
gives some simpler examples. You can use a "set-message" hook to get
full control over what will be inserted for the branch-name. That is
probably what you want.

Regards, Frank

In protocol design, perfection has been reached not when there is
nothing left to add, but when there is nothing left to take away.
                                                  -- RFC 1925

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