From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16878 invoked from network); 4 Jan 1997 19:47:31 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 4 Jan 1997 19:47:31 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id OAA07129; Sat, 4 Jan 1997 14:51:02 -0500 (EST) Resent-Date: Sat, 4 Jan 1997 14:51:02 -0500 (EST) From: Zefram Message-Id: <3876.199701041952@stone.dcs.warwick.ac.uk> Subject: ZLE prefix commands To: zsh-workers@math.gatech.edu (Z Shell workers mailing list) Date: Sat, 4 Jan 1997 19:52:13 +0000 (GMT) X-Patch: 184 X-Loop: zefram@dcs.warwick.ac.uk X-Stardate: [-31]8679.13 X-US-Congress: Moronic fuckers Content-Type: text Resent-Message-ID: <"nj88N3.0.Hl1.bIhpo"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/2722 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu -----BEGIN PGP SIGNED MESSAGE----- With an extendable ZLE it will be possible for ZLE function calls to be nested. (It is already possible in a couple of limited cases.) The `lastcmd' variable is therefore going to be fairly meaningless. Also, most of the flags that go in it reflect the assumption that all ZLE functions are known, and all have flags set correctly reflecting their actual behaviour. This will not be possible with user-defined functions. This patch removes the use of lastcmd flags in implementing the prefix commands (repeat counts and vi cut buffer selection). The flags ZLE_ARG, ZLE_NEGARG and ZLE_DIGIT are removed. In their place, there is a flag `prefixflag' (approximately equivalent to (lastcmd & ZLE_ARG)). This flag is set by prefix commands, and cleared by a function handleprefixes() called from the main loop. The idea is that this prefix mechanism should eventually by user-visible, so users can define new prefix commands, and can write functions that provide a command loop duplicating the main one. This change has the effect that vi-digit-or-beginning-of-line can be implemented as a normal function, rather than requiring a kludge in getkeycmd(). (It might or might not be a prefix command; previously the ZLE_ARG flag had to be fixed, but now prefix commands are identified by an action they take.) With the ZLE_ARG flag gone, getvirange() had to be rewritten. It now ignores command flags, executing commands until one wasn't a prefix. This also means that it can't detect a non-movement command until it has been executed: it undoes any changes made before returning an error indication. This was the only place the used the ZLE_MOVEMENT flag, so that is also removed. -zefram begin 644 prefix_patch.gz M'XL("+Z6SC("`W!R969I>%]P871C:`#M/6MSVT:2GYE?,?)5Q:0$R@`?$BG% M23F)-J=:1TDE3O9NGIU_0\L+^_SWXLHB=_3_F3URD_G'>"Z?3XB1\\\4?,GYX$PY-!T`D.IY_T M^_WU-8.CDQ%4'GRR;__!-#ORO>,!HR1C_Q7S69)Q]O?G9R]_NOCZNTXW^.RS M0:]1\K_/+OY*)<-FR?/SB[-OO_OYC$I'O4_Z5NFS'[[I4,FXV>ZOY\^?4\E1 ML\W%V3?8#,LFS5;G%S^>_?""RJ;-LJ_/GI^]$'@$?A/HU^??G(MV0=`L0_2_ M/;N0Q31V^._)/OOOL)Q7X67*63YCU3S)KA)>'C)VEF%FS+(\YB4+"PZ%>8E_ MAQ4K^(P7K,K9;)5%59)GT&+_"0"$KO[GQ=D/%P3V!8$EF'?0Q2E-)TS,T83! MK[YSWB9#;SI6\P;H57/.+I,L!AALEA<(K637_*[1W0OJA&I>G^+8^M@XRA>+ M,(L!^ZO5@F<5-NK7C1+(>;U8I15@)EM1( MLI(7%5O`I#Q1D#@EV2P-KQI401C0`HL%48#^QU-O,EI/_^!HZ@7'4V,&ECF" MN9US8`$8E($!NPU+EH9EQ6#`4!P[NK])H,$EOTHRPF`/(>X]93Y+9BS,ZIF9 M`ZA+SC-VE=S`WWJJU10"Y#T;\E5>B;EK@67729HJZC\(L#&W2DY669PS?B.Y M2!(S&$^\8!H(2Z3K6F4AA5 MJS!-00PY/@3=CNRD15C0%ZD2K2DT3U7I[*@:D%!=B_.U/SU\PAEK+[S$B M<6CWJB>XY"F/=(\FC!<$A#2?&T92*ISKJ;%!_'S^Y4]_8<)N*!#V"';`X^?S M9]]_SX2)D4"4^*,R1?7AH(ID`ZE7]"R755BM:B;0?-3DAM?PZ]1`A#0>ZV+V M(?[LZ2Z^DETHCA.,)CL"D_`"Y0;^R_)B0?/L0^;WBAM+#FR"4[TO!`P&%*`= M":,YJY(%9P60.J9!+L(D8VF>+SU1%<5QSJ-K'I^@`"<:$!3XGFC2&#:4%!RZ M/)4-(!TT:M(?":ANE?)9!<("PDG*"#]J<`B]CX-F3,+$(=YB2JA M[(%]2M`(19@J4DG*P7!`MUURQE]QF$W5S3R\X1I0M`+B@TF`+`'3@TD'&K[J,PBOBRZ@/!^F!/5GV@ MWC+E%7\$I*\)K^CLXJ>OOOV^UX*3@J3HIICPF.^N15W&^6W6!R:J M\N+.:@:%6":+",B>`G(91M>W81'W@1<+:*72F/0LI\WH63>*.0ZCV5;DUA"$ MO[BA_6U>Q*WVF+FM/=I812:5B7F"6,K[7=NRT2_FU;UB2_;&0J!-M0:$NG5- MM;H1FM0,V*R?S_I"M_;SPI@Q72&?B>*\T'.V;B9,F$Y([EDWFRGZU6UJ\FT; M!C$?=M$&@+EK\8["95*%:?):3WZ=(XAH8T"@*+=+;:$TVCMG`Y959*\?FEAH]#&^T,_"!0=#M$`B7_ST_+G-D:KJMEI+Q`6* M^\NPFA,^F`,9F*;*%,XCQ6";[S^?8O@`5<`[ROR["+E_?\GVWT6<_?8'4T+E=F\82D;3K% M3N<.3K7>SNKC;@F`TAF8MH>[Q%!R7VRN0$U*BE2CWJJ<0[7EBFI!@GYKT5$4 MMX7G8Z?X'TY:)W,/?2\831K,78L@BC&*H,ZA#+M+P(2V,&+T]:"N3D.R53,7 M%7)/[_H;)%QE"5"@#%.3D#K3)NW`G7:OM]J MN<'S4UBUK9T!2[N!"M1."S^-^4W2#^.XS_,40-PD\!M^VH.353+^JE)U\+<] M.JBD'#.!F!&P&D0[ M!K8&^U;+K>-V1**@]>:XL8EY%"[+?II'U^`K9DE$S3$/LRBG-:G"GQ45Z>>: M&IHY1%+Q!^E7*?2V?OT8A/X#$_4'R/8'(\S^_238__C$UG^0K/I_L(`ZK?08 M!+8^-V=`@D6F]!T`SB)N^PU024P%51$_G;L(NF(]E^OFT*2J"-,`U[O(JQ?' M5@MW/`6ZVQQ166]7`:@=5+A)UH8&S?'.>`4K!!,%RG$J!ZR>9$($:PIA%N9L M7.2VFO;+ZV39:H^96V'`PN[&[AYS=NI>-[6[5^VW=U]@@"3/A&Z1[2$/LBAG M8V.Y1FRH)9F]DXO1!H&3[@0#^;M`JLFX0Z3":-=$?U?,73CO@.Y57N6P)DE7 MBXQ:8EHDM[:203#1QA6H=K:HI4@UVR9(:O7=7G/?)++,L=C>`$%2IPU`%K3: M`R,+QP&/ZL7D+RAG1^I.V]GY\'4G@,#BO-BXL_D.^G1G!>K_OEK3?ZBJ].^I M'_V'*D7_WIK0?Z#Z\]]-Y_GW473^?;2;_P"5YN^NQ_S=E)=_3XWE?QQJRNGR M'8^]8!*T7;[?\D30#W^T.B!/6CF6F""WTJVRS(,FHG+SB(E)[$6(8G]9`&FX M&`'ER(Q-UB%?71V!W-:HZA;T%EHJP7EN%J`"-^&8C6H&A28 M@QFU-9!D;5F##Y6L_H=)2R?+3D;>P'>L4I:K"CH'F1#`("E2GK[?8R/PCU5> M<2/8>9.('!7OK&_CV.W$V7%S`29RC&787KLZZGNC,B8WN4FRE5[DJW:N`%X+ MO50$KZE-VHI=UW7TUH>N6>]YV,C<.(9QL^M(;IRCN=DT(!-`R2NY74PM(2E2 MVP.TLK%6\9`PW%-G]=5E62752CIC=;)%0IMS+:XUJV$\JF85$9UJ53'TM4JT MYL`9-H+Z]XH1F]W>*:?B3OD2S5*MBC#A"A91I=MYGO):$V$>96G;2`I1"FU+ M(7Z$0NO?3U+]#T$\_0?)I'\?0?R/^+67/G^(O#6O92!N][B2T:X.=0/_)!@Y MS?$TF'K3H66.DQE>,,)[1I^)$70*7JT*NM6FRK$7Q)@]?8J7FS#9HZMK'2S= MD]?[,`N:8Z.H9$]9FIY::63NRSSM]G1VW5/GK>Q._5OP!5]<\N(E7DTKL M1D=WB`T%[AHO$^V]+G;[CRM8=.-%&#',7H^:S3A?(E0DJ***H>_>`U7$M2UQ MA^]3?3^N]^^CTCH$W@/5FEQ[S>\6X=)DQ"'S)R?^Z&3HYMMV`^+"'9"6!=J MZ>%M;06FBW``-I!7GTGNL2^P!@(E0-81Q1X[4>";<$_UE.)LTVUMS'HK++(< M_5C?!K:HB9?T&DKC^&0X.AF-@?B@"IK4;]5*)0-J\1:Q[PBVWN`23F;Q"=.B@QZLE7BA\2OLS5W(-'V??LKV9/^H[IP7`P/?&PU\S5-*".E9`*DC.WBY,>(V^>63`1VI M9&T)A/4%*5@L1X@V7U!6FSDH>Q,W8)VW`B'HL]$E[5SCA7:!>O]SI7#K0B`' M.C,@ZZ2#J#]@+\R3U).#<4!0GI>\@>5/O%$P7,\\H\'4&PU'-?.,!@.@L][7 M[W2P>XN;04P10U)]C]\^[EDX&B(@.**#JA4X$/63G"QBG@ZX;7'*U85W-:XG M^W2-_R9A(I2^"*\Y*U?T1`4]P%!":5)FCRM6Y@LN+N-C+.4J3,7%54&;)-/Q M^"X1%/3#Y[6MA!R-=1=5!^F.-V\8BM\O4?DK#>[_,AR=^YHJ4&EZ;)!M!:"KX+(>_;K) MDQC^L22S>3E\?['L09U_PO_X9[%4C"+E6F76+%_G5:Y,XG+5NL;[![I4W4(9 M'?*4E_+E#%GZVPK?2)`WI^G5A%#>1CYD^]C5/GN6ECE=."=9]%#(Z>HW)!+P MQ\W;^&"0P9^/#]?=?'90K,%UF&L2"5FG5FL]RF_I.52)L[:S1"\1R"9"E^@* M;YYJ=^K4*I9DIM_RR8L#]-H.3+99IX*%/R.N;]^$!=ZP1[<.O(RDPIOKZ5T/ MR1L60"?(@#KIBB-=6NY`4D8-7^SX9`!KB&.G+]:L+JYT3T_&$[=]&HR]8;V& MV.HPUQZIJ5EQP=81_/J?N6NLYON-"_1T^"P9/!$0LHY#,<@;H>MM6UKJ[5 M-:S![]8TX\`;'6EUW8ACF"MHN;9"7Q9WG,2&Z2_1_%<9U5!R8A?2W%ER M`6DE:4`<*6J4;1\+D/-NA5+:?;>C(";>M$P4+:)2H&,,"'W$-)6N,]'A2'MT M#Z>#6.V6\@&DCBL&TW$%4AK`>A*<6)2814JRJ<@P*"89I%O1,5;#S7DYP/4; M%7;+WL,(UV35596DUO,O`2B8DX%_,O*=KD6KOO`MCD_\(_=]-[SDH0,-4DK! MN>S2\V@>:5)\?@?_C9.BJ>(M!Z,.Q76;#H961U_]]`*,_5_.?J`P,"TL]HS` M1*^>GT;\0$VQ60#+C;U63](SD'!>PY*9=UV5/-;*37G6.[4P:+1!>V*'7J*J M;@%<&2WOUG2FVM$""2P$T-9LZ\(%E^'5^AK&6@0#E61$ZX'CA`D8+M#2`FX: M:,'%"-W#@772`<$_4-$)Q1+-V>RX`/P"30\.4.YPC;@+!45W#Z6CP%3$,D1D M`>SD6KYK4QG4JLVY(N(CW98-#3]]RO[E:-G0A6KNH`26(C_B4UA)QAX%'BOG MR8R>0WP4]!]-6)CFXCFT1X/^HRF37A`)\;%2M/<6XC4.N>`EN2@&:.K9MTG>._Q4I.MV+^L0S#8%T9)M`T1O]#X2TX^AZB02S`&>FPC4X"^:?OPA'3R=H((D$SO0XL+"E4C()^@D2)1^ M_%U4ZDX#>]D5BF#1Z^F73A%I'>"^']+-,!D-0#RC:`SK_:#J]*]'WE$=QC9W M!@*7ISS%LZ$X%'(J M?*!=?*$NC!=89;X53+=:"*P:47:!)*D3P`4])J5CI+LD$7(A#"^#JBA_Y)2Q-3AL/T@:>FG,]>/G@\_7`"'38NW\ZCJ&[ ML3?"95A&="R+N%D$ZAB&H9\H+N7;P3I0K=X.!1MBAJ_EX]0"!N%LLK@1\`EL M5FYL+35C0WHX.N`$YF5=%$S5I0VT;F"=(+@>8+\<-^``3+=''@ODUO[)U^<_ M/OOR^=G7/>G`=+")W,(N@6"78,NO32_%"+@8N\TBL-)Y:W9M[T/I:!G9381* M+/0;/0E1[Q/$ M>@/BEC\NN'P4&&UN_6KQK&O*'_AJ:OH:VE:R9SMP8`3VGRQK.Z`>U-N(@WDAK6VZ*(5#S-B7C;QZ(7?RT2!+R5!<#>^YFZ# MJC'NJSQCV0IC%?)I6]I7P>7LH-KW$C1NSRD'C*EW75F\8D@?@.L##) M\:$)Z5SL[>B7PJ'>,B\3W*L6#_Z*?JYR>NE(G(:G%W1O<9?,A`3SR!G%YF3_ M&B:^#2[0DT-1Z!_:FT4U=85(Z(UE,K"F]@GJY?QK=8YI9VFI?#JLH$$('OD< MX[L:BA!M*@&#)#8O/WM*`18467WLAU0:.MFZPQKB'D8_)4S1HA)A")-E;)[I M**:A'Q)1UC?`$QRM2VJ7P(6R!5VZL*-TVY?)V>7ME6K%V_W7Z5$]>;YVI$]2S& M3QCP4KU4KL$S$X[Z((1X'AOZ*.?Y*HT9'5XU]^>A%%,8X\J%A",<.I<43+Q@ MJ+?)=W0H0"<0+TH7`G[GRZK\YF_T+\ZR1GA"\ MAR3S;F82#8.P-QM:A.M*^-8()/1=/6-L74X@NA+%<+8E^ M3(3%#C6@8`+$5R$*.NW!HJ2(5@M00%G$2WQ9)\SH?7TJ9.LM2*6L"3/D, M5%U1P"3G$T/"8#8YE,4)5=DGO;E/I@T?NXW"%6AWH#"> MT;CX[B6BHMWG>%7(3Z',3,?Y4+U$7Q^C;1[O\XT`"FG$YE*K:]4GZR;LJ5#M M[1GR#?&6_KYV4L2OY&H.ZB:\DY\OL!0Y;6D(.M(:#C^-L:Q-MVF%B$^@U,2Y M[O=OZ*&B(9$GS!/\#D5,Y/Z"L?-,?K*$SK=#45(HKX>^RX/NE>4RX515O%@D MF7!F,WZK7"SZ_$&^JA3Q"W'Y`>PO?J8!,WB8ZN\="'#ZV`X>S(FQG+Z*$RZ7 M1;XL$M`QZ1WZ@95`4WX"A8N#/"1C%C@0.#JQ51.:9WAX+`0WW!S9/%IB^ MF&U-]>G[>EZ``LV#T*X),M:`3!932[E0;CAXS'+-#0>GO8D?#(]!)1Z;I\'_ MM"K1#(S#&K6UD0TND<-A%K/0/$;U>ZY:;<4I,]V:L^/4'/=8_5KK!57SB9!4 M,W"0U$NN$U`'C=4(%H-B5?YD1U#3H*-$P_:M7J MY,4X$4!`:,;DUDN[%5.P#34+JN/T?L&(K]8&.M#8I&5>G_MLSHY)R%D(+6(B MH_16%G1].;&F&T">TX>$1'7\95LMV7:CAR/.JR<5'5J5W^W)K@Y;<1G27<(+ MPV4++'=-QH29&?36G?RSW!XZNRJIU3(;0H.+J(;30-QBY')?0J`/"=T8'Z+" MJ]N8U!?$+:MA6`H#POV-1OW]H8T.'(!`#\YTF;[9YJH=4B@"_1%>NKS?SR+=_D.4]N-A$XW^I%*?L0Z M]Z&>Y(RAV)C*ASXJ15^FTA_PJA60:0!P2@YW[ M>Q\/UPXTUSO/._FN-E.\!^]5`GRKO@E'V-%IB[V&IR$.->XY8S"V77WF;([BV(=5C89IX-0>*=!=_A6VD+ M84:,MQYF=06(-P>'K6NA=GS8'1O6#12_K75[:QYV!WH" MQHW5=S-!\9@??#1.'AJ,L';#?,-VT9KSBUNVV451X!P+28=I/VKCG9E;U+CH M'1\-B42;3\>^$XG'TF(*D;C[5!\8<'Z8=Q-4>A:L13W@G5 M/^;"SO$`OU)^_#$07*'Z<1-\XD^\R6#LNB$5S1M79JSC3V_>(.ANMPM.HXI# M=7U8I7W&'@>/<3T'!9^SQ]/'ZMHH'J;!TM`H?4VEJN294?+WQ[W>^J$XKA/, MT6@B"+2@>?&976MVU5\QG$6O7FON5JE^2TOH&MT M%[KB*0-*?<'Z2(0#-CAB)_`[?&Q>^C)A."\XB4DY$7Q5INA!4^9"!$B\\S6DMM!-QMYD,JGO04\F1]ZT?@JJ<0]: MW8(N>3H3;SHU+T&C>?-%N!06Y\D)V#I85&4KWOJL=R8_-YUEPEV7J\`#$=`Q MO_N%DP9.9)E