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

Re: strange behaviour of zcompile



Scott Smedley wrote:

> I'm having a small problem getting zcompile to only
> load a function the 1st time it is called. It works fine
> except when I do NOT output to STDOUT.
> 
> Here is a little excerpt from my shell which I hope illustrates
> the problem:
> 
> burns% uname -a
> Linux burns 2.2.12-20 #1 Mon Sep 27 10:40:35 EDT 1999 i686 unknown
> burns% echo $ZSH_VERSION
> 3.1.9-dev-1
> burns% cat > a
> a () { echo "function a executed" }
> print "function $0 initialised."
> burns% cat > b
> b () { echo "function b executed" }
> burns% zcompile -z -U a
> burns% zcompile -z -U b
> burns% fpath=(. $fpath)
> burns% autoload a b
> burns% a
> function a initialised.
> burns% a
> function a executed
> burns% b
> function b executed
> 
> function a is behaving as I expect it 2, but function b is
> being rther troublesome.
> 
> Could someone give me a pointer?

Sure. This is explained in the `Functions' node of the info file (I'm
not sure where this is in the manual). If a autoload file consists
only of a function definition (or KSH_AUTOLOAD is set), the function
is executed on autoloading. To inhibit this, you can just stick a `:'
command before or after the function definition.

It's probably a bit weird that zcompile does this even if given the -z 
option, but that behaviour *is* the standard zsh behaviour, and has
been for quite some time.

Bye
 Sven


--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



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