From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6468 invoked from network); 22 Mar 1997 16:42:37 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 22 Mar 1997 16:42:37 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id LAA14068; Sat, 22 Mar 1997 11:34:27 -0500 (EST) Resent-Date: Sat, 22 Mar 1997 11:34:27 -0500 (EST) Date: Sat, 22 Mar 1997 16:36:55 GMT From: Zefram Message-Id: <13344.199703221636@stone.dcs.warwick.ac.uk> Subject: ZLE special parameters X-Patch: 219 Resent-Message-ID: <"fLDmN.0.AR3.Be0Dp"@euclid> To: zsh-workers@math.gatech.edu Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3014 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu -----BEGIN PGP SIGNED MESSAGE----- This patch adds some special parameters for user-defined widget functions. The parameters are created in a nested scope, and removed after the widget returns. I had to add an unset method to the parameter type, because these special parameters need to behave differently depending on whether they are being explicitly unset or merely going out of scope. The behaviour of all previously existing special parameters remains unchanged, but I think maybe some could take advantage of the new facility. Incidentally, if I read the unset code correctly, a parameter created within a function using typeset can actually be removed by a nested function using unset, although it can't be removed by the function itself. Is this POSIX behaviour, desirable, neither or both? I added an exception that special parameters can never be removed except by going out of scope; I don't think there are any parameters other than the ones this patch adds that are affected. As an example of the things that can be done with these parameters, try out this widget: function increment { integer n=${(M)LBUFFER%%[0-9]#}${(M)RBUFFER##[0-9]#} RBUFFER=${RBUFFER##[0-9]#} LBUFFER=${LBUFFER%%[0-9]#}$((n+1)) } -zefram begin 644 zle_params.gz M'XL(""K;,S,"`WIL95]P87)A;7,`[#U;>]NVDL_NKT#IMO/2U.0Q88B59*R+3?9W[XS`X`$*X,YC79KK=U87[!7UKZIU6KS MJCH.JT.]S79KXYNEXA^^LTW'LNL-1N^,Q?PBFH1]ED;,97U_,.`Q#U-V[?;K"V.G03]C(?<<3E@ZY_,[<*]7X%*WSQC9PF/:_*3A)@P-^9,?9LD?GC)_C=-#:"-U0;F M"XNY@*0_&@=\!/CQ/D`"\,F0!P$;3$(O]:,P`7Q_!%1T3`%[?L.]"32QZ+L7 MQ3%/QE'8ASX`2A%$L3[VZ;DA&_-X$,4CQOM^BI@94VG0^+`BOD"@2?< M2XV3%#!RXS[[48`QOT$!<3:(@B"ZQF:`@,L"/TE9-&`N$(8D)ZJ9[-U"YJ', MA]R/D>GN)$C9A4\L29@?,CYR/1![U.=8]\IG2!,VP4_4%K[Y(5"6TB?21U2L MYCJ#Q]I7HEB'__:*M2P4BQBW*T%ERK7,/-`)?F,HO2ETB>55#+=`-J2*.4\K M.&HA=."`Y`EP9`I(QR.0L:@I-8XTA4^IKALD$8LGH6"1Z@\`&:`G].EBX@=I M#108^%C`54H>Y22$;XJZ4%5U!'#V_!!L9DKRG$KTW!$`((&AD`C"VVX'6J-& M2U*Q!*B\F`*,F+NH`-0BX6FJNDW&W/.!NK$;@TA2'B>@E8D7^Q?8DH/](@8Y MS_-Z%L&/8K.Z$(F!$N!24MD+ZK\;7+O31+,NH%OJ<2X1H"D%0%@?U0>JH%"@ M808UFJ2)WR<&@%SV!X)/I&=)-.)*@%=N,.$`2:MN"96E$E3FE(_&4>S&?C"% MCES/XTGB`V*$!*`&"A#S=!*'`.:Z9'F92?$;<`Q"0:I)!Q(&8$>$(0`*(@_5 MRXO&T$_@O^-Z70\$AT)$LO,NI-JD!K4UI8B$,0$-!G+^2LCD]=G>7J>''Z@$ MVL@OS$B@K1N;IB'DQ,`H_!@]!AA'"$8;$2>%@@G%$NSUR?"O8S]-D041*29J MP21.0,-C<-/@A)DKU#)!WQ@-!J!U8*EA`"P57+\FES`&Q@)`)10!2?8&3QHE M.V>]DZ,")?(+,WS`^))KI(C^%`4",8NWR?)8&'LAI>(1AV'">CG MNV\ESZ1;!C\_%<[;%Q+_#0-Q'(UC'S0$A-=7Y%9RKSNK"-VYF@`*F!:A"9$%/D]4 MYP$?E!C,QE%"#,&N,SUQP80N0T+:8E$(ED6@*KJ@T60<9);(5BT"SL*"GR4)C1F^6&;TG,2/V+X=_.C<4T3/<4&PJI/5Z^U&O=UJP>2DY5`T6%$/9R:M M=GVCW5RKG)G8&XVZ!3]K:G*RP.#/'S##&(_82V8#0(7J'W.C@_.3XX[._O;7:CQ.U70BE^R_X,*O<[V M[M%A]Z4J0S\2"\PA[Q MM[0*`'[_ID8OQ$HV'FU)_+VA&P.2Q,.EI1OXB=SX\JH.;#\\ZW95-1B^V`V& M#2D,4F"LZA$,^C8:0ZS6IV=)G&K5]<-W7;(VM#GD;MYE@EU-5,VKR.^S)>IA M$$*)[&(0%O!,(!R!WI*?CXY/ST_VWW9^T?&++B`2>9<`YN)ABY1+B<)1RO4% MB.)/9OWG9GNU1:RU0`R;=N:B%H#86QY'T/`VC?N3L2$_S%@:&.5QIW>PW>T> M[0#WGHE"(@P:4X!)1"XLK"X1LME8DY4Q"$>]LD!Q&CT%>0-7$XQ@03H2=M[N M);(\`&;BFV%N81:%L"CAA3PJM6P$O@0I%\10S%6B7!%LS8KJ+`D8`.` MNA[Z,*,R#-0=0ZBFR<"U([O)O6=B,,EWU]3`\.AQ@=&00)2P5RPGRS01Z)P! M2W8G^96(+Q_PYY:^9-A!+_XMCP:&8#E3ZF)2$VR@ZY,P2.0CA-&IL9T%<566,Y)KM ME@WU*]WD1MW:6,^"ALQ#T\A4<-K&$AJ3;;)SP\`/IG!-B9SF/V`8RL<#`
  • "6;HP6)Q4,(UL,K/XY"7%"S,*CD-^,H1M[:Q;;VV=JQ= M<)T8G%K;%LR;]@]/.V\ZO??Y'.O]K@6`L89I(7X[IH7]O38MNVY1P])/'4<8 MV<7BMXL6&^/F!YD]1+N3($C$HS9+,RVM2:?7.SR"9CR.P^CAS=[L[T*C2U_U M!$]Y"ZA^NG]P?-0[9>\%A)/3WO[.:6<78-"�E)FNQ?24A)VI?&7"&OKTY4 ME4LE]0:0MJDL+,/MC'KADZP;?'Q@/SF8T].?]G>['8"4IE._'_#[R2P+T:D4 MXLG.=G=[G@SA88=^08+W69EC+)Z=='J'VP>()6[UH+>3:*K7*KK?SZ$:`-8` M4A^"G0?*%%H,(3!#M4Z@9?8LFV?O55A(`U12E";XEY#B7$NL_Y6E66FC=M.R MG7K!1J&;P0$CV>')YW3@K4% MG@AX\!E&^DOQ4K>$AU\R7]\IL>[VX9M%7*6.)0V!&U[F-%!W!?X*](M-O'-7 M)SQOE).\<]3M;I]VA,%(ENH&\R6P-..8T/^,L6@%.6Q M:PT$^*.0WW6U^-;OM_V"Z@H.UVN.9:]M%*)-:']RW#LZ.#XE>8[C:#1."^#K M6*"6RZOXMC$[`]A]?[=/1,:!XD:A&^NL4Y_F><:=,N,VP!1VC[=/?R!+Z(_= M=&BQ1?&PB,OJEE9S;__-X5$/IP_/!_YE"&$@U)5/LY45U($$.M!@DNN4S-3C MS#^:F255O)^CL^KXI;"T4E_7URQ[PRGH*\`Y.-H]ZW;.%;11U)\$_%S"U-X6 M[Y\)SAWG-O?FR&&[U]O^J13CYUT4-1SX7G0-XL-#M+N(C,#%+*%6-Q53-HW% M)3%,TZVK\Y?.XI/AW,_INI?]#.*UVU8!SR8H7A8/\ MU,8ZJ]OM9J/M-!;LE8#V*>#&>`8';HY52KF,:^]T[_,$G]0$?NRB<@ M3`-R'<5]H(PVA8$]3:7F7SY[BDV$.E5R;89?)39^/->4TLK./5UG;538=@M/ M&C7R?>"9FB*=KU%OUS>K=1:DXBBM)2G1AV8A/6[W^.STQ+#!\;P^>]-F0)'( MNA6)%R(G@F$R!&T^11/*(0?W@+O=BV9QKWM+[/(O,TJ-DVZ!]OJ5C]C*TMW$ MOR+'7.:1?9BSBE<')VH[CKZ=K:>?J9V_Q^;YX;['W!S##P+PZA([HXU'-T]5 M%SMV5$A/Z"T!5!&20I#"=^8&(E]`R]K*=ONP#I0C+;5L"Q,W@V9I*V0C9@MJ MF)>2IZ5\_U+/2Q$)"A`/Q<8B'HRH42*N2@EILW_@6BLV#EV5K4*K?/5UP7)M M._ESLMQB]N?CNGCA-^/[V/]GL+M:XQW4^&:VZA**:$XV*]+S+"-(9?@E8.W>$.1Z<'[ZTW$G;TP95#(+$/?5L^BY MC;*E>B`1<%.XD4_2I5&:TFJDDRBVIGBDU-B]K_&'.R35^1<&,A`?*4GQ\$I* M!D8<>#'41STM*/\F+(!$T,@LX&DBT-PA487*N/4929BS&]($DEIKNA^E[#$Z MKN&G8@6?,EC!('#/)Q7'UQ#%D.,)(3>>:JD6`R:[Q#JH17+W-3-=G[]V0+0H&U[.WW+[/U^8(,:WEG MHM^<`L&T"B*`!G-+8VONOV@,'<"DE5$RE_1G0MD:9.^%[)VO2C)%C2Z)1Y/' M*TT>F&:/1O\(Z+IO?YQ%5M6&MH6&N;>:`%9M:"3^M-7:(Y.FBMA(SQ M@YL,#^$)9"`1P;(R&M0W<749JV1G5[(\6(C7)N4!4SOL-8J2-,!S7`&_I&Q: MJ+^$N5=+^]E*6!TEN=QZ>C+`C=ZHJ%Y68OZ2N,R#<7+H(K+#QAJ()@L MC3-,'V.T04+%H%H+,;8PI@\LE2V$VBYGSKK",2Q3!1&=[&F,QUPWD?&/9X$P M68Q.Z,V+7"HUR$'7[+2R`3^(Z`2SMGZ=L5`$,<_TZ'D);2B\A!D[HH[9CZ5@ M2D2!3U8M,7*LC;MFAI"?A)KGX2;"K MYN0:#$7.NE/BI+:M<2>V@?GAV"^1S^*_.X`#/IWR=!U&U%<+S'T8U$4+/V$2%;S%5<"G7RYEP4_:;WH,HB<_0$@YR\P-9&:>./R1>.E,?#IFU1S<0`YN MYAS\,!MN/,V0RTY''(\EN))9F\BL/&7S?A0>;Z]W(5'-ETV8JS?R"V6D.6@[ M9YHYB!S0@CW(XV._83PH]F,Q)I`&Q->PL'5H`SW";/Y#)$X8`>NENUJ":/TNT*)0-,8J-/,-6$\J& M#>K;R)=4GH[$+%_N1J.:-PYJC[:T+3K`H\MQ_,!17K9Y>O@!7;K30@2;F5ZC M@=K5V"BR[PEX/BT>J<:TFL--&/\;S;62?6J[*C-V46D82_UQ&NP^WJ7 MZ&]_C?S06)IEG,5>M%_,K/CFRXMY'P_W7P\2TRSITHW)QC?LGZ+K9!SXJ7%C ML=+,]^QP_[_..B9KL]$[`4@NE`G98LC96&_,^)JGL4P(]8]CVHP2?3ZV52=T MH.6NY99;6MPC;RM4&>,DO/*!'(),'S6SI52>TJ(&3/?Q.!/+M0_QO0%D%ACW3N(7DY[Y_ MF=1JOZ!4X9%]S^RZ"5V]J+]@RPR_M.D7D_#APXOM%UN"C-67=&`K7TR2$V^U M]!$7MP7HB&9;;5>Y+%"GJ?',%%U8PKTHII-7X,>U^X;D`H@X3467F_@)G<4F MB.#1>\1J<3M:`2(/O2"B>XGD54;70]\;,@51W@!V@3>"1#%>OB4N`0FA]R01 MJR_%`Z8F]&8<(@&QQ?81D_"=)884N4CCAG@0&2ME6T\_7+Q?/*Q?/O M:LU%/\$N/A4/L2_K7BE2O>4*T0'>5J@#+G6EXD2T)G)-UER)N7KMJBB?(NDZ M4V1PIO#,]\@RCA3/OF>?/_+X.Z+#?IT`*G0I47:"\K%'X)=Q:O;X:U&6Q1QN M_BEX66'NU2?+V69%8I;7W1YQ&K[$W2<=B/^0;<7?)L/2$6N[W6JUF\Z"O=+< MR/;A9ZLUVXUFVZZ^4V<=IF<;=2?WE>)#YBGSY7[$-@LXR1N5EA`%9S$\)0$6 M#CMK9YUG[F'3+JI0QUT7Y$`+@Z!H+"^&&X!6>C#?1*]%(2ZC=5E:1S5+C4$N M\]KB!AGX*FHK5FU-U98FQWC!R)RF:GW*R'-]S7F'7#=@3K617XZCB#*67/T4 ML9EO3-`(J4>E?Y\U_[BSYC;HL)/?L_0(QF?N;QRAJ&-TQ[/[&+/J_["3XF*% M_N^#X)J-M.K61K[IJQ+R\MVS!-FDE*IRO_BY(0*$X`JX'%Z*H3'?D1V^2^"@9J/$:,^H.W'>`3H2E5ZHGJ7R8G9JTA*5*\B)5$'=N5GA92, MB"_(93M[PH1-?,XS-.%-41Y=_,K1%0$3D>*WW<[1Z_\\*=.L45R@5Z-6H[5$ M:9'.`I4%&G4*"_1IU$4"Q]TJ)'4LBVCJ>.J(EC$MH5K$M8AL`=LBNCJ^A/#. M$=B]0%A(1DEH)1=0_E3%E*Q3@'9T^D.G)\%I2;?:,U631^*%KN?AZ9^JZS+I M]?&JKZ#EZO\UJ7Z6DOQ0.RB2&_U9=B#Q?IQ5%''/D?]"K$(?;FYG;N&B*6++ MQH&F41AH9JO2$-.JGB8VP.P:=2V%B#[8V4G[;_W0"R8P3"[J!K0X6R*MJ:)$ MFM4BQ,C%DMS&9EMI!C=;F%M?15EFBHME#@KTO0HVXDS;V2RSL:J^TVXVV\WJ MLQIX4V?+UGA)'_*M-_TZOE%RF2>Q#S@?RXOHY#[W[V)%8V;MJ^+V.JJ(5SH" MQJ+$4)#[43+$.8X1B,RC+..9VLR[;`Z*\$BM-^IGM\H5;HMEJWU^M8K1UDKA M;^%T.&$G?,S8.G/J;5R=J#/@76N&K]F)@A,W90V8VV[<@6U=%075OW MM1RUDH$K:&*U\KO]_G?T)%[UCEB-[NZ?O2E>JT]):^AAF9@"TLK-;3(4_\G# M6W$%Y(K68"<:3\6MU(9G(MI.#7&':=0D8'MN`++JBYK;>.7_&^ M#NB8QV`^B?S/(H8\YCB;C]V0_LL(=?Q!W0;O7H+^T.0-UW=EJ5Q3]CT>BJEF M'$W=()VB:B46S6\3;H&+&D__O[FKZ6W`FRP6V!; M!&Y[Z260)7\0D"55LI(X1?][Y\T,*5)FM$Y.O1BR2`Z'Y%`DAS/S4FRLS?8D M(:\+@_WVNF>EI>E4DUQOCX\,'R`X'EXF+@M7C0?J/5;M6*61*X0-=5:=A%33 MMTV-JFE"/A@'8<&QU=>P?,Q=+])A@/AW(;5=U&O513_6/&[4+\V^0V#V#0D. M@O8S9D2#4.%C5OQ._J6B"AA=`Z&5SSIUB6!#X*Q8FH,Y:FAWU`&H$0CC4,QQ?]BT.%;2\4VX!UM;)KT34%;8X"$5'ND@V;'0B9S M5%1'G3=.>N/@?"-_NZ>/XGA5?K>?N4L.4?0,6EQ+H8/0Y:(4HR+6X2JB%/-S M4J9[C;Q_'D'.RRRO=N>YXR0U7/]`$IK>("NK?G?G6>/TRM?Q6%[$9/LZHFV4 MJ+?68353I4]R=[.Z^?7VC]O5[Q^"Y6P"%D:O=V1QP>6E#Y#"V$M,H^VK"I^D M".!0`)&T\J!OL$PI],U!J5!JY])HBJZ-0)_PDDQ-M_,N9-)OC*`JX%)`H2-@ M+"A8*MI3%E)%EV:&+4%^BUN2C#$CKFD_\?%3\H-FQ:-BD`B);[9.KTI,/$Q0 MXMW"5+R$U"%$5J\A$D&XB$U;B:PX3UPXQB$&*KVFI,4@4:J]M3O#T?4A*XKU M#=36.%]?APKO0=VM45;#Y-UT\I2Z?'25@&3MB^^2_>;8C7!; M.G:5;'DQNZLINNV8;GLI775=5%8O45%"NV&0H,G2\13,N`H^PY' MDRQE/DMOXTEGZX@K\R)7LBEXF24MR5N%BQF*N)PCK_,Y7\8LB71%'N)*\VJ` M+6G\B/H!B(""6A:@_>C2.*)C]+C`2$&\;C.$%BM1.:O;3.\54*B`40\5\QRS MAKLB.''1MI?VZKO:.YR(/)=Q.+'VPK1O^%#-.V<9;9S?7/E M^7,-/JRN2T/RPWH0L_\+R#_IY.LK:FJV/<%L[\>RE*D-$Q#X$\S=BV.;-R=K MR[M`6IH\!98E^H](YQWL4TIGEI+#/*8L!^,C=G2`OY@DB)YEW"2UGEPFN_-& M^6U1(R5M1W'^]O;G[_.?==,_)"A?Q8@D[+OF8O%\X]M_;9JF# M!OM=:.-'#0^:_73."OMY+;VM^E1[\VZR+>4E8B"O3OXFJ-Q4WBK%TH`4BU)0BTV1D1C^!S([(7?E&P4/G%\N>.W_<[`^10?+]KZ.SV@(+NW8 2]DT=&\I$M(O_`S*[$C9->@`` ` end -----BEGIN PGP SIGNATURE----- Version: 2.6.3ia Charset: ascii iQCVAwUBMzPbYXD/+HJTpU/hAQGhDAP9HHle4GH5i//G6rQAgrXcXYKln3FNB4cM twxxLYVCp0mipgmTEDi11qS5bLmTvcCnpUQMlypSZAEnqKrbDhmqNlonoSv0rVb9 kcIIw9ATOi1jCJMHAF/vqlAoZHwvcJFsgdjn6Tf0Mw3NkF8JlnlPP9dlahZ5NRWr WJehDGyvAUY= =1GgG -----END PGP SIGNATURE-----