From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5099 invoked from network); 14 Jul 2000 07:11:40 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 14 Jul 2000 07:11:40 -0000 Received: (qmail 28876 invoked by alias); 14 Jul 2000 07:11:17 -0000 Mailing-List: contact zsh-users-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 3282 Received: (qmail 28869 invoked from network); 14 Jul 2000 07:11:16 -0000 Date: Fri, 14 Jul 2000 09:11:14 +0200 (MET DST) Message-Id: <200007140711.JAA01224@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-users@sunsite.auc.dk In-reply-to: Scott Smedley's message of Fri, 14 Jul 100 13:29:47 +1000 (EST) Subject: 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@informatik.hu-berlin.de