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

Re: Rehash after installs



On 14 August 2011 06:03,  <gi1242+zsh@xxxxxxxxx> wrote:
> On Sat, Aug 13, 2011 at 09:05:35AM +0200, Sebastian Tramp wrote:
>
>>> I'm to the point where I mostly always remember now to rehash after I
>>> install anything. But it's still nice to do this automatically when
>>> possible. Rather than try to wrap all the system utils that install
>>> things, I'd like a reasonably generic way to do it. I'm just checking
>>> with the list here to see if this looks like a safe way to do such
>>> checking, and make sure there's nothing glaringly wrong about it...
>>>
>>>   typeset -ga precmd_functions
>>>   rehash-last-install() { fc -l -1 |grep -q install && { print
>>> rehash-ing; rehash } }
>>>   precmd_functions+=rehash-last-install
>>>
>>> Basically, this just looks at the last command (via fc) to see if
>>> there was an "install" somewhere in it, and runs itself after every
>>> command. It's going to rehash more often than necessary (false
>>> positives), but I can't think of why that would be a bad thing since
>>> rehashing looks pretty cheap.
>>
>> On debian, "dpkg -i" will also install packages (beside apt-get),
>> and especially on ubuntu, users often utilize synaptic and the
>> software-center for that (but imho these graphical installers can be
>> ignored for the reason that their users do not tend to have a shell
>> always open somewhere)
>
> Another (perhaps nicer) solution would be to "rehash" if command
> completion failed, and then retry completion after that.
>
> This way even with a GUI installation program you'll get current
> completion info. I've no idea how to implement it though; so if someone
> does it (or has already done it), please let me know.

You mean something like
zstyle ':completion:*' rehash true
?

-- 
Mikael Magnusson



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