From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22128 invoked from network); 1 Apr 1997 00:18:24 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 1 Apr 1997 00:18:24 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id TAA10993; Mon, 31 Mar 1997 19:05:51 -0500 (EST) Resent-Date: Mon, 31 Mar 1997 19:05:51 -0500 (EST) Date: Tue, 1 Apr 1997 01:08:43 +0100 (BST) From: Zefram Message-Id: <17704.199704010008@stone.dcs.warwick.ac.uk> Subject: ksh autoloading X-Patch: 246 Resent-Message-ID: <"Wz2K-1.0.ih2.V55Gp"@euclid> To: zsh-workers@math.gatech.edu Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3060 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu -----BEGIN PGP SIGNED MESSAGE----- This patch makes autoloading work *exactly* like ksh -- at least, it does in ksh emulation mode. There is a new option, KSH_AUTOLOAD (the 110th option if all my recent ones are accepted), which makes the function definition file just be sourced, regardless of what (if anything) it does. The autoloading mechanism is also changed. Rather than sorting out the autoloading when looking up the function definition, the autoloading *is* the definition -- a special type of command, used only in undefined functions. When this command gets executed, it autoloads and then calls the function. What this buys, other than simplicity and maintainability, is that in the KSH_AUTOLOAD case it sources the file in the context of the function execution, as ksh does. In fact, the file can even declare local parameters, that are still in scope during the first function execution, but go out of scope thereafter. There is one remaining incompatibility between ksh and zsh autoloading. In ksh, if a command can't be found in $PATH, it is treated as an autoloaded function and searched for in $FPATH as a fallback. I'll implement this in a separate patch. This patch depends on my previous autoloading patch, of course. -zefram begin 644 autoload_patch.gz M'XL("!MJ/S,"`V%U=&]L;V%D7W!A=&-H`.5;>U?;2);_V_D4178F;1L9+#_! M3#+'`9-P%@P'S#PZF\/*LFRKL26/'A#2S7[VO8^J4LG()#-)MO?LYJ33=JGJ MUJW[_-U;AN_MS/-\=I_XB\8-XYR$LV?O[W=UZ<[=9%_5ZK[7?JS=+ M]H[=>5&KU9Y?8(MZMU??[S5:+ZKY/_A==/:LO8Z@KT),_6#B?2H[:1(N0F=2 M@2&7AZ9IX"9^&,264$_]8&9,,$:%GEQYL27\Q%N6DR0C*CZ(.R<=A)#S'G8MP*I*YE\V)1?E^[L,#)_($CL0X)=O#@L5NY#F))QP] M+)9.=.M-1`K,P:F\R0[,&@%9X&2Z$'R+!&N`Z)'S:$%*VMFG;`KX7*P M(N.HDDKF42LG`JM%-3_K4N)?]Z4#H(A6;,:3'2"(`E+RJ?D5""A"7,=@ED`% MS#8*P('QPPQXB[Q5Y,5@O(X4!7@3!9L*[AB$P6 M79S%&AVKV6`K1S+PM;VOE':LY3'!B#7UO0C"+YP)Y+OPXP2D>^\GJLDZ.<+39(;X-&W*3<-R)(IA1XNA:5LFVW MOQ!\MK\4O;9%/[,5R;C,FA!WP0KT*2JP*5*7Y\@RN3P%D"J#:?^G*3T,<#\) M.9H\K,!6$E&;PF`%C.4JQ7R>;3]WT&:`SCBG_3OQZ=GY[WCTSQRR0,')@S*B)< M*8;AR);@S,N;ZRP=!IC=1.PO5PO M%:/Y,'X!8:#-X%-6HANB3),<8-$RI)"+I@2GC"4*R=1#X1I(/`$AX!Q\(#*O M>.Z!]!F8D&QRTH)])Y[RI\Q84=*L]1B/G,D,C=JP/5-RH)&.6`6L MQ7($&7@+H(;^X]R%_@0>:0VBWX:LK0!5IAZ,4\WT"7$^'0! M,O37W'$,.\R([0-DX)E3OSF/W M==,(,B@Z6'2+F[%UA!$9GCMW@AD>#%-H385LR(_NRLQXCE.YYX,;@\.3^2R+9A=;J<`8N$T(($:6?Y MLK-O=?=4OE2!*P]E3.]'J3Q@X/N#VE*@1L-@`GKZ)84@+0_EZ!.A9+;7);-= M()GMYR6SG0,IH\O^1051Q[!_RJ*0.2_V9P!6@)LD5EA,*R_YO2D+=C!J+C$0(R)UD%X5D-\!E/] M!`O&)(VMS.*0VM'@[?4[@SI_SY%WIL@UJ4>2IV"?IS/XV\G(($-?GS"9N2UQ M1+R`@/4CY7U&D,3`GX4$B$\QP#L#4NQPF6Q@C%!&.LYP63)!L000QBQ9UC(? M."ICHH>*=^YQ[AC\/6%U@H+1.N%<5R?OM!$J&.U!W89&RMZXAV68K1SL=[6F MWT,DN=(]9URF(_,@]8(&FTVL@)HR,9,8C>5I_4!#JQ0[ILD0C3UEZ*O=\ZEA MF;458\[U3J'=[;6Z4&%AI]#.U5=%\ZG$:G1Z[6YQRFC;5JO=R9(I:RJJ1 M_7'D@'50,RCR_I'Z$5>N$V_A+^$D`'C3,>,F4<:ZX`^_(G;_T/CX"+5"Y"#P MHQP.X(G2",V14[!PD&FD`)B;R20WSBEEF2ZP/SB>EF]C*+2U>M>KA0$78`B:B$KD`3#*\!^A8#P3&Q(0*L!*P$/Y M+<$I!U#79OPK?5LA7""6Q[COPWLT+":P#&%7-#"$;2R`6IP\8#GB0#%3,]<2 M?J8:A7&C4:4\4Z,`#1_1]+WS$(,)!Y.%-T%]L$^I/1&8`T)&!`VV'GC13D6F MCD_/AS<7ER7!DY&Q94ZTB'RKX8&8)H"CH$)LG\7.:RLYR%;FJ1;[C MYNR^U;/M7A/]I-LFV]X\M=.ST4N*^VUMP%5VVW02.;2GNXPE@7^JZ.E0PLAR M59:D:Z:T<&8$Q79XR:Y:'<^GXK4H7\U1_A7QV<4ZQ@7,\]D#Q53A<>7`F%M[ MPY1>@SX/0.+&.*P'K<*3Y2V:]30HKR]OCVAN`(-@S*NLA2WQ.HDFZ*E>= M:'97L81>^2B\1>PI&I&7I%%P!]GKM;#Q.?YYE/_GA]D<9.^1ZY+=*AQX6YSZ M5!UI_OC0M!D,_PK_X1^<)6@U_KE*Q]C7$;$:N%A@F;127P^7$^&J+]AX.08O MUW,'EV?]T]/S0R)>$!<5-:(1GB/4?HXO1D.&!2J]J;A3=-8)ZKODO2 M@^$1C<1D*2R0')6KZ[>G)UWZ/+[_:H"'%_MLI[EOV9U66V%]MGQL:[K8[!3E*EKP*`UZQ&JU.4^G6,,"Z-L`M-,`S2'EXH05U[2I$L22A2MZ8`0DQ&MW_ M$XEX@5CD0ZH552`#4=T)#'RPM@Q9]JF-)E$F)-?L>E)D09Y<@CYA,X<;VO(D M#:7%[W62H@V+1=D%!MKUNG83`'7@H[^$8[R&@H0@MJF6P#LI,\R_J-%'8*P/ MJ/`>882SP/1&6>\Y>?T9F>/5J&PCD[T2%V,EWA5WX`=1<:]VOQ:I(NEP\W%!-Y,6X"B#LJO]3:"L*$[U9[XH_Q2TLH M$I:HPP'E&K1`G=ODV"Q$B0<3&GC$?TS67XO_,IFG26;.J17F9P[&`O)MG$2I MF^1.RNSD8FTMEV8G(:?MW"I+N,L))/9H%EL&3.#C:;W!.7J2"BIA"V5VL_)7 MA+ND#2!PQ''RQQO\QJ+-A_A--I@W03;V;AMLK9%AIJ^UM6\X[K>>$1%+=M5D M^!Q5G+)524D2,)HJ]ZC*T#=IU&>N8IZL;O8*>6FH*+`YI%AUPZQ8I+'@ER6$ MHF24&!![=`/(1@@DN:%@=J@U)=TZ5D\,)M<*&>I=/[V15)2PS!U[ M7I`KIK#0)MP&+%'U%Z4!1XD@%-,(PFTLHZ2,E"9.A$`G;QTD4"20QTU&A1(S M[(B`":U!02X"<`?^E?]B\OR^[<@4R,]P9)M/""C&MP%UL"O21R5P_E M(-N8QU%P;-Z6L#4O&M6J*@`DLEX%!#P5V-O"Z;_]]ERDEOQFT38G)Y2+JG#' M#R2KEW0>R8Z1\T@\I4<-,['B8-K3R/.*8^1V/M`6%T)&A(7,OH+:$<91*ED& MX:WSR/;Y$)_7Y/M!_\)@0HM^0W`W%/(%2,VY2-=0_T34+;Y2MR'C=QH-$SSE M=C=1QQ5=M0JZB^7KUL"X!=^(-ZB\XQO[5AUV:W5-@//-NXEC/YAD%WSKI4(`H>_(S&7H;0"=XN?7Q+/I(V81HQQ(984M0.\PPE]V;YCN$[_T[F.#*A MR'/`_*)P:0);:7JZ0ICP92Q>`JSWT>A6-;OF=.>>>XM8(O8\A";Z5I9MC0F" MO<:P=RQ?QX,T'DZI:1?,\DT[OF1PDEP=,X5$;8D<07S#8>V%/UZ7T8*5QBV] M6F"\#[BST1O8AO8PM.QW"JJ9+VEBO:.I(%6AABS&(),0Q>KD3OGYR?Q_3IU* MCY+<-ZE3JU!S]PVZ5-I8LY%O5.6SX8WZ+MC0I'[F6O.EV6LW>XT6ON)EZR;- MILFM7GMC=W7/;EA[MGZ7L41]WFGY91;X7^IJ`'%\'H2,^N_>#>BF6B],\+:" M5VUEZ-](O1QV`M_U/J_2)"XKJ!8GDS!E[*^)B3),%X__$3`3$L=QS%2-N3WYAGI=Z[Q@*FF\U>@UF\6]N4;3LAM[1C>= M!G3J^75X?7IJB9?T"]+RUNL(OSB]'-U<7@\*1_:D%Z.!F.!I?]P]') M7P:/5O%2#"CH)(`Y78GZ5AFC\09',0:DE@1[A_]O;DW?7Y]=63M5#AK38N>SL87,`*94=0 M5R[6K*@!D6.OU\#V;K>AK>C)1+J3:=F]>F-3?[>%_<^NF?7)T_>=%`@U MUNB<+GO3J)OF_N87E>Q.&]O7G;:I/K[I*C-+=(N)E;Y5^-2?;GYM^O%7P M^,Z)G'A646UGHV>.,@6K^#"\.3R_'HX^BM=H^O),;=M"KDUL\S_+VW3"BPC_=: M.*3K4'J=X6=(SF>#7E848I>/T+R.9MZG%41E&="4>V"\%]6*GL[W6/B'3I._ M+Z6Q,90'M_R5=N:#]O3S?WWG[=S.^JI9Y#?&K_)-D>]Q7)6)H3#:F1<@^"Y> MLV9O1SR=1F]&;$!R4'M;C:YM_D(#!_1U%E9QF'$D=W//@83C0+54?:\^'A1, MPU]O0/""PN0]?RR8!*421$RJ7H[I(ZIL;8Z\>,S#4A_M#B0^NCK-10TLVF#:QH-_F>K+!E(BM%##:^@L'"%\WJ7:ME&[_F M:=7W82"[P%Y+AJ*J/I%/J+<_5OCB!(T^L$M70K@Y=%!J;1;U=@]R7Q;#TKM"+NI%<%8 M$/6@#K`,)_(74:003?#XM/_N9O"WP6&I;/_I3_5*2?:2Z>>&FX_6KK>MMEW/ MCM8&W;4;MID.^7XE#%<@2B1+VC(NS-(`(#[IBWL=2R]AYCA?T$4;A:^UG],9 MOR55ET-Y]U;W0(AW`C1$R0`1HS[2%UJ[Z]=(6W8/$=#.&()01]/^07"OT`?_T, M"<@/"/+MY%4)%1^4=]?#DQ%X>O&O1$%'=MUN&#JER B6#W2Y:TEQ684J\8