Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - emacs/eakmacs.emacs
There are no other files named eakmacs.emacs in the archive.
!* -*-TECO-*-!

!~FILENAME~:! !EAK's personal EMACS environment!
!& Setup EAKMACS Library:! !S Set flags, variables, and ^R characters
for EAKMACS environment.!

!* Set FS flags!
    1fsEchoErrorsw			!* display error msgs in echo area!
    1fsBothCasew			!* ignore case when searching!
    1fs^PCasew				!* sorting ignores case!
    0fs%Topw				!* allow cursor on 1st line!
    0fs%Bottomw			!* allow cursor on last line!
    60fs%Endw				!* !
    1fs^LInsertw			!* don't insert/delete last ^L!
    fsOSTeco"e -1fsFnamSyntaxw'	!* lone filename means FN >!
    "# 1fsFnamSyntaxw'			!* except on Twenex!

    m.m^^ TMACS Error Handleru..P	!* for better debugging!

!* Set variables!
    1		m.vLess Asking			!* no silly questions!
    2		m.vTags Find File		!* Have Tags use Find File!
    1		m.vFind File Inhibit Write	!* Don't use autowriteback!
    1		m.vFile Versions Kept		!* don't need two versions!
    :i*.?!	m.vFill Extra Space List	!* default is crufty!
    77		m.vFill Column			!* don't use linel for filling!
    0		uPermit Unmatched Paren	!* beep on umatched!
    :i*Babyl	m.vMail Reader Library		!* tell ^XR to use Babyl!
    -uSave Word Abbrevs		!* incremental saving!
    1uAuto Save Default		!* Auto Save on by default!
    m(m.m& Get Library Pointer)EMACSuz
    fsOSTeco-2"e 0,qzm.m& Read Filenamem.vMM & Read Filename'
    m.m& MIDAS Mode Hook	m.vMIDAS Mode Hook
    m.m& Text Mode Hook	m.vText Mode Hook
    m.m& LISP Mode Hook	m.vLISP Mode Hook
    m.m& TECO Mode Hook	m.vTECO Mode Hook
    m.m& Edit Picture Hook	m.vEdit Picture Hook
    @:i*|:m(m.m& Babyl R Done Hook)|m.vBabyl R Done Hook
    :i*/B			m.vSRCCOM switches
    fsOSTeco"e'			!* ITS!
    "#					!* TNX!
	:i*Earl Killian	m.vBabyl Personal Name'

!* Set ^R characters!
    m.m^R Execute Minibuffer		u	!* ESC is minibuffer!
    316.@fs^RInit			u.N	!* Use airless ^N!
    320.@fs^RInit			u.P	!* Use airless ^P!
    m.m^R Character Search		u.S	!* use simple search instead!
	q.Sm.vNon-VT52 Control-S
    m.m^R Reverse Character Search	u.R	!* of bletcherous i-search!
    m.m^R Next Several Screens		u.V	!* use winning ^V!
    m.m^R Prefix Meta			u.W	!* Put metizer on ^W!
    m.mAbort Recursive Edit		u.]	!* avoid question!
    m.m^R Argument			u..1	!* use new Meta argtizer!
	q..1u..2 q..1u..3 q..1u..4 q..1u..5
	q..1u..6 q..1u..7 q..1u..8 q..1u..9
	q..1u..0 q..1u..- q..1u..,
    m.m^R Just One Space		u.. w	!* winning Meta-Space!
    m.m^R String Search		u..S	!* string versions too!
    m.m^R Reverse String Search	u..R	!* ...!
    m.m^R Previous Several Screens	u..V	!* use winning M-V!
    m.mCompile				u..Z	!* compile buffer!
    m.m^R Goto LISP			u...Z	!* create/continue LISP!
    m.m^R Insert EMACS Function Name	u...M	!* !
    m.m^R Center Line			u...S	!* instead of M-S!
    m.mBuffer Menu	u:.x()	!* Use TMACS' !
    m.m^R Kill Region		u:.x()	!* ^X^K is replacement for ^W!
    m.m^R Down Real Line	u:.x()	!* move EMACS' ^N to ^X^N!
    m.m^R Up Real Line		u:.x()	!* move EMACS' ^P to ^X^P!
m(m.mKill Variable)MM ^R Save File
    m.m^R Save File		u:.x()	!* auto-save version!
    m.m^R Examine Key		u:.x(E)	!* very handy!
m(m.mKill Variable)MM Kill Buffer	!* kill EMACS patch version!
    m.mKill Buffer		u:.x(K)	!* get own version!
    m.m^R Display Date and Timeu:.x(T)	!* I need a watch!
    m.m^R View Q-reg		u:.x(V)	!* very handy!

!* Set minor modes!
    1m(m.mAuto Fill Mode)		!* turn on Auto Fill Mode!
    1,1m(m.mWord Abbrev Mode)		!* turn on word abbrev mode!

    etDSK:EAK QWABL			!* create DSK:<hsname>;EAK QWABL!
    fsHSnamefsDSnamew fsDFile[1	!* ...!
    m(m.mRead Word Abbrev File)1	!* read word abbrevs!

    :iEditor NameEAKMACS		!* set editor name!
    :i..JEAKMACS 			!* ...!

    1fsModeChangew			!* force mode line to be recomputed!
!& Startup EAKMACS:! !S Do startup type things!

    0fsQPUnwind			!* clear PDL!
    0u1					!* clear stupid version string in Q1!

    m.m^^ TTY InitfsTTYMacw		!* install function for initializing!
					!* after fsTTYInit!
    m(fsTTYMac)			!* and call it!

    fsOSTeco"n fsRgetty-3"e
	m.m^R VT52 Control-Su.S'	!* TNX VT52, use special  hack!
     "# qNon-VT52 Control-Su.S''	!* TNX non-VT52, use standard !

    0[1 0[2				!* no commands, no filename (yet)!

!* Interpret command line!
    hk fj 0,0a-3"e -d'			!* hack ^C at end of command string!
    "# 0,-1a-15."e -2d''		!* remove CRLF at end if any!
    j:s"n .,zfx1 -d'		!* check for commands to execute!
    z"n hfx2'		!* save file name specified for processing later!
    0fsModifiedw 0fsXModifiedw	!* mods we've made aren't real!

    etDSK:INCABS > fsHSNamefsDSNamew	!* if incremental word abbrevs!
    e?"e				!* exist then read them!
	ft-- Reading incremental word abbrev definitions --
					!* inform me though!
	m(m.mRead Incremental Word Abbrev File)INCABS >'	!* ...!

    etDSK:FILE >			!* set default filename!
    fsMSnamefsDSnamew			!* ...!

    fsXJname:f6[J			!* XJNAME!
    f=JLISPT"e				!* LISP inferior?!
	m(m.mLoad Library)LISPT	!* load LISPT libarary!
	0fsQPUnwind :m..l		!* that's it!

    f=JMAILT"e				!* MAIL inferior?!
	m(m.mText Mode)		!* enter Text mode!
	q2"n 1,m(m.mVisit File)2w'	!* read in text so far!
	0fsQPUnwind :m..l		!* that's it!

!* Type greeting message!
    [1[2[3[4				!* non-silent startup, save regs!
    fsVersion:\u1			!* get TECO version!
    qEMACS Version:\u2		!* get EMACS version!
    qEAKMACS Library Filenamef[DFile	!* get EAKMACS version!
    fsDVersion:\u3 f]DFile		!* ...!
    .(4,fsRuntime\ 3ri.),.+3fx4	!* get run time!
    ftTECO.1   EMACS.2   EAKMACS.3   Run = 4
   ]4]3]2]1 0fsModifiedw 0fsXModifiedw	!* restore regs!

    q2"n m(m.mFind File)2'		!* read file specified in command line!

    q1"n m1'				!* execute any commands specified!
    0fsQPUnwind :m..l			!* now act line G!
!^^ TTY Init:! !S Personal FS TTY MAC.!
 2fsEchoLinesw				!* 2 line echo area!
 1fs^HPrintw				!* BS's don't overstrike!
 1fs^MPrintw				!* CR's don't overstrike!
 1fsVerbosew				!* print full error messages!
!* FS TRUNCATE and FS SAIL are also reset by FS TTY INIT.!
!Generate EAKMACS:! !C Generate EAKMACS library file!
 f[DFile				!* save default filename!
 fsOSTeco"e				!* ITS!
    m(m.mGenerate Library)dsk:eak;eakpur >dsk:eak;eakmacemacs1;ivoryecc;fixlibemacs1;tmacsemacs1;wordabeak;auto-s
    '"#					!* Tnx!
!Dump EAKMACS:! !C Dump the current environment to TS EAKMAC or EAKMACS.SAV!
 m(m.mLoad Library)PURIFY		!* get mmDump Environment!
 fsOSTeco"e				!* ITS!
    etDSK:TS EAKMAC			!* set filename for dump to!
    fsHSnamefsDSnamew			!* DSK:<hsname>;TS EAKMAC!
 '"#					!* Tnx!
    qEAKMACS Library FilenamefsDFilew	!* get EAKMACS version!
    f[DVersion				!* ...!
    fsOSTeco-1"e etDSK:EAKMACS.EXE'	!* set filename for dump to!
    "# etDSK:EAKMACS.SAV'		!* DSK:<hsname>EAKMACS.EXE.<version>!
    fsHSnamefsDSnamew			!* ...!
    f]DVersion				!* ...!
 0fsTTYMacw				!* don't dump out with TTYMac nonzero!
					!* to avoid TECO trying to run!
					!* functions when the world is only!
					!* half in existance!
 0fsQPUnwind				!* flush stack!
 :m(m.mDump Environment)		!* create ..L and do @EJ!
!& MIDAS Mode Hook:! !S Hook to make Comment Begin be semicolon space.!
 1,(:i*; )m.lComment Begin		!* semicolon space is prettier!
!& Text Mode Hook:! !S Hook to set Fill Column to 65 for Text mode.!
 65m.lFill Column			!* leave some margin space!
 1uDisplay Matching Paren		!* turn on feature!

!& Scribe Mode Hook:! !S Hook to set Fill Column to 65 for Scribe mode.!
 65m.lFill Columnw
!& LISP Mode Hook:! !S Hook to set LISP special characters in ..D.!
 1,(:i*; )m.lComment Begin		!* semicolon space is prettier!
 48m.lComment Column			!* 56 leaves no room at all!
!& TECO Mode Hook:! !S Hook to set extra TECO mode characters.!
 0fo..qTECO ..Df"nu..D'
 "#w :g..du..d 1m(m.m& Alter ..D)"(')[ ] ..D'
 1uDisplay Matching Paren		!* turn on feature!
!& Edit Picture Hook:! !S Hook to restore vertical ^N/^P.!
 m.m^R Down Real Line[.N
 m.m^R Up Real Line[.P
!Kill Buffer:! !C Kill the buffer with specified name.
Takes name as a string (suffix) argument, or reads it from terminal.
Alternatively, the name (as string pointer) or the buffer
number may be given as a prefix argument.
If the buffer has changes in it, we offer to write it out.!

    [1[2[3				!* save regs!
    ff&1"n u1'			!* numeric arg is buffer to select!
    "# 1,fKill Buffer: u1'		!* Read name of buffer to kill!
    fq1"e mmm & Check Top Levelbuffers
	  qBuffer Nameu1'		!* Null string means current buffer!
    q1m(m.m& Find Buffer)u1		!* Get index in buffer table of this name!
    q:.b(q1+2)"n			!* If the buffer is visiting a file,!
      q:.b(q1+4)[..o			!* then select it!
      fsModified"n			!* to see if it needs to be written back!
        fsTypeout"l @' ft
Buffer 2 contains changes.  Write them out
	fsTypeout"l 1' m(m.m& Yes or No)"n
	  0[..f m(m.mWrite File) ]..f
    q:.b(q1)u2				!* Get length in words of entry!
    q1-qBuffer Index"e		!* Trying to kill the current buffer?!
      :i*m(m.mSelect Buffer)'		!* Yes, select a different one first!
    q:.b(q1+4)[..o 0fsReadOnlyw
    q..o(]..o)fsBKill			!* Kill the actual buffer (why wait for GC?)!
    10.f?				!* Also errs out if try to kill selected buffer!
    q.b[..o q1*5j q2*5d			!* Delete the entry from the table!
    qBuffer Index-q1f"g +q1-q2uBuffer Index'
    					!* If killed buffer preceded current!
					!* one, current index is changed!
!^R Goto LISP:! !^R Goto LISP job!
 f+ LISP 
!& Yes or No:! !S Read in a yes or no answer.
Returns -1 for yes, 0 for no.
Types "? " first.  Echoes the answer and then a CRLF.
An NUMARG of 1 means use the echo area.  -1 means don't echo.
A pre-comma NUMARG of 1, means any character other than Y or N should
    be returned as itself.!


 < +1"g "g @'ft (Yes or No)? '	!* Else just finish the callers prompt!
					!* if we are echoing.!
   :i2					!* 2: Initz accumulated answer.!
   < fiu1 q1-15.@;			!* 1: Next character.  Exit!
					!* iteration if Return.!
     q1-177."e fq2"g			!* Rubout.!
	   0,fq2-1:g2u2			!* Knock off one character of answer.!
	   +1"g "g :i*XfsEchoDisplay'	!* If echoing, erase it.!
		    "# :i*XfsMPDisplay'''	!* ...!
	!<!>'				!* Done processing rubout.!
     +1"g "g @'ft1'		!* Echo character.!
     :i221			!* And add it to the answer.!
     >					!* Done that character.!
   f~2Y"e :i22es +1"g "g @'ftes''	!* Y<cr> becomes Yes<cr>.!
   f~2N"e :i22o  +1"g "g @'fto''	!* N<cr> becomes No<cr>.!
   +1"g "g @'ft
'					!* Echo the Return.!
   f~2YES"e -1'			!* Return -1 for yes,!
   f~2NO"e 0'			!* 0 for no.!
   "n 0:g2:fc'			!* Or the 1st character if!
					!* supposed to return non-Y/N.!
   @fg >				!* Otherwise dont allow non-Y/N.!
!^R VT52 Control-S:! !^R Act like old ^S, more or less, but ignore ^S^Qs.
^S^Q is ignore.
^S^Vx becomes old^Sx.  Any other characters following are as if to old^S.
^Sx becomes old^Sx if x is not ^Q or ^V.!

 !* Old^S is in $Non-VT52 Control-S$. *!

 m.i :fi[1				!* 1: Next char after ^S!
 200.+Su..0				!* ..0: ^S, since .I smashes.  I.e.!
					!* simulate ^R calling the ^S!
 q1-"e fiw 1'			!* Gobble the ^Q!
 q1-"e fiw'				!* Gobble the ^V!
 f @mNon-VT52 Control-S 		!* Pass character or none to old C-S!
!* Following should be kept as long comments:
 * Local Modes:
 * Comment Column:40
 * End:
 * *!