Google
 

Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - emacs/eakmacs.elib
There are no other files named eakmacs.elib in the archive.
@W[0 +8+fq(+4)[1
0fo10f"g+q1'
+fq()+4u1
fq1"l 0'
,q1:m(q1+4(]1]0)))
'L}v$LS3/BYuQTvaYplzvH(
f`u}G;++^9fEBM(=XTjS[{GGU	(18aCFkM"JTX=^w6h2urDG0
$v1YS>YzKLUA$GciF|sfwo3~'kY/m;E[C{^MYY0cnj`T{j@NE
]$j0/;:9C,N&oY}xddYm-yHFjuBZ Oh.}49H/?q	OpPYdAckv&4'W!'?-n2LW9dq?CK/UU]KNeS'kDx~jYjY
?7n',~=;RlD:HMDZ$*j#wx=#Z!amZ)}7DkBJoJ"T"0`olr|vb
%mv)(s:r2LmZv=is~wTg%+$!!U0.d>dFyXTuZi3gTouTL(+&f>qLK;Y!zgR'r{;

tS^!-i:B.G[]V|_k{q!K 
'S&9H&58]MHGxU!+cWuum'iy=A!H2!G$!$r4!-C#!Ac!R;|!bf!q:"B[" J"!d")!1"6""I@"X@["g?X"zB	#B#A(#.Ae#?# #Iz	#O(#XiU#aL#p:$H\$c&$4$%t$3 w$>)`$LF$[PH$hQn$r/%3%w%! f%.(y%;N/%JCy%Xea%c^b%q[%~.9&
8K(%(0'('Ko(5`1(C~9(Nvh(X{(bM(qE
)K,)`{)q	b*!**#y*-mM*=8*PAp*by*me}*zq{+	Z+YH+.gm+=P#+IT;+X7p+j@o+|rS,	#,Um,!W,0Br,@R,R<W,fZU,w<	-#-!e-16m-B%W-T%-e~-uZ?.Z.S.+er.<E.G?S.W::.a.p~&/~/$,/ & Declare Load-Time Defaults& Default Variable& Describe Value& Edit Picture Hook& ExFun Help
&GExpand&&FileuPURIFY-Loaded&iGetr9-Bit&CharacterKName&aGetContainingFLibrary&yGlobalSExpand&LGlobalorLocal&RInsertbCallPaths$&eInsertnPrefixedtVariableKNames"&TKillMPrefixedVariabletNames&LISPeModeBHook"&GMakelLoad-TimeDefaultBSetup$&eMakeNon-UsageOAbbrevhVariableW&BMakecUsagepAbbrevHVariable&BMaybeeBacktrace&MIDASDModeuHook&dNextrM.M&DPurifynBuffer&rRead&Q-RegBName&OReal-timeInterrupt&Secretary Macro
LibfunListaTECOhFSeFlagsListxTracedFunctionrCallsListounusede^R charactersListbWord Abbrevsr DescribePrint Call Paths%Read Incremental Word Abbrev FileRead Word Abbrev FileRevert File
TecDocdeTracecFunctionoCallType Mailing ListUncontrolifyUnlock File
Who UsesWord Abbrev Mode
WORDAB&Write IncrementalsWordrAbbrevRFileWritesWordiAbbrevFile&^RaAbbrevtExpandAndRCall2OldnChar$^R^Abbrev Expand AndfSelf-Insert^RkAbbrevaExpandfor^Tab^RrAbbrevnExpandOnly^RiAddGlobalCWord~Abbrev^RAAddWModeAWordvAbbrev^RAArgument^RrAutooFillCommentsA^RSBackwardBTECOrConditional^R BackwardeTeco~Iteration^ReBreakpLine^R&BufferrGraph^R~Change CasekLetter!^RrDescribeExamined Function^RrDescribePrevious M.M^RsDrawfVerticalOLine^ReExamineTKey^RDExaminerNextM.M^RoForwarddTECOLConditional^RCForwardpTecoeIteration^RGet~Macro&Name^RdGotoCLISP^R%GotoONext M.M^RdGotoDPreviousrM.M^R~GotoeTecoeFunction^RaIndentExamined Function!^RlInsertDEMACS Function Name^RDInsertEKey CalluPaths^R~Insert VariablelName%^R InversedAddGlobal&WordeAbbrev#^ReInverseOAdd&Mode WordtAbbrev^RaIvory-Bound ThistPage^RgKillrGlobalWord~Abbrev^RpKillModeOWord Abbrev^RcLowercaseCLastIWord^R PrintKey~Call Pathsr^RePrint NextaM.M CallsPaths^R Quit ExaminingVFunction^RRe-executeLMinibuffer^RSave~File^RaTecomEndeConditional*~DOC~ & Make Non-Usage Abbrev Variable&~DOC~ & Make Usage Abbrev Variable~DOC~ & Maybe Backtrace~DOC~ & MIDAS Mode Hook~DOC~ & Next M.M~DOC~ & Purify Buffer~DOC~ & Read Q-Reg Name~DOC~ & Real-time Interrupt~DOC~ & Secretary Macro~DOC~ & Set ..D(~DOC~ & Setup AUTO-SAVE-MODE Library!~DOC~ & Setup EAKMACS Library ~DOC~ & Setup FIXLIB Library~DOC~ & SetUp TMACS Library ~DOC~ & Setup WORDAB Library~DOC~ & Shorten String~DOC~ & Startup EAKMACS~DOC~ & TECO Mode Hook~DOC~ & Text Mode Hook'~DOC~ & WRDAB Mode or Global Expand~DOC~ & WRDAB Off PO Check~DOC~ & WRDAB On PO Check&~DOC~ & WRDAB Process Options Hook#~DOC~ & WRDAB Turn Off Ins Char#~DOC~ & WRDAB Turn Off Old Char"~DOC~ & WRDAB Turn On Ins Char"~DOC~ & WRDAB Turn On Old Char~DOC~ & Yes or No~DOC~ 0~DOC~ 1Generate~DOC~ =Abbrev~DOC~ Abort Recursive Edit+~DOC~ Attach Word Abbrev Keyboard Macro~DOC~ Backtrace~DOC~ Buffer Menu~DOC~ Compress File~DOC~ Define Word Abbrevs~DOC~ Dump EAKMACS~DOC~ Edit Word Abbrevs~DOC~ EMACS Function Occur~DOC~ Examine Function~DOC~ ExFun Mode'~DOC~ Expand Word Abbrevs in Region~DOC~ Flush Test Functions~DOC~ Flush Variables~DOC~ Generate EAKMACS~DOC~ Generate Library~DOC~ Get Library Function~DOC~ Goto Teco Function~DOC~ Graph Buffer~DOC~ Indent Teco Object~DOC~ Insert Call Paths~DOC~ Insert Word Abbrevs~DOC~ Key Test Load~DOC~ Kill All Word Abbrevs~DOC~ Kill Buffer~DOC~ Libfun~DOC~ List TECO FS Flags$~DOC~ List Traced Function Calls#~DOC~ List unused ^R characters~DOC~ List Word Abbrevs~DOC~ Lock File&~DOC~ Make These Characters Expand~DOC~ Make Word Abbrev~DOC~ No Key Test Load,~DOC~ Old Word Abbrev Character Describe~DOC~ Print Call Paths+~DOC~ Read Incremental Word Abbrev File~DOC~ Read Word Abbrev File~DOC~ Revert File~DOC~ Send Mail~DOC~ TecDoc~DOC~ TECO Mode~DOC~ Test Load~DOC~ Trace Function Call~DOC~ Type Mailing List~DOC~ Uncontrolify~DOC~ Unlock File~DOC~ UnSAILify~DOC~ Untrace Function Call~DOC~ Who Uses~DOC~ Word Abbrev Mode~DOC~ WORDAB,~DOC~ Write Incremental Word Abbrev File ~DOC~ Write Word Abbrev File,~DOC~ ^R Abbrev Expand And Call Old Char*~DOC~ ^R Abbrev Expand And Self-Insert"~DOC~ ^R Abbrev Expand for Tab~DOC~ ^R Abbrev Expand Only#~DOC~ ^R Add Global Word Abbrev!~DOC~ ^R Add Mode Word Abbrev~DOC~ ^R Argument~DOC~ ^R Auto Fill Comments&~DOC~ ^R Backward TECO Conditional$~DOC~ ^R Backward Teco Iteration~DOC~ ^R Break Line~DOC~ ^R Buffer Graph~DOC~ ^R Change Case Letter'~DOC~ ^R Describe Examined Function"~DOC~ ^R Describe Previous M.M~DOC~ ^R Draw Vertical Line~DOC~ ^R Examine Key~DOC~ ^R Examine Next M.M%~DOC~ ^R Forward TECO Conditional#~DOC~ ^R Forward Teco Iteration~DOC~ ^R Get Macro Name~DOC~ ^R Goto LISP~DOC~ ^R Goto Next M.M~DOC~ ^R Goto Previous M.M~DOC~ ^R Goto Teco Function%~DOC~ ^R Indent Examined Function'~DOC~ ^R Insert EMACS Function Name"~DOC~ ^R Insert Key Call Paths!~DOC~ ^R Insert Variable Name+~DOC~ ^R Inverse Add Global Word Abbrev)~DOC~ ^R Inverse Add Mode Word Abbrev"~DOC~ ^R Ivory-Bound This Page$~DOC~ ^R Kill Global Word Abbrev"~DOC~ ^R Kill Mode Word Abbrev ~DOC~ ^R Lowercase Last Word!~DOC~ ^R Print Key Call Paths&~DOC~ ^R Print Next M.M Call Paths$~DOC~ ^R Quit Examining Function"~DOC~ ^R Re-execute Minibuffer~DOC~ ^R Save File!~DOC~ ^R Teco End Conditional~DOC~ ^R TQuote~DOC~ ^R Unexpand Last Word#~DOC~ ^R Uppercase Last Initial ~DOC~ ^R Uppercase Last Word~DOC~ ^R VT52 Control-S$~DOC~ ^R Word Abbrev Prefix Mark~DOC~ ^R Yank For Patching ~DOC~ ^^ TMACS Error Handler~DOC~ ^^ TTY Init~DOC~ ~FILENAME~~DOC~ ~TMACS Loaded~~FILENAME~
~INVERT~~TMACS Loaded~EAKMACS0"0fo..qEAKMACS Loaded-10943093905"n
@:i*||m.C& SetUp Compressed Librariessetup-caller
@:i*||m.C& Kill Compressed Librarieskill-caller
0m.C1st ~FILENAME~ Name1st found
1m.CTest Load Sets Keys* Non-0 allows key-setting
0m.CCRL ListSymbol table argument to & Read Command Name
0m.CCRL PrefixPrefix string argument to & Read Command Name
1m.CStrip (TEST) Suffix
1m.CDisplay Matching TECO Conditional* 0 disables, + show, - show if onscreen. Absval is time
1m.CIndent Teco Object* If 0, Indent Teco Object is a no-op
0m.CExamined Function Name
1m.CExamine Function Prints External Calls* 0 means do not show, 1 means list, 2 means follow
1m.CExamine Function Prints Redundant calls* 0 means do show only one call, 1 means (& Foo...)
0m.CExamine Function Maximum Depth* 0 means no limit
0m.CMail Reader Library* If non0, is name of library to use for reading mail
0m.CMail Sender Library* If non0, is name of library to use for sending mail
0m.CTMACS Error Dispatch* Non-0 enables several characters for TMACS error handler
0m.CLess Asking* Non-0 prevents Abort and Revert from asking
0m.CWord Abbrevs ModifiedNon0 means definitions have changed
0m.CSave Word Abbrevs* 1 => save all abbrevs on exit, -1 => just save incrementals
0m.CAdditional Abbrev Expanders
0m.COnly Global Abbrevs
0m.CWord Abbrev Mode
0m.CWORDAB Setup HookIf non0 is Teco code to run when WORDAB loaded (it must set keys)
@:i*!~@#;$%^&*-_=+[]()\|:`"'{},<.>/? 
m.CWORDAB Ins CharsSelf-inserting expanders
@:i*||m.CWORDAB Old CharsHairy expanders
0m.CWord Abbrev Prefix MarkPoint of prefix mark
0m.CLast Word Abbrev DefinedVariable name
0m.CReadable Word Abbrev Files* Non-0 means write human-readable kind
0m.CAuto-Save-Mode Setup HookIf non-0, called when AUTO-SAVE-MODE is loaded
0m.CBefore Auto Save HookIf non-0 is run just before auto saving
0m.CAfter Auto Save HookIf non-0 is run just after auto saving
0m.CAuto Save Star* If non-0, user wants * in mode line after auto-save
10943093905m.vEAKMACS Loaded'
m(m.m& SetUp FIXLIB Library)
m(m.m& SetUp TMACS Library)
m(m.m& SetUp WORDAB Library)
m(m.m& SetUp AUTO-SAVE-MODE Library)
1fsEchoErrorsw
1fsBothCasew
1fs^PCasew
0fs%Topw
0fs%Bottomw
60fs%Endw
1fs^LInsertw
fsOSTeco"e -1fsFnamSyntaxw'
"# 1fsFnamSyntaxw'
m.m^^ TMACS Error Handleru..P
2		m.vTags Find File
1		m.vFind File Inhibit Write
1		m.vFile Versions Kept
:i*.?!	m.vFill Extra Space List
77		m.vFill Column
0		uPermit Unmatched Paren
:i*Babyl	m.vMail Reader Library
-uSave Word Abbrevs
1uAuto Save 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'
"#
:i*Earl Killian	m.vBabyl Personal Name'
m.m^R Execute Minibuffer		u
316.@fs^RInit			u.N
320.@fs^RInit			u.P
m.m^R Character Search		u.S
q.Sm.vNon-VT52 Control-S
    m.m^R Reverse Character Search	u.R
m.m^R Next Several Screens		u.V
m.m^R Prefix Meta			u.W
m.mAbort Recursive Edit		u.]
m.m^R Argument			u..1
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
m.m^R String Search		u..S
m.m^R Reverse String Search	u..R
m.m^R Previous Several Screens	u..V
fsOSTeco"e
    m.mCompile				u..Z
m.m^R Goto LISP			u...Z
'
    m.m^R Insert EMACS Function Name	u...M
m.m^R Center Line			u...S
m.mBuffer Menu	u:.x()
m.m^R Kill Region		u:.x()
m.m^R Down Real Line	u:.x()
m.m^R Up Real Line		u:.x()
m(m.mKill Variable)MM ^R Save File
    m.m^R Save File		u:.x()
m.m^R Examine Key		u:.x(E)
m(m.mKill Variable)MM Kill Buffer
m.mKill Buffer		u:.x(K)
m.m^R Display Date and Timeu:.x(T)
m.m^R View Q-reg		u:.x(V)
1m(m.mAuto Fill Mode)
1,1m(m.mWord Abbrev Mode)
etDSK:EAK QWABL
fsHSnamefsDSnamew fsDFile[1
m(m.mRead Word Abbrev File)1
]1

    :iEditor NameEAKMACS
:i..JEAKMACS 
1fsModeChangew
0fsQPUnwind
0u1
m.m^^ TTY InitfsTTYMacw
m(fsTTYMac)
fsOSTeco"n fsRgetty-3"e
	m.m^R VT52 Control-Su.S'
"# qNon-VT52 Control-Su.S''
0[1 0[2
hk fj 0,0a-3"e -d'
"# 0,-1a-15."e -2d''
j:s"n .,zfx1 -d'
z"n hfx2'
0fsModifiedw 0fsXModifiedw
etDSK:INCABS > fsHSNamefsDSNamew
e?"e
ft-- Reading incremental word abbrev definitions --

m(m.mRead Incremental Word Abbrev File)INCABS >'
etDSK:FILE >
fsMSnamefsDSnamew
fsXJname:f6[J
f=JLISPT"e
m(m.mLoad Library)LISPT
0fsQPUnwind :m..l
'

    f=JMAILT"e
m(m.mText Mode)
q2"n 1,m(m.mVisit File)2w'
0fsQPUnwind :m..l
'
[1[2[3[4
fsVersion:\u1
qEMACS Version:\u2
qEAKMACS Library Filenamef[DFile
fsDVersion:\u3 f]DFile
.(4,fsRuntime\ 3ri.),.+3fx4
ftTECO.1   EMACS.2   EAKMACS.3   Run = 4
   ]4]3]2]1 0fsModifiedw 0fsXModifiedw
q2"n m(m.mFind File)2'
q1"n m1'
0fsQPUnwind :m..l?2fsEchoLinesw
1fs^HPrintw
1fs^MPrintw
1fsVerbosew
!f[DFile
fsOSTeco"e
m(m.mGenerate Library)dsk:eak;eakpur >dsk:eak;eakmacemacs1;ivoryecc;fixlibemacs1;tmacsemacs1;wordabeak;auto-s
    '"#
'
  m(m.mLoad Library)PURIFY
fsOSTeco"e
etDSK:TS EAKMAC
fsHSnamefsDSnamew
'"#
qEAKMACS Library FilenamefsDFilew
f[DVersion
fsOSTeco-1"e etDSK:EAKMACS.EXE'
"# etDSK:EAKMACS.SAV'
fsHSnamefsDSnamew
f]DVersion
'
 0fsTTYMacw
0fsQPUnwind
:m(m.mDump Environment)"1,(:i*; )m.lComment Begin
65m.lFill Column
1uDisplay Matching Paren

!& Scribe Mode Hook:! !S Hook to set Fill Column to 65 for Scribe mode.!
 65m.lFill Columnw81,(:i*; )m.lComment Begin
48m.lComment Column

m.q..D
 0fo..qTECO ..Df"nu..D'
 "#w :g..du..d 1m(m.m& Alter ..D)"(')[ ] 
     q..dm.vTECO ..D'
 1uDisplay Matching Paren
<m.m^R Down Real Line[.N
 m.m^R Up Real Line[.P
 :S[1[2[3
ff&1"n u1'
"# 1,fKill Buffer: u1'
fq1"e mmm & Check Top Levelbuffers
	  qBuffer Nameu1'
q1m(m.m& Find Buffer)u1
q:.b(q1+2)"n
q:.b(q1+4)[..o
fsModified"n
q:.b(q1+1)u2
        fsTypeout"l @' ft
Buffer 2 contains changes.  Write them out
	fsTypeout"l 1' m(m.m& Yes or No)"n
	  q:.b(q1+2)f[DFile
	  0[..f m(m.mWrite File) ]..f
	  f]DFile''
      ]..o'
    q:.b(q1)u2
q1-qBuffer Index"e
:i*m(m.mSelect Buffer)'
q:.b(q1+4)[..o 0fsReadOnlyw
    q..o(]..o)fsBKill
10.f?
q.b[..o q1*5j q2*5d
qBuffer Index-q1f"g +q1-q2uBuffer Index'
    f+ LISP _[1[2

 < +1"g "g @'ft (Yes or No)? '
:i2
< fiu1 q1-15.@;
q1-177."e fq2"g
0,fq2-1:g2u2
+1"g "g :i*XfsEchoDisplay'
"# :i*XfsMPDisplay'''
!<!>'
+1"g "g @'ft1'
:i221
>
f~2Y"e :i22es +1"g "g @'ftes''
f~2N"e :i22o  +1"g "g @'fto''
+1"g "g @'ft
'
f~2YES"e -1'
f~2NO"e 0'
"n 0:g2:fc'
@fg >Vm.i :fi[1
200.+Su..0
q1-"e fiw 1'
q1-"e fiw'
f @mNon-VT52 Control-S 	IVORYxm(m.m& Init Buffer Locals)
 1,1m.lSpace Indent Flag
 1,40m.lComment Column
 1,(:i*!* )m.lComment Start
 1,(:i*!)m.lComment End
 1,(:i*)m.lParagraph Delimiter
 1,(m.m^R Indent Nested)m.qI
 1,q(1,q.m.qw)m.q.
1,0m.lDisplay Matching Paren
 m.m^R Backward TECO Conditionalm.q.."
 m.m^R Forward TECO Conditionalm.q..'
 m.q..D
 0fo..qTECO ..Df"n u..d'
"# w :g..du..d
q..dm.vTECO ..D
    1m(m.m& Alter ..D)[A]A"(')<(>);A'
    1m(m.m& Set Mode Line)TECO F
[..o[0[1[2[3[4[5[6[7
q..ou7
"N
0fo..qSilent Running"E ft(PURIFY format file)
'
     m(m.mRun Library)PURIFY& Compress Bufferw
0s

    j< :s; -3c-2d >
0s:!  j< :s; -c @f k >
js
!~DOC~  0l
.,( s
!~DIRECTORY~:!0l ).fx1
q8u..o g1 q7u..o
:k i~FILENAME~ 0l
.,( < .-z; i! :l i:! k > )zfx1
q9u..o g1 q7u..o
'
"#
j <  :s!*;
.-2(s! @f	 l),.k
-@f
	 k
2f=
"e 2c @f
	 k'
>
j <
<
@f
k     3f=
:@;
3d >
.-z;
0u1
<  1a-!"n :i*Macro name or documentation missingfsErr'
:fb:!; %1w
@f
 k
>
q1"e :i*Macro name missingfsErr'
0x1 q9u..o g1 q8u..o g1 fkc
<ci~DOC~  s:! .-z;>
i

q7u..o d .(s!r),.fx1 d q8u..o g1 i
 q7u..o
2f=
"n :i*Text after documentationfsErr'
2c @f
	 k
1f~m(m.m& Declare Load-Time Defaults)
"e	k .-b(s),.-b(qzu..o)f(-1g7q7u..o):d
@f
	 k'
14.,1a-14."e :i*Macro body emptyfsErr'
:s
: :cw
-@f
	 k
.-z; 3c >
'
:"l
"n
j :s!~FILENAME~:!"e
:i*1st file compressed MUST have ~FILENAME~fsErr'
      l
.,(@:f
	 l).x* m.v1st ~FILENAME~ Namew
'
"#
0u1
j :s!~FILENAME~:!"l
.( l .,(@:f
l).x1
:i2& Compressed 1 Library
)-2j-10dg2
q8u..o -s!~DOC~ ~FILENAME~:! 7c10dg2 zj
q9u..o -s!~FILENAME~:! 1c10d g2 zj
q7u..o'
q1"n
j :s!& SetUp 1 Library:!"l
q& SetUp Compressed Librariesu2
@:i& SetUp Compressed Libraries|2m(m.m& SetUp 1 Library)
|'
j :s!& Kill 1 Library:!"l
q& Kill Compressed Librariesu2
@:i& Kill Compressed Libraries|m(m.m& Kill 1 Library)
2|
''
'
'
zj -3f=
"n i
' Gf[BBind i
q..om(m.m& Make Load-Time Default Setup)
m(hfx*) F[..o [0[1[2[3[4
 @fn|q..q[..o :fo..qIvDVar *5,(:fo..qIvDVar!*5)k |
j< @f
	 k .-z; .u0
:s,"e :i*No comma ending default variable name fsErr'
    -d q0,.x1 27i @f
	 k
.(r :s:"e c :i*No colon ending default variable comment fsErr'
    -d),.x2 27i @f
	 k
.-z"e :i*No value for default variable fsErr'
    (1a--"'e)(1a"'d)"n .(:\:\u3),.k'
"# 1au3
.,(c :s3"e :i*No end delimiter for string default value fsErr'
	  ).fx3
@:i3|@:i*3|'
@f	 k
15.,1a-15."n :i*Something follows default value on line fsErr'
0fo..qIvDVar 1 IvDValf"nu4
f=43"n :i*Incompatible value for 1: 4 vs 3 fsErr'
      f~IvDVar 1 IvDCom2"n :i*Incompatible comment for 1: 4 vs 2 fsErr'
      q0,.k'
"#w
q3 m.vIvDVar 1 IvDValw
q2 m.vIvDVar 1 IvDComw
z-.(q0j g3 im.C),zj l'
    >
[0[1[2[3[4[5[6[7[8[9
zj @i|
!~INVERT~:!
+8+fq(+4)[2 0[3
< %3,-q2f2u3 q3&1@; q3"l 0' >
f[BBind q3-1*5,q3*5g2 q:..o(0)+q2|
j @i|[0 +8+fq(+4)[1
0fo10f"g+q1'
+fq()+4u1
fq1"l 0'
,q1:m(q1+4(]1]0))|
.+8u1 q1+4/5*5+1-q1,0i
.+4u5 j 177.i q5&177.i q5/200.&177.i q5/40000.&177.i q5j
0u6 0u7
q..ou8 f[BBind [..o q..ou9 q8u..o
<	.-z; .u3 :x2 q9u..o g2
fkc <	1a-!"n :i*Missing namefsErr'
d .(s:!
),.+2u2 q2-2r
177.i q2&177.i q2/200.&177.i q2/40000.&177.i
l q6+q2u6 q3-q5\i
 %7w .-z;>
q8u..o l q3,.k
zu4 :s
"l -3d .u4 q3j'
q4-.+4u4 177.i q4&177.i q4/200.&177.i q4/40000.&177.i
	q4-4c >

    q5j q7*10+5+4u4 177.i q4&177.i q4/200.&177.i q4/40000.&177.i
q4-4,0i
.u4 q6,0i .-q5u6
z+4+5120-1/5120*5120u2
j 177.i q2&177.i q2/200.&177.i q2/40000.&177.i
zj q2-(h),0i
1f?
q4+4u4 q5+4u5
q9u..o
    1f[^PCase 4c:l2l f]^PCase
q5+4u1
q1/5*5-q1"n @feDSI fsErr'
q1/5u1
2u:8(q1)
j < .-z; .(4cl),.-2x2 q4:f82
q4-q5u:8(%1) q4+fq2u4
\+q6u:8(%1) l>
q8u..o j [1[2 -1f[FnamSyntax
qBuffer Filenamesf"ew'f[DFile
4,4fLibraryu1 et1 fsDFileu1
et:EJ fsDFileu2
m(m.mGenerate Library)21
f[0[1[2[3[6[7[8[9 f[FNamSyntax
f[BBind f[DFile
fsURead"n e[  fn e]'
fsUWrite"n e\  fn e^'
1fsFNamSyntax
etFOO :EJ 4,1fLibraryu2
et2 fsDFileu2
-1fsFNamSyntax
0fsDVersionw

 1[F
fsBCons
:i*[& SetUp Compressed Libraries
:i*[& Kill Compressed Libraries
0[1st ~FILENAME~ Name
:i* m.vCompressed Library Filenamesw
fsBConsu9 fsBConsu8
< 4,4fSourceu0
-fq0;
er0
fsIFileu0
fsIFCDate:fsFDConvertu7
fsIFFN1:f6u3
@y
qCompressed Library Filenamesu1
:iCompressed Library Filenames1
   0,	7
0fo..qSilent Running"E FT Compressing file	0
    '
   qF,(0fo..qPURIFY Library 3)m(m.m& Compress Buffer)
.fsVBw
0uF
>
0fsVBw
m(m.m& Combine Compress Data)
0fo..qSilent Running"e ft Purifying...
'
m(m.m& Purify Buffer)
et2 eih@pef
0fo..qSilent Running"e fsOFileu2 ft Pure file is		2
' [1[2
q1st ~FILENAME~ Nameu1
j :s!& Setup 1 Library:!"e
zj .fsVBw
@i|!& Setup 1 Library:! !S IVORY-Generated Setup -- Calls hook.!
0fo..q1 Setup Hookf"n[0m0w'|
-1,m(m.m& Compress Buffer)
0fsVBw -l'"# l'
qzm(m.m& Make Load-Time Default Setup)
 qz[..o 0u2 j<:sM.C; %2w> ]..o
q2-4"l gz'
"# fsDate:\u2 i0fo..q1 Loaded-2"n
 gz g2 im.v1 Loaded'
'
qzfsBKill
q& SetUp Compressed Librariesu2
fq2"g g2'
q8[..o
j s!~DOC~ & Setup 1 Library:!
s
 3r
i
This object file was compressed on m(m.mInsert Date)li
by fsXUNamef6i on fsMachinef6i from the following source libraries:
 gCompressed Library Filenames
zj ]..o
q& Kill Compressed Librariesu2 fq2"g
j :s!& Kill 1 Library:!"l :l g2'
"# zj .fsVBw
i!& Kill 1 Library:! !S IVORY-Generated Kill.!
2

-1,m(m.m& Compress Buffer)
0fsVBw''
zj .(g8)j q8fsBKill
<:s; !>
zj i!~DIRECTORY~:!
 .u2 g9 q9fsBKill
0s:!
 q2j <	1a-!"n :i*Missing excl???fsErr'
d s
	.-z;>
q2j <:s~; l-k>
00[Test Load Sets Keys
f:m(m.mTest Load)01[Test Load Sets Keys
f:m(m.mTest Load)[0[1[2[3[4[5[6[7[8[9[k[r[.0
 .u7 FN q7j 
[7
qTest Load Sets Keysu0
q..ou1
f[BBind q..ou2
g1
fsBCons
fsBConsu8 fsBConsu9
-1,m(m.m& Compress Buffer)
q9fsBKill
zj .(g8)j q8fsBKill
0s <:s;!>
qzm(m.m& Make Load-Time Default Setup)
mz qzfsBKill
m.mKill VariableuK
m.m& Read Q-Reg NameuR
bj
 < :s:!; 2r .u3 0f:fb! c
.,q3f=~FILENAME~"e q3+2j !<!>'
.,q3f=~DOC~ ~FILENAME~"e q3+2j !<!>''
.,q3x3
l .(:s
"e zj'"# 3r'),.x4
"l :i5'
"# 1,m.m3f"ew :i*'u5'
f=45"n
0u7
0:g3-~"e oCOMP'
"l oUNCOMP'
ff&1"E !UNCOMP!
q1[..o
bj s!3:!
0l .,(:s
	       "e zj'"# 3r'
	       ).x6
"l :i5'
f=56"N
0fo..qMM 3u.0
mkMM 3
q6 m.vMM 3 (TEST)w
ftMade uncompressed MM-variable MM 3 (TEST).

	    1u7'
]..o
'
"# !COMP!
0fo..qMM 3u.0
mkMM 3
q4 m.vMM 3 (TEST)w
ftMade compressed MM-variable MM 3 (TEST).
	 1u7'
q7"N q0"n
f~(0,3:g3)^R "E
ft   Put on which key (rubout means no key)? 
:i..0
Key: 
mRu4
f=4"E ft None.
	 '
	 "# ft4

	    0u5
q4"n
q.0-q4"n
q4fp"l
m(m.m& Load BARE)'
1:< q4m(m.m& Macro Name)u5 >w
q5"e q4fp"g :i5an unnamed function''
q5"n f~53"e
0u5'
"#
ft   4 runs 5  -- Ok to replace?
m(m.m& Yes Or No)"l 0u5'''''
q5"e m.m3 (TEST)u4''
''''
>
ff-1"G
q2u..o
bj :s
!& Setup"L 0l .u4
:s
	"e zj'"# 3r'
ftMacroing & Setup
	m( q4,.x* )
'
'
ftDone.

 2[1[k :i1
f[BBind m(m.m& Insert Prefixed Variable Names)MM 
j m(m.mKeep Lines) (TEST)
j fq1"g m(m.mKeep Lines)1'
:i*When exit ^R mode, remaining ones will be killed.[..j
@:i*|m(m.mDescribe)Flush Test Functions|f[HelpMacro

m.mKill Variableuk
j <@f
	 l .-z;
:x1
mk1w l>
v[1[2[3 [8[9
 4,4fCOMPRS filef[DFile
 fsDFile( 4,1fSource fileu2 )u1
f[BBind -1f[FnamSyntax
er2 @y
fsIFileu3
ft Compressing file	3

fsBCons
fsBConsu9 fsBConsu8
1,m(m.m& Compress Buffer)
j < :s
;
fk+1c i
 l >
m(m.m& Combine Compress Data)
f6COMPRSfsDFN2w 1fsFnamSyntaxw
et1 eihpef
fsOFileu3
ft Compressed file is	3
 
[1
 .:\u1 fn1j
fsWindow+bfsWindoww
0,fsZ fsBoundariesw
-:s
:
.:
:s
"e zj'"# 3r'
@m(m.m^R Set Bounds Region)0[1 .[3
    .( :s
: fsZ-.f[VZ )j
< :s"'!*;
      0a-" "e %1' !'!
!"!   0a-' "e q1-1u1 q1-1"l 0''
      0a-* "e s!' >
q3j fg 000[1 [2 .[3
 .( -:s
   : .f[VB )j
< -:s"'!
  ;
   1a-" "e q1-1u1 q1-1"l 0'' !'!
!"!   1a-' "e %1'
      1a-! "e .u2 -s!
2a-*"n q2j''
>
    q3j fg 8
[0 [1 [2 [3 [4 [5 [6
    1,fCommand: u1
f[BBind Q..OU4 [..o g1
:i*Teco Doc[..J 0f[^RStart
f[DFile etDSK:INFO;TECORD INFO 0fsDVersionw
0fo..qTecord Bufferu3
q3fp"e
0[..f f[BBind q3[..o'
"#
ff&1"n
0[..F
f[BBind Q..OU3 [..O
er @y'
"#
[Previous Buffer qBuffer Nameu3 @fn|m(m.mSelect Buffer)3|
fsDFileu3
-1,m(m.mFind File)3
q..om.vTecord Bufferw
q..ou3 [..o''
!ARG!
    :FT Q4U..O
    J <:S^ ; -DR>
J :S "N B,.-1K '
J <.-Z; 1A-32"L 1A-33."N 1A( D I^)+100.I 2R'' C>
Z"E OGET ARG'
H@FC
    J :< 1A F :@"G C!<!>'
1A-^"E 2AF: +1"N CDI@!<!> '' 0; >
.( 1:< 1A-F"E C 1A-S"E
		  .-Z"N C 40.I 1A-^"E 2C 40.I ''''
"# 1A-E"E C '' 1A-^"E C ' >
:CW 0A-<"E 9I'
B,.X2
),.X5
0A-9"E -D'
    J<:S ;-D>
Q3U..O BJ S)
!SEARCH AGAIN!
    :S
5"E FG FTNot found. OASK '
1A-:"E :L '"# 0:L '
.U6
< :S
2
<>2
<>,<>2"E Q6J 0;'
FQ2R :I0
:<
1A-40.F"L :; '"E 0,0A-^"N C !<!> ''
1@X0 C >
0,FQ4:G0U0
F~04"E :0L 0;'
>
!MORE!
    .(
< LS
	 FKC .,.+4F=

:@;>
),.T
!ASK!
    0fsFlushedw FT
More (
    .u0 s
 r
.,( s ).t 0:l
FT)? 
    @:FIU0 33.FS^RInit-Q0"E FIW 0U..H '
FIU0
XQNQ0F+1"G -fsReReadw 0U..H '
Q0-40."e OMORE'
Q0-12."E FT
 OSEARCH AGAIN '
Q0-33."E
!GET ARG!
       FR 1f[Typeout
1,m(m.m& Read Line)Teco Command: U0
       f]Typeout
       FQ0"G Q4U..O HKG0  oARG'
O ASK'
FT
Responses at this point are:
X, Q, N exit
Rubout  exit
Space   type more
Line    search again for same arg
Altmode read another arg and search
 oASKNf[VB f[VZ
:,. f fsBoundw
j< @:fl .-z;
       i c>
    hvf[BBind
    :fe j  :LL
J<
      fsWidth/9<
.-z; :LK I    >
      -@f k i
    .-z; >
    ht :fv 0
FIXLIBIm(m.mKill Variable)MM Backtrace
 m.mBacktracem.vMM Backtrace
 r[1
 :i*[CRL Prefix q..q[CRL List
8+2,fVariable name: u1
.:w
.,(ff&1"e 33.i g1 33.i'
"# g1'
).'8,fFunction Name: [1
.
.,( g1
0,0a-)"e
:f[VB fsZ-.f[VZ
:< -flfx1
0fo..qStrip 1 Suffix"e .(g1)j'
>w
zj f]VZ f]VB
-@f 	k'
ff&1"e 33.i').E0[1 [2[3
ff"n u2'
"#   < m.i fiu2
q2-?:@; m(m.mDescribe)& Read Q-Reg Name >'
 q2-="E 0fo..qLast QReg Typedu1'
(q2-;"'e)(q2-"'e)"n
:i*[CRL Prefix
q..q[CRL List
2,m(m.m& Read Command Name)Variable: u3
q2-"e
:i13'
"#
:i1:..q(:fo..q3+2)''
q2-!"e 8,m(m.m& Read Command Name)Function name: f"e'u1
:i1(m.m1)'
 q2-"e 1,m.m& Read FS-Flag Namef"nu3 m3u3'
"# 1,m(m.m& Read Line)FS-Flag: u3'
fq3:"g 0'
:i1(fs3)'
q1"E q2m(0,(m(m.m& Get Library Pointer)EMACS)m.m & Read Q-Reg Name)u1'
 q1m.vLast QReg Typedw
 q1 r[0[1[2
 !"! .,(f,'i).f
qMODEu0
f~0TECO"n 1'
z-.u0 fnz-q0j
fsrgetty"e 1'
!"! 0fo..qDisplay Matching TECO Conditionalu1
q1"e 1'
1u..1 :i2 @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    A(   @    @    @    @    ?)   @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @    @   
b,. @f2
q..1-1"L FG w 1 '
fsWindow+b-."g q1"l 1''
1@v
q1f"lw-q1'*30: 1W"l -@:m(m.m^R Backward Teco Iteration)'
 0[1 .[3 fnq3j
f[VB f[VZ @m(m.m^R Ivory-Bound This Page)w
<
1f<!Balanced!
<	:s<>!*;
0a-<!>!"e %1w'
0a-!<!>"e q1-1u1
q1"l .u3
@ft(up) 0fsEchoActivew 0'
q1"e .u3 f;Balanced''
0a-*"e s!' >
q1"e @ft(no more) 0fsEchoActivew 0'
@ft(no end) 0fsEchoActivew 0 >
>
0e"l -@:m(m.m^R Forward Teco Iteration)'
 0[1 .[3 fnq3j
f[Window
f[VB f[VZ @m(m.m^R Ivory-Bound This Page)w
<
1f<!Balanced!
<	-:s<>!
;
1a-!<!>"e %1w'
1a-<!>!"e q1-1u1
q1"l .u3
@ft(up) 0fsEchoActivew 0'
q1"e .u3 f;Balanced''
1a-!"e -s!' >
q1"e @ft(no more) 0fsEchoActivew 0'
@ft(no start) 0fsEchoActivew 0 >
>
0[1
 ff"e -3f~m.m"n
@m(m.m^R Goto Previous M.M)w''
@f	 l
.,(s r -@f	 l).x1
m(m.mGoto Teco Function)!1:!]1,fGoto Teco Function: [1
.[0[1[2[3 0fsVB[4 0fsVZ[5
@fn| q0j q4fsVBw q5fsVZw fg|
ff&1"e j'
0u3
< :s:!; 1u3 .u2 -2s! .,q2:fb1:; 0u3 q2j >
q3"n 0u..n
0l .fsWindoww
q0 m(m.m& Maybe Push Point)'
0v[0[1[2[3[4
1,fWho Uses: u3
0s3 f[BBind
fs:EJPage*5120+400000000000.u0
m.m& Maybe Flush Output
0[I
< -fq0; @ftA g0 j @ftB
1,q0m.m~Filename~u2
q2"e :i2((Anonymous))'
1,q0m.m~Invert~uI
qI"E :@iI|[1<q1-1u1q1fp-100@;>q1| '
< ma
:s; @ft.
.+4+fk+q0u1
<q1-1u1 q1fp-100@;>
q1,q0mIu4
q4"E !<!>'
0:g4-~"e !<!>'
1:<q0m.m4>"n !<!>'
q2"n ftIn file 2:

	  0u2'
ff&1"n ft4:

   '"# ft4
   '
@ft+
     ff&1"n
q1-q0,(q1+fq1+4-q0)fsBoundariesw
j m(m.mOccur)3
ft================


0,(fsZ)fsBoundariesw'
q1+fq1+4-q0j
>
   q2"e ft
'
hk q0+fq0+4u0
>
 ftDone.

 [0[1[2[3
 1,fEMACS Function Occur: u0
fq0"e :i0'
.:\u1 fn1j
0f[VB 0f[VZ
ff"e bj'
-1u3
<  :s0;
:l fsZ-.fsVZw
-:s

:s:!"e :i2(unnamed section)'
"# 2r .,(-s!c).fx2'
.-q3"n ft

2:

	   '
.u3
zj 0fsVZw
0tt
>
 ftDone.
 :i*[1
1fo..qTrace 1"E '
]1
q..h"N
0fo..qBacktrace Should Smash Screen"E
FG @ftType character for backtrace fiw
 fsEchoDisplay
C  fsEchoDisplay''
0u..h
 1:<[.1[.2[.3[.4[.5[.6[.7[.8[.9[.0
[..0[..1[..2>
q.1m.v.1w
q.2m.v.2w
 q.3m.v.3w
 q.4m.v.4w
 q.5m.v.5w
 q.6m.v.6w
 q.7m.v.7w
 q.8m.v.8w
 q.9m.v.9w
 q.0m.v.0w
 q..0m.v..0w
 q..1m.v..1w
 q..2m.v..2w

 [.1[.2[.3[.4[.5[.6[.7[.8[.9[.0
[..0[..1[..2

 ff"E
2m(m.m Backtrace) '
ff"N
+2m(m.m Backtrace) ':fo..qBacktrace Orig Buffer"l 0m.vBacktrace Orig Bufferw'
 :fo..qBacktrace Empty Unwind"l 0m.vBacktrace Empty Unwindw'
 :fo..qBacktrace Temp"l 0m.vBacktrace Tempw'


 1f[CtlMta 0f[HelpMac [..J
 [BackTrace Temp
 q..o[BackTrace Orig Buffer f[BBind
[BackTrace Empty Unwind
2[0
1:<-2fsBackTrace>"e
    -7f~M:.N(0)"e %0w''
  ff"n u0'
fsBackDepth-q0uBacktrace Temp
  ]0
!NEW DEPTH, EMPTY FRAME!
fsQPPtr uBackTrace Empty Unwind
 [0[1 f[SString hk
 qBacktrace Temp:\u0 fsBackDepth-1:\u1
 :i..jBacktrace, depth 0/1
 1:< qBacktrace Tempf"lw 99999999'f(fsBackTrace
)fsBackStringm(m.m& Macro Name)u0
:i..j..j, 0  
     >"n :i..j..j  '
 fr
z"e iDepth gBacktrace Tempi out of range.'

 1,m(m.mIndent Teco Object)w
fsRGetTy"e f+'
 qBackTrace Empty Unwind fsQPUnwind
!EMPTY FRAME!
[1

 !READ!
0u..h @v 0u..h
 :fi:fcu1
q1-4110."e ?u1 fiw'
"# @fi@fs^RCMac-(33.fs^RInit)"e Qu1''
q1-D"e12.u1'q1-U"e^u1'
 q1-12."e qBacktrace temp-1uBacktrace temp
!TO NEXT FRAME!
	  qBackTrace Empty Unwind fsQPUnwind
oNEW DEPTH, EMPTY FRAME'
q1-^"e %Backtrace tempw oTO NEXT FRAME'
q1-A"e qBackTrace Temp fsBackArgsf(f"e ftNo arguments.
					       :fiw oREAD'
	    )f-1"e oOneArg'
qBackTrace Temp fsBackArgsu0u1
ftArg1:  q1m(m.m& Describe Value) ft
Arg2: 	  q0m(m.m& Describe Value) :fiw oREAD
	  !OneArg! ftArg: 
	  qBackTrace Temp fsBackArgs m(m.m& Describe Value)
	  :fiw oREAD'

 q1-."e :i*Set PC[..j
hk qBacktrace tempfsBacktracew

]..j fr
.,qBackTrace TempfsBackPCw
@ft(PC Set) 0fsEchoActivew
oREAD'

 q1-
"e f+ @v oREAD'
q1-I"e 1[Indent Teco Object
m(m.mIndent Teco Object)w
]Indent Teco Object oREAD'
q1-"e qBackTrace Empty Unwind fsQPUnwindw
!^R, NO HACK!
	   0[..f 
qBackTrace Empty Unwind fsQPUnwindw
oEMPTY FRAME'

q1-"e m(m.m^R Execute Mini)@V oREAD'
q1-B"e qBackTrace Empty Unwind fsQPUnwindw
qBackTrace Orig Buffer[..o
o^R, NO HACK'

q1-V"e qBacktrace Empty UnwindfsQPUnwind
	 :i..0View QR: m(m.m^R View Q-reg) :fiw oEMPTY FRAME'
q1-?"e FTYou are inside a break loop, running 
	 m(m.mDescribe)Backtrace @V oREAD'
q1- "e oREAD'
q1-C"e 1'
q1-X"e m(m.m^R Extended Command) oREAD'
q1-Q"n fg oREAD'
fp+4"e := '
fp+3"e ftInvalid pure string pointer, =  := '
 fp+2"e ftInvalid impure string pointer, =  := '
 fp+1"e ftDead buffer, =  := '
 fp-0"e ftBuffer,  oPRINT'
 fp-1"e ftQ-Vector,  fq()/5:= ft words long '
 fp-100"e m(f"ew m.m& Macro Name')[1
q1"n ft1 '
ftPure string,  oPRINT'
fp-101"e '
!PRINT!
 fq():= ft long: "
 0,30:g()[1 ft1" !''!
 8,fTrace Function: (
     1,fTeco commands: [.2
)[.1w
1, m(m.m Untrace Function Call).1
q.2 m.v&& Trace Commands For .1w
m.m.1m.v&& Real .1w
m.vTrace .1w
@:i*|!&& .1 Tracer:! !S Prints when .1 called, returns.!
      fnm(m.m& Maybe Backtrace).1w
@ft(.1 returned.)  0fs echo activew
      0m&& Trace Commands For .1

m(m.m& Maybe Backtrace).1w
@ft(.1 called.) 0fs echo activew
      1m&& Trace Commands For .1
f:m&& Real .1
| m.vMM .1w
,8,fUntrace Function: [.1
f[BBind
m(m.m& Insert Prefixed Variable Names)&& Real .1
z"E ff-2"E '
:i*Function .1 not being tracedfsErr'

 bj
 < :s&& Real ;
:x.1
q&& Real .1m.vMM .1w
m(m.m Kill Variable)&& Real .1
m(m.m Kill Variable)&& Trace Commands For .1
>
  f[BBind
:i*&& Real [.1
m(m.m& Insert Prefixed Variable Names).1
bj [.2 i
bj
 < :s.1; 0k
:x.2 :l
0fo..qTrace .2"N
32m(m.m& Indent)w
i(Backtrace)'
fo..q&& Trace Commands For .2u.2
fq.2"G   fshpos-32"G 15.i 12.i'
32m(m.m& Indent)w i.2'
>
 ht ft
Done. `1,fLibrary: (
    1,fFunction name: [.2)[.1
f[DFile et.1 :EJ fsDFN1:f6[.5
[.3[.4
 f[:EJPage
0fo..qMM .2 (.1)f"N 'w
1,q.5m(m.m& Get Library Pointer)u.3
q.3"N
ff&2"E
0,q.3 m.m.2 ''
"#
1 m(m.m Load Library).1u.3'
0,q.3 m.m~DOC~ .2u.4
!f.4+1"G
f[BBind
g.4 j<:s!;<EXCL>>
hx.4
f]BBind'
0,q.3 m.m.2u.3
:i.3!.2 (.1):! !.4
From .1 library.!
.3
f]:EJPage
ff&1"E
1,0m.m.2fp"G
:fo..qMM .2"L
:i*$MM .2 (.1)$ conflicts, but not with an MM-var.
Make it anyway? ,0 m(m.m& Yes or No)"E w ''
    "#
:i*$MM .2 (.1)$ conflicts with an MM-var.
Kill old variable? ,0 m(m.m& Yes or No)"E w '
       m(m.m Kill Variable)MM .2'''
q.3 m.vMM .2 (.1)w'
q.3 ,[1
ff"e :i..0^R character to examine: 
m(m.m& Read Q-reg Name)u1'
"# :i..0Q-register to examine: 
m(m.m& Read Q-reg Name)u1'
q1,q1:m(m.mExamine Function)}[0[1[..J[ w
fp"l
8,fExamine: u1w
fq1"e m(m.m& Read Command Name)Examine: f"e'u1w'
m.m1u0'
"# u0'
f~Buffer Name*Examine Function*"n
[Previous Buffer
    qBuffer Nameu1 @fn| m(m.mSelect Buffer)1 |
m(m.mSelect Buffer)*Examine Function*'
f[BBind [..o
q:.b(qBuffer Index+4)[2
@fn| q2u:.b(:i**Examine Function*m(m.m& Find Buffer)+4) |
 [2
q..ou:.b(qBuffer Index+4)
f~ModeExFun"n m(m.mExFun Mode)'
q0m(m.m& Macro Name)u1
q1"e
"n u1
fsOSTeco"n g1
j m(m.mUncontrolify)
hfx1'
:i1(q1)'"# :i1(nameless impure string)''
qExamined Function Name"e
!<! :i..J>1'
"# 1,fq..j-2:g..ju..j
!<! :i..J..J>1'
fq..j+12-(fsWidth)"g
(fq..j-(fsWidth)+12),(fq..j):g..ju..j
:i..j.....j'
g0 bj
1,m(m.m Indent Teco Object)
q1(qExamined Function Nameu1
)[Examined Function Name
q1"n bj  1'
1f<!Top-Level-Examine!  bj >
1m(m.m& Init Buffer Locals)
1,(m.m& ExFun Help)m.qfsHelpMacro

 1,(0fs^RInit)m.qfs^RNormal
1,(m.m^R Examine Next M.M)m.q 
1,(m.m^R Quit Examining Function)m.qQ
1,(m.m^R Goto Next M.M)m.qN
1,(m.m^R Goto Previous M.M)m.qP
1,(m.m^R Print Next M.M Call Paths)m.qC
1,(m.m^R Indent Examined Function)m.qI
1,(m.m^R Yank For Patching)m.qY
1,(m.m^R Describe Previous M.M)m.q/
1,(m.m^R Describe Examined Function)m.q?
1,(m.mExamine Function)m.qE
1m(m.m& Set Mode Line)ExFun
61[Indent Teco Object
:m(m.mIndent Teco Object)NftYou are examining a function.  Certain keys are rebound, in
particular Q (which will quit this) and Space (examine next).  Here is an
appropriate Apropos:

 m(m.mApropos)ExamineM.MPatching
A[1 .[2 [3 [..j
[..o
qBuffer Nameu3 @fn| m(m.mSelect Buffer)3 |
qExamined Function Nameu1
ff&1"e m.m1u3'"# hx3'
m(m.mSelect Buffer)*Patch*w
f~ModeTECO"n m(m.mTECO Mode)'
hk g3 bj :s:!"e
j i!1:! !
1:< g(m.m~DOC~ 1) >w
i
...patched...
!
   -:l'
qEditor Nameu..j :i..j..j 
:i*Patch 1[Editor Type
1fsModeChange

m(m.mKill Variable)MM 1
-1m(m.mTest Load)
hk 0fsXModifiedw 0fsModifiedw
f;Top-Level-Examinen[1
 ff"n
.,(sr).x1'
"# 1:< 0,1m(m.m& Next M.M)f(x1
)jw
>"n fg ''
m(m.mExamine Function)1 1[1
 1:< 1,m(m.m& Next M.M)u1j
>"n fg'
14[1
 1:< 1,(-)m(m.m& Next M.M)u1j
>"n fg'
1Y[1[2[3[4[5 .[0 fnq0j [0
"l :i1-
:i4fkc
:i5 q2j 3r'
"# :i1 q1u4 q1u5
"e -3f~m.m"e 3r'''
0u0
.u2
1f<!Done!
1f<!Good M.M!
<
1f<!Bad M.M!
m5
1:sm.m"e fg f;Done'
m4 .u2
:fb"e f;Bad M.M'
r q2,.x3
fq3"e f;Bad M.M'
f3"l 1u0
f;Good M.M'
>>>>
 q0"e :i*No next M.M fsErr'
q2j
.,(fb r -@f 	l).f.[0[1 fnq0j
-3f~m.m"n -1m(m.m& Next M.M)u1j'
0,1m(m.m& Next M.M)x1
m(m.mDescribe)1
 1j0fo..qExamined Function Name[1
q1"e :i*Not examining any function fsErr'
 m(m.mDescribe)1
 1[1
 ff"e 0,1m(m.m& Next M.M)x1'
"# 0fo..qExamined Function Nameu1
q1"e :i*Not examining any function fsErr''
m(m.mPrint Call Paths)1
1[1
 :i..0Key to Print Call Paths on: 
 m(m.m& Read Q-Reg Name)u1
q1 m(m.m& Macro Name)u1
m(m.mPrint Call Paths)1 [1
 :i..0Key to Insert Call Paths on: 
 m(m.m& Read Q-Reg Name)u1
q1 m(m.m& Macro Name)u1
.,( 0m(m.mInsert Call Paths)1
).u[1
 8,fCall paths from: u1
f[BBind
ff&1"n ,'1m(m.mInsert Call Paths)1
ftDone.
hx* m.vCall Paths [0[1[a[i[p[k[d
 8,fInsert call paths from: u0
m.m0 m(m.m& Get Containing Library)m.vCall Path Libraryw
 m.mKill Variableuk
0fo..qKill Call Path Flagsu1 fq1"g m1'
:i* m.vKill Call Path Flagsw
m.m& Maybe Flush Outputua
m.m& Indentui
m.m& Insert Call Pathsup
0ud
ff&2"n [Examine Function Maximum Depth'
,0mp0
0fo..qKill Call Path Flagsu1 fq1"g m1'
mkKill Call Path Flagsw
B[0[1[2[3[d
 :i0
miw
f0:"l '
1,m.m0u3
q3"e i<0 ???>

"n -t' '
-(50fo..qMax Call Path Column)"g
i...
   "n -t' '
0fo..qCall Path 0 Flag"n
qExamine Function Prints Redundant calls"n
i(0...)
     "n -t''
'
qExamine Function Maximum Depthu1
 q1"n %d-q1"g i0...

"n -t'
''
qKill Call Path Flagsu2
@:iKill Call Path Flags|2
    mKCall Path 0 Flag|
1m.vCall Path 0 Flagw
qExamine Function Prints External Calls-2"n
q3m(m.m& Get Containing Library)u4
q4"n
0fo..qCall Path Library-q4"n
qExamine Function Prints External Calls-1"e
1,q4m.m~FILENAME~u4
q4"e :i4(anonymous)'
i[4: 0...]

"n -t''
'''
g0 i
 "n -t ma'
q..ou2
f[BBind [..o q..ou1
g3 bj
< q1u..o
ma1;
:sm.m; @f	 l
1< .,(:fb; r).x0
q2u..o
,+4mp0 > >
q[0[1
 fp-100"n 0'
0u0
fs:ejpage*5120+400000000000.u1
<  fq1:"g q0'
-q1"l q0'
q1u0
q1+fq1+4u1>
qIndent Teco Object"e '
.[9 bj :fb:!"l q9j'
0[1
q9j iPOINT
m.m& XIndent with Tabs
:i*<[2 :i*([3 :i*)[4
:i*>[5 :i*"[6 :i*'[7
bj < l.-z; @f 	k >
bj 0s23
<:s; r i6 c>
bj 0s45
<:s; r i76 c i7>
bj 0s"'
< fsHPositionu9
q1*4-q9"g q9,q1*4mi'
"# i '
<:fbu9 q9;
q9*2+3+q1u1>
q1"l 0u1'
l.-z;>
bj 0s6263
<:s; r -d c>
bj 0s76477657
<:s; -d r -2d c>
bj 0s6
<:s; c1af 	"l i '>
ff&2"e
q1"n FG ftFinal level count non-0:  q1=
q1"G ftSome <s, (s, and/or "s were unmatched. !')>!'
"# !"(<! ftSome >s, )s, and/or 's were unmatched.'
ft

	 0fsechoactivew''
bj sPOINT fkd
[0,30:G:.N(0)[1
ff"e @FTRe-execute command 1
1m(m.m& Yes or No)"e 0''
M:.N(0)	TMACSP	:i* [.1
[f[.2[.3[.4[.5 [..o
 m.m& Maybe Flush Outputuf
0fo..qTML Levelu.5
q.5+1-(ff&1"E 3 '"#  ')"G '
mF 
q.5"E
m.m Kill Variable
qBuffer Name
[Previous Buffer
FN 1:< mKTML So far >w
1:< mKTML NAMES >w
1:< mKTML Level >w
qBm(m.mSelect Buffer)

f[DFile
q.1u.2
< @f.2f(:;)+1,fq.2:g.2u.2 >
0,fq.1-fq.2-1:g.1u.1
fq.1"E q.2u.1
fsMachine :f6u.2'
q.2:fcu.2
m(m.m Select Buffer)NAMES@.2
z"E	@ftReading .2:.MAIL.;NAMES 
-1,1m(m.mVisit File).2:.MAIL.;NAMES >
'
q..o m.vTML NAMESw
fsBCons m.vTML So farw
%.5 m.vTML Levelw
'
"# %.5 uTML Levelw'
q..o[.7
.[.6
qTML So faru..o
bj :s
.1
   "L oEXIT'
i
.1

qTML NAMESu..o
bj <:s
(.1"E oEXIT'
0af
	 ([;>
-ful
flu.4w
.,q.4x.2
ft.2

.,q.4:fb(EQV-LIST"E oEXIT'
fkc flu.4w
@ fwl
< .-q.4;
mf1;
@:fll
0,1a-("E @:fwl
@fwx.3
fm(m.m Type Mailing List).3w
ful !<!>'
0,1a-;"E l !<!>'
0,1a-)"E q.4j !<!>'
@fwx.3 @fwl
fm(m.m Type Mailing List).3w
>
!EXIT!

 q.5-1u.5
q.5uTML Level
 q.5"E
qTML So far fsBKill
mkTML So far
mkTML NAMES
mkTML Level
ff&2"e fsListen"e ftDone.
     '
"# ftFlushed.
      '''
"#
q.7u..o
q.6j'
w 1 v
[0[1[2[3[4[5[6[7[8
f[DFile
fsQPPtru8
fsBCons[..o
i     # Buffer    (Mode)         Filename

   2u7
0u4 fq.b/5u5
< q4-q5;
q:.b(q4+4)[..o
0u1
fsModified"n q11u1'
q:.b(q4+10)"N
fsXModified"N q12u1''
fsZu3
]..o
.u0 4,32i
q1&1"n .-2f*'
q1&2"n .-1f-'
2,q:.b(q4+7)\
i  g:.b(q4+1)
17-(.-q0):f"gw 1',32i
q:.b(q4+3)u1
qBuffer Index-q4"e
qModeu1 q0u6
.( q0+3j 2a-32"e c' f. )j '
i(1)
32-(.-q0):f"gw 1',32i
q:.b(q4+2)u1
      q1"n g1
et1 q:.b(q4+9)u2
fsDVersion:"g
           fsDVersion+1"n
	     i ( g2 i)'''
"# q3\ i  Characters'
q:.b(q4+12)u2
      q2"g i  File Read-Only'
      q2"l i  Buffer Read-only'
      i
     %7w
q:.b(q4)+q4u4
>
    q6"n q6j'
fsLinesu6 q6"e fsHeight-(fsEchoLines)-1u6'
q7+1-q6"l q7+1f[Lines'
0f[Window
0fs^RInitf[^RNormal
33.fs^Rinit[ w
:i*Buffer Menu[..j
0[..F
@:i*| 0f[Lines m(m.mDescribe)Buffer Menu h|f[HelpMac
@:i*| 0l @f DS*-.l \[1 q1"e 0l fg 1'
q1m(m.m& Find Buffer)u1
q:.b(q1+4)[..o 0fsModifiedw 0fsXModifiedw ]..o
	  0l .+2f   .+2,.+4 |[~
@:i*| 0l 0,1a-32"n fg 1'
fD 1 |[D qD[.D
@:i*| 0l 0,1a-32"n fg 1'
fS 1 |[S
@:i*| 0l 0,1a-D"n 0,1a-S"n fg 1''
f  1 |[U
!BACK! 
0l 0,1a-D"e fg oBACK'
@f S*-.l \u1
q1"e fg oBACK'
q..ou2 q8fsQPUnwind
q2[..o jl
< :s
 ;
0a-D"e @f *-.l \u3 q3"n
q3-q:.b(qBuffer Index+7)"e
q1"n ]..o q1m(m.mSelect Buffer)w q2[..o''
q3m(m.mKill Buffer)' !<!>'
	0a-S"e @f *-.l \u3 q3"n
]..o q3m(m.mSelect Buffer)
		m(m.m^R Save File)w q2[..o' !<!>'
	>
    ]..o
q1"n q1-q:.b(qBuffer Index+7)"n
q1m(m.mSelect Buffer)''
q2fsBKill @m(m.m^R Buffer Graph)w 5[.0[.1[.2[.3[.4
 :f
.u.3 fnq.3j
fsWindow+bj
fsLines f"E fsHeight-(fsEchoLines+1)' u.0
1:< q.0-1,0 :fm :l >
.u.4
:i*CfsEchoDisplay
fsZ"E
@ft|mere corroborative padding intended to give artistic verisimilitude
 to an otherwise bald and unconvincing buffer|
    1 @v 0f[HelpMacro
:fi-4110."E fiw :i*CfsEchoDisplay
		     @ft(Semi-quote from "The Mikado", by Wm. Gilbert)

		     0fsEchoActivew
		     :ft !''!'
    w 1 '

 m.m& Buffer Dashes
:i.0-
0u.1
-1u.2
@ft|
fsVB mD @ftB
fsWindow+b mD @ft[
q.4 mD @ft]
fsZ-(fsVZ) mD @ftZ
fsZ mD @ft|

0u.1
0u.0
9< fsWidth-3*%.0/10-q.1f(+q.1+1u.1)< @ft  > q.0@:= >
0fsEchoActivew
 1z[.2[.1 ff"G fs^Rarg'"# 0'+(fs^Rexpt"E fs^Rhpos')+8:i.1
 :i*TfsMPDisplay
fsTop< :i*DfsMPDisplay >
 fsLinesf"E wfsHeight-(fsEchoLines)-1'(
    )< :i*H.1|HDfsMPDisplay >
  .1-8:\u.2 :i*H.1.2fsMPDisplay
 @ft  1`ff"G -1"L
m(m.m Kill Variable )MM  = w ''
[1[2[3
 1,fMM-abbrev: (
8,fFull M-X name: u2
)u1
1,m.m~DOC~ 2f"ew
:i*C Abbrev for 2.'u3
:i*!1 = 2:! !3!
 f:m(m.m 2)  m.vMM 1 = 2w
OqMail Sender Libraryf"n[Mail Reader Library'w
 1,(F):m(m.mRead Mail)[1[2[3[4[5[6
 qComment Startu1
qComment Endu2
fq2"e 0u2'
qComment Beginu3
fq3:"g q1u3'
fq1-1:g1u5
qFill Extra Space Listu6
0l :fb1"e fg 1'
<  q2"e :l'"# :fb2'
.u4
l @f	 l
fq1f~1:@;
q4,.k
q2"n -fq2d'
fq3f~3"e fq3d'"# fq1d'
@f5k
-@f	 l @f	 k
0af6:"l 32i' 32i
>
q4j 0l
.,(
m.m^R Auto-Fill Spaceu1
:l 0f/2< .-(0m1f
).@; >
:l). 9:? fsErrorf"n@:fg
0"n
fsError-(@feURK)"e
ft executing Make Space...
mMM Make Space'
'
'
 "#w 0fo..q Debug"e
fsError fsErrThrow''
:fi- "e oSP'
fsError-(@feQRP)"e
:ftUnwinding partially to make room for error handler
-9-9-6fsQPUnwindw'
8f[I.Base
f[SString
@:i*| m(m.mDescribe)^^ TMACS Error Handler |f[HelpMacro
qTMACS Error Dispatch"n
< @:fi@:fc-B"e fiw @v !<!>'
@:fi@:fc-D"e fiw 1:<mDirectory Lister>w !<!>'
@:fi@:fc-W"e fiw
0[1 1:< -1fsBackStringm(m.m& Macro Name)u1 >w
q1fp"l :i1unknown function'
@ft(Error in 1) 0fsEchoActivew !<!>'
1; >'
@:fi-32"e !SP! fiw 0fsErrFlgw 0u..h fsErrThrow'
@:fi-?"e fiw
fsVerbose"e
1f[Verbose fsErrorfg f]Verbose'
f[Error
2m(m.mBacktrace)+0"n f)'
f]Error'
"# fsEchoErr"e
@:fi- "e fiw 0fsErrFlg'''
fsErrThrow`[1
 "g
.,( :< 1af"a#40.:i1
f1'w
c >w ).'
.,( -:< r 1af"a#40.:i1
f1'w
>w ).H-1[1 128*5,40.:i..d
128<%1*5:f..dA>
i -fk<0a*5:f..d  -d>
[0 [.1
 .:w
ff"e
 m(m.m& Read Q-reg Name)u0'
"# @fiu0
.,( g(q0 fs^RIndirect fs^Rcmacro m(m.m& Macro Name))
	).'
q0 fp"l f[:EJPage m(m.mLoad Library)BAREw'
q0m(m.m& Macro Name)f"nu0
.,(g0).'
q0 fp+1"G
f[BBind
g0
j @ f
   r
0,1a-!"N
:i*Not a valid macrofsErr'
.+1,( :s:!"e :i*Not a valid macrofsErr'
2r).x0
f]BBind
.,(g0). '
f[BBind
g0 j
0,1a-"E
z-2"N :i*Bad ^^-type q-reg namefsErr'
2a#100.u.1'
"#
:s"E
f]BBind .,(g0). '
bj 0u.1
3< 0,1a-."E
d q.1+200.u.1'
>
0,1a-"N
:i*Bad q-reg namefsErr'
z-2"N :i*Bad q-reg namefsErr'
2a+q.1u.1'
f]BBind
q.1 m(m.m& Get 9-Bit Character Name) h&200."NiControl-'
&400."NiMeta-'
[0&177.U0
Q0-127"EiRubout'
Q0-27"EiAltmode'
-2"N
Q0-8"EiBackspace'
Q0-9"EiTab'
Q0-10"EiLinefeed'
Q0-13"EiReturn'
Q0-32"EiSpace''
-2"EQ0-32"Li^Q0+100.U0'''
i0?f[DFile [1[2
qBuffer Filenamesu1
 q1"e :i*No file in bufferfsErr'
 q1fsDFilew
 f[BBind
1:< er*LOCKED* >"e
    @y :x2 f]BBind
    :i*1 is locked by 2. fsErr'
 ec fsXUnamef6 ei hp ef f]BBind
 :i*CfsEchoDis @ftOk, you have 1 locked. 
 0fsEchoActivew
q1fsDFilew
e[ er fsIFCdate( e]
)-q:.b(qBuffer Index+8)"e '
fsModified"n !"!
    ftWhile you've been editing this file, somebody has written a
new copy out!  You will lose some work if you are not careful.
I suggest that you file this out under a different name and
then SRCCOM the two files.
 '
 !"!
 ftSince you last read or wrote this file, somebody else
wrote a new version on disk.  Luckily, you haven't edited
the buffer since then.  Do you want the new version
 m(m.m& Yes or No)"l m(m.mRevert File)'
 0u..h 3f[DFile [1[2
qBuffer Filenamesu1
 q1"e :i*No file in bufferfsErr'
 q1fsDFilew
 1:< er*LOCKED* >"n
:i*1 is not locked. fsErr'
f[BBind
@y :x2 f]BBind
f~(fsXUname:f6)2"n
:i*2 has 1 locked -- not you. fsErr'
ed
:i*CfsEchoDis @ftOk, 1 is unlocked. 
 0fsEchoActivew G-1[p
-1[m
:+1"G :-(fsZ)-1"L
q.3-q.2"G q.3--1"L q.3up''
:-q.2"G :--1"L :um''''
qp,qmfumup
qp+1"G fsWidth-8*qp/fsZ-q.1f(<@ft.0>
)+q.1u.1
.0-="E :i.0-'"# :i.0='
'
qm+1"G fsWidth-8*qm/fsZ-q.1f(<@ft.0>
)+q.1u.1
.0-="E :i.0-'"# :i.0='
'
fsWidth-8*/fsZ-q.1f(<@ft.0>
)+q.1u.1
u.2
::i* [.1
f[BBind
q..o m(m.m List Variables)
bj m(m.m Keep Lines).1
1f<!DONE!
  f<!KILL!
    :ftKilling Following Variables:
   ht
    ft
Ok? (Y, N, ^R) 
    fi :fc [.2
1< q.2 fYN"L ftAnswer must be Y, N, or ^R.
		      1;'
q.2-Y"E f;KILL'
q.2-N"E f;DONE'
q.2-"E
0u..h  1;'
>
>
bj
m.m Kill Variable
< 1:< 0,25fm
-:fwl
< 0x.2
1:<fo..q.2w>-(@feAVN)@:;
fwl >
mK.2
>
l .-z; >
>
0u..h D[1[2[3[4[5
 m.m& Charprint
 0u1 32< q1fs^RCMacro-(0fs^RInit)"e
	2,q1mP ft	is not defined
'	%1 >
 A+400.u1
 26< q1-(0fs^RInit)"e
	q1mP ft	is not defined
'   %1 >
 A+600.u1
 26< q1-(0fs^RInit)"e
	q1mP ft	is not defined
'
     q1-(Afs^RInit)"e
	q1mP ft	self-inserts
'   %1 >
 ff"e '
 qPrefix Char Listu4 0u5
 < q5-fq4;
   q5:g4*200.+(q5+1:g4)u3
   q5+2,q5+6:g4u2 q2u2
   0u1 32< q:2(q1)"e
	2,q3mP ft  2,q1mP ft	is not defined
'	%1 >
   Au1 26< q:2(q1)"e
	2,q3mP ft  2,q1mP ft	is not defined
'	%1 >
   q5+6u5
   >
 CfsQPPtr[9
[0[1
q..0&127:i0
< 1,m.i
:fif0123456789-,:;
fiu1 :i001 >
@fiu..0
1fs^RArgpw  -1u1
fq0< %1:g0"d 3fs^RArgpw 1;' >
0(q9fsQPUnwind)@:m(q..0fs^RIndirectfs^RCMacro)q.[0
0l .[1
1[Auto Fill Mode
m.m^R Auto-Fill Space
:l <.-(0msf).@;>
q0:j"e :l'
fsRGETTY"e 0t'
1i[1
 j 0s_
<:s;0a#107.u1.-1f1>
ff&1"e j '
j 0s
<:s;-d>
j 0s~
<:s;.-1f}>
j _[1[2
q..q[..o
:i1
:fo..q1*5,(
fq1-1:g1+1u2
fq1-1:f12
:fo..q1*5)k
):i*[.1
:fo..q.1,0f[.2
[.3[.4

 < fq..q/5-1-q.2"L 1;'
q:..q(q.2)u.3
f~(0,fq.1:g.3).1"G 1;'
f~(0,fq.1:g.3).1"E
g.3
i
    '
q.2+q:..q(0)u.2 >
-fwf(@fc) -fwf(fc) ..( -@m(m.m^R Uppercase Initial)f
)j 1[1[2[3[T
:i3
128*5fsBConsuT
@fn|qTfsBKill|
-1u1
:i2-D94IQ..0#64I
32< q2u:T(%1) >
95< 201004020100.u:T(%1) >
q2u:T(%1)
@:i:T(9)|-D8-(FSSHPOS&7),32I|
@:i:T(13)|0,1A-10"EC'-DI^M|
@:i:T(27)|-D36I|
-1u1
fq3< 201004020100.u:T(%1:g3) >
ff"e h'"# f':fT
 -fsBackStr-(m.m& Toplevel ^R)"e
      :i*Already at top levelfsErr'
    0fo..qLess Asking"e
      qAbort Resumption Message[0
      q0"e @ftAbort this recursive edit
          1m(m.m& Yes or No)"e 0''
      q0"n @ft
0''
    1f[NoQuit
    -1fsQuit
    fs^RExit[mMM & Check Top Levelfiles
    QBuffer Filenames[0
    .[1
    QBuffer Index[2 [3

    FF&1"E
Q:.B(Q2+10)U3 FQ3"G
QAuto Save Count"N
	  Q3U0'''
    q0"e :i*No file to revert from fsErr'

    "E
0fo..qLess Asking"e
        @ftRestore file from disk
        1m(m.m& Yes or No)"e 0'''

    B[B 0,fsZfsBound
    ER0
    qBuffer Index[2
    fsIFCDateu:.B(Q2+8)
    fsIFVersu:.B(Q2+9)
    @Y  0fsModifw 0fsXModif
    fsWindow+QB:J"L 0L .fsWindow'
    Q1:J
    fs^RMDlyfs^RMCnt
    m(m.m& Process File Options)
0fo..qVisit File HookU1
Q1"N M1' 	TMACS:1,m.m& SetUp Compressed TMACS Librariesf"n[1 m1'w
 
f:m.c
WORDAB4
6*5fsQVectoru.e
qOnly Global Abbrevs"e
m.m& WRDAB Mode or Global Expandu:.e(0)'
"#
m.m& Global Expandu:.e(0)'
m.m& Expandu:.e(1)
0u:.e(2)
0u:.e(3)
0u:.e(4)
@:i1|(
m(m.m& WRDAB Process Options Hook)
0fo..qWord Abbrev Mode"n
i Abbrev'
)|
0fo..qSet Mode Line Hooku2
q2"e q1'"# :i*21'm.vSet Mode Line Hookw
0fo..qExit Hookf"ew :i*'u1
@:i*|1
qWord Abbrevs Modified"n
qSave Word Abbrevsf"gw
m(m.mWrite Word Abbrev File)'
"#"l  m(m.mWrite Incremental Word Abbrev File)'''
|m.vExit Hookw
:fo..qWord Abbrev Modeu1
@:i:..q(q1+2)|!* 1 => turn on Word Abbrev Mode, 0 => turn it off!
1fsModeChangew  |
:fo..qOnly Global Abbrevsu1
@:i:..q(q1+2)|!* 1=> use only global word abbrevs, 0 => both kinds!
qWORDAB Setup Hook[1
"n m.m& Global Expandu:.e(0)
q1"e m.m^R Add Global Word Abbrevu:.x()
m.m^R Inverse Add Global Word Abbrevu:.x()''
"# m.m& WRDAB Mode or Global Expandu:.e(0)
q1"e m.m^R Add Mode Word Abbrevu:.x()
m.m^R Inverse Add Mode Word Abbrevu:.x()''
 |
:fo..qAdditional Abbrev Expandersu1
q:..q(q1+1)f"n,m(m.mMake These Characters Expand)'w
@:i:..q(q1+2)|!Non-standard characters that should cause expansion.!
	       ,:m(m.mMake These Characters Expand)
|
0fo..qWORDAB Setup Hooku1
q1"n m1'
"#
m.m^R Unexpand Last Wordu:.x(U)
m.m^R Abbrev Expand Onlyu... w
m.m^R Word Abbrev Prefix Mark!"!u..'
m.m^R Add Global Word Abbrevu:.x(+)
m.m^R Inverse Add Global Word Abbrevu:.x(-)
qOnly Global Abbrevs"n
m.m^R Add Global Word Abbrevu:.x()
m.m^R Inverse Add Global Word Abbrevu:.x()'
"#
m.m^R Add Mode Word Abbrevu:.x()
m.m^R Inverse Add Mode Word Abbrevu:.x()''
1fsModeChangew 3[0[1[2[3[4[5 0[6
:,.f-zu0j
[.1[.2
0[Auto Fill Mode
0u..h
qModeu2
qWORDAB Ins Charsu1
qWORDAB Old Charsu4 :i114
:i*Expanding abbrevs[..j fr
f<!DONE!
@:f1l .-(q0+z);
1:<-fwu4u3>"e
q3,q4x.1
:fo..qX .1 2 Abbrevf"gu.2 oEXP'w
:fo..qX .1 * Abbrevf"lw :c !<!>'u.2
!EXP!
      1u5
< q6"e 2,m.i
fi:fcu4'
"# 32u4'
q4-!"e 1u6 32u4'
q4-32"e q5"n m:.e(1)' 1;'
q4-,"e q5"n m:.e(1) 0u5'"# fg' !<!>'
q4-."e q5"n m:.e(1)' f;DONE'
q4--"e
q5"n -:@f-*0,0-1uWord Abbrev Prefix Mark
m:.e(1)
0u5'
"# fg' !<!>'
q4-"e  0u5 !<!>'
q4-F"e fsVZ-q0f[VZ
m(m.m^R Fill Paragraph)w
f]VZ
@v 0u5 !<!>'
q4-"e f;DONE'
q4-14."e f+ !<!>'
q4-"e 1;'
q4-?"e 4110.fsRereadw !<!>'
fg q4m(m.m& Charprint) ft is meaningless here.

4110.fsRereadw
>
'
@f1l >
V!^R Abbrev Expand !
.(
1f<!ExpandQuit!
0,0a"c m:.e(0)'
>
)-."e ff"g fg'' 1
!^R Abbrev Expand !
 1f<!ExpandQuit!
ff"E
0,0a"c m:.e(0)''
[.1 8[..e
    q..0fs^RIndirect:\u.1 ]..e
f @mWRDAB Old .1
> 1m!^R Abbrev Expand !
 1f<!ExpandQuit!
ff"e 0,0a"c m:.e(0)''
f@m(q..0@fs^RIndirect@fs^RInit)
> 1!!^R Abbrev Expand !
 1f<!ExpandQuit!
0,0a[.1
.,.f
f@mWRDAB Old 11f
0,0a"B q.1"C
ff"E
;-@f	 k
0,0a"c m:.e(0)'
f @mWRDAB Old 11f'''
> 1_!^R Abbrev Expand !
 ff"E
0,0a"c m:.e(0)''
. m.vWord Abbrev Prefix Markw
 .,(i-). `-fwx*[.1 qMode[.2
:fo..qX .1 .2 Abbrevf"lw :fo..qX .1 * Abbrevf"lw''u.2
:m:.e(1)7-fwx*[.1
:fo..qX .1 * Abbrevf"lw'[.2
:m:.e(1)%[..0
q:..q(q.2+2)[.3
q.3fp-101"N :i:..q(q.2+2)1'
"# .(g.3)j .(1a-#"n \+1:\u:..q(q.2+2)')j fq.3d'
0ff(x:.e(2)):[.6w
-fq.1d
0,0a--"E
qWord Abbrev Prefix Mark+1-."E
:i.1-.1
-d''
.[.4
g:..q(q.2+1)
.[.5
-1[.7
fq.1[.8
<%.7-q.8;
q.7 :g.1"a0;'>
q.7-q.8"l q.7:g.1"u
q.4j :fwl
1 @fc
q.8-1 :g.1"u
0fo..qWordab All Caps"e
0u.3
:< 2:fwl .-q.5; %.3w
1 @fc >w
q.3"e q.4,q.5 @fc''
"#
q.4,q.5 @fc''
''
q.5j
q.4,q.5 f
ff-1"G oUPDATE '
qAuto Fill Mode"e oUPDATE'
m.m^R Auto-Fill Space
0f/2< .-(0mSf
).@; >
!UPDATE!

 q.6,.x:.e(3)
.u:.e(4)
0:g:..q(q.2+2)-#"e
q:..q(q.2)u.4
fq.1+3,fq.4-7:g.4u.4
mX .1 .4-WABMAC Abbrev'
M[0[1[2[3[4[5
.-(q:.e(4)-(fq:.e(3)-fq:.e(2)f"lw 0'))"l
.u4 fnq4j'
"# q:.e(4)-.f"g+.'"#w .'-zu4 fnq4+zj'
q:.e(4):j"e oNONE'
q:.e(3)u0
fq0u1 q1:"g oNONE'
.-q1f"l oNONE'u2
q:.e(2)u3 q3fp"l oNONE'
q2,.f~0"n
!NONE! fg @ft
No last expansion 0fsEchoActivew 1 '
q2,.k
.,(g3).f
q0u:.e(2)
q3u:.e(3)
.u:.e(4)
0{[0
 ff&2"n
uOnly Global Abbrevs'
ff&1"n "'gu0'
"# qWord Abbrev Mode"'eu0'
q0,0fuWord Abbrev Mode
0x[0[1[2[P
 m.m& CharprintuP
1,(:i*Type word abbrev key to describe: )m.i
@:fiu0
q0fs^RCMacrou1
q1-(m.m^R Abbrev Expand And Self-Insert)"e
    Afs^RInitu2'
"# q1-(m.m^R Abbrev Expand for Tab)"e
      qWRDAB Old 11u2'
"# q1-(m.m^R Abbrev Expand And Call Old Char)"e
      8[..e q0:\u1 ]..e
qWRDAB Old 1u2'
"# q1-(m.m^R Abbrev Expand Only)"e oM-?'
"# q0mp ft does not run an expander.
   oM-?''''
ftAfter possibly expanding,

q2,q0f[^RCMacro
!M-?! :m(m.m^R Describe){[.1[.2[.4[E
q..o[B
g(q..o(f[BBindw))
bj 0s <:s;ric>
zj i

bj
 < @f
l  .-z;
fwfx.1
0,1a-:"n :iENo : ending abbrev .1 oERR'
   d
@f 	k
0,1a-("E d :flfx.2 d'
"# :i.2*'
@f 	k
@f#0123456789 fx.4
fq.4"E :i.40'
@f 	k
0,1a-34"N :iENo quote to start expansion for .1 oERR'
   d i:i*
0s" !'! <:s"e :iENo quote to end expansion for .1 oERR'
	     0,1a-":@; c> !'!
15.,1a-15."n
      :iEPossible unquoted " in expansion for .1 -- final " not at end of line
      oERR !''!'
   -d
iM.VX .1 .2 Abbrevw
i M.CX .1 .2 Abbrev.4
>
j 0s"" <:s; -d> !''!
ff&2"n m(m.mKill All Word Abbrevs)'
m(hx*)
1uWord Abbrevs Modified

 j g( 0fo..qLately Changed Abbrevsf"ew :i*' ) i

hx*m.vLately Changed Abbrevsw

!ERR!

 0l .fsVBw 0u.2 zj <-l b-.; %.2w>
qb[..o
zj <q.2-1f(:;)u.2 -l>
qe fsERR r:i*( :i*( :i*[.3)[.2)[.1
fq.3"E qMODEu.3'
q.1,q.2 m(m.m& Check And Make Word Abbrev).3
w 1 ~[0[1
 ff&2"n u0'
"# :i0'
qWORDAB Ins Charsu1
:iWORDAB Ins Chars10
:m(m.m& WRDAB Process Options Hook)n"L f @:m(m.m^R Kill Mode Word Abbrev) '
qMode[.1
f @m(m.m& Add Word Abbrev).1.1 Abbrev
w 1 e"L f @:m(m.m^R Kill Global Word Abbrev) '
f @m(m.m& Add Word Abbrev)*Global Abbrev
w 1 QqMode[.4
 .-z[.0
-:fwl
-fwx*[.1
1,m(m.m& Read Line)Expansion for .4 abbrev ".1": [.2 !''!
q.2"e 1'
fq.2"e 1'
m(m.mMake Word Abbrev).1.2
@m(m.m^R Abbrev Expand Only)f
q.0+zj
1H.-z[.0
-:fwl
-fwx*[.1
1,m(m.m& Read Line)Expansion for global abbrev ".1": [.2 !''!
q.2"e 1'
fq.2"e 1'
m(m.mMake Word Abbrev).1.2*
@m(m.m^R Abbrev Expand Only)f
q.0+zj
1}:i*Fundamental fo..qMODE[.2
1, m(m.m& Read Line)Kill .2 Abbrev: [.1
q.1"E '
0fo..qX .1 .2 Abbrev"E
0fo..qX .1 * Abbrev"E
FG @ft".1" is neither .2 mode nor global abbrev. !''!
	0fsEchoActivew 1 '
"# FG @ft".1" is not a .2 mode abbrev, but is a global abbrev.
Kill it? !''!
	  1m(m.m& Yes Or No)"E
@ft Not killed.  0fsEchoActivew 1 '
:i.2*''
m(m.mKill Variable)X .1 .2 Abbrev
m(m.mKill Variable)X .1 .2-WABMAC Abbrev
1uWord Abbrevs Modified

 0fo..qLately Changed Abbrevsf"ew :i*'u.4
@:i*|.4
mkX .1 .2-WABMAC Abbrev
mkX .1 .2 Abbrev| m.vLately Changed Abbrevsw
w 1 1, m(m.m& Read Line)Kill Global Abbrev: [.1
q.1"E '
0fo..qX .1 * Abbrev"E
FG @ft".1" is not a global abbrev.
0fsEchoActivew 1  !''! '
m(m.mKill Variable)X .1 * Abbrev
m(m.mKill Variable)X .1 *-WABMAC Abbrev
1uWord Abbrevs Modified

 0fo..qLately Changed Abbrevsf"ew :i*'u.4
@:i*|.4
mkX .1 *-WABMAC Abbrev
mkX .1 * Abbrev| m.vLately Changed Abbrevsw
w 1 (:i* [.2
[.3[.4[.5.[.6 fnq.6j
1:<fs^RMark+1f"G-1 u.3 1;'
"E .(:f(j)u.3)j 1;'
"N -fwl .u.3 fwl 1;'
>"N FG F*w 1 '
Q.3,. fx.3
m.m& Shorten String
m.m& Read Line
q.3mSu.4
1,mR for ".4": [.1 !''!
q.1"E 1 '
q.1,q.3 m(m.m& Check And Make Word Abbrev).2
1 
:i*[2 [1 [3
:iLast Word Abbrev DefinedX 1 2 Abbrev
 q1[4 [5
fq1< 0,1:g4u5
5"b fg @ft
Break chars not allowed in abbrev 0fsEchoActivew 1 '
       1,fq4:g4u4>
m.m& Shorten String
0fo..qX 1 2 Abbrevu4
q4"N f=34"N FG
q4mSu4
@ftRedefine "1" from "4"?  !''''!
1m(m.m& Yes or No)"E @ftNot redefined.
0fsEchoActivew 1 ''
"# @ftAlready so defined.
0fsEchoActivew 1 ''
q3m.vX 1 2 Abbrevw
m.cX 1 2 Abbrev0
1uWord Abbrevs Modified

 f[BBind
0fo..qLately Changed Abbrevsf"ew :i*'u4
g4
@i|
mvX 1 2 Abbrev|
.(g3)j
0s <:s; r i c>
zj @i|0|
hx*m.vLately Changed Abbrevsw
+fq(:i*)"g
:i*C fsEchoDisplayw
@ftWarning: M-X Edit Word Abbrevs ignores its string argument --
it does not filter.  All abbrevs are being edited.
0fsEchoActivew'
f[BBind
m(m.mInsert Word Abbrevs) bj
:i*Edit Word Abbrevs[..J
f<!DoneEditWordAbbrevs!

1@:<
1,m(m.mDefine Word Abbrevs)
f;DoneEditWordAbbrevs >w
>
fsEchoDisplayw CfsEchoDisplayw
@ftWord abbrevs redefined.
0fsEchoActivew
1	f[BBind
:ftabbrev:	(mode)	count	"expansion"


1,(f)m(m.mInsert Word Abbrevs)
fsListen"e ftDone.
'"# ftFlushed.
'
1j[1[2[3[4[5[6[7 [9 1,fInsert abbrevs matching: f"e'[0
fq0"g 0s0'"# 0u0'
f"n&7'"#w 7'u1
.f[VB fsZ-.f[VZ
"n m.m& Maybe Flush Output'
:fo..qX u9 q9"l -q9u9'
fq..q/5-q9/(q:..q(0))(
q9-1u9
)<
q:..q(%9)u2
q:..q(%9)u3
q:..q(%9)u4
.u5
q3fp"l oNEXT'
g2
-7f~ Abbrev"n oNEXT' -7d
q5j 2f~X "n oNEXT' 2d
@:f l d .u6
zj .u7 g3
q0"n
q1&1"n q5,q6:fb"l oINS''
q1&2"n q7,z:fb"l oINS''
q1&4"n q6,q7:fb"l oINS''
oNEXT'
!INS!
q6j
.,q7f=*"e
d i:		'
"# q7-zu7
i:	(
q7+zj i)	'
g4
i	"
<@:f"l .-z; i" c>
i"
	!''''!
"n
q5,.t'
.u5
!NEXT!
q5,zk
"n ma1;'
>
ht[.1[.2[.3
 q..q[..o zj
:f<!DONE! 15r
1<
0,2:g(.fsWord)u.3
f~.3X f"N "L f;DONE'
1;'
.fsWordu.3
.+5fsWordu.2
q.2fp:;
fq.3-7,fq.3 :g.3 u.3
f~.3 Abbrev"E 15d'
>
>
0uWord Abbrevs Modified
:i*m.vLately Changed Abbrevsw
f[DFile 1f[FnamSyntax
0fo..qLast Word Abbrev Filef"n fsDFilew'
"#w etDSK:WORDAB DEFNS fsHSnamefsDSnamew'
4,4fWord Abbrev Filef"ew'fsDFilew
fsDFilem.vLast Word Abbrev Filew
e?"n '
f[BBind er @y
10f~m.m& Make "n
:m(m.mDefine Word Abbrevs)'
m(hx*)
.[.0[.1[.2[.3[.4[.5 f[DFile
1f[FnamSyntax
0fo..qLast Word Abbrev Filef"n fsDFilew'
 "#w etDSK:WORDAB DEFNS fsHSnamefsDSnamew'
 4,1fWord Abbrev Filef"ew'u.0
et.0 fsDFileu.0
q.0m.vLast Word Abbrev Filew
f[BBind
qReadable Word Abbrev Files"n
m(m.mInsert Word Abbrevs)
oWRITE'
:fo..qX u.2
q.2"L -q.2u.2'
ff&1"E
@i|m.m& Make Usage Abbrev Variable
|'"#
@i|m.m& Make Non-Usage Abbrev Variable
|'
 iq..q[..o

 0s
fq..q/5-q.2/3(
q.2-1u.2
)< q:..Q(%.2)u.3
q:..Q(%.2)u.4
q:..Q(%.2)u.5
q.4fp"L oNEXT'
f~(0,2:g.3)X "N oNEXT'
f~(fq.3-7,fq.3:g.3) Abbrev"N oNEXT'
iMV.3
.(g.4)j <:s; r i c> zj i
ff&1"E g.5 i'
i

!NEXT! >
!WRITE!

 eihpef.0
er fsIFileu.0 ec @ft
Written: .0

0uWord Abbrevs Modified
0fsEchoActivew 1 [1
 e[e\ fne^e] f[DFile 1f[FNamSyntax
etDSK: fsHSNamefsDSNamew etINCABS >
4,1fIncremental Filef"e w'u1
f[BBind
g(0fo..qLately Changed Abbrevsf"ew :i*')
z"e :i*No incremental abbrevs to write fsErr'
j @i|m.m& Make Non-Usage Abbrev Variable q..q[..o
m.mKill Variable
|
eihpef1
er fsIFileu1 ec @ft
Written: 1

 0uWord Abbrevs Modified
0fsEchoActivew 1?[1 f[DFile
e[ fne] f[DFile 1f[FNamSyntax
etDSK: fsHSNamefsDSNamew etINCABS >
4,4fIncremental word abbrev filef"e w'u1
et1
e?"e
f[BBindw er @y
j @:i1|m.m& Make Non-Usage Abbrev Variable q..q[..o
m.mKill Variable
|
fq1f=1"e fq1c'"# g1'
.,zx*m.vLately Changed Abbrevsw
m(hx*)'
:i*[.1
:i*[.2
:i*[.0
:FO..Q.1[.3
Q.3"L -Q.3*5J 15,0I 15R q.1,.FSWORDW 0,.+10FSWORDW
-Q.3U.3'
q.3+1*5j q.2,.fswordw
5c q.0,.fswordw :i*[.1
:i*[.2
:FO..Q.1[.3
Q.3"L -Q.3*5J 15,0I 15R q.1,.FSWORDW 0,.+10FSWORDW
-Q.3U.3'
q.3+1*5j q.2,.fswordw
K[1[2[3[4
 qModeu2
1,fAbbrev: u1
1,fMode (2): u3
fq3"n q3u2'
:fo..qLast Kbd Macro"e :i*No last keyboard macrofsErr'
 qLast Kbd Macrou4
m(m.m& Attach Word Abbrev Hook)124
 |[1[2[3[4[5
 :i*( :i*( :i3 )u2 )u1
f[BBind
fq1"e qLast Word Abbrev Definedf"ew :i*No last word abbrevfsErr'u1
       2,32f1u2
2,q2:g1(
q2+1,fq1-7:g1u2
)u1'
:fo..qX 1 2 Abbrevu4
q4"l
:i*CfsEchoDisplayw
q2u5 f=5*"e :i5global'
"#
:fo..qX 1 * Abbrev"g
@ft1 is not a 2 abbrev.  Did you mean global? 
1m(m.m& Yes or No)"n :i2* oOK'''
@ft1 is not a 5 abbrev.  Want to define it? 
1m(m.m& Yes or No)"e '
1,m(m.m& Read Line)Expansion for 5 abbrev 1: f"e'u5
q5m.cX 1 2 Abbrev0w
i
mvX 1 2 Abbrev
.(g5)j <:s;ric>
zj i0'
!OK!
q3m.vX 1 2-WABMAC Abbrevw
m.cX 1 2-WABMAC Abbrev0w
m.cX 1 2 Abbrev#0w
i
mvX 1 2-WABMAC Abbrev
.(g3)j <:s;ric>
zj i0
m.cX 1 2 Abbrev#0w
j g(0fo..qLately Changed Abbrevsf"ew :i*')
hx*m.vLately Changed Abbrevsw
1uWord Abbrevs Modified
#[.0[.1[.6[.7[.8 Afs^RInit[.2
m.m^R Abbrev Expand for Tabu.0
0fo..qWord Abbrev Mode"N
qI-q.0"n
qIm(m(m.m& Global or Local)I)WRDAB Old 11
q.0uI'
m.m& WRDAB On PO Checku.0
m.m& WRDAB Turn On Ins Charu.7
m.m& WRDAB Turn On Old Charu.8
'
"# qI-q.0"E
qWRDAB Old 11uI'
m.m& WRDAB Off PO Checku.0
m.m& WRDAB Turn Off Ins Charu.7
m.m& WRDAB Turn Off Old Charu.8
'
qWORDAB Ins Charsu.1
m.m^R Abbrev Expand And Self-Insertu.6
m.0
qWORDAB Old Charsu.1
m.m^R Abbrev Expand And Call Old Charu.6
q.8u.7
m.0
@-1[.4[.5
< %.4-fq.1;
q.4:g.1u.5
q.5-q.6"E q.5m.7' >
@-1[.4[.5
< %.4-fq.1;
q.4:g.1u.5
q.5-q.6"N q.5m.7' >
[.0
q.0[.4
q.4-q.2"e
m.m^R Abbrev Expand And Self-Insertu.0
'
q.4fp"g
f~.4!^R Abbrev Expand -19"e ''
qWORDAB Ins Chars[.1
f.1[.2
0,q.2:g.1[.3
q.2+1,fq.1:g.1u.1
:iWORDAB Ins Chars.3.1
qWORDAB Old Charsu.1
:i.2
:iWORDAB Old Chars.1.2
m.m^R Abbrev Expand And Call Old Charu.0
[.6 8[..e :\u.6 ]..e
q.4m(m(m.m& Global or Local).0)WRDAB Old .6
;[.0
q.0[.1
q.1fp"G
f~.1!^R Abbrev Expand -19"E
''
m.m^R Abbrev Expand And Call Old Charu.0
[.6 8[..e :\u.6 ]..e
q.1m(m(m.m& Global or Local).0)WRDAB Old .6
[.0
@fs^RInitu.0 E[.6 8[..e :\u.6 ]..e
0fo..qWRDAB Old .6[.1
[.2
q.1u.2 v[1[2[3[9
[ -1:fsQPHome(]*w)u3
qBuffer Indexu9 q9+8u2
q:.b(q9)-9/2u1
q1< q:.b(%2)-q3"e q.L ' %2w >
q.V b[.3[.4[.5
fq.3-40"G
0,16:g.3u.4
fq.3-16,fq.3:g.3u.5
:i.4.4.....5'
"# q.3u.4'
q.4 AUTO-SAVE-MODEX[1[k
m.mKill Variableuk
mkMM & Auto Save Setupw
mkMM & Auto Save Filew
mkMM ^R Save Filew
mkMM & Secretary Macrow
mkMM & Auto Save All Buffersw
mkMM & Real-time Interruptw
0fo..qExit Hookf"ew :i*'u1
@:i*|ff"e m(m.m& Auto Save All Buffers)'
1|m.vExit Hookw
qAuto-Save-Mode Setup Hookf"nu1 m1'
"#w
m.m& Secretary Macrof(u.f)u..f
m.m& Real-time InterruptfsClkMacrow
fsClkInterval"e 4*60*60fsClkIntervalw'
m.m^R Save Fileu:.x()'
q0[1
qBuffer Index[2
qBuffer Filenamesf"nf[DFile
fsDVersion"e
q:.b(q2+12)"e
1u1'''
q1u:.b(q2+10) r[1[2[3[4 0f[VB 0f[VZ
-qBuffer Index"e qBuffer filenamesu1'
"# q:.b(+2)u1'
q1"e @ftNo auto save filenames.  0fsEchoActivew '

 q1f[DFile
fsURead"n e[fne]'
1:< 1,er fsIFileu3 fsIFVersionu4 fsIFCDateu2 ec
q2-(0fo..qASav 3 File)"e
q4fsDVersionw
fsDFileu1
etASAVE OUTPUT'
>w
qBefore Auto Save Hookf"nu2 m2'w
fsUWrite"n e\fne^'
ei fsOFCDateu2
hp ef1
fsOFVersionf"gu:.b(+9) 1fsModeChange'w
zu:.b(+5+6)
fsOFileu1
q2u:.b(+8)
q2m.vASav 1 Filew
@ftAuto saved: 1

qAfter Auto Save Hookf"nu1 m1'w
0fsXModifiedw
qAuto Save Star"e 0fsModifiedw'
0fsEchoActivew -16:"l m(m.m& Auto Save All Buffers)w 1'
 :i*CfsEchoDis
ff"g
fsXModified"e @ft(No changes need to be written)
    0fsEchoActivew 1'
@ft(auto save)

qBuffer Indexm(m.m& Auto Save File)
1'
[1[2[3[4 f[DFile
0f[VB 0f[VZ
qBuffer Filenamesf"ew :i*No filenames to save underfsErr
    'u1
et1
q1u2
fsURead"n e[fne]'
1:< 1,er fsIFileu2 fsIFVersionu3 fsIFCDateu4 ec
q4-(0fo..qASav 2 File)"e
q3fsDVersionw
fsDFileu1
etASAVE OUTPUT'
q:.b(qBuffer Index+8)u3
q4"n q3"n q4-q3"n
ftThis file has been written on disk since you last read or wrote it.
Should I write it anyway
        m(m.m& Yes or No)(f 0u..h)"e 0''''
     >w

 fsXModified"e @ft(No changes need to be written)
'
 "# fsUWrite"n e\fne^'
ei fsOFCDateu3
hp ef1
fsOFVersionf"gu:.b(qBuffer Index+9) 1fsModeChange'w
zu:.b(qBuffer Index+5+6)
fsOFileu2
q3u:.b(qBuffer Index+8)
@ftUser saved: 2

    0fsXModifiedw'
fs^RMDlyfs^RMCntw
0fsModifiedw
m(m.mKill Variable)ASav 2 Filew
0fsEchoActivew 1 4qBuffer Index[1
q:.b(q1+4)[..o
fsXModified"e 1'
q:.b(q1+10)"e 1'
:i*CfsEchoDis @ft(auto save)
 0fsEchoActivew
fs^RMDlyfs^RMCntw
q1m(m.m& Auto Save File)
1L0[1 [2 -1[3 [..o
< 1f<!Test!
q:.b(q1+10)@;
q:.b(q1+4)u..o
fsXModified@;
%3"e :i*CfsEchoDis @ft(auto save)
    0fsEchoActivew'
q1m(m.m& Auto Save File)
>
q1+q:.b(q1)u1
q1-(fq.b/5); >
?0fsTyiCount"n 0'
m(m.m& Auto Save All Buffers)
 0@v 0$EAK's personal EMACS environmentNS Set flags, variables, and ^R characters
for EAKMACS environment.
This object file was compressed on 9:29pm  Sunday, 16 August 1981
by EAK on MC from the following source libraries:

   EAK; DSK: EAKMAC 336,	08/16/81 21:29:14
   EMACS1; DSK: IVORY 186,	03/17/81 21:13:13
   ECC; DSK: FIXLIB 204,	08/04/81 01:39:17
   EMACS1; DSK: TMACS 425,	05/03/81 18:30:25
   EMACS1; DSK: WORDAB 614,	03/01/81 08:35:31
   EAK; DSK: AUTO-S 119,	06/11/81 19:53:13S Do startup type thingsS Personal FS TTY MAC.#C Generate EAKMACS library file>C Dump the current environment to TS EAKMAC or EAKMACS.SAV6S Hook to make Comment Begin be semicolon space.4S Hook to set Fill Column to 65 for Text mode.1S Hook to set LISP special characters in ..D.-S Hook to set extra TECO mode characters.%S Hook to restore vertical ^N/^P.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.^R Goto LISP jobS 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.=^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.*Macros for maintaining EMACS libraries$C Set up commands for editing TECO code.
Makes Rubout the Tab-hacking Rubout.  Tab does ^R Indent Nested.
M-' and M-" move forward and back over conditionals.hS Compress a file of macros, in the buffer.
Removes comments, and makes the documentation and directory strings.
Documentation will be added to the buffer passed in Q8.
Function names will be added to the buffer passed in Q9.[S Called only if interpreting source
that hasnt been generated into a library.
Otherwise, IVORY will when compressing, simply look for this subroutine to
    be called, and create something for an & Setup to run.,S Make specs in NUMARG buffer into code.jS Convert macros in buffer to :EJ'able format.
Assumes compression has been done already, if desired.6C Make one :EJ file from just one source file.
Takes one string argument which is the source filename.  If no string
    argument is given, it defaults to the buffer filenames.[C Make one :EJ file from several source files.
Takes desired name for :EJ file as first string argument, followed by
    the names of the input files.  A null string argument
    (altmode-altmode) ends the argument list.
The input files are all compressed and purified together.  You are
    told as each is compressed etc.  However, if $Silent Running$ is
    non-0 nothing is printed.  (Good for ^Z ^Ping.)
Filename defaulting is sticky; input FN2's default to >; the output
    FN2 to :EJ. 
The defaults are restored after the macro is finished.
~FILENAME~ is taken from first file's ~FILENAME~.  It must have one.
Other ~FILENAME~s are turned into "& Compressed foo Library:"s.
All "hidden" & SetUps (i.e. not of same name as object ~FILENAME~)
    will be accumulated, and code to call them will be inserted at the
    beginning of the first file's &Setup.  If that file has no &Setup,
    one will be created.
Also, the &Setup documentation will have a record (as part of its
    documentation string) telling who generated the object, when, and
    from what source files.
All "hidden" & Kills (i.e. not of same name as object ~FILENAME~) will
    be accumulated and called from the main &Kill in a similar manner.
Note that all source libraries are always compressed, no COMPRS files
    are created, and the destination library is always created.
For a given FN1, if variable PURIFY Library FN1 is non-zero, then
    the file is assumed to be a PURIFY library.	S ...hC Test Load with Test Load Sets Keys bound to 0.
Thus Test Load will not offer to set any keys.  Useful if running Test
    Load over an entire library with many ^R commands.
Numeric arguments are passed along to Text Load.C Test Load with Test Load Sets Keys bound to 1.
Thus Test Load will offer to set keys.
Numeric arguments are passed along to Test Load.BC Load any modified macros into MM-variables and ^R-keys.
A library source is in the buffer.
Compares each macro (compressed) with M.M-found version;  if
    different, puts the new macro (uncompressed) in an MM-variable.
If Test Load Sets Keys is non-0 (the default) and if the macro is an
    ^R one, user is asked which key to put it on.  Rubout means do not
    put it on any key.  (any better?)
If a positive NUMARG is given, compressed macros are put into
    MM-variables when differences are found.  Negative NUMARG means
    make uncompressed, without checking difference.
If a pre-comma ARG is given, the library is searched for a & Setup...
    macro, which if found is macroed.-C  mode on all (TEST) function names, then kill.
This is for killing sets of impure test functions created by
    M-X Test Load.
String argument, if non-null, prunes the list.
The user is put into a recursive  mode on the list of all
    MM-variable names which contain "(TEST)" and the string argument
    if any.
The user may then trim the list further.
When the  is exited, those names that are left are killed.C Generate a PURIFY style COMPRS file from a source file.
STRARG1 is the COMPRS file.
STRARG2 is the source file.  Filename defaulting is sticky left to
    right.
(The second filename of the COMPRS file MUST be COMPRS.)
This command is useful for creating COMPRS files so people using the
    standard EMACS purify package can GEN them into their libraries.
One tricky thing:  it always leaves ^Ls on their own lines, even if
    not there to begin with, since PURIFY will change CRLF ^L to ^L,
    and CRLF CRLF ^L to CRLF ^L.^R Even if already bounded.
Thus calling this always results in the same thing, unlike the normal
    EMACS ^R Mark Page, which moves forward a page if already
    bounded.
Uses IVORY-style definition of what a page is, i.e.:
    <not-C-Q><C-L><CRLF>.X^R Move past the ' matching the following ".
This ignores "s or 's inside comments.]^R Move back past the " matching the preceding '.
This ignores "s or 's inside comments._C Look up information on Teco commands.
String arg is command, e.g. MM TecdocF^B or MM TecdocFS HPOS.
Represent a control character with a "^" not followed by a space.
Spaces elsewhere are ignored.
For speed (of another TecDoc) it keeps TECORD in an EMACS buffer,
    named *TECORD*.  If you are worried about space, kill that buffer.
    Giving TecDoc a numeric argument will inhibit use of the buffer.
The format of INFO;TECORD is understood.  Type "?" for help.}^R Quote with ^] all altmodes and ^]'s in the region.
This is to aid quoting inside a string argument to a Teco command.&C List names of all TECO FS flags.+? If this is defined, PURIFY is loaded.
This is to prevent some functions (e.g. Teco Mode) from loading it.
Even though we arent in fact PURIFY.....(We're better...)5Functions for examining/patching EMACS functions.S Make a few variables.^R Reads variable name with completion.
Surrounds variable name with Altmodes for convenience unless given a NUMARG.
Leaves MARK at beginning of name.TC Uses completion.  Leaves MARK before name.
Adds an Altmode at end unless given a NUMARG.
If name ends in parenthesized expression, e.g. (TEST), we strip it
    off if Strip (TEST) Suffix etc. is non-0.#S Read name of qreg, return as string.
Given a numeric argument, uses it as the first character of the q-reg name.
^K is short for ..K(0) (last killed text),
=  is short for the last q-reg name read,
^M is short for .N(0) (last mini-buffer contents),
 will read a variable name with completion,
; also but selects the variable's comment,
! will read a function name with completion,
 reads an FS-flag name with & Read FS-Flag Name or & Read Line,
( reads a line, a macro yielding a string (e.g. q:.x(3) for qvectors).
?  gets help.9^R Inserts ', then shows matching ".
Does show-match only in TECO mode, and if the variable Display Matching TECO
    Conditional is non-0.
If Display Matching TECO Conditional is negative, only show if on-screen.
Absolute value of Display Matching TECO Conditional is number of seconds to
    stay at ".^R Move over next iteration(s).
Numeric argument is number of iterations to go forward.  Negative
    means go backward, same as ^R Backward Teco Iteration.
Ignores any <s or >s in comments and will not move out of the current
    source function.^R Move over previous iteration(s).
Numeric argument is number of iterations to go backward.  Negative
    means go forward, same as ^R Forward Teco Iteration.
Ignores any <s or >s in comments and will not move out of the current
    source function.^R Function name taken from left of point.
Picks up teco function name to left of point, using ^R Goto Previous M.M.
But NUMARG tells it to just grab function name from point forward to altmode.
Calls Goto Teco Function to do the move, which may leave MARk behind.'C Go to definition of STRARG.
STRARG may be a partial name, a search string to use within each function name.
    Force full name search by using !Foo:!.
Argument means find another function matching the name.
Calls & Maybe Push Point to leave MARK before jumping to function definition.C Print names of all functions in pure space containing STRARG.
Matches inside function names or documentation strings are ignored.
Giving a NUMARG will do an Occur in the matching functions found.  (Give a
    0 if you only want the match lines listed.)cC List functions in source file containing STRARG.
Buffer should be an EMACS source file.
Null STRARG is like  -- all functions listed.
No NUMARG means do over whole file from top.
NUMARG means do over file from point.7S Traces macro unless $Trace <stringarg>$ is 0.
If typeout on screen, will await a character before calling Backtrace.
    But if $Backtrace Should Smash Screen$ is non-0...
If no NUMARG, backtrace will show caller.
If any NUMARG present, then show NUMARG levels above caller:
   0 is show caller, 1 is show caller's caller...
Saves .1-.0 in $.1$-$.0$, calls MM Bactrace$.  Restores them after.
Saves ..0, ..1, ..2 in $..0$ etc.>C View the frames on the macro-pdl.  Indents compressed code.
Displays one invoked macro, copied into a buffer,
with point at the PC.  Then reads a command character:

 Linefeed or D goes down the stack (to earlier invocations),
 ^ or U goes up to more recent invocations,
 ^R calls ^R on what you see,  ^L clears the screen,
 B calls ^R on the buffer that was being edited,
 A shows the macros's arguments,
 I indents the code (binding Indent Teco Object),
 V displays a q-register's contents,
  runs a minibuffer, X runs MM command, Q exits.
 . sets the PC of the frame being examined, e.g. so you can back up and
   retry something that erred before,
 C continues erring function.gS Tell type and value of NUMARG.
Caller may pass & Macro Name as a pre-comma value for efficiency.[C Trace when function STRARG1 called, returns.
MM Trace Function Call$Foo$ will print message when Foo is called and when it
    returns.
MM & Maybe Backtrace$Foo$ is called before the call.
STRARG2 is teco commands to call when tracing occurs.  Commands are
    passed an argument: 1 for call, 0 for return.
ARG initializes $Trace Foo$.C Cancel a Trace Function Call for stringarg.
No STRARG means cancel all traced function calls.
ARG, means dont complain if not being traced.C List MM Trace Function Call actions.
Tells whether each is set to call Backtrace
and lists any trace commands called upon entry or return.hC Return ptr to function str2 in str1.
1st Stringarg is library name.  Can be unloaded.
2nd Stringarg is function name.  If library unloaded, the function will be
    read in and put in $MM <function name> (<libname>)$.
    (Unless a variable of that name exists already;  then that variable's
    value is returned.  That is checked before looking if library loaded.
ARG,: copy into impure, MM-variable even if library was loaded.
ARG: means don't ask if conflict, just smash.KC Call Examine Function on a key.
If NUMARG then q-reg instead of key.KC Look at function STRARG in recursive .
If NUMARG then use that as a function object to examine, like Describe.
Pre-comma NUMARG is an optional name for impure strings.
Sets modeline to indicate path of recursions of Examining -- i.e. a function
    call path.
Keys are rebound for convenience in ExFun mode.  Type HELP.0C Go into Examine Function mode.  Bind keys.C^R Indent this teco code.
Does not affect other examined code.	S ...g^R Into , Teco Mode.  Exit => Test Load, ExFun Mode.
Only for use inside Examine Function.  Uses *Patch* buffer.
If function is compressed, yank in the unindented, real stuff.  (If you want
    to keep the unreal, indented version, supply a NUMARG.)
    A header is put on it at the top.
Into  mode to let user patch it.
Then does -1 MM Test Load.8^R  Exit top level of Examine Function.
This works no matter how many levels of Examine Function recursion down
    you are -- you exit back through the top one.  (I.e. a throw.)c^R Examine this or next function M.M'ed.
If point is between M.M and function name, then examine that function.
Otherwise, move forward to next M.M and examine that function.
(Given NUMARG, takes name from point to altmode.)
Leaves point after name, so successive calls get successive M.Ms when
    examining some function.
Feeps if no next M.M.M^R Move forward to next function call.
Negative NUMARG means go backwards.
Goes to the next NUMARGth M.M with function name not containing
    Control-]s.
Leaves point between M.M and function name.
Feeps if can't find another M.M.  If it can find one, but not NUMARG number
    of them, it does as many as it can, quietly.C^R Move backward to previous function call.
Goes to previous NUMARGth M.M with function name not containing
    Control-]s.
Leaves point between M.M and function name.
Feeps if cant move.&S Find next M.M with function name of no ^]s.
Returns bounds around that name.
Pre-comma NUMARG is flag saying whether to move past the current M.M.
    0,:  if already between M.M and function name, take that.
    1,:  if already between M.M and function name, move past first.
Post-comma NUMARG is number of M.Ms to go forward.
Negative means go backwards.
Point is not changed.
Errors if cant find any M.Ms.u^R Describe previous (or this) one M.M'ed.
If not at M.M, picks previous one, convenient when editing Teco code.^R Describe one in buffer.[^R On next M.M, or examined function.
If NUMARG, works on examined function in buffer.,^R Read a key, then do Print Call Paths.'C Read a key, do Insert Call Paths.`C For function STRARG.  Saved in Call Paths.
NUMARG is temporary binding for depth limit.	S For function STRARG.
Non-0 NUMARG means print each line as it is inserted.
Pre-comma NUMARG is temporary finding for depth limit.	S For function STRARG, indenting NUMARG.
Pre-comma NUMARG means print each line as it is inserted.
Checks Call Path <strarg> Flag for already done nodes, indicating by
    function name in parentheses, e.g. (Get Foo...).
Leaves Kill Call Path Flags as a macro to clean up.
    Assumes K will be bound to Kill Variable then.
Assumes following q-regs:
    A: & Maybe Flush Output
    I: & Indent
    P: & Insert Call Paths
Aborts via & Maybe Flush Output.
Each call deptch increases column by 4.
If NUMARG column is greater than Max Call Path Column (default 50), quit.
See options that control printing: Examine Function ....S Returns library pointer for NUMARG function.
NUMARG is function object.
Returns 0 if function object is not a pure string.C Indent approximately, by counting " ' < > ( ).
If buffer contains an uncompressed function, leaves it alone.
We restore point to the position it was in originally in the text.
If option Indent Teco Object is 0, this is a no-op.
1, argument means don't complain about unmatches.U^R Redo the last minibuffered command.
NUMARG means do NOT ask for confirmation.*Random collection of useful functions.jC Prints an entry in ITS mailing list file.
This works on any ITS machine.  (.MAIL.;NAMES > has the ITS mailing
    lists.)
For instance, M-X Type Mailing Listbug-random-program<cr> will show
    you who is on the bug-random-program mailing list on your machine.
If string argument is of form <name>@<site>, <site>:.MAIL.;NAMES is
    used.  Only final @ indicates site, so you can do something like:
    M-X Type Mailing List$BUG-@@AI$
A numeric argument limits depth of recursion on EQV-LIST members.
    (Default depth is 3.)
<name>@<site> entries in EQV-LIST are not followed.
Prints "Done." when done, since it sometimes is slow.  Giving a
    pre-comma numeric argument inhibits done-printing, for use as a
    subroutine.v^R Display information about all buffers.
A recursive edit level is entered on a list of all buffers.
On exit the buffer on the current line is selected.
Point is initially on line of current buffer and space will exit (like
    ^R Exit), so this is very much like List Buffers but
    combines listing with selecting in a way that does not involve
    much typing or redisplay.  * means modified, - means modified and not
    auto-saved, and . means current buffer.
D will mark buffer for deletion on exit,
S will mark buffer for saving on exit,
U will unmark buffer, and
~ will clear modified flags of buffer.7C Call ^R Buffer Graph to show schematic of buffer.`^R Show a scale schematic of buffer in echo area.
(You can also use M-X Graph Buffer<cr>.)
Draws something like the following in the echo area:
|----B-----==[==--]---Z------------------------------------------|
     1      2     3      4      5     6      7      8     9
The |--...--| indicates the whole buffer, numbers approx tenths.
=== indicates the region.
B indicates the virtual buffer beginning.
Z indicates the virtual buffer end.
[---] indicates the window.Q^R Draws from current hpos, not inserting.
Line drawn only in current window, and column printed at base of line.
This only works on ITS machines.
If any ARG given, is displacement from current hpos.  E.g. -1 means
    draw line through position one column left.
If C-U is specified, together with an ARG then ARG is an absolute
    column.  E.g. M-3 C-U as argument makes line in column 3.  But
    M-3 as argument makes line in column 3+current_column.C Define or delete M-X abbreviations.
M-X =Abbrev$IF$Insert File$ will define M-X IF = Insert File$
    to be M-X Insert File$, evaluated by name each time
    M-X IF$ is used.  Thus if a new Insert File is created or loaded,
    that one will be used.  This works nicely with command-completion.
C-U 0 M-X =Abbrev$IF$ and
C-U - M-X =Abbrev$IF$ will remove definition for M-X IF$.jC Mail a message, using your favorite mail-sending program.
*** This function is obsolete -- the new EMACS has the capability this
    one provided.  This remains here only until old EMACSes are gone.
If you abort the message, you can resume by giving this command a
    nonzero argument.
The variable Mail Sender Library, if non-0, should be set to the mail
    sending library name.  The mail sender used by default is RMAIL on
    ITS, and MM on Twenex.
Note that this TMACS version is a replacement for the EMACS one --
    this allows you to use different libraries for reading and sending
    mail.(^R Refill the comment and its continuations.
To handle comment starts (or parts of them) that are repeated, e.g.
";;; " in Lisp, or perhaps "/*** " in Pl1, it will treat a duplicated
last character of the comment start or begin as part of the comment
beginning when merging comment lines.4S Q..P: handles TECO errors.
If first character typed is "?" then Backtrace is called.
A space makes us exit, with no action.
If option variable TMACS Error Dispatch is non-0, some other
    characters may be typed, in any order, ending with a space (no
    further action) or "?" (enter Backtrace):
	B	Display the offending buffer.
	D	Directory Lister is run.
	W	Who caused this? -- type function's name.
Typing HELP character describes the error handler.
Quits are not handled at all unless the variable Debug is nonzero.
    That is so a quit will cause the buffer and modeline to be
    restored and redisplayed immediately.
A QRP error (q-register PDL overflow) will cause automatic partial
    unwinding of the q-register PDL if you type anything but Space.
    You can thus enter Backtrace etc.r^R Next <argument> letters, moving past.
Numeric argument negative means move left.
Fast, does not move gap.=S Create a new ..D with chars in arg as break characters.^R Inserts macro name for char typed.
MARK is set before inserted name.
Handles bit and char prefixes, e.g. Meta-, ^X, unless:
Given a numeric argument, gets the name of a prefixer (e.g. metizer).
Impure-strings that are uncompressed macros are handled if their names
    are present at the beginning of the macro.
Some characters run standard builtin functions whose names are found
    in the BARE library.  These work fine.  Others which are not found
    just insert their key names, e.g. Meta-O.9S Inserts pretty name for 9-bit ARG.
Example:  415. MM & Get 9-Bit$ inserts "Meta-CR".
An arg of "2," means say "^M" instead of "CR", etc, and ^B instead of
    an alpha on TV's.qC Lock current buffer's file.
"Lock" the file in the current buffer by creating FN1 *LOCKED*.
Will complain if FN1 *LOCKED* already exists, and will tell who has it
    locked (since FN1 *LOCKED* contains that person's xuname).
Fails the critical-race test.
This assumes that others will cooperate and use M-X Lock File$ and the
    matching M-X Unlock File$.6C "Unlock" file in buffer locked by M-X Lock File.*I Internal routine of ^R Buffer Graph.uC Kill some variables specified by search string.
Kill variables whose name contains the string argument.
String argument actually is a TECO search string, and so you can flush
    variables containing "foo" OR "bar" by using the string argument
    "foobar".
The list to be flushed is typed, asking Y, N, or ^R?
    N means abort, ^R allows editing of the list.`C Unused C-, M-, and C-M- characters.
If numeric argument then list unused prefix commands.7^R Put on digits, minus, and comma to get argumentsW^R Fill if too long, even out of Auto Fill mode.
Cursor may be anywhere within line.
Line will be broken (space inserted at margin) repeatedly until it
    fits within the margins.
Uses ^R Auto-Fill Space.{C Does nothing, returns nothing...
...but is good for something:
If you want to give some Teco commands from the bottom of the screen,
you can call ^R Extended Command (or any such "Meta-X") and give the
Teco commands as the "string argument".UC Turn SAIL file into readable form.
M-X UnSAILify interchanges underscore and backarrow; this is good for
    mail.
1 M-X UnSAILify goes further and fixes lossage caused by image FTPing
    a SAIL file.\S Kill variables if names STRARG-prefixed.
STRINGARG is prefix for variable name.  E.g. doing:

             m(m.m& Kill Prefixed Variable Names)Cache 

will kill all variables whose names start with "Cache ".AS Insert some variable names.
String argument is prefix for variable name.  One variable name to a
    line.
E.g. m(m.m& Insert Prefixed Variable Names)MM  will insert the names
    of all variables whose names start with "MM ".
Also see & Kill Prefixed Variable Names, and & List Prefixed Variable
    Names.&^R Uppercase word(s) before point.&^R Lowercase word(s) before point.'^R Capitalize word(s) before point.&C Turn control chars into uparrowed chars.
This is good for listing a file with control characters in it on a
    line printer which would not show control characters well.
String argument is a string of characters NOT to change.
TABs are turned into spaces.  CRLF pairs are left alone.6C Abnormal exit from recursive editing command.
The recursive edit is exited and the command that invoked it is
    aborted.
For a normal exit, you should use ^R Exit, NOT this command.
The command can put a string in Abort Resumption Message
to tell the user how to resume the command after aborting it.
If the option variable Less Asking is non-0, no message will be
    printed, and you will not be asked for confirmation.QC Undo changes to a file.
Reads back the file being edited from disk
(or the most recent save file, if that isn't the same thing).
A numeric argument means ignore the Auto Save files.
If the option variable Less Asking is non-0, you will not be asked for
    confirmation.
A nonzero pre-comma argument also waives confirmation.,For checking if loaded or compressed in.I Load-time setup.QI Just like M.C.
Kept around so old libraries generated by IVORY still work.AWord Abbrev Mode package.  Documentation in INFO under EMACS.kS Run when WORDAB is loaded.
If you do non-trivial hacking of Word Abbrev mode, you should be on
    the WORDAB@MIT-AI mailing list.
Calls variable WORDAB Setup Hook, if it exists.  That can do things
    like auto-loading a file of abbreviations.  It must also connect
    keys.
If the hook does not exist (or is 0), we will connect the standard
    Word Abbrev mode keys:
	C-X C-A	  runs ^R Add Mode Word Abbrev,
	C-X C-H	  runs ^R Inverse Add Mode Word Abbrev,
	C-X +	  runs ^R Add Global Word Abbrev,
	C-X -	  runs ^R Inverse Add Global Word Abbrev,
	M-'	  runs ^R Word Abbrev Prefix Mark,
	C-M-Space runs ^R Abbrev Expand Only, and
	C-X U	  runs ^R Unexpand Last Word.
Appends to variables Set Mode Line Hook and Exit Hook.eC Finds abbrevs in region; offers to expand each.
Searches region for word abbrevs.  When one is found, the buffer is
    displayed with the cursor just after the abbrev.  The character
    you then type determines what action is taken:
Space	expands the abbrev and goes on to the next one.
Rubout	goes on to the next one without expanding.
Altmode	exits this command without expanding.
Period	expands and then exit.
Comma	expands and stays so you can look it over.  Then type one
	of these characters again.
Exclamation mark expands this and each remaining abbrev without
	asking.
Hyphen	expands and glues to a prefix and stays.  The prefix and
	abbrev should be separated by a "-".
F	causes this paragraph to be filled.
C-R	enters a recursive edit level, so you can move point or do
	minor editing.
C-L	clears and redisplays the screen and stays.u^R Expand abbrev before point, but insert nothing.
If given an argument, will feep if last word isn't an abbrev. ^R Expand abbrev before point, then old action.
The "old" function run by the character after the expansion check may
    be described by M-X Old Word Abbrev Character Describe which will
    ask you to type the character to describe.
Explicit numeric argument inhibits expanding.S Expand last word if an abbrev.
Giving an explicit numeric argument inhibits expansion, just inserting
    that many copies of character that ran this.1^R Expand abbrev at point if old Tab action inserts.
If Tab will not insert any whitespace at point, no expansion is
    attempted.  (E.g. the Tab is reindenting the line, but point is
    mid-line.)
The "old" function run by Tab after the expansion check may be
    described by M-X Old Word Abbrev Character Describe which will ask
    you to type the character to describe.
Explicit numeric argument inhibits expanding.^R Remember point as end of an abbrev prefix.
Expansion of the prefix may occur unless an numeric argument is given.
Remembers this point as a prefix-end, and inserts a hyphen (which will
    disappear if an abbrev expands just after that hyphen).  E.g. you
    might type "inter", mark that as a prefix (you see "inter-"), and
    then type an abbrev ("inter-comm " which becomes
    "intercommittee").S Maybe expand previous word.
Expand previous word if mode or global abbrev.
This goes on Q:.E(0) if user wants both modals and globals.^S Expand previous word if global abbrev.
This goes on Q:.E(0) if user wants only globals.TS .1 is abbrev, .2 is ..Q offset
This is the abbrev-expander, goes on Q:.E(1).
A pre-comma numeric argument inhibits auto-filling.  (Since ^^M, e.g.
    is called by some to insert CRLF but not auto-fill.)g^R Undo last expansion, leaving the abbrev.
Another ^R Unexpand Last Word will redo the expansion.
An effort is made to keep point unchanged, but if unexpanding causes a change
    in the text around point, point may move.?C Turn Word Abbrev mode on or off.
Given no argument, the mode is toggled (turned on if it was off, and
    turned off if it was on).
Given positive argument, the mode is always turned on.
Given 0 or negative argument, the mode is turned off.
Giving this command 1 as a pre-comma argument means that you only use
    global abbrevs, and things are set up to be faster (e.g. faster
    expansion checking since it doesn't have to check both global and
    local abbrevs).
Each of the following chars: ~@#;$%^&*()-_=+[]\|:'`"{},<.>/?!, Space,
    Return, and Tab, will cause expansion of abbrevs followed by their
    normal action.
If you wish to supply additional characters that should expand, see
    the description of Make These Characters Expand.
If you wish to completely replace this list of expanding characters,
    set the variable WORDAB Ins Chars in your init or EVARS file to
    the string of characters that should expand.>C Tell what a character does after expanding.
This command will ask you to type a character, e.g. Space, which runs
    the word abbrev expander and then calls the old definition for
    that character.
The description for that old definition will be given, e.g.  the
    description for ^R Auto-Fill Space.bC Define abbrevs from a definition list in the buffer.
Buffer should contain the word abbrev definition list.
If given a pre-comma numeric argument, all abbrevs will be killed
    before defining the new ones from the buffer.  (The old abbrevs
    are not killed until we are sure that the syntax of the buffer's
    definition list is correct.)dC Define one word abbrev, global or for any mode.
After doing M-X Make Word Abbrevfoofind outer otter, typing "foo"
    will automatically expand to "find outer otter".
3rd string argument, if any, is the mode for the abbrev.
No 3rd string argument means use the current mode.
3rd string argument = "*" means this make a global abbrev.
This command defines just one abbrev, as compared to Define Word
    Abbrevs which defines several abbrevs from a list in the buffer.C Add characters to the list of abbrev expanders.
E.g. M-X Make These Characters Expand1234567890 will cause the
    digits to expand any abbrev before them, just like #$%.,/? etc.
    Note, though, that this will not necessarily make digits be
    word-delimiters.
If your keyboard has Top-characters (e.g. Top-Z is alpha), you can
    have them be expanders too, though some of them can't be typed to
    ^R Extended Command (namely Top-Q and Top-M).  Also: if you
    put this command into an init file, be careful to double any use
    of Top-S (namely C-]).
You can have an EVARS file (as opposed to an init file) declare
    additional expanders too in a simple way -- just put the
    characters into the variable Additional Abbrev Expanders.  E.g. to
    make the digits expand, put the following line into your EVARS
    file (you need the "*" to force it to be a string):
Additional Abbrev Expanders:*1234567890 (Top-character users:  in an
    EVARS file you would not need to double Top-S.)^R Define an abbrev for word(s) before point.
Negative numeric argument means to delete the word abbrev.  (If there
    is no such mode abbrev, but there is a global, it asks if it
    should kill the global.)
Positive numeric argument (>0) means expansion is that many last
    words.
Zero numeric argument means expansion is between point and MARK.
(Extension writers: If Teco's fs^RMark set, that means expansion is
    between . and fs^RMark.)
The abbrev is only effective when in the current mode (e.g. LISP).^R Define an abbrev for word(s) before point.
Negative numeric argument means to delete the word abbrev.
Positive numeric argument (>0) means expansion is that many last
    words.
Zero numeric argument means expansion is between point and MARK.
(Extension writers: if fs^RMark set, that means expansion is between
    . and fs^RMark.)
The abbrev is effective in all major modes.e^R Define the expansion for abbrev before point.
Numeric argument n means nth word before point is to be an abbrev
    (e.g.  you thought it already was, and you are now n words
    beyond).  No numeric argument means the word just before point,
    same as argument of 1.
Reads a one-line expansion for the abbrev, defines it, and expands
    it.^R Define the expansion for abbrev before point.
Numeric argument n means nth word before point is to be an abbrev
    (e.g.  you thought it already was, and you are now n words
    beyond).  No numeric argument means the word just before point,
    same as argument of 1.
Reads the expansion in the echo area.  (This command cannot define
    multi-line expansions.)
Defines that abbrev, and then expands the abbrev before point.
Aborts if you abort the line-reading with Rubout, or if the expansion
    is null.q^R Remove the definition for one abbrev.
Same as ^R Add Mode Word Abbrev with a negative numeric argument.x^R Remove the definition for one abbrev.
Same as ^R Add Global Word Abbrev with a negative numeric
    argument.NS Reads an abbrev for words before point.
Stringarg1 is "*" for global abbrev, and space-modename for a mode
    abbrev, e.g. " TECO".
Stringarg2 is & Read Line prompt.
Calls & Read Line to read the abbrev.
ARG non-0 means expansion is last ARG words.  (Includes breaks in
    between words, but not those before first or after last word.)
ARG 0 means expansion is between point and MARK.
If fs^RMark set, then for any ARG expansion between . and fs^RMark.
If the abbrev is already defined, user is asked if redefinition
    wanted.
The abbrev must not contain any break characters.
Abbrev variable is constructed: X abbreviation <mode/*> Abbrev.  Its
    value is a string which is the expansion.LS Basic definer subroutine.
Pre-comma numeric argument is abbrev.
Post-comma numeric argument is expansion.
String argument is "*" or modename.
Checks for break characters in abbrev (not allowed).C Allow user to edit the list of defined word abbrevs.
Note that any '"'s are doubled so that the syntax is unambiguous.
    E.g.  if the abbrev 'xsay' is to expand to 'He said "Hello".',
    then it will be:
	xsay: 	1	"He said ""Hello""."
A recursive edit level is entered.  When exited by ^R Exit the
	buffer will be considered as new definitions of all word
	abbrevs.  Any abbrevs missing from the list will be killed.
Abort Recursive Edit will abort M-X Edit Word Abbrevs, leaving
	word abbrevs untouched.%C Print some or all word abbrev definitions.
Lists a table of word abbrev definitions for currently defined
    abbrevs.
If string argument is null, all abbrevs are listed.
If there is a string argument, it filters which abbrevs' definitions
    are listed.  (Actually, it is a TECO search string.)  If the
    abbrev, its mode, or its expansion contains the filter that
    definition is listed.
Giving a numeric argument will control what the filter applies to:
	0 or 7 (same as no argument): abbrev, mode, or expansion
	1: abbrev only
	2: expansion only
	4: mode only
Combinations by summing the above -- e.g. 3 means abbrev or expansion,
    but not mode.C Insert a list of some or all word abbrev definitions.
Inserts a table of word abbrev definitions for some or all of the
    currently defined abbrevs.  Format is that used by M-X List Word
    Abbrevs and M-X Edit Word Abbrevs.
If string argument is null, all abbrevs are inserted.
If there is a string argument, it filters which abbrevs' definitions
    are inserted.  (Actually, it is a TECO search string.)  If the
    abbrev, its mode, or its expansion contains the filter, that
    definition is inserted.
Giving a numeric argument will control what the filter applies to:
	0 or 7 (same as no argument): abbrev, mode, or expansion
	1: abbrev only
	2: expansion only
	4: mode only
    Combinations by summing the above -- e.g. 3 means abbrev or
    expansion, but not mode.
Extension writers: giving a 1 pre-comma argument causes the
    definitions to be listed as they are inserted.tC Kill all abbrev definitions, leaving a blank slate.
It is as if you had not read or defined any word abbrevs.C Define word abbrevs from an abbrev definition file.
Stringarg is word abbrev definition file.
Default is <homedir>;WORDAB DEFNS.
File may be in default fast-loading foramt or human-readable format.
This will not complain if the file does not exist.4C Write all the current abbrev definitions to a file.
Stringarg filename.  Default is WORDAB DEFNS.
Argument present means do not write out usage counts.
Normally writes a fast-loading format file, but if you have the
    Readable Word Abbrev Files option variable set to 1, it will write
    a human-readable format file (like that used by
    List Word Abbrevs).
Default filenames come from last definition filename used.'C Write abbrevs defined/changed since dumping this environment.
Writes to file named by string argument.  Defaults to home directory,
    INCABS > (INCABS..0 on Twenex.).
This command is used by people with a large number of abbrevs, and who
    dump their environments.  The init file should generally use M-X
    Write Word Abbrev File, and the & Startup... should use
    M-X Read Incremental Word Abbrev File.gC Define abbrevs changed since dumping.
String argument is filename that contains incremental abbrev
    definitions, written by M-X Write Incremental Word Abbrev
    File.  Default is home directory, INCABS >.
This command is used by people with a large number of abbrevs, and who
    dump their environments.  The init file should generally use M-X Write
    Word Abbrev File, and the & Startup... should use this function.
This will not complain if the file does not exist.VS Like .V and .C combined, for speed.
STRARG1 is abbrev variable name.
STRARG2 is abbrev expansion with altmodes, ^]s quoted with ^]s.
STRARG3 is usage-count string.
Assumes ..Q is selected as buffer (..O).#S Like .V and .C combined,
but faster.
STRARG1 is abbrev variable name string.
STRARG2 is abbrev expansion string.
Assumes ..Q is selected as buffer (..O).C Abbrev will run a macro after expanding.
The last keyboard macro defined is attached to a word abbrev as its
    word abbrev hook.  Just after that abbrev expands, this hook is
    executed.
BE CAREFUL!!  -- keyboard macro attachment is not always
    well-defined, due to some strange Teco effects.  Not everything
    works that "ought to".
First string argument is abbrev to attach it to.  If null, the last
    one defined is used.
Second string argument is mode (null means use current mode).  Use "*"
    if you mean to attach it to a global abbrev.  If you are attaching
    to the last defined abbrev, you can use anything for this string
    argument.
Note that word abbrev hooks will be saved by M-X Write Word Abbrev
    File and M-X Write Incremental Word Abbrev File, just like normal
    abbrevs.  Also, they appear in definition listings (e.g. by M-X
    List Word Abbrevs or M-X Edit Word Abbrevs) in pairs, such as the
    following:
textmode:		#0	"-*-Text-*-"
textmode: (*-WABMAC)	0	"m(m.mText Mode)"jS Put some Teco code on a word abbrev.
The first string argument is the abbrev, second is mode name (or "*"
    for global abbrev).  Given null abbrev, we use the last defined.
The third string argument is a hook to call after expanding that
    abbrev.
Note that word abbrev hooks get saved in incremental and full files,
    just like normal abbrevs.kS Check for characters to change.
Calls a subroutine to see-if/do any expand characters need updating.S Check list of chars for expanders, fix.
q.1:    List of characters.
q.6:    ^R Macro to check against.
q.7:    Subroutine to call if char runs .6.S Check list of expand characters for changes
q.1:    List of characters.
q.6:    ^R Macro to check against.
q.7:    Subroutine to call if change.{S Make a self-inserter expander.
Caller has .2 bound to self-inserter builtin.
Numeric argument: 9-bit of key to use.GS Make a call-old expander.
Numeric argument: 9-bit of key to use.#S Reset char ARG to @fs^RInit.(S Reset char ARG to what was before.ZS Return Q.L or Q.V...
Returns Q.L if argument is a local q-register,  Q.V otherwise.[S Produce a short string, showing beginning/end.
Numeric argument is a string pointer.5New version of Auto Save Mode and its associates._S Install hooks, create variables.
Runs Auto-Save-Mode Setup Hook, if it is non-0, in which case it
must take care of setting keys, fsClkMacro, fsClkInterval, ..F and
.F.  We set those only when there is no hook.4S Decide whether to turn on auto saving for file,S Subroutine that may write out an auto save file.
NUMARG is Buffer Index of buffer in .B to save.
We run Before Auto Save Hook and After Auto Save Hook if non-0.C^R Write out a user-save file if needs it.
A user-save file is one written by user decision, and therefore never to
    be touched by auto saving.  E.g. a high-level backup point.
Declares this version to be a user-saved file, i.e. NOT an auto saved
    one.  Thus, auto saving will not occur to this version again.
Given an explicit NUMARG, we just run & Auto Save File, to ensure that the
    file is currently safe, if not user-level consistent:  thus this will
    keep the file declared an auto save file.
A NUMARG of 16 or greater calls & Auto Save All Buffers.S ..F:  Auto save for use in ^R mode editing.
The buffer is auto saved after every fs^RMDly characters.
Auto saving happens by calling & Auto Save File.|S For each buffer that requires it.
I.e. for each that is modified and has auto saving on.
& Auto Save File is called.-S Save file after 5 minutes of idle time.
& Setup EAKMACS Library
& Startup EAKMACS
^^ TTY Init
Generate EAKMACS
Dump EAKMACS
& MIDAS Mode Hook
& Text Mode Hook
& LISP Mode Hook
& TECO Mode Hook
& Edit Picture Hook
Kill Buffer
^R Goto LISP
& Yes or No
^R VT52 Control-S
& Compressed IVORY Library
TECO Mode
& Compress Buffer
& Declare Load-Time Defaults
& Make Load-Time Default Setup
& Purify Buffer
1Generate
Generate Library
& Combine Compress Data
No Key Test Load
Key Test Load
Test Load
Flush Test Functions
Compress File
^R Ivory-Bound This Page
^R Forward TECO Conditional
^R Backward TECO Conditional
TecDoc
^R TQuote
List TECO FS Flags
& File PURIFY Loaded
& Compressed FIXLIB Library
& Setup FIXLIB Library
^R Insert Variable Name
^R Insert EMACS Function Name
& Read Q-Reg Name
^R Teco End Conditional
^R Forward Teco Iteration
^R Backward Teco Iteration
^R Goto Teco Function
Goto Teco Function
Who Uses
EMACS Function Occur
& Maybe Backtrace
Backtrace
& Describe Value
Trace Function Call
Untrace Function Call
List Traced Function Calls
Libfun
Get Library Function
^R Examine Key
Examine Function
ExFun Mode
^R Indent Examined Function
& ExFun Help
^R Yank For Patching
^R Quit Examining Function
^R Examine Next M.M
^R Goto Next M.M
^R Goto Previous M.M
& Next M.M
^R Describe Previous M.M
^R Describe Examined Function
^R Print Next M.M Call Paths
^R Print Key Call Paths
^R Insert Key Call Paths
Print Call Paths
Insert Call Paths
& Insert Call Paths
& Get Containing Library
Indent Teco Object
^R Re-execute Minibuffer
& Compressed TMACS Library
Type Mailing List
Buffer Menu
Graph Buffer
^R Buffer Graph
^R Draw Vertical Line
=Abbrev
Send Mail
^R Auto Fill Comments
^^ TMACS Error Handler
^R Change Case Letter
& Set ..D
^R Get Macro Name
& Get 9-Bit Character Name
Lock File
Unlock File
& Buffer Dashes
Flush Variables
List unused ^R characters
^R Argument
^R Break Line
0
UnSAILify
& Kill Prefixed Variable Names
& Insert Prefixed Variable Names
^R Uppercase Last Word
^R Lowercase Last Word
^R Uppercase Last Initial
Uncontrolify
Abort Recursive Edit
Revert File
& SetUp TMACS Library
& Default Variable
& Compressed WORDAB Library
& Setup WORDAB Library
Expand Word Abbrevs in Region
^R Abbrev Expand Only
^R Abbrev Expand And Call Old Char
^R Abbrev Expand And Self-Insert
^R Abbrev Expand for Tab
^R Word Abbrev Prefix Mark
& WRDAB Mode or Global Expand
& Global Expand
& Expand
^R Unexpand Last Word
WORDAB
Word Abbrev Mode
Old Word Abbrev Character Describe
Define Word Abbrevs
Make Word Abbrev
Make These Characters Expand
^R Add Mode Word Abbrev
^R Add Global Word Abbrev
^R Inverse Add Mode Word Abbrev
^R Inverse Add Global Word Abbrev
^R Kill Mode Word Abbrev
^R Kill Global Word Abbrev
& Add Word Abbrev
& Check And Make Word Abbrev
Edit Word Abbrevs
List Word Abbrevs
Insert Word Abbrevs
Kill All Word Abbrevs
Read Word Abbrev File
Write Word Abbrev File
Write Incremental Word Abbrev File
Read Incremental Word Abbrev File
& Make Usage Abbrev Variable
& Make Non-Usage Abbrev Variable
Attach Word Abbrev Keyboard Macro
& Attach Word Abbrev Hook
& WRDAB Process Options Hook
& WRDAB Off PO Check
& WRDAB On PO Check
& WRDAB Turn On Ins Char
& WRDAB Turn On Old Char
& WRDAB Turn Off Ins Char
& WRDAB Turn Off Old Char
& Global or Local
& Shorten String
& Compressed AUTO-SAVE-MODE Library
& Setup AUTO-SAVE-MODE Library
& Auto Save Setup
& Auto Save File
^R Save File
& Secretary Macro
& Auto Save All Buffers
& Real-time Interrupt
\+8+fq(+4)[2 0[3
< %3,-q2f2u3 q3&1@; q3"l 0' >
f[BBind q3-1*5,q3*5g2 q:..o(0)+q2