PDP-10 Archive: emacs/intermacs.emacs from mit_emacs_170_teco_1220 (original) (raw)
Trailing-Edge-PDP-10 Archives-mit_emacs_170_teco_1220- emacs/intermacs.emacs
There are no other files named intermacs.emacs in the archive.
!* --TECO-- *!
!Filename:! !EMACS-INTERLISP interface.!
INTERMACS
!& Getdef:! !Inserts a LISP definition from a file. Takes two pre-arguments that indicate where to start reading from and how much to read. Takes a string argument -- the file name.! [0 E[FNE] ZJ .U0 I(DEFINEQ_ F[ D FILE ER FS I F ACCESS FY I)
Q0J .,Z FS BOUNDARIES -1FS PJATY
!& LISP SUPERIOR:! !S Insert as directed by call from LISP.! [A [B [0 .U0 ZJ Z-3"G 0A-3"E -4D'' Q0J !* We delete the four characters at the! !* end that are used to stop LISP from! !* reading too far! "N FSIFILEUA !* The most recently opened input file! QLISPFILEUB !* The EMACS.TEMP.FILE! FS UREAD"N !* If anything is open,! F~AB"N !* then if it's not EMACS.TEMP.FILE! E[ !* push the input! F[ D FILE !* push the default! FN E] !* pop the input on exit from here! ERB' !* and open up EMACS.TEMP.FILE! 0FSIFACCESS' !* start reading at the beginning! FS UREAD"E !* if nothing is open! ERB' !* read EMACS.TEMP.FILE! U0 "L -Q0U0' !* The absolute value of the arg in 0! "G M(M.M^R_Set/Pop_Mark) ZJ' Q0FY "L .+,.FXA !* If the arg is negative we put! MA' !* the stuff in A, delete and macro it.! "G R .,ZFSBOUNDARIES' ' !* We do nothing on a zero arg! +1"G FSTTYINI !* Reset the COC word after LISP screw up.! -1FSPJATY !* If arg nonnegative, clear screen and refresh.!
'
!^R Undo:! !Return to lisp to recover initial s expression!
M(M.MSelect_Buffer)Main 4000000. M(M.M&_Exit_To_LISP)
!^R Abort:! !^R Abort Exit to LISP, and lisp will ignore all edit changes !
M(M.MSelect_Buffer)Main
5000000. M(M.M&_Exit_To_LISP)
!^R Clispify:! !Return to lisp to clispify the expression, then back to EMACS !
M(M.MSelect_Buffer)Main J 1000000. M(M.M&_Exit_To_LISP)
!^R Pretty Print:! !^R Pretty print buffer (using LISP pretty printer). Leaves point close to where it was, namely the open parenthesis before point.!
[0 0u0 <-:S(; %0> 3000000. M(M.M&_Exit_To_LISP) .-B"E Q0:S('
!^R Dwimify:! !Return to LISP and dwimify the expression in the buffer, then return to EMACS!
M(M.MSelect_Buffer)Main J 2000000. M(M.M&_Exit_To_LISP)
!^R Get Sexp:! !Return to LISP to get S-expression in window W2!
.[J 6000000. M(M.M&_Exit_To_LISP) QJ J
!^R Eval:! !Return to LISP to read S-exp after point and evaluate, printing result in W2!
.[J 7000000. M(M.M&_Exit_To_LISP) QJ J
!^R Finish:! !^R Return to lisp with the pointer at the beginning of function!
M(M.MSelect_Buffer)Main J M(M.M&_Exit_To_LISP)
!^R Apply:! !^R Read a function name and apply it to the current S exp!
[A @FTFunction:_ 0,M(M.M&Read_Line) UA .[B I(A(QUOTE_ .[C 1 M(M.M^R_Forward_Sexp) I)) QB J M(M.M^R_Eval) QB,QC K 1 M(M.M^R_Forward_Sexp) .,.+2 K QB J
!^R Multi Return:! !^R Return multiple s-expressions! !This function makes one s-expression out of the entire file and exits with a special return code which will cause LISP to evaluate each S-expression in turn and return a list of all the s-expressions. Hack done at the request of Mike Genesereth, so he can fool himself into thinking he is using MACLISP!
M(M.MSelect_Buffer)Main J I( ZJ I) J 10000000. M(M.M&_Exit_To_LISP)
!^R LEDIT Eval:! !^R return to LEDIT call to evaluate top level s-exp! !This function is another MACLISP simulator. It just goes to the beginning of the top level s-expression and tells lisp to evaluate the s-expression after the point. The net effect is the same as typing ^A ^T Z!
1M(M.M^R_Beginning_of_DEFUN) M(M.M&_Exit_To_LISP)
!^R Extract Sexp:! !^R Replace sexp at mark with embedded sexp at point Imitates the INTERLISP edtor's XTR command!
[A !* holds beginning of sexp at mark! [B !* holds end of sexp at mark! [C !* holds beginning of sexp at point! [D !* holds the end of sexp at point! [M !* holds the value of mark! [0 !* temporary to hold mark sexp! [J !* holds initial point pos.! M(M.M^R_Exchange_Point_and_Mark) .UM M(M.M^R_Exchange_Point_and_Mark) .UJ QM J !* Save point and move to mark! @FL UB UA !* Get mark sexp boundaries! QJ J !* back to old point! @FL UD UC !* Get point sexp boundaries! QC-QA "L:INST Point_sexp_not_nested_in_mark_sexpFS ERR' QB-QD "L:INST Point_sexp_not_nested_in_mark_sexpFS ERR' QC,QD X0 !* Save point sexp in Q0! QB J !* Go to end of mark sexp! QA,QB K !* Kill the mark sexp! G0 !* Insert point sexp!
!^R Set Variable:! !^R Set LISP Variable to current expression Reads a variable name and does (SETQQ var ) Returns to the current state of EMACS!
[A !* Register for variable name! @FTSet_variable:_ !* Read variable name! 0,M(M.M&_Read_Line) UA .[B !* save the point! I(SETQQ_A_ !* embed the sexp in a (SETQ var ...)! .[C 1 M(M.M^R_Forward_Sexp) I) QB J !* position the point! 11000000. M(M.M&_Exit_to_LISP) !* To lisp to do the dirty work! QB,QC K !* Undo our damage! 1 M(M.M^R_Forward_Sexp) .,.+1 K QB J
!^R Replace Sexp:! !^R Replace s expression after point with val of variable!
[A @FTReplace_with_value_of:_ !* Prompt for variable name! 0,M(M.M&_Read_Line) UA .[B !* Write variable name in buffer! IA_ .[C QB J !* Down to LISP to get value in Scratch! 12000000. M(M.M&_Exit_to_LISP) H XA !* Everything to QA! QPrevious_Buffer M(M.MSelect_Buffer) QB,QC K !* Kill variable name! 1 M(M.M^R_Kill_Sexp) IA -1FS PJATY
!^R Insert Sexp:! !^R Insert val of variable after point!
[A @FTInsert_value_of:_ !* Prompt for variable name! 0,M(M.M&_Read_Line) UA .[B IA !* Write name of var on file! .[C QB J !* Down to LISP for value in Scratch! 12000000. M(M.M&_Exit_to_LISP) H XA QPrevious_Buffer M(M.MSelect_Buffer) QB,QC K !* Undo the damage! IA !* Insert S-expression! -1FS PJATY
!^R Get Function:! !^R Get a function definition and insert it in W2!
- M(M.M&_Exit_to_LISP)
!& Exit To LISP:! !S Simply return to LISP. Calling (DOWN) in LISP will return to the current state of EMACS.!
.[0 ZJ I_" Q0 J 1F? !* Close the gap, so LISP can! !* read from the buffer! FSEXIT
!& Setup INTERMACS Library:! !S SETUP! HK !* Empty the buffer for LEDIT! [J 1M.VLISPFILE !* Creates the variable which holds! !* the EMACS.TEMP file name.! FSJNAMEUJ !* If we are under a LISP job then! F~JLISP"E FS HSNAME FS D SNAME EREMACS.TEMP.FILE.0 FS I FILE ULISPFILE Q.T [A M(M.M Make_Prefix_Character).T U.T
FSBCONS[..O
0F[S ERROR
GPrefix_Char_List
0J
:S.T"E
I.T__ !* We have to add this strange string!
HXPrefix_Char_List' !* to Prefix Char List to get Whereis,!
F]S ERROR !* etc. to work. See <EMACS>CONV.!
]..O
M.M^R_Abort U:.T(A)
M.M^R_Dwimify U:.T(D)
M.M^R_Clispify U:.T(C)
M.M^R_Get_Sexp U:.T(G)
M.M^R_Pretty_Print U:.T(P)
M.M^R_Finish U:.T(Z)
M.M^R_Undo U:.T(U)
M.M^R_Eval U:.T(E)
M.M^R_Apply U:.T(F)
M.M^R_Multi_Return U:.T(M)
M.M^R_Extract_Sexp U:.T(X)
M.M^R_Set_Variable U:.T(S)
M.M^R_Replace_Sexp U:.T(R)
M.M^R_Insert_Sexp U:.T(I)
M.M^R_Get_Function U:.T(H)
M.M^R_LEDIT_Eval U:.T()
QA U:.T()
M.M&_Lisp_SuperiorFS SUPERIOR'
M(M.MInterlisp_Mode) FS OSPEED-1200"G 1'"# 3'M.VDisplay_Matching_Paren