PDP-10 Archive: emacs/interlisp-mode.elib from mit_emacs_170_teco_1220 (original) (raw)
Trailing-Edge-PDP-10 Archives-mit_emacs_170_teco_1220- emacs/interlisp-mode.elib
There are no other files named interlisp-mode.elib in the archive.
W[0 +8+fq(+4)[1
0fo10f"g+q1'
+fq()+4u1
fq1"l 0'
,q1:m(q1+4(]1]0))1X}h 0x!e"@#;%%6& AcMVj}Z
w9KIWBi\w 5v%(;7]EaXm9v{1X$@?+9\>:rQ;Ib<w=??d)-8-LD+4[-hq1l)S.
/_0'=<2}O3_`+{u4' 4~ 5A '5 27 C7- U7B f7T |7]
8D
9
,9A
B9N
W'%
a
n
hCl& Act Upon InterLisp Return & Find Collected SExp Buffer& From Interlisp Brackets$& Prefix Goto InterLisp Function& Return To InterLisp"& SetUp InterLisp-Mode Library& Zap To InterLispAdd Sexp To PROG ListAnalyze For ?=(Collect Function To Zap To InterLisp&Collect Region To Zap To InterLispEdit Interlisp FunctionFind InterLisp Source FileFunction OccurGoto InterLisp FunctionInterLisp Mode Reset To InterLisp TemporaryZap Buffer To InterLisp$Zap Collected SExps To InterLispZap Function To InterLispZap Region To InterLispZap String To InterLisp^R Edited-By^R End InterLisp Comment^R Goto InterLisp Function^R Indent for InterLisp&^R Insert InterLisp Parameter Name^R Insert InterLisp PROG Variable Name^R InterLisp ?=^R InterLisp ]%^R List InterLisp Parameter Names$^R List InterLisp PROG VariablesDIRECTORY%DOC & Act Upon InterLisp Return&DOC & Find Collected SExp Buffer#DOC & From Interlisp BracketsDOC & Prefix Goto InterLisp FunctionDOC & Return To InterLisp(DOC & SetUp InterLisp-Mode LibraryDOC & Zap To InterLispDOC Add Sexp To PROG ListDOC Analyze For ?=.DOC Collect Function To Zap To InterLisp,DOC Collect Region To Zap To InterLisp!DOC Edit Interlisp Function$DOC Find InterLisp Source FileDOC Function Occur!DOC Goto InterLisp FunctionDOC InterLisp Mode&DOC Reset To InterLisp Temporary!DOC Zap Buffer To InterLisp*DOC Zap Collected SExps To InterLisp#DOC Zap Function To InterLisp!DOC Zap Region To InterLisp!DOC Zap String To InterLispDOC ^R Edited-By"DOC ^R End InterLisp Comment$DOC ^R Goto InterLisp Function!DOC ^R Indent for InterLisp,DOC ^R Insert InterLisp Parameter Name0DOC ^R Insert InterLisp PROG Variable NameDOC ^R InterLisp ?=DOC ^R InterLisp ]+DOC ^R List InterLisp Parameter Names*DOC ^R List InterLisp PROG VariablesDOC FILENAMEFILENAME
INVERTINTERLISP-MODERM(M.M& Init Buffer Locals)
M.M^R Indent for LispM.QI
Q(Q.M.Q)M.Q.
0fo..qINTERLISP-MODE ..Df"n m.q..D'
"#w :i..D..D
1m(m.m& Alter ..D)<([(])>)%/"|/A|A;A !'!
q..Dm.vINTERLISP-MODE ..Dw
q..DM.Q..D'
M.M^R InterLisp ]m.Q]
m.m^R Indent for InterLispm.Q
m.m^R Insert InterLisp Parameter Nameu..{
m.m^R Insert InterLisp PROG Variable Nameu..}
m.m^R InterLisp ?=u...?
1,1M.LSpace Indent Flag
1,36M.LComment Column
1,(:i*(* )M.LComment Start
1,1m.LComment Multi Line
1,(:i*))M.LComment End
Q.0,1M(M.M& Set Mode Line)InterLisp@[1[2[3 5,fFind InterLisp Source Fileu1 q1"e 1' fq1"e 5,m(m.m& Read Filename)Find InterLisp Source Fileu1' q1"e 1' m(m.mFind File)1 m(m.mReset To InterLisp Temporary) [1[2 @m(m.m^R Mark Defun)w :,.fx*u1 m(m.m& Find Collected SExp Buffer)u2w q2[..o 0fsVZw zj i
(DEFINEQ 1) C[1[2[3 m(m.m& Find Collected SExp Buffer)u1u2 q1[..o fsModified"n 0fo..qSave CollectedSExps File"n q.F[..F -1,m(m.mWrite File)2'' 0fsVBw 0fsVZw zj -:s (* * * Zapped to InterLisp * * ) "l fkc'"# bj' .fsVBw h m(m.m& Zap To InterLisp) zj f[Modified i ( * * Zapped to InterLisp * * *)
k.[0 fnq0j -:@fll -@flx*[1 -s(PROG[PROG 2fdl ful r @m(m.m^R Indent New Line)f .,(g1).f 1
.[1 fn q1j 0f[vb 0f[vz bj [1[2[3[4 1m.vLAMBDA LAMBDA Flagw 1m.vNLAMBDA LAMBDA Flagw 1m.vDLAMBDA LAMBDA Flagw :< :s ( [; @fwx2 .u1 @ft. 2:@fwl @fwx3 0fo..q3 LAMBDA Flag"n 2:@fll @flx4 :i*(2 [3 4]) m.v?= 2 ?=w ' "# q1j' > a[1[2[3 :,.fx1 m(m.m& Find Collected SExp Buffer)u2w q2[..o 0fsVZw zj i
1 4:i*[0[1[2[3 .u1 :i2 m.m^R Beginning of DEFUN[B bj < :s0; @mBw c @flx3 f=3DEFINEQ"n 0fo..qAtom 3 Not Function"e :i223 ff&2"e @flt ft '' r @fll' :s
( ;
q2m.vLast InterLisp Function Listw ff&2"e :fi-?"e 0u..h fiw m(m.m Goto InterLisp Function)?'' q1j b:i[.0 .[.1 0[.2[.3[..J 0,fsZ fsBoundariesw f=.0?"e 0fo..qLast InterLisp Function Listu.3 q.3"e 1,m(m.m Function Occur) qLast InterLisp Function Listu.3' f[BBind g.3 bj :i..jSelect InterLisp function to find 0l :@fll @flx.0 f]BBind' bj m(m.m& Prefix Goto InterLisp Function).0u.2 q.2"e ff"e bj' "# q.1j' m(m.m& Prefix Goto InterLisp Function).0u.2' q.2"e q.1j :iInterLisp function .0 not found fsErr' 0 @m(m.m^R New Window) a:i[.1 fq.1"g m(m.m Goto InterLisp Function).1' @m(m.m^R Mark Defun)w @m(m.m^R Set Bounds Region)w bj @f r .fsVBw .fsWindoww @fwl 1fo..qMark Edited Interlisp Functions"n @m(m.m^R Edited-By)f' 1'f[Modified f[DFile fsHSNamefsDSNamew fsDSName:f6[H m(m.m Set Visited Filename)H; TEMP m(m.m InterLisp Mode) m(m.m & From Interlisp Brackets) {[1[2[3 q..o[0 m(m.m& Find Collected SExp Buffer)u1w q1[..o 0fsVZw zj g0 :m(m.mZap Collected SExps To InterLisp)Zm(m.mCollect Function To Zap To InterLisp) :m(m.mZap Collected SExps To InterLisp)Xm(m.mCollect Region To Zap To InterLisp) :m(m.mZap Collected SExps To InterLisp):i[0[1 m(m.m& Find Collected SExp Buffer)u1w q1[..o 0fsVZw zj i
0
:m(m.mZap Collected SExps To InterLisp)^[.0 z-.:\u.0 fn1:<(z-.0)j>w [.1[.2 f[VB f[VZ @m(m.m^R Beginning of DEFUN)w 2fdl 2@fll < @f r 1a-(@:; c @fwf=DECLARE"e r @fll' "# @fwf=CLISP:"e r @fll' "# r 1;'' > .u.0 13f~(* Edited by "e flk @f k' 1a-15."n fsHPos'"# 0'u.1 q.1"g i 2r' @m(m.m^R Indent for Comment)f iEdited by 0fo..qInterlisp Edited-By Nameu.2 q.2"e g(fsXUName:f6)' "# g.2' i on
.fsVBw fsZ-.fsVZw eg j 5k 2:fwk fwfx.2 d fwl 3d i-.2- 2c .,zk i) 0fsVBw 0fsVZw m.m^R Indent For Lisp[I 0@m w 1a-15."n i ' @f l q.1"n q.1m(m.m& Indent)w' l q.0,. -.,(i *)).f .-z"e .,(i ).f'"# l' 1C[1[2 -@f l -@fwx1 m(m.mGoto InterLisp Function)1.[.0[.1 0[.2 < 1,m(m.m^R Indent For LISP)u.1 q..2"l 1;' q..2-."g 1;' q..2,q..2+2f=(*"n 1;' q.2"n q.2j 2d' 0u.2 q..2j 0:fb)"l q..2j -fll .u.2 i ' "# 0l'
q.2"n q.2j 2d' q.0j z-.u.0 0l 1:<q.1 m(m.m& Indent)f> z-.-q.0"g z-q.0j' 1g[1 .( -s(LAMBDA[LAMBDA(NLAMBDA[NLAMBDA(DLAMBDA[DLAMBDA +1:@fwl @fwx1 )j .,(g1).I.[0[1[2[3[4[5 -s(PROG[PROG 2fdl .u2 -1@fll :fwl @fwx1 q0j g1 q0,.@v :fiu3 q3-+"n q3--"n 1'' fiw q0,.k ff&2"e q2j -ful flu4w 0u1 :iC fs echo displayw :< q2j %1:@fll :@fwl .-q4; @fw@t @ft > 0fs echo activew q0j' 1,(q3-+"e +1'"# -1')( ) @m(m.m^R Insert InterLisp PROG Variable Name).[1 fn q1j [1[2[3 -:ful :@fwl @fwx1 0fo..q?= 1 ?=u2 q2"e FG 1' :iC fs echo displayw @ft2 0fs echo activew 1l.[.1[.2[.3 i] z-.u.2 < -fll 1a-["E 1;' z-q.2-1j i) c> z-q.2j -d q.1,.f f@:m(]fs^RInit)N[1 .( -s(LAMBDA[LAMBDA c :fll flx1 )j @ft1 0fsechoactivew 1J[1 .( -s(PROG[PROG c :fll flx1 )j @ft1 0fsechoactivew 1g0[1[2[3 :i*..D[..D [*5+1:f..D( ]5+1:f..D) fs qp ptr[.0 f[bbind f[dfilew 1:< erLISP-TO-EMACS.XFER.1 @y >"e m(m.m& From Interlisp Brackets) fdl @fwx1 2:@flr @flx2 edLISP-TO-EMACS.XFER.1 ' q.0fs qp unwindw q1"n 1,0m.m& Process InterLisp 1 Requestu3 q3"n q2m3 ' :iREQ Unknown InterLisp request type 1 fs err' i[1[2[3 :i2CollectedSExps 1,q2 m(m.m& Find Buffer)u1 q1+1"e [Previous Buffer f[DFile qBuffer Nameu3 @ft (Creating 2 buffer... q2 m(m.mSelect Buffer) etDSK: fsHSNamefsDSNamew etCollectedSExps TEMP fsDFile uBuffer Filenames q..ou1 q3 m(m.mSelect Buffer) @ftdone) 0fsEchoActivew (fsDFile),q1 ' (q:.b(q1+2)),(q:.b(q1+4)) 6.[.1[.2[.3[..j bj < !ITER! :s]; z-.u.2 -1a-%"e oITER' :< -fll 1a-["E 1;' z-q.2-1j i) c
"n z-q.2j :i..jPlease fix this bracket ' "# z-q.2j'
q.1j 0l w:i*[.0 .[.1 < :s (.0; @:f r @f r 7f=(LAMBDA"e -l fwl 1' 7f=[LAMBDA"e -l fwl 1' 8f=(NLAMBDA"e -1 fwl 1' 8f=[NLAMBDA"e -1 fwl 1' 8f=(DLAMBDA"e -1 fwl 1' 8f=[DLAMBDA"e -1 fwl 1'
q.1j 0 [1 0fo..qDont Return To InterLisp"n :iCant return now, not at top level fsErr' 1m.vDont Return To InterLispw f[DFilew fsHSNamefsDSNamew fsDSName:f6u1 1:<erEMACS-LISP-COROUTINE.CMDec>"n f[BBindw iPOP CONTINUE ew pwefEMACS-LISP-COROUTINE.CMD' f+ TAKE <1>EMACS-LISP-COROUTINE.CMD m(m.m& Act Upon InterLisp Return) 0m.vDont Return To InterLispw ?1m.cSave CollectedSExps File Non-0 enables auto-saving of collected SExps.w 1m.vAtom RPAQ Not Functionw 1m.vAtom RPAQQ Not Functionw 1m.vAtom PRETTYCOMPRINT Not Functionw 1m.vAtom ADDTOVAR Not Functionw 1m.vAtom * Not Functionw 1m.vAtom FILECREATED Not Functionw 1m.vAtom DECLARE: Not Functionw fsQPPtr[0 [1[2 .:\u1 fn1j ffu2u1 q1j @f l .-q2"l f[DFilew fsHSNamefsDSNamew etEMACS-TO-LISP.XFER.1 ew q1,q2 p q2j -@:fll -@fwf=STOP"n f[Modifiedw .,(i STOP ).f(p)k' ef' q0fsQPUnwindw :m(m.m & Return To InterLisp)/EMACS functions for editing InterLisp code.,C Set things up for editing InterLisp code. The following keys are set: ) > and ] all show the ( < or [ they match. ] inserts enough )s to balance the previous [. Tab indents to a "prettyprint" place. Meta-{ inserts the argth parameter of the current function being edited. Meta-} inserts the argth PROG variable. (Describe it via Meta-? -- it is a bit hairier/more-useful.) Control-Meta-? runs ^R InterLisp ?=, which is similar to InterLisp's ?=. You can describe it (and Analyze For ?=) for more details.BC String argument is filename. It asks for a filename if a null string argument is given. If you answer with a null name again, it uses the default filename. File is put into its own buffer with name being the file's 1st name. Then the filename is reset to be a .TEMP file in the home directory. Finally the file is prepared for editing by going into InterLisp mode and ensuring that there are enough )s before ]s to balance things.C Add to CollectedSExps buffer. Doing M-X Zap Collected SExps To InterLisp will send it and other collected sexps back to InterLisp.-C Send stuff in CollectedSExps buffer. Sends all sexps in CollectedSExps buffer that haven't been zapped yet: Everything after the last "(* * * Zapped to InterLisp * * *)" line. Unless the option Save CollectedSExps File is 0, we write out the CollectedSExps buffer if it needs saving.vC Previous sexp is added to previous PROG list. Sexp may be either just the variable name, or a pair defining it.8C Find all functions in buffer, for ^R InterLisp ?=.DC Zap it later. Appends region to end of CollectedSExps buffer.)C List functions with STRARG occuring in them. List is also saved in LastInterLispFunctionListLast InterLisp Function ListLastInterLispFunctionList, which Goto InterLisp Function can also access. If the character immediately following Function Occur is "?", control is transferred to Goto InterLisp Function allowing the user to use a recursive ^R on the list to jump to the function. 1, means just make variable, dont print the list or check for "?".C Put point at start of function STRARG. Searches over whole buffer, setting wide bounds first. Leaves point after the function name. NUMARG means start from point and find next match.
If STRARG is "?", a recursive ^R is called on LastInterLispFunctionListLast InterLisp Function ListLastInterLispFunctionList which is set by other functions, e.g. Function Occur (TEST). If the variable does not exist, it defaults to a list of all functions in the buffer.
This may want to turn into a TAGS thing some day. At least may want to hack multiple buffers/files.#C Prepare for editing function STRARG. STRARG may be a prefix of the function name -- first found. Null string arg means the function containing point. Bounds are set around this function, and it is marked with an edited-by comment, unless MarkEditedInterlispFunctionsMark Edited Interlisp FunctionsMarkEditedInterlispFunctions is 0.CC Resets filename, InterLisp Mode, brackets. Filename of visited file to home directory and extension of TEMP. Go into InterLisp mode and add enough parentheses before ]s to balance things.C Send contents of buffer to InterLisp. Appends this buffer to end of CollectedSExps buffer, then does a Zap Collected SExps To InterLisp./C Send function defined around point. Does a Collect Function To Zap To InterLisp, followed by Zap Collected SExps To InterLisp. Region is left around the function.C Send point to MARK to InterLisp. Does a Collect Region To Zap To InterLisp, followed by Zap Collected SExps To InterLisp.|C Send STRARG to InterLisp. Appends STRARG to CollectedSExps buffer, then does a Zap Collected SExps To InterLisp.B^R Marked as edited with InterlispEdited−ByNameInterlisp Edited-By NameInterlispEdited−ByName. Puts an Interlisp edited-by comment on function containing point. The edited-by name is taken from InterlispEdited−ByNameInterlisp Edited-By NameInterlispEdited−ByName, which defaults to the username. This function knows about putting the comment after DECLARE and CLISP: compiler declarations.^R Insert ) and CRLF.+^R Find function whose name is to left.#^R Like LISP but ignore (...).^R Argth param.N^R Argth progvar. If next character typed is + or -, list of PORG variables is shown in echo area and then we recurse with NUMARG+1 or NUMARG-1 after deleting the variable name just inserted.~^R Show function kind and parameters in echo area. The command Analyze For ?= will store the info needed by this command.{C Add enough parens so inserted ] balances [. Will assume there is always matching [...], i.e. not handle top-level-].^R Of enclosing lambda.^R Of enclosing lambda.,S Process LISP-TO-EMACS.XFER.1 file. *** For the moment this isnt used and maybe should be scrapped as slow and awkward? File is one list: CAR is RequestType, CADR is 1 sexp, the argument. Calls & Process InterLisp Request, which should take one NUMARG, the sexp argument..S Returning buffer filenames, pointer. Finds/creates EMACS buffer of name CollectedSExps, and gives it filename. Returns Val1,Val2: Val1 is filenames, Val2 is bufptr.%C Add enough parens to balance. Ignores %] but doesn't handle "...]..." unfortunately. Will assume there is always matching [...], i.e. not handle top-level-].S Find function prefixed by STRARG. Looks for first match of CRLF (strarg whitespace (LAMBDA. [ versions also allowed. NLAMBDA, DLAMBDA ok too. Returns 0 if not found. Non-0 if found. Returns with point after name if found, or else unchanged.JC Tell EXEC to POP. When return, check communication. Coroutine with InterLisp as its fork. Done via file EMACS-LISP-COROUTINE.CMD which POPs to LISP then CONTINUEs to EMACS. (File in home directory.) Upon return, see if InterLisp wrote us a LISP-TO-EMACS.XFER.1 file. If so, act upon it. The variable DontReturnToInterLispDont Return To InterLispDontReturnToInterLisp is set to inhibit this command, e.g. to inhibit recursive invocations, which are not yet well understood.HS Make some needed variables. This object file was compressed on 12:59am Saturday, 22 August 1981 by ECC on MC from the following source libraries:
ECC; DSK: INTERL 167, 08/22/81 00:59:276S Send range of buffer to InterLisp. NUMARG1,NUMARG2 is the range of buffer to send. May be null. Writes to EMACS-TO-LISP.XFER.1 in home directory. Then returns to InterLisp.[InterLisp Mode Find InterLisp Source File Collect Function To Zap To InterLisp Zap Collected SExps To InterLisp Add Sexp To PROG List Analyze For ?= Collect Region To Zap To InterLisp Function Occur Goto InterLisp Function Edit Interlisp Function Reset To InterLisp Temporary Zap Buffer To InterLisp Zap Function To InterLisp Zap Region To InterLisp Zap String To InterLisp ^R Edited-By ^R End InterLisp Comment ^R Goto InterLisp Function ^R Indent for InterLisp ^R Insert InterLisp Parameter Name ^R Insert InterLisp PROG Variable Name ^R InterLisp ?= ^R InterLisp ] ^R List InterLisp Parameter Names ^R List InterLisp PROG Variables & Act Upon InterLisp Return & Find Collected SExp Buffer & From Interlisp Brackets & Prefix Goto InterLisp Function & Return To InterLisp & SetUp InterLisp-Mode Library & Zap To InterLisp \+8+fq(+4)[2 0[3 < %3,-q2f2u3 q3&1@; q3"l 0' > f[BBind q3-15,q35g2 q:..o(0)+q2