From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14576 invoked from network); 8 Jan 1997 10:21:50 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 8 Jan 1997 10:21:50 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id FAA19362; Wed, 8 Jan 1997 05:09:38 -0500 (EST) Resent-Date: Wed, 8 Jan 1997 05:09:38 -0500 (EST) From: Zefram Message-Id: <28533.199701081010@stone.dcs.warwick.ac.uk> Subject: ZLE undo rewrite To: zsh-workers@math.gatech.edu (Z Shell workers mailing list) Date: Wed, 8 Jan 1997 10:10:50 +0000 (GMT) X-Patch: 190 X-Loop: zefram@dcs.warwick.ac.uk X-Stardate: [-31]8697.12 X-US-Congress: Moronic fuckers Content-Type: text Resent-Message-ID: <"RRxKl.0.Rk4.X9tqo"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/2746 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu -----BEGIN PGP SIGNED MESSAGE----- This patch is a rewrite of ZLE's undo mechanism. The new mechanism handles switches of history line correctly, always applying stored changes to the history line they were originally made on. It also adds reverse change information to the structure, making a redo command possible. I also removed the arbitrary limit of 64 stored changes -- it is now always possible to undo all changes back to the point that ZLE was entered. The way undo events are now added -- only being added if there has been some change made from the last selected point in the undo history -- means that there is no need to avoid adding an undo event after executing the "undo" ZLE function. The nasty hack for vi-undo-change, which relied on this behaviour in a way that is fundamentally incompatible with allowing redoing, is removed, and the function implemented properly. As a side effect, therefore, all need for the ZLE_UNDO flag is removed. -zefram begin 644 undo_patch.gz M'XL("-H"TS("`W5N9&]?<&%T8V@`U1I_4]M&]F_G4RR].2K9%DBR,=@.N:8) M,\V4D$Q".KVV24;(:ZQ#EG1:&0HIW_W>>[LKK6290'K7R3$#:-^^??M^O[WW6]77?`W(.).YSX;L?;.7CD.,X&Q`/F^A// MG?B#1]WZ#X[98,\?]P=[@R$C$-+1H`,&(^<18]]=1,F,_\Z>G;XY=GYF*P"] M2,*<+WE2!'%\S5;)+&7%@K,X$`6#_0NV3&?1/`J#(DJ3'5CPJ,>^BPJ^9#F? MI3@H)$TUK--#(!%-^#HUL0/XR!61NXP<1'3"19"<I;>O+#!E7I!6ERIN8[RR#!)4YVO7\77_$O/'$&TQ\'[3NN:;:#5Q# M\>YXLN>V*GY_Y/;W1WN5VB6@5/IO\^^1P]_FKYGUX2/[\/,*?C^\LTT1#<$> M;)"=T]>@1]@%E0V[?($1D`0Q6M=9>S&'S3,>%'S6EVP@?AU+ M6^D7L=A%U5^GE97&#/P=K.2-P4J#TDAU5#,ZO,G`:S72>-_KC_='E9$(<.!J M(Z$+6D5AH?3VY^UD6U]B*1M4+=W60F7@4.]+8Z#Z<-NA*131NO5L0ZS&S":K MDEB?M2OJ\VT.9H@YF6%166&?^6"%T60XQ+#R2=,;4,%@WF0(@35L-=C>?G\T MD.9BF"1VP4M>O'WZ_?'1:&31GCE^<'+U\]=,1S0Z;LS^^.#ZF MF9%-LB+7OO2I-J&\L=?WO:$A%A#Y^?3HS0F+DH+-.<_F<7`^Q;DM%)F1!%$?)^=U+8YZHE?!T7BQPI4:4"VOHH5#8X2H7::)$9UU< MB92F#3XBM7E8](EZ*.3_.)XV_$+2N8Q$'BZ`^VG39]0,3P1L@B[HC=V^[WLZ ML=W3Q\2UP"+<<#)E$>UC=6@7W.VRS[H)9(@I6B>8_2L(4:T2H6%XW%3;7G#4 M;9Q>U5$6D2@4!CZF^;4V@_+"=>]+2[^%)\$+\MN%RI5K?$AESGBL?1#&00C. M)%B1,H#S`CJ/)2^"><1G=G-AE(C6A0#G>=%8N.Z4SW[X>`*6T+F+7`V5I_2Z M`D^#S!;$`MPKR)4H`#'CPJ#U^LW13TSF.4D+[1&E*W%_>MH%%CR8L2"9L0(B M7JN0_"(&.\B=6\)($U)Z5KZ@`O:+HZD>*UTN31$7E&'[I<'8*),?SZ!(@Q^+G;`J@D/F[4^&^Q-_!/5RU"R7K4N@;L(9 MP)M`=6TM,=ZX[_G&(4`"]G0^P)]GUC?_7J4%=U#&;_J,!OC<9Z[=Q,GY.51] MC25'=3SH42*1Q<'U-]3DR>>^68ZQTZF04XF7-JE<0CAQ!UJ?E1.FRPR#D3`) MCF`-;="N2*P29\'C#%9E>1IR(<+E;!.RX/'.17J#_W*U)<>SLY[/NNVW!$Z/6A$#K+(+\`*I"2 M>('/FUA#]-69**)B1?$&"\IAG3O$O`JD)!(11CBHJ[!^UFA5)J'@F86T>!GI MP3I61CG*27-#,8"?(33-2P69G7J=PG602#7@0^6"XSW0G-=PP:].+WC(<%E6\')P';HCY[.6/;55YD6X>*C/.$^M/:Y/8V MN2X48)NHX+[!;(8PRY[*78'P5AL%[2TVHSG`<7\DPSA(H[K"K&7R7;F@@0B+.8 M?XD4K1;;.^@/1^5M0`?+R-)RB;(D?/ST[>G3X^-7SS3H1LQSSBTX.^L6U9ZJ M_$$3NAVVY7D98=1@4UNMXX:G<%)*"A4YZ M__-<5OI[.$=KJ2<2X<;4L[^>>1KH.O,,-V2>$<34V*U=0Y$J+]-H!CF!),%G M3!"?X+:A65\Y=%=X3F=JAA33QO@=V]&P]O^3+ M,+NVH&^R)/_VMJ+$0$RUXGV_?"P7BNB&C@X68![2--Y"H335-O@8\Z2YF=Z) M#-PKU\I-=-%[V-IJ,VCI6[B](=\R9FI*J/:M(D!.D&4`:*FGGKYA@E;"9G]7 M(XT>"J6*D+S@5MJ;7,>1KL/,TY3R($;>;W@0'C`I`M$+1Z,R]=<\>E5$L7A` M!*SAR[<;PXFWUQH"ON_U_?VAV6-VST"\.?8;:2SC^%866E$$1136SN5X.[@N MOD.WDJW1@XL+UP@1/*Y;A4M9&V:P9"MMPZC7H](L[_$*]_W.W>9S-42S)TU: MN[*S59@8$@"6O&-H"YG2$Q5^%4%R%,=V;5<,$[REJ$#D+AM=Q2D+9YNJ,@@7 M,:\$K8F"-S+"AS\%_OKWRDBD;J$DAE,5/I67+Z!JP1[35`\$@4I;X%#-]Y1\ M`.X*K,W=8LI$KP=4P$YF7J/9&I7#PR89>SW'97/@1D#,:6XJAOTV2ZKD$,?` M@6\(@C!U5P1[,%C\!,@2'T\0$YZ$_ZOCO4>V"GH"07S'03J.4^6^.:O$`/?W MIVUIW6K)'D;2J&4?RF&'(*@)I#QU:)I9ICB&S,&^12U_"25H*!J.6LMNVD<7 M54W`+%LY;[&>>J.Y584!:,J($%V=ZCT(@OX;D7;[OXXXNJ=\RX,\7)`_)9Q# MGPK(*(3 MI\DYD'M;X)TLWE$*N7%0X,N0"-^Q49:5I`"$R"5O5T$^PQB:13F8P&4I4,BO MX*BJR9P!BXBTP\H?3"90!BB5^Z,[CA!#:/6&8^,#@O%!?^3MF\=D<`+]"H&Z MZS/5D,A9/25S;0^TV\,/!M;?,B@P/5&:ZS5+0@]<2MX:5I?*95Z7$\N+A%_I M;K*G2R==^1\R\RJZUTSZ#<\#?]..5U)2SE8YF?I;>91M$M:=+LQ4M\>&`DQ) M*[Z;HC;?L%2L8I^5SJUN9M.V"C^CE''9*B[,T=N%NLX`&B6H'WB8\;@Q"]:M M""%CG6I8DLNF;8;)-HI;]OQ-:7%"&HY+S[2 MZ^\:M3($.BJ]7EN*I>U"A65'2Q7CUOCOCS\HI)>9(4'Y+[855W3*EZ=W-5I> MJ$:IQD(E?4E%;B>I&:MK*:IS6WF&L3E-@5?6$\YF!1A)1NJB4D2U?%OU4:;/ MF?8FS6Q03%E(E5HJ);0IH%%^E1X,2RP,[9H)!7.7OO8ZU.]'IVV8!@Z^]ZQT MV53P`]+V[>;\K*75;Z4ED?J[R'),S^6A)U;/<3/N0-@^?F@Q-6!B02SI)CIF M_\#1I&Q/:WD)",A3$#X\QK70J-(I'0#OS1::`%/ZWJ@#C[W>U"`#+$@R^$!D M'**XO4T17Y[Z/6QI5_,Z8<5F-:MV@<=JEUH5D7E3.8"9H==0S$1J3C:3K#FG MLZWIX&U^XTY;)M&RC7K=1$FI]0;U&+*AWGJD,JV9>*U4KI=6O"1LQVI$KJ1= MNJPT#BF[SUX>G3[]^/S=:WLC.^NLR'+_.58DEF;%9.,N%JH:MDPO>=E["BAA M>;HZ7U`I4W56?TK0$G"MM:I^V2IA4!,_J9RRU4PD1H[1MV1JJ$^1.F>LDB#+ MXFNYV*IU,6M$2^>2';ZU[ES;.BG=IQ]\0&=YVZXID_6U[S!J.6<.>5DY^7KY MQ6\,\4.OCWP6%4(I2W!":91>0Q1-T%X+.GFD6E#$3.L<8(Q2\*OIUD85T M#ME+<'""RD07BEX/KTK?GKYZ]\SJ]GJAS3ZP@5^ZC@Z55O1P0S]'L:#.:@\- M!?PPXD^%@I%M[Q$*[8$@\3<&AFZ$-\6%6=:W=5G_*Z+C_R\VT-DWQ`9.V2VA MU!8;^&7:_T=L7$:4[2=PSCD_C_&CL.**\X2B@R>S]8_/Z+,T@(!3A1R_AF)9 M&B6;PL=\8WZO,-K7=X3)VDFX+50Z;7%2=3UWQ,2#.MK2)M4[MMM' *_P$^:`!)?#(````` ` end -----BEGIN PGP SIGNATURE----- Version: 2.6.2 iQCVAwUBMtMFwnD/+HJTpU/hAQEYXgP8CLjyczdslXovscVLKBIWSBmvl9RSEw7G 8KmGS/Sa4HOhtGw/mfztq5tDTSZVjvcXhfJT4Mj61RONCeDPCx6zuiUqEDhKxg2M uqKFuRLuNwtGv7KW5dl7XUxLHJtq7aBM5VW7DnefzXTyB9rduvhRI0cu1sufXXXH htrq9IXFRTM= =SLWP -----END PGP SIGNATURE-----