From 2624185d09b07ec50c83ad22a4f86e9b0241dc9a Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Fri, 16 Dec 2016 22:16:57 +0100 Subject: [PATCH] Add Lisp-related EMACS libraries: DOCLSP, ELISP, LEDIT, LISPT, LSPUTL, and XLISP. --- build/build.tcl | 6 + src/emacs1/doclsp.30 | 103 ++++++++++++ src/emacs1/elisp.10 | Bin 0 -> 2760 bytes src/emacs1/ledit.34 | Bin 0 -> 11969 bytes src/emacs1/lispt.264 | Bin 0 -> 12665 bytes src/emacs1/lsputl.8 | Bin 0 -> 5408 bytes src/emacs1/xlisp.110 | 361 +++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 470 insertions(+) create mode 100755 src/emacs1/doclsp.30 create mode 100755 src/emacs1/elisp.10 create mode 100755 src/emacs1/ledit.34 create mode 100755 src/emacs1/lispt.264 create mode 100755 src/emacs1/lsputl.8 create mode 100755 src/emacs1/xlisp.110 diff --git a/build/build.tcl b/build/build.tcl index a0d3b9a3..563a9ee3 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -263,6 +263,11 @@ respond "\n" "\033xgenerate\033emacs;abstr\033emacs1;abstr\r" respond ":EJ" "\025\033x& compress file\033emacs1;auto-s\r" respond "Compressing file" "\033xgenerate\033emacs;auto-s\033emacs1;auto-s\r" respond ":EJ" "\033xgenerate\033emacs;dired\033emacs1;dired\r" +respond ":EJ" "\033xgenerate\033emacs;doclsp\033emacs1;doclsp\r" +respond ":EJ" "\033xgenerate\033emacs;elisp\033emacs1;elisp\r" +respond ":EJ" "\033xgenerate\033emacs;ledit\033emacs1;ledit\r" +respond ":EJ" "\033xgenerate\033emacs;lispt\033emacs1;lispt\r" +respond ":EJ" "\033xgenerate\033emacs;lsputl\033emacs1;lsputl\r" respond ":EJ" "\033xgenerate\033emacs;tags\033emacs1;tags\r" respond ":EJ" "\033xgenerate\033emacs;taggen\033emacs1;taggen\r" respond ":EJ" "\033xgenerate\033emacs;slowly\033emacs1;slowly\r" @@ -274,6 +279,7 @@ respond ":EJ" "\033xgenerate\033emacs;delim\033emacs1;delim\r" respond ":EJ" "\033xgenerate\033emacs;modlin\033emacs1;modlin\r" respond ":EJ" "\033xgenerate\033emacs;vt100\033emacs1;vt100\r" respond ":EJ" "\033xgenerate\033emacs;vt52\033emacs1;vt52\r" +respond ":EJ" "\033xgenerate\033emacs;xlisp\033emacs1;xlisp\r" respond ":EJ" "\033xrun\033einit\033? Document\r" respond "\n" "\030\003" diff --git a/src/emacs1/doclsp.30 b/src/emacs1/doclsp.30 new file mode 100755 index 00000000..0dfbcaa3 --- /dev/null +++ b/src/emacs1/doclsp.30 @@ -0,0 +1,103 @@ +!* -*- TECO -*- ! +!~FILENAME~:! !LISPDOC command similar to TECDOC! +DOCLISP + +!DOCLISP:! !C Print out LISP documentation +Takes string arg of command to find. If string is null, it will +prompt for one.! + +f[ B Bind !* Get our own buffer! +f[ D File !* Don't modify defaults! +FN EC FS RGETTY "EFT +' !* Be sure to close on exit, and look nice! + !* on losing terminals! +er DSK:macind;MACLSP_MANDOC 1:A !* Get the pointer to the directory! +\ FS IF Access !* Access the directory! +^Y !* read it in! +ER !* re-open it! +s'(l 0,.k !* Flush superfluous header! +1,F LISP_Command?__ [1 !* Get the argument! +FQ1 "E !* if null! + :F "G !* and we were called via MM or whatever! + 1, m(m.m &_Read_Line)LISP_Command?__ f(u1)"E''' !* try from TTY! +FQ1 "E !* Still null? ! + 0FO..Q DOCLISP_Last_Argument u1' !* try our previous arg! +q1"E @FT_[No_Previous_LISP_command] + !* nope, just give up on him! + 0fs echo active w' !* don't flush typeout! +q1 m.v DOCLISP_Last_Argument !* remember for next time! +QLISPDOC_Readtable[..D !* Get our very own readtable! +FS B Cons[ 0 !* Get a buffer to read things into! +[2[3 +J F !* Nope, try next entry! + Q2 "E FTNot_Found? +' !* if no entry was found, point that out! + FTMore?__ !* ask the question! + FI u2 !* get the answer! +   Print_next_entry +  Search_for_same_item_again + Read_a_new_item_to_search_for + Redisplays +N,Q,X, exit. +' + ft +More?__ + FIU2> !* Get his new command! +> !* Done? OK, see you later! +0u..h !* don't inhibit re-display! + + +!& Setup DOCLISP Library:! !S Initialze, create ..D, etc.! + +:i*..D[0 !* 0 gets a copy of ..D +!*5:f0AA !* Modify our copy! +-*5:F0AA ++*5:F0AA +=*5:F0AA +>*5:F0AA +<*5:F0AA +**5:F0AA +\*5:F0AA +/*5:F0A/ !* / does not terminate words etc.! +|*5:F0A| !* | doesn't either! +95 *5:F0AA !* Can't say ^^_ or ^^^Q_ or ^^^]^Q_! +Q0 m.vLISPDOC_Readtable !* and save it for future scan! + diff --git a/src/emacs1/elisp.10 b/src/emacs1/elisp.10 new file mode 100755 index 0000000000000000000000000000000000000000..74dc0cf7ce99f409daf6e2c2372898f90f07f29f GIT binary patch literal 2760 zcmcgu+iu%N5cO-B7HAWoaLc$DxCD7$vo1^-qVB3+r>s`2i*}FEZc*lx1BqGocH>o26Wt z4#?bd(N!Dzqr>9~s3ey<5S}DAd02UQJ2)TzRvTgI3!!sJ12~LCvSZfDD(^s?`YKS; zhxrOdD7Jz-m4^_@D1$(!F}$2QR$w4BiHM~=>wbnG3?NKn3BJceN6*ww_Kx(_y zX6tR6701$Bd69&|$VeIka~5)}8`nKw2U2NTXzSe=rXqtA8K^|%DorSV6pdZ<+&^}| z`?f_8kN4i{IX-T| z+H>ufOkRiu*SHbmmyH-HM~sSN9Lohk3R2y~^t2&Au5!xR9;LptTbM}lJcLM9Y~`BP z1;bQ{BFd2>*JzeiSbk6-5?LkOfG}_;qlg)E&4uj+Kdw153DY~^V`Q$$rSOTAOl7Q9 zx3K%ZLN>t}F%5dkb+3_A&_5Yoo{wz`?@lW1gUPYJXaZ1x$dX78tB&2~SXW(Ows1pn zoS1_I@o}^Q`^pnOemmB4>N_ODM`fj^qf?ASA`J_zWs+k_vq;{`h>{vpf#(w5i!4Km zR@HVa3&5T2m+sL5Hq#PL`hz!TmGhVmRPLZ0hgkdmxLjN(Lu4z3Z}zX@Y9Gr(2|$*M zq{zs~{&PB`!z9f^8Y^BXl7;l03fbcnuK*6?So%ujGFlOmPa`GD{r}*C&0l+UmIz1P zQ!NIZ3l#y5ofoSYtn=sxG_!F>bonr0f`MP~>dl zm$apYLHn!fUTUavWS5iD1vrFEC{0Z&^rDEd6O0v$6|sMzZe`MJW3omR?|=&G@y!cF zKrX!$GMz58h;e-(cL4^o-;Zqip3>wY7GD%5gn3#dzCj_D*&KYc-G|=S9d~E@dl+o) z3^oQ6I68lGcEaOet`eV!kG{DpDTXo+m4(;10A?@P*lW89&Ys~->35hIiRbx*W-0Gx5IJDJNwMBZ1nlJt?A}I~R_v|{ zT5bnZbH2lqhG2?h1;X=+xQMWEeI7=fD+G8`!CS9ep1K%%w+BJBf+?%DTx0jn4oZ** zy>d9S*a0TK+ZjCJ6#~4Zdtj3&+7xEV>m{N`O*PO19774FjPT*-<^abzJ85{@VQnpA z8PBDz=i8?WL(AODA8?Y)zu!Kq^L?jPE*T!A2@W!3-g-AQ^Bv55%0bOEENud%Zd&}^ z0pK%ht6K{je1G}X_QN`rnCdK-aHR?}8Pp1;;Ro)o9=ONFLfd6+b@!K6X(wD_g34OZ zoYxJ`T$OY!$%wB=B1fj>txAjg=MKP=t!D>+ZhiFy#e#L>(){GZ+tZZzwh~A(Fp1*Ce-+0!-dcWpc)-~lMsJLuCZS

7fotJ1gEHrUB$3ooOT^g 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 TzPBfP2+p?)IkWK+T=ahcO2bUf literal 0 HcmV?d00001 diff --git a/src/emacs1/lsputl.8 b/src/emacs1/lsputl.8 new file mode 100755 index 0000000000000000000000000000000000000000..2ab84fc730b41f4d0dcf73a115c693c6f9e9a83d GIT binary patch literal 5408 zcmaJ_TTk2A7Cz$PNJK}f&OEhBsa7~MlK`=mgi0eZ2sKSf2O0=Th}sfq(2l)LTpZi+ zg}^+_Z=Y}N?MphH9v*-=d)>da*0){TCu85ZKJ5+hhxTigO6||S>q%cM<)242stw#Y zq-o-MZsN+gRvApLrq_eYe=4=U>)UiC58wkTE$yM8c<7K8BHuV>j^03j9R4 zzU$vn94sYS3lRw`kr7UB9I#xl7gla9DlY9k=;c=h%u)pnuard~XtU6OzJOP+(bU6tN#{6W=u} zu0zQ}lIO+=r6C<}m^~p+K1eU-v+8>|nOaF2NphlKspO!eBD^@rLyy(d04fplMobNM zQbop&lI!D~8}{Os77QkBm|z5qa!BNRqajsP8ACKpxo2IGqP+f-^C4jSfW;U9g z&nC0$*?4w2Yt7pHyxpSyjDDit>E-q5xVp`e*Y@cuO`tjvQKIm|sACMK@ZX2W6kCy$ zNNW&k?WTE7M`!$-!Ey`yR$2SeS$F4obvxHOX5Sn)LiNjXp*%@IU8P4Gf1A3VO$|;~ z=yBRmz|r*{gIE_iaB3?z|3sasO}=y-JA9NqNah9c?wSpI+bqiLEar9@+NPHWfm zXc52+%j-bd-sna>koXrkRNs{ySE@iB068>Z?BXAhpdHP<^6QTaa3zyG0ED!)LlbGAw}D-f}_=0SUUS)QDrJ|U(;jG>JA$_=T~mqbq- z=Ov36FZxrOj%a#b`0_Dw6K>?kFtecmeO{}Snn#4*bnpBik~V8mN^bs110zq#-|)GM z>)j3iE`${Y87LVsd57~!8ePJpywN7Qb1^W0HO{;PWNDZTk$cn^BBS#SiI0*N0*S)d zKs{YsWFckCMwe}$CW~OLJea4B1MO=!S!8omBy`^7?|d~#pR`Etx9+$^Zm(ETj9s2& zIdD473-gTL9QDtpZNjfs9twlF+-!OkB&r_CI-s?9Qell+#;dM;lfkb*rQ&^<KQR!MN002$s7=X`l0`N@FC2 zZD2kW2fM7ZTvIpvFL?_1N|yGJiRfXEwg)A+MU9^Iw!~q)R4g{N3vM!(b;~6>S`|c zx|Hi_#zZWyS2j~ZuxDm$MGD^O8O(SD@HEa4)d#qhXZ-`y3r~ROggJ%Uj55!}Im={> zONr=>_8l2DvpIixfA*tbPJ^?_6?Z;}CeSRrtV=Oz{X0p$;pIEkJzf6G{qn$z8)G0A zW<~K73|HM!KnNdiX7d~f^Q5CTe9UxIWMnK^VA2ozIzPe&0|7ArvMQD*QtWxCQEa>L zsj2K<7<=D{lz#KIfr&kuQ45P$R&d_|y8%lEOOHcoxenO58mPE8%rRt8S8bG^!Yj;* z!e_WtfeZR7l&Hl-wsb`5A*7hvO>#|Xl0czy9dpofi0Q(yE)g?F2S*GlbHy_0L3pXu z0U=Hdp@2sZJI&-ik(RXKE#@BKnr0{l{=FD9^G6C&gvVTi*^ioJ2{kr6HQIZ6N)kEG zofkiMb|o3@I_>_Cp4Vw6=nuo3%~f*(zac26@+NZc7Mzhg)#%tFf{x+_7kKMg18BhS z;drY$Yh`V%2nD;LV2eFFXO!~xfxS15q)C5JbTNRe2ghU@EBjY!HCMLt@6^=HIHa@_-0>V2@CAbnS%7s7|1QxGU(0sn4bBa{r zz)rT`I9sU+hUSp09HmRE?e)fBdd&m5v9E?hoee|T_^_rD2-gDPhuMbv-#vvL=mETp< zzjy<1o??6PB~{1M1aSk&0e-n)8k}n0=h^^E73iymTjrR7fQiHtGTRaqgy=X0pIj0J z*0ygOXk)WcAmo(aa%lJ2XptbO%Vp7iuN_R8H38NtEr?0gtzOyYqU{;&FQq?tt)cv1 zibTJ3(E~seqln*{#ejLPeAPm4$pS%29Rrb@>b6=h?g k7vmeKtBHsSX@4Q(o{SD&rvdUPjULu7>)GH$E5EG#1zY6z`2YX_ literal 0 HcmV?d00001 diff --git a/src/emacs1/xlisp.110 b/src/emacs1/xlisp.110 new file mode 100755 index 00000000..ff01e8b8 --- /dev/null +++ b/src/emacs1/xlisp.110 @@ -0,0 +1,361 @@ +!* -*- Teco -*- Library created and maintained by KMP@MC ! + +!* Bugs, feature requests, etc... ! +!* ! +!* [Source: KMP (07/16/80)] ! +!* This needs to be sure it has a good ..D or else floating point ! +!* numbers and other screws will happen -- eg, PRINC+T function in ! +!* RAB;OUTMIS will get mistaken for a PRINC if not careful. -kmp ! +!* ! +!* [Source: CWH] ! +!* (cond (condition then-clause) (t else-clause)) ! +!* <=> (IF condition then-clause else-clause) ! +!* ! +!* [Source: KMP] ! +!* (and exp1 exp2) <=> (IF exp1 exp2) ! +!* (or exp1 exp2) <=> (IF (NOT exp1) exp2) ; Maybe IFN, too? ! +!* Old-DO <=> New-DO ! +!* (PROG (...) ...) => (LET (..) ...) ; if no RETURN or GOs ! +!* ; Maybe find leading SETQs and move into the BVL. Super-tricky ! +!* ; due to the evaluation environment differences. ! +!* (TERPRI), (TYO ...), (PRIN1 ...), (PRINC ...), ... ; Sequences only ! +!* <=> (FORMAT ...) ! +!* ! +!* [Source: RWK (07/16/80) ! +!* Do these allow one to do M-X Undo? ! +!* ! +!* [Source: CWH (07/16/80)] ! +!* You may also want to include WHEN and UNLESS. I have been using ! +!* these recently after RWK convinced me they were winners. You may ! +!* also want to write one completely hairy macro which figures out ! +!* which of the above transformations you want applied. As long as it ! +!* can be undone with M-X Undo, such a frob wouldn't be too dangerous. ! +!* ! +!* [Source: CWH (07/21/80)] Re: LAMBDA->LET ! +!* I would prefer it if ((LAMBDA (X) Z) NIL) became ! +!* (LET ((X NIL)) Z) instead of (LET (X) Z). Perhaps a switch? ! +!* Also, modernizing ((LAMBDA (X Y) Z) 0 0) inserts a spurious ! +!* space after the first 0. ! + +!~Filename~:! !Macros for transforming Lisp Code! +XLISP + +!& Query Loop:! !& Loop doing things and asking for confirmation! + +:i*Query/[..J[C[0[P + + oPause' !* Go to previous ! + qC f _ , . :"l fi !* If cmd = Space or Comma, ! + .u0 m() q0j !* Run change macro ! + qC-,"e !* If comma, show result ! + !Pause! !* Come here to pause ! + :i* C Ok?_ fsechodisp w @v !* Wait while (s)he approves ! + :fi uC !* Peek for command ! + qC-4110."e ?uC '"# :fiuC ' !* Get ascii in qC ! + @ft C_...  !* Tell the user we saw input ! + qC-_ "e fi !* If space, ! + oLoop' !* then go on ! + qC f QqXx :"l fi !* If Q or X, ! + ' !* then Exit ! + qC-^"e fi !* If ^, ! + .:ww1:<> oPause' !* Go to previous ! + qC-"e fi !* If Control-R, ! +  oPause' !* then edit and re-pause ! + qC- "e fi !* If Control-L, ! + @m(m.m^R_New_Window) !* Redisplay ! + oPause ' !* and then pause ! + qC-?"e fi !* If ? or Help, ! + ft Space__=_Continue____C-L_=_Redisplay____C-R____=_Edit + Q_or_X_=_Exit________Anything_else_aborts_and_is + ______________________reread_as_a_command. + --Pause-- oPause' !* Show help info ! + ' !* No Such Option. Exit. ! + qC-."e ' !* Return if dot ! + oLoop' !* Continue looking if not comma ! +qC-"e fi !* If cmd = Control-R, ! +  oLoop ' !* Edit and Loop ! +qC-¢e fi !* If cmd = Rubout ! + :-."n .' fkr oSkipLoop ' !* Skip this entry and find next ! +qC- "e fi !* If cmd = Control-L, ! + @m(m.m^R_New_Window)w oLoop' !* Redisplay and loop ! +qC f ? :"l fi !* If cmd = ? or Help ! +!"! ft Space__=_Replace_entry_and_move_on__________C-L_=_Redisplay + Comma__=_Replace_entry_and_await_approval___C-R_=_Edit + Rubout_=_Don't_replace_this_entry + Period_=_Replace_and_exit___________________Anything_else_exits + Q_or_X_=_Exit________________________________and_is_reread_as_a_command. + --Pause-- oLoop ' !* Show help info ! +qC f XxQq "l fi !* If cmd = Q or X, ! + ' !* Just exit, eating char ! +' !* Exit if unknown command ! +!Loop! :-."n.' !SkipLoop!> !* Continue looping ! +:i*CEnd_of_..Jfsechodisplay +0fsechoactive + + + +!Modernize FUNCTION References:! !S Change (FUNCTION form) => #'form ! + +@:i*| :s(FUNCTION( fkc )|,( !* Search for (FUNCTION ! +@:i*| .[0 fll 1f[noquitw -d !* Go kill ending paren ! + q0j 9d @f_ î k !* Kill (FUNCTION & whitespace ! + .u0 !"! i#' 2r !* Insert #' ! + m(m.m &_XLISP_Indent_SEXP) !* Re-Indent S-Expression ! +  !* Go to top of S-Expression ! + |) !"_#'exp + !* Loop asking about this stuff ! + + + +!Modernize Old CATCH/THROW References:! !S CATCH/THROW => *CATCH/*THROW ! + +@:i*| :s(CATCH(THROW( !* Search for (CATCH or (THROW ! + fkc )|,( !* and hop back over it ! +@:i*| .[0[1 1f[noquitw c @fll !* Insert missing star ! + <:@fll 1a-;:@; l> @fll !* Pas first arg ! + :@fll 1a-;"e !"! :i*CH; Can't_hack_comment fserr ' + @m(m.m ^R_Transpose_Sexps) !* Interchange ! + -2@fll !"! i' q0+1j i* !* Back up and quote arg1 ! +  !* Go to top of S-Expression ! + |) !"_(*CATCH/*THROW_'tag_form) + !* Loop asking about this stuff ! + + + +!Modernize QUOTE References:! !S Change (QUOTE form) => 'form ! + +@:i*| :s(QUOTE( fkc )|,( !* Search for (QUOTE ! +@:i*| .[0 fll 1f[noquitw -d !* Go kill ending paren ! + q0j 6d @f_ î k !* Kill (QUOTE & whitespace ! + .u0 !"! i' 2r !* Insert #' ! + m(m.m &_XLISP_Indent_SEXP) !* Re-Indent S-Expression ! +  !* Go to top of S-Expression ! + |) !"_'exp + !* Loop asking about this stuff ! + + + +!Modernize LAMBDA References:! !S Change '(LAMBDA ...) => #'(LAMBDA ...) ! + +@:i*| !"! :s#'(LAMBDA( fkcc )|,( !* Search for '(LAMBDA ! +@:i*| i# r m(m.m&_XLISP_Indent_SEXP) + |) !"<"! m(m.m &_Query_Loop)Modernize:_'(LAMBDA_...)_=>_#'(LAMBDA_...) + !* Loop asking about this stuff ! + + +!Modernize MAP References:! !S Change (MAPxxx '... ...) => (MAPxxx #'... ...)! + +@:i*| [0<:s(MAP"e 0' !* Look for MAP, fail if none ! + .-4u0 !* Remember place we started from ! + 1a:"b @fll ' !* Go to end of printname if not MAP! + @f_ îl !* Move to beginning of next object ! + !"! 1a-'"e q0j -1 '> + |,( !* If just singlequote, win ! + +@:i*| c @fll !"! s' r i# r m(m.m&_XLISP_Indent_SEXP) + |) !"<"! m(m.m &_Query_Loop)Modernize:_(MAPx_'fun_...)_=>_(MAPx_#'fun_...) + + +!Modernize Strings:! !S Search for things in |...| => "..."! + +@:i*~ :s/|"e 0' r -1 ~,( !* Look for | ! +@:i*~ 1f[noquit !* Defer interrupts ! + f[vbwf[vz !* Bind buffer bounds ! + !"! 0,0a-'"e -d ' !* Maybe delete singlequote ! + .,( s/| -d . )fsbound !* Narrow bounds ! + j d <.-z; 1a-/"e c' !* Loop, skip slashed things ! + "# 1af"|!'!:"l i/ '' !* Slashify " or | ! + c > !* Move forward ! + j i"!'! zj i"!'! j !* Insert Doublequotes ! +  !* Return ! + ~) !_"..." !''! + +!Lowercase Lisp Buffer:! !S Lowercase a buffer of lisp text +respecting things that should not get lowercased.! + +[S !* State Register ! +j 0uS !* Initial state 0 ! +< .-z; !* Stop at end of virtual buffer ! + qS"e 1af"|!'!:"l 1auS ' ' !* Complement state on | or " ! + "# 1a-qS"e 0uS ' ' !* Unless in a | or " already... ! + qS"e 1fc ' !* Force case if appropriate ! + 1a-/"e c ' !* Slash says skip next char ! + "# 1a-;"e :sî"ezj''' !* Handle comments ! + :c !* Go forward ! +> !* Loop ! +j z !* Set region around text changed ! +h !* Return ! + + +!Uppercase Lisp Buffer:! !S Uppercase a buffer of lisp text +respecting things that should not get uppercased.! + +[S !* State Register ! +j 0uS !* Initial state 0 ! +< .-z; !* Stop at end of virtual buffer ! + qS"e 1af"|!'!:"l 1auS ' ' !* Complement state on | or " ! + "# 1a-qS"e 0uS ' ' !* Unless in a | or " already... ! + qS"e 1@fc ' !* Force case if appropriate ! + 1a-/"e c ' !* Slash says skip next char ! + "# 1a-;"e :sî"ezj''' !* Handle comments ! + :c !* Go forward ! +> !* Loop ! +j z !* Set region around text changed ! +h !* Return ! + + +!Lowercase Lisp Region:! !S Lowercase a region of Lisp text! + +f[vbf[vz !* Bind buffer bounds ! +.,(w.)ffsbound !* Narrow bounds ! +m(m.m Lowercase_Lisp_Buffer) !* Call aux macro ! + + +!Uppercase Lisp Region:! !S Uppercase a region of Lisp text! + +f[vbf[vz !* Bind buffer bounds ! +.,(w.)ffsbound !* Narrow bounds ! +m(m.m Uppercase_Lisp_Buffer) !* Call aux macro ! + + +!Change LAMBDA Combination to LET:! !& The name says it, man...! + +[0[1[2 !* Bind temp qregs ! +[L[A !* Buf for Lambda and Args ! +f[noquit !* Bind fsnoquit ! +g( flx*( f[bbind ) ) q..OuL !* Get it in temp buffer ! +j fll -d j d fll !* Strip outer parens ! +g( zfx*( f[bbind ) ) q..OuA !* Get args in qA buffer ! +j qLu..O !* Go back to Lambda ! +j c 1a-l"e @flk ilet ' !* make lambda -> let ! + "# @flk iLET ' !* or LAMBDA -> LET ! +s( r flfsbound !* Narrow to just formals ! +j c .,(z-1)fsbound !* Don't count parens either! +< < @f_ î k !* Kill white space ! + 0,1a-;"e l' "# 0; ' > !* Skip comments ! + .-z; !* Stop if no more formals ! + qAu..O !* Go to args buffer ! + < @f_ î k !* Jump leading whitespace ! + 0,1a-;"e l' "# 0; ' > !* Skip comments ! + 3f~NIL"e 0,4a"b 3di() 2r '' !* Convert NIL to () ! + 2f~()"e !* If we have a (), ! + 2d -@f_ k !* Kill it and whitespace ! + @f_ k !* both forward and back ! + 0,1a-;"e l' !* Maybe take comments ! + g( b,.fx*( qLu..O @fll ) ) i_' !* Get any comments in LET ! + "# !* Else, ! + 1:<@fll>"n + :i*TFA Too_Few_Actual_Args fserr ' + @f_ l !* Go across arg and space ! + 0,1a-;"e l ' !* Take comment if any ! + g( b,.fx*( qLu..O i( @fll i_))!* Insert ( & jump formal ! + i)_' !* close arg field ! + > !* Loop ! +zj !* Jump to end of arglist ! +qAu..O @f_ î k !* Kill whitespace forward ! +0,1a-;"e g( hfx*( qLu..O i_ ) ) '!* Get trailing comments ! + "# .-z"e qLu..O ' + "# :i*TMA Too_Many_Actual_Args fserr '' +zj -@f_ k !* Delete trailing space ! +0,(fsz)fsboundw !* Widen buffer bounds ! +1 fsnoquit !* Turn off interrupts ! +qAu..O f]bbind !* Kill arg buffer ! +g( hfx*( f]bbindw flk ) ) !* Get it back ! +-@fll @m(m.m &_XLISP_Indent_SEXP) !* Indent this S-Expression ! + !* Return ! + + +!Modernize LAMBDA Combinations:! !S Change ((LAMBDA ...)...) => (LET (...)...)! + +@:i*| :s((LAMBDA(fkc)| ,( +m.m Change_LAMBDA_Combination_to_LET ( +) ) m(m.m &_Query_Loop)LAMBDA_Combinations:_((LAMBDA_...)_...)_to_(LET_(...)_...) + + +!Modernize NIL Occurrences:! !S Change NIL to ()! + +@:i*| :sNIL( fkcc ) |,( +@:i*| 3d i() |) m(m.m &_Query_Loop)NIL:_NIL_=>_() + + +!& XLISP Indent Sexp:! !& Like ^R Indent SEXP but tries not to err out! + +[0 !* Push q0 ! +.( 1:<@fll>w .u0 )j !* Find end of SEXP ! +.( 1:<:fll>w .-q0"g )j 0' !* See if next list is farther ! + 0,1a-("n )j 0' !* Don't fill if no close paren! + )j !* Resume state and proceed ! +]0 !* Pop q0 ! +f:m(m.m ^R_Indent_Sexp) !* Jump to ^R Indent SEXP ! + + +!Change / to \:! !S Update buffer for the new Lisp backslash syntax! + +j @f îl !* Jump over blank lines ! +1:fb-*-"e !* If there's no file prop list ! + i;;;_-*-_Mode:_Lisp;_-*-î  !* Make a default one ! + js-*-' !* Search for start of -*- ! +1:fbEscape:"e !* If no escape marked ! + i_Escape:_Slash;' !* Make a default setting ! +"# :fwl !* Go to head of field ! + .,(s;-:fwl.)f~slash"n !* Compare escape char with slash ! + :i*CBuffer_not_using_slash_escape_charfsechodisplay + 0fsechoactive l 0,.( j )'' !* Maybe return early ! + !* ! +[S !* State Register ! +j 0uS !* Initial state 0 ! +< .-z; !* Stop at end of virtual buffer ! + qS"e 1af"|!'!:"l 1auS ' ' !* Complement state on | or " ! + "# 1a-qS"e 0uS ' ' !* Unless in a | or " already... ! + qS"e !* Only outside of |s or "'s ! + 1a-;"e :sî"ezj' oLoop'' !* Ignore commented stuff ! + 1a-\"e i\ oLoop' !* Make \ quote itself ! + 1a-#"e !* Skip # ! + 2a-/"e 2c' !* #/ is as before ! + 2a-\"e 2c' oLoop' !* #\ is as before ! + 1a-/"e 0,2a-/"e d' !* // goes to / ! + "# f\' !* / goes to \ otherwise ! + c oLoop' !* Update display and loop ! + !Loop! !* Come here to continue looping ! + :c !* Go forward ! +> !* Loop ! +j s-*- sEscape: :fwl !* Kill old escape info ! + iBack !* Say we are using Backslash now ! +:i*CConversion_of_/_to_\_complete.Afsechodisplay 0fsechoactive +j z !* Set region around text changed ! +h !* Return ! + + +!Interchange slash and backslash:! !S Swap slash and backslash ! + +j +@:i*| :< :s57"e zj 0;' 0,-2a:"d 0,-2a:"a 0,1a:"d 2r 0;''' > .-z | ,( +@:i*| 2d i#// | ( +) ) m(m.m &_Query_Loop)Change_/_to_\:__Maybe_change_octal_57_to_#// + +j +@:i*| :< :s47"e zj 0;' 0,-2a:"d 0,-2a:"a 0,1a:"d 2r 0;''' > .-z | ,( +@:i*| 2d 0,1a-."e d' i#// | ( +) ) m(m.m &_Query_Loop)Change_/_to_\:__Maybe_change_decimal_47_to_#// + +j +@:i*| :< :s#o57"e zj 0;' 0,1a:"d 0;' > .-z | ,( +@:i*| 2d i#// | ( +) ) m(m.m &_Query_Loop)Change_/_to_\:__Maybe_change_#o57_to_#// + +j +@:i*| :s slash  | ,( +@:i*| 5r -4f~BACK"e -4d ' + "# 1a-s"e iback' + "# 2a-L"e iBACK' + "# iBack fs''' 5c | ( +) ) !""""! m(m.m &_Query_Loop)Change_/_to_\:__Maybe_interchange_``slash''_and_``backslash + +j z +h