Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Wierd autoload problems with nested directories
- X-seq: zsh-workers 21333
- From: Ulf Magnusson <ulfalizer@xxxxxxxxx>
- To: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- Subject: Re: Wierd autoload problems with nested directories
- Date: Tue, 14 Jun 2005 17:40:22 +0200
- Cc: zsh-workers@xxxxxxxxxx
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=O87I96ppIa0AmJVzfTBpC9ZWV+huzH9jGu1z3fN5o5Lp+hRr6vWvUV7wfUED7UDHWmlNO5OAOSkZCLpaQgKCNjYLZD1Uq5ZPvgojcqau+rWJEZcuvjX7WBH8uuKr3qLfbU6yT3fGpkFpCpewS5YGSzap1pUroqr2DpSMuSqvzIs=
- In-reply-to: <1050614030540.ZM6143@xxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <cf7bbda9050613175557b9c4a@xxxxxxxxxxxxxx> <1050614030540.ZM6143@xxxxxxxxxxxxxxxxxxxxxxx>
- Reply-to: Ulf Magnusson <ulfalizer@xxxxxxxxx>
On 6/14/05, Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> wrote:
> On Jun 14, 2:55am, Ulf Magnusson wrote:
> }
> } fpath=(/home/ulf/lib/zsh/completions $fpath)
> } autoload -U $fpath[1]/*(:t)
> }
> } fpath=(/home/ulf/lib/zsh $fpath)
> } autoload -U $fpath[1]/*(:t)
>
> You might note that this will result in the "completions" subdirectory
> being treated as the name of a function for autoloading. You probably
> should be doing
>
> autoload -U $fpath[1]/*(.:t)
>
You're right of course.
> Also please note that the location from which the function is loaded
> depends on the value of $fpath at the time you call the function, NOT
> upon the value of $fpath at the time you run "autoload".
>
> } print -l ${fpath[1,3]} yields
> }
> } /home/ulf/lib/zsh/completions
> } /home/ulf/lib/zsh
> } /usr/local/share/zsh/site-functions
> }
> } , as expected.
>
> That's certainly not what *I* would have expected. If the two fpath
> assignments really do appear in the order that you show them, I would
> expect:
>
> /home/ulf/lib/zsh
> /home/ulf/lib/zsh/completions
> /usr/local/share/zsh/site-functions
>
Another mistake there, the two fpath= / autoload pairs appear in the
opposite order in my .zshrc.
> Also, I'd have expected /usr/local/share/zsh/$ZSH_VERSION/functions
> (for suitable expansion of $ZSH_VERSION) to appear in the list.
/usr/local/share/zsh/$ZSH_VERSION/functions doesn't show up in my
fpath even if I comment out all fpath-altering lines in my .zshrc.
Only the subdirectories of /usr/local/share/zsh/$ZSH_VERSION/functions
do. It shouldn't be a problem though, since no functions are stored it
the base directory anyway.
>
> } For some reason, my completions will only work ('work' as in zsh not
> } using its default completion behaviour for the context in question) if
> } I place them in /home/ulf/lib/zsh.
>
> At what point amidst all of this do you run "compinit"?
>
> Merely autoloading a completion function isn't good enough -- compinit
> has to examine the file and read the #compdef line. That means you must
> not run compinit until after you've added to fpath all the directories
> where completion functions might be found.
>
I ran compinit before autoload:ing the functions in
/home/ulf/lib/zsh/completions. Moving the call after the autoload
fixed my problems. The user-friendly guide could have been clearer in
telling you that you need to call compinit after setting up fpath. I
only skimmed the manual (it's often way over my head as a zsh newbie),
so I don't know if it's clearer on this point. Thanks for the help!
Ulf
Messages sorted by:
Reverse Date,
Date,
Thread,
Author