[0+8+FQ(+4)[1 0FO10F"G+Q1' +FQ()+4U1 FQ1"L0' ,Q1:M(Q1+4(]1]0)) a#q!%%yZ`*k~$.wqs [9iK |N s)2r;+DMM;[n;Oy;;6;G'mY+u+K-.9-s//*.E,6;542T8k5{549+3Q0i0z1+b+i,tx'A' =w& Count Back& Count Line Nesting& Indent CLUline& Setup CLU LibraryCLU Mode^R Backward CLUexp^R Backward Kill CLUexp^R Backward Up CLUexp^R Beginning of Module^R CLU Compile^R Down CLUexp^R End of Module^R Forward CLUexp^R Forward Up CLUexp^R Indent CLU Region^R Indent for CLU^R Indent for CLUcomment^R Indent Lines Of CLUexp^R Indent New CLU Line^R Indent New CLUcomment Line^R Kill CLUcomment^R Kill CLUexp^R Make CLU ()^R Make CLU []^R Make CLU {}^R Mark CLUexp^R Mark Lines Of CLUexp^R Transpose CLUexps~DIRECTORY~~DOC~ & Count Back~DOC~ & Count Line Nesting~DOC~ & Indent CLUline~DOC~ & Setup CLU Library~DOC~ CLU Mode~DOC~ ^R Backward CLUexp~DOC~ ^R Backward Kill CLUexp~DOC~ ^R Backward Up CLUexp~DOC~ ^R Beginning of Module~DOC~ ^R CLU Compile~DOC~ ^R Down CLUexp~DOC~ ^R End of Module~DOC~ ^R Forward CLUexp~DOC~ ^R Forward Up CLUexp~DOC~ ^R Indent CLU Region~DOC~ ^R Indent for CLU~DOC~ ^R Indent for CLUcomment~DOC~ ^R Indent Lines Of CLUexp~DOC~ ^R Indent New CLU Line~DOC~ ^R Indent New CLUcomment Line~DOC~ ^R Kill CLUcomment~DOC~ ^R Kill CLUexp~DOC~ ^R Make CLU ()~DOC~ ^R Make CLU []~DOC~ ^R Make CLU {}~DOC~ ^R Mark CLUexp~DOC~ ^R Mark Lines Of CLUexp~DOC~ ^R Transpose CLUexps~DOC~ ~FILENAME~~FILENAME~~INVERT~m(m.m& Init Buffer Locals) 1,(:i*%)m.LComment Startw 1,(0fo..qCLUcomment Beginf"ew:i*% ')m.LComment Beginw 1,(:I*)m.LComment Endw 1,(32fo..qCLUcomment Column)m.LComment Columnw QPermit Unmatched Paren"l 1,0m.LPermit Unmatched Paren' 1,m.m^R Indent for CLUcommentm.LMM ^R Indent for Comment 1,m.m^R Indent New CLU Linem.LMM ^R Indent New Line 1,m.m^R Indent New CLUcomment Linem.LMM ^R Indent New Comment Line 1,m.m^R Kill CLUcommentm.LMM ^R Kill Comment 1,m.m^R Forward CLUexpm.Q...F 1,m.m^R Backward CLUexpm.Q...B 1,m.m^R Kill CLUexpm.Q...K 1,m.m^R Backward Kill CLUexpm.Q... 1,m.m^R Mark CLUexpm.Q...@ 1,m.m^R Mark Lines Of CLUexpm.Q..H 1,m.m^R Transpose CLUexpsm.Q...T 1,m.m^R Down CLUexpm.Q...D 1,m.m^R Backward Up CLUexpm.Q...( 1,Q...(m.Q...U 1,m.m^R Forward Up CLUexpm.Q...) 1,m.m^R Beginning of Modulem.Q...A 1,m.m^R End of Modulem.Q...E 1,m.m^R Make CLU ()m.Q..( 1,m.m^R Make CLU []m.Q..[ 1,m.m^R Make CLU {}m.Q..{ 1,m.m^R Indent CLU Regionm.Q..G 1,m.m^R Indent New Comment Linem.Q..J 1,Q..Jm.Q..J 1,m.m^R Indent Lines Of CLUexpm.Q..Q 1,m.m^R Indent for Commentm.Q..; 1,Q..;m.Q.; 1,m.m^R Kill Commentm.Q...; 1,m.m^R CLU Compilem.Q..& 1,m.m^R Indent for CLUm.QI 1,m.m^R Indent New Linem.QJ 3m.cCLU Indent Offset* Amount by which nested CLU code is indented m.vCLU ..Dw ^:iCLU ..Dq A A | A A ; A | ( )( A A A A A AA AA AA AA AA AA AA AA AA AA A A A A A AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA ( / )[ A AA A AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA ( A ){ A q m.q..D qCLU ..Du..D q.0,1M(M.M& Set Mode Line)CLU 0[2[3 f"g:<.-z:"lfg'm(m.m& Count Line Nesting)f"gwfg0;'"l!'> ' [4 -:<.:"gfg'm(m.m& Count Back)f"gwfg'"n999-q2u2 <0l.:"gfg'-lq2u4 m(m.m& Count Line Nesting)"gwfg'q2+q4-q3-999;> 999-q4u2!'> -:m(m.m^R Forward CLUexp)[9.,(m(m.m^R Forward CLUexp)).f:m(m.m& Kill Text)-[9.,(-m(m.m^R Forward CLUexp)).f:m(m.m& Kill Text).(m(m.m^R Forward CLUexp).:)j00l.,(m(m.m^R Forward CLUexp)).f[1j 0l.: q1j:r"ll' m.m^R Forward CLUexp :i*(.[8)mKwq8,.(q8j]8)f,:m(m.m& Transpose Subr)-:m(m.m^R Forward Up CLUexp)[2[3[4 "g1:<.:"gfg'm(m.m& Count Back)f"gwfg'"n999-q2u2 <0l.:"gfg'-lq2u4 m(m.m& Count Line Nesting)"gwfg'q2+q4-q3-999;> 999-q4u2!'> ' 1:<.:"gfg'm(m.m& Count Back)f"gwfg'"n999-q2u2 <0l.:"gfg'-lq2u4 -1m(m.m& Count Line Nesting)"gwfg'q3+999-q2-q4;> 999-q4u2!'> [2[3 1:<.-z:"lfg0;'m(m.m& Count Line Nesting)f"gwfg0;'"l!'> .:f[sstring <<-:Sprociter(); -@f l 0a-="n!'r -@f l -fwf(l)-(fw)(-@f l0@f)(fwlc)@;>0l> 0.:.[1[2[3[51[6f[sstring q1-."l-q6"e0''"#q5j' -9u1u6>.[0 ff"'e+1*f"gm(m.m^R Forward CLUexp)'wi).[1 Q0Ji(Q0,Q1+1.[0 ff"'e+1*f"gm(m.m^R Forward CLUexp)'wi].[1 Q0Ji[Q0,Q1+1.[0 ff"'e+1*f"gm(m.m^R Forward CLUexp)'wi}.[1 Q0Ji{Q0,Q1+1f[sstring m.m& Count Line Nesting 999[2[3 ff"n m.m^R Indent For CLUcomment[.1 <0lmL 0,1a-%"em.1' l> -f' :i*%  0fo..qComment Beginf"nuB' qComment Column m.m& Xindent [R[1 -1[.1 0lmL 0,1a-%"n:lgBfqBr' "# 1a-(0,2a)"e 1a-(0,3a)"n 10,-(@-f )a-10"e z-.[8mI(z-q8+2j)'' @f%-1l.,zf=Bf"efqB+1'-1c0' fsshposu.1' .[.3@-f l qCu1fsshpos qH-q1+1"g 0fo..qComment RoundinguR qR"eqH+1u1' "#qH-q1R+q1u1'' .[.2q1-q.1"n.,q.3k qH,q1mI' "#q.3j' .,zf=Bf"efqB+1'-1c q1-q.1"e0' q.2,.ff"n 0' f[sstring0fs^RPrev .[1999[2[30lm(m.m& Count Line Nesting) 0,1a-%"nq1j0' @-f l .,(:l).:m(m.m& Kill Text)(10,-(@-f )a-10)"n9i-1' m.m& Xindent qCLU Indent Offset m.m& Count Line Nesting qComment Column 0fo..qComment Rounding -999[2[3qZ*999[8 0l.[4 <.:"goN' -l@f l (1A-13)*(.,zf=%%%&1):@;> 0lmL 0l@f l-q3*qZ+fshposu8 !N!q4j@f l13,1a-13"e0k0,q2*qZ+q8mI0f' m(m.m& Indent CLUline)0l:f-@f  k@f k .[7i  m.m& Xindent qCLU Indent Offset m.m& Count Line Nesting qComment Column 0fo..qComment Rounding z-.[0-999[2[3qZ*999[813,1a-13[5-1[6 "n -l@f l 1a-%"efshposu8@f%-1x3oC' 1a-13"n0u6oD' 1u5' <0l.:"goN' -l@f l (1A-13)*(.,zf=%%%&1):@;1u5> !D!mL 1a-%q6"ez-.u6' 0l@f l q5"n-q3*qZ+fshposu8' "#q8+fshposu8 q3+999"n-999u2m(m.m& Indent CLUline)0l.u7'' q6"goF' !N!z-q0j13,1a-13"eq2*qZ+q8mIq7,.' m(m.m& Indent CLUline):lq7,.(0l) !F!z-q6j@f%-1x3 fq3-1"eq2*qZ+q8u8' "#fshposu8' !C!z-q0jq8mIg3gComment Beginq7,.1,:m(m.m^R Indent New CLU Line)m.m& Xindent qCLU Indent Offset m.m& Count Line Nesting qComment Column 0fo..qComment Rounding -999[2[3qZ*999[8 .,(w.)f[1[0 q1j:r"ll'z-.u1 q0j:r"ll'.u0 q0,z-q1m(m.m& Save for Undo)Indent <.:"goN' -l@f l (1A-13)*(.,zf=%%%&1):@;> 0lmL 0l@f r-q3*qZ+fshposu8 !N!q0j<.+q1-z; @f l 0,1A-13"e0k' "#m(m.m& Indent CLUline)'l> ff"eq0f(:),.' q0,(.:).(q0j)m(m.m^R Mark Lines Of CLUexp) m(m.m^R Indent CLU Region)ff"em(m.mSave All Files)' "#"e-qCLU *Handle*f"lfz'w-1uCLU *Handle*0'' :i*:ftCLU command (or several commands separated by #) If null, will compile this file. f[helpmac 3,m(m.m& Read Line)CLU command: [3 fq3"l0u..h' fq3"e:i3compile &' qBuffer Filenames[5 [4[6:i4 <&f3f(:;)f(,0::g3u6:i4465)+1,fq3:g3u3> :i343 # stay :ft>>> 3 Running.....   qCLU Compiler[4 qCLU *Handle*f"l fz4 # 3uCLU *Handle*' "#,0:fzclu # 3' 0u..h fsmsname:f6u3 m(m.mView File)3clu.junk.0 0q2u39999[5 <:f:fb%([{)]}"'+2f"g()-2c-1'f"ew-fwl :sendifforwhilebegintagcaseexceptprociterclusterdothenelseifelseotherstagwhen+(10,fka:"b99')+2f"g r0u5q2"e0,2a"b0;'1a-$*(1a-.):@;'' "#f"ewrq2"e-fwl1'q2-1u2"e-q2,q5f*0,q3f:u3w'q2@;' "#+9"lrq2"e-fwl1'"e1-q2,q5f*0,q3f:u3w'0u5' "#0u5r%2w"nq2,q3fu3w'q2@;''' !'+4F"gw0u5%2w"nq2,q3fu3w'q2@;' "#+3F"gwq2"er1'q2-1u2-q2,q5f*0,q3f:u3wq2@;' "#"ew<:fb"\+1;c!'!>0u5q2@;' "#!"!:fb'\+1"lc!"!s''0u5q2@; '''> 00[1 <0f::fb([{)]}"'%f"ew-1' "#+4F"gwq2"ec1'q2-1u2q2@;' "#+3F"gw%2@;' "#F"ew<0f::fb";10,0a-\:@;!'!>q2@;' "#+1F"ew!"!0f::fb'+1(10,0a-\)"e!"!-:s'w'q2@;' "#+2"g1' "#fwl -:sendifforwhilebegintagcaseexceptprociterclusterdothenelseifelseotherstagwhen-(13,fk+1a:"b99')+17f"l cq2"e0,-1a"b0;'0a-$*(0a-.):@;'' "#-16f"ewc%2@;' "#+10"gcq2"efwl1'q2-1u2q2@;' "#cq2"efwl1''' '''''''> 0o[5 0,1a-%"nmL fsshposu5z-.[6 0l@f kq3*qZ+q8f"gmI' z-q6j-@f k 0,1a-%"n'' "#0,2a-%"n0k' "#0,3a-%"n0kq2*qZ+q8f"gmI'w''' fsshpos0,2a-%"eqH-q5"lqH,q5mI'' qCu5 qH-q5:"l qR"eqH+1u5' "#qH-q5R+q5u5'' qH,q5mI-1m.vCLU *Handle* :i*ps:tcmp.exe.0m.cCLU Compiler* Name of Compiler 1,m.m& Count Line Nestingm.vMM & Count Line Nesting 1,m.m& Count Backm.vMM & Count Back 1,m.m& Indent CLUlinem.vMM & Indent CLUline 1,m.m^R Forward CLUexpm.vMM ^R Forward CLUexp 1,m.m^R Backward CLUexpm.vMM ^R Backward CLUexp CLUPackage for editing CLU code (CLU Mode).C Set up for editing CLU code. This is sort of like LISP mode with S-expression replaced by "CLUexp" (fully nested CLU expression) The following commands are set up: C-M-F ^R Forward CLUexp C-M-B ^R Backward CLUexp C-M-K ^R Kill CLUexp C-M-rubout ^R Backward Kill CLUexp C-M-@ ^R Mark CLUexp M-H ^R Mark Lines Of CLUexp C-M-T ^R Transpose CLUexps C-M-D ^R Down CLUexp C-M-U, C-M-( ^R Backward Up CLUexp C-M-) ^R Forward Up CLUexp C-M-A ^R Beginning of Module C-M-E ^R End of Module M-(, M-[, M-{ ^R Make CLU (), [], or {} C-;, M-; ^R Indent for CLUcomment C-M-; ^R Kill CLUcomment tab ^R Indent for CLU linefeed ^R Indent New CLU Line M-J ^R Indent New CLUcomment Line M-G ^R Indent CLU Region M-Q ^R Indent Lines Of CLUexp M-& ^R CLU Compile^R Move forward past one CLU expression (or several).^R Move backward past one CLU expression (or several).^R Kill next CLU expression (or several).^R Kill previous CLU expression (or several).^R Set mark one CLU expression (or several) from point.^R Set region around lines of one CLU expression (or several). Backs up to the beginning of the current line, puts the region around the full lines of the next (or previous) N CLU expressions. Puts mark at front, point at end.^R Transpose the CLU expressions before and after the cursor. For more details, see ^R Transpose Words, reading "CLUexp" for "Word".^R Move down one level of CLU structure (or several), forward. With negative arg, goes up, forward.^R Move up one level of CLU structure (or several), backward. With negative arg, goes down, backward.^R Move up one level of CLU structure (or several), forward. With negative arg, goes down, forward.^R Move to beginning of this or previous module. Leaves the mark behind, in case typed by accident. The beginning of a module is sym = proc or iter, at beginning of line.^R Move to end of this or next module. Leaves the mark behind, in case typed by accident. The end of a module is just before the beginning of the next: see ^R Beginning of Module.^R Insert () putting point between them. With explicit positive argument, put the ) after the specified number of already existing CLUexps. Thus, with argument 1, puts extra parens around the following CLUexp.^R Insert [] putting point between them. With explicit positive argument, put the ] after the specified number of already existing CLUexps. Thus, with argument 1, puts extra brackets around the following CLUexp.^R Insert {} putting point between them. With explicit positive argument, put the } after the specified number of already existing CLUexps. Thus, with argument 1, puts extra braces around the following CLUexp.^R Move to or create comment. Finds start of existing comment, or creates one at end of line. Indents the comment to Comment Column. An existing double percent comment is aligned like a line of code. An existing triple percent comment is not moved. With argument , aligns the existing comments in the next lines, but does not create comments. Comment Begin holds the string inserted to start a comment. Comment Rounding holds the macro used when the code goes past the comment column, to compute a new (larger) comment column from the width of the code^R Kills the comment (if any) on the current line. With argument, applies to specified number of lines, and moves past them.^R Indent this line for CLU format.^R Create new line, indented for CLU format. May change indentation of last line alsov^R Inserts CRLF, then starts new comment. The indentation and the number of percents are copied from the previous line's comment. May change indentation of last line also. If done when not in a comment, acts like ^R Indent New CLU Line.^R Indent region in CLU format, relative to previous line. All the lines in the region (first character between point and mark) have their indentation set for CLU format, relative to previous line. Leave mark before and point after, unless arg given, in which case do the opposite.^R Indent full lines of one CLU expression (or several). Backs up to the beginning of the current line and indents the full lines of the next (or previous) N CLU expressions. Puts mark at front, point at end. This is just ^R Mark Lines Of CLUexp followed by ^R Indent CLU Region.^R Call the CLU compiler. Create a compiler if needed. We first offer to write out each file, unless there is a numeric arg other than 0. Reads a command line to pass to CLU: "&" in it is translated into the name of the visited file. If just CR is typed, "compile &" is used, that is, it compiles the visited file. The command line may have several commands separated by "#". We always add the "stay" command. The CLU compiler is kept from one call to another. Arg = 0 => just kill the compiler.S Count nesting difference across line.S Count nesting backward.S Fix Line Indentation.S Put functions into MM ... vars for speed.CLU Mode ^R Forward CLUexp ^R Backward CLUexp ^R Kill CLUexp ^R Backward Kill CLUexp ^R Mark CLUexp ^R Mark Lines Of CLUexp ^R Transpose CLUexps ^R Down CLUexp ^R Backward Up CLUexp ^R Forward Up CLUexp ^R Beginning of Module ^R End of Module ^R Make CLU () ^R Make CLU [] ^R Make CLU {} ^R Indent for CLUcomment ^R Kill CLUcomment ^R Indent for CLU ^R Indent New CLU Line ^R Indent New CLUcomment Line ^R Indent CLU Region ^R Indent Lines Of CLUexp ^R CLU Compile & Count Line Nesting & Count Back & Indent CLUline & Setup CLU Library +8+fq(+4)[20[3 <%3,-q2f2u3q3&1@;q3"l0'> f[BBindq3-1*5,q3*5g2q:..o(0)+q2