Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - emacs/fixlib.elib
There are no other files named fixlib.elib in the archive.
W[0 +8+fq(+4)[1
fq1"l 0'
,q1:m(q1+4(]1]0))y<+WF:jNGT\D3h >r>Ay
<"L[#5KH+Z- /!# )8@ H?mV47=Wkry>>'P:O+C<AdJ
Ee0Oaq^Uvlr$znZ	aq	a(	!n*	.L
	=_1	L`^	[W8	dSA	vmD


1w%&Describe Value&cExFunHelp&FGettContaininguLibrary&tInsertrCallnPaths&oMaybecBacktrace&INexttM.M&jReadQ-RegeName&aSetup FIXLIB Library
LibfunList Traced Function CallsPrint Call PathsRemove (TEST) SuffixTrace Function CallUntrace Function Call
Who Uses^R Backward Teco Iteration!^R Describe Examined Function^R Describe Previous M.M^R Examine Key^R Examine Next M.M^R Forward Teco Iteration^R Goto Next M.M^R Goto Previous M.M^R Goto Teco Function^R Indent Examined Function!^R Insert EMACS Function Name^R Insert Key Call Paths^R Insert Variable Name^R Print Key Call Paths ^R Print Next M.M Call Paths^R Quit Examining Function^R Re-execute Minibuffer^R Teco End Conditional^R Yank For Patching~DIRECTORY~~DOC~ & Describe Value~DOC~ & ExFun Help"~DOC~ & Get Containing Library~DOC~ & Insert Call Paths~DOC~ & Maybe Backtrace~DOC~ & Next M.M~DOC~ & Read Q-Reg Name ~DOC~ & Setup FIXLIB Library~DOC~ Backtrace~DOC~ EMACS Function Occur~DOC~ Examine Function~DOC~ ExFun Mode~DOC~ Get Library Function~DOC~ Goto Teco Function~DOC~ Indent Teco Object~DOC~ Insert Call Paths~DOC~ Libfun$~DOC~ List Traced Function Calls~DOC~ Print Call Paths~DOC~ Remove (TEST) Suffix~DOC~ Trace Function Call~DOC~ Untrace Function Call~DOC~ Who Uses$~DOC~ ^R Backward Teco Iteration'~DOC~ ^R Describe Examined Function"~DOC~ ^R Describe Previous M.M~DOC~ ^R Examine Key~DOC~ ^R Examine Next M.M#~DOC~ ^R Forward Teco Iteration~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 Print Key Call Paths&~DOC~ ^R Print Next M.M Call Paths$~DOC~ ^R Quit Examining Function"~DOC~ ^R Re-execute Minibuffer!~DOC~ ^R Teco End Conditional~DOC~ ^R Yank For Patching~DOC~ ~FILENAME~~FILENAME~
FIXLIB<0fo..qFIXLIB Loaded-13154152856"n
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
0m.CGoto Function and Bound* If non-0 the Goto ... Function commands set bounds around function
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
13154152856m.vFIXLIB Loaded'
m(m.mKill Variable)MM Backtrace
m.mBacktracem.vMM Backtrace
a8,fTest Command: [1
fq1"e @:m(m.mRemove (TEST) Suffix)'
f~(fq1-7,fq1:g1) (TEST)"e 0,fq1-7:g1u1'
@:fo..qMM 1 (TEST)"l :i*No MM 1 (TEST) variablefsErrw'
 qMM 1 (TEST)(
m(m.mKill Variable)MM 1 (TEST)w
)m.vMM 1w
@:fo..qMM ~DOC~ 1 (TEST)"g
qMM ~DOC~ 1 (TEST)(
m(m.mKill Variable)MM ~DOC~ 1 (TEST)w
)m.vMM ~DOC~ 1w'
 :i*[CRL Prefix q..q[CRL List
8+2,fVariable name: u1
.,(ff&1"e 33.i g1 33.i'
"# g1'
).'8,fFunction Name: [1
.,( g1
:f[VB fsZ-.f[VZ
:< -flfx1
0fo..qStrip 1 Suffix"e .(g1)j'
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'
:i*[CRL Prefix
q..q[CRL List
2,m(m.m& Read Command Name)Variable: u3
q2-!"e 8,m(m.m& Read Command Name)Function name: f"e'u1
 q2-"e 1,m.m& Read FS-Flag Namef"nu3 m3u3'
"# 1,m(m.m& Read Line)FS-Flag: u3'
fq3:"g 0'
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
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''
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
<	: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[VB f[VZ @m(m.m^R Ivory-Bound This Page)w
<	-: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 >
 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'
< :s:!; 1u3 .u2 -2s! .,q2:fb1:; 0u3 q2j >
q3"n 0u..n
0l .fsWindoww
q0 m(m.m& Maybe Push Point)'
qGoto Function and Bound"n @m(m.m^R Ivory-Bound This Page)f'
1,fWho Uses: u3
0s3 f[BBind
m.m& Maybe Flush Output
< -fq0; @ftA g0 j @ftB
q2"e :i2((Anonymous))'
qI"E :@iI|[1<q1-1u1q1fp-100@;>q1| '
< ma
:s; @ft.
<q1-1u1 q1fp-100@;>
q4"E !<!>'
0:g4-~"e !<!>'
1:<q0m.m4>"n !<!>'
q2"n ftIn file 2:

ff&1"n ft4:

   '"# ft4
j m(m.mOccur)3

   q2"e ft
hk q0+fq0+4u0

 1,fList functions containing: (
  1,fName filter: u4 )u0
fq0"e 0u0'
fq4"e 0u4'
q..o(f[BBind q..ou5 [..o)u..o
.:\u1 fn1j
0f[VB 0f[VZ
ff"e bj'
<  q0"n :s0;'
"# :s:!;'
l fsZ-.fsVZw

:s:!"e :i2(unnamed section)'
"# 2r .,(-s!c).fx2'
q4"n q5[..o hkg2j :s4(]..o)"e oNext''
.-q3"n q0"n ft

'	   ft2 q0"n ft:
'	   ft
zj q0"n -t'
!Next! zj 0fsVZw >
1fo..qTrace 1"E '
0fo..qBacktrace Should Smash Screen"E
FG @ftType character for backtrace fiw
C  fsEchoDisplay''


2m(m.m Backtrace) '
+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
    -7f~M:.N(0)"e %0w''
  ff"n u0'
fsBackDepth-q0uBacktrace Temp
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  '
z"e iDepth gBacktrace Tempi out of range.'

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

0u..h @v 0u..h
q1-4110."e ?u1 fiw'
"# @fi@fs^RCMac-(33.fs^RInit)"e Qu1''
 q1-12."e qBacktrace temp-1uBacktrace temp
	  qBackTrace Empty Unwind fsQPUnwind
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

"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
qBackTrace Empty Unwind fsQPUnwindw

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

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 '
 fq():= ft long: "
 0,30:g()[1 ft1" !''!
 8,fTrace Function: (
     1,fTeco commands: [.2
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
m(m.m& Insert Prefixed Variable Names)&& Real .1
z"E ff-2"E '
:i*Function .1 not being tracedfsErr'

 < :s&& Real ;
q&& Real .1m.vMM .1w
m(m.m Kill Variable)&& Real .1
m(m.m Kill Variable)&& Trace Commands For .1
:i*&& Real [.1
m(m.m& Insert Prefixed Variable Names).1
bj [.2 i
 < :s.1; 0k
:x.2 :l
0fo..qTrace .2"N
32m(m.m& Indent)w
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 elib fsDFN1:f6[.5
0fo..qMM .2 (.1)f"N 'w
1,q.5m(m.m& Get Library Pointer)u.3
0,q.3 m.m.2 ''
1 m(m.m Load Library).1u.3'
0,q.3 m.m~DOC~ .2u.4
g.4 j<:s!;<EXCL>>
0,q.3 m.m.2u.3
:i.3!.2 (.1):! !.4
From .1 library.!
: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
8,fExamine: u1w
fq1"e m(m.m& Read Command Name)Examine: f"e'u1w'
"# 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) |
q..ou:.b(qBuffer Index+4)
f~ModeExFun"n m(m.mExFun Mode)'
q0m(m.m& Macro Name)u1
"n u1
fsOSTeco"n g1
j m(m.mUncontrolify)
:i1(q1)'"# :i1(nameless impure string)''
qExamined Function Name"e
!<! :i..J>1'
"# 1,fq..j-2:g..ju..j
!<! :i..J..J>1'
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,(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:

t[1 .[2 [3 [..j
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:! !
.f[VB fsZ-.f[VZ
1:< g(m.m~DOC~ 1)
j <:s!; > >w
zj f]VZ f]VB
qEditor Nameu..j :i..j..j 
:i*Patch 1[Editor Type

m(m.mKill Variable)MM 1
-1m(m.mTest Load)
hk 0fsXModifiedw 0fsModifiedw
"# 1:< 0,1m(m.m& Next M.M)f(x1
>"n fg ''
m(m.mExamine Function)1 1[1
 1:< 1,m(m.m& Next M.M)u1j
>"n fg'
 1:< 1,(-)m(m.m& Next M.M)u1j
>"n fg'
1Y[1[2[3[4[5 .[0 fnq0j [0
"l :i1-
:i5 q2j 3r'
"# :i1 q1u4 q1u5
"e -3f~m.m"e 3r'''
1f<!Good M.M!
1f<!Bad M.M!
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'
.,(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
 1j0fo..qExamined Function Name[1
q1"e :i*Not examining any function fsErr'
 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
 :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
 8,fCall paths from: u1
ff&1"n ,'1m(m.mInsert Call Paths)1
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
ff&2"n [Examine Function Maximum Depth'
0fo..qKill Call Path Flagsu1 fq1"g m1'
mkKill Call Path Flagsw
f0:"l '
q3"e i<0 ???>

"n -t' '
-(50fo..qMax Call Path Column)"g
   "n -t' '
0fo..qCall Path 0 Flag"n
qExamine Function Prints Redundant calls"n
     "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
0fo..qCall Path Library-q4"n
qExamine Function Prints External Calls-1"e
q4"e :i4(anonymous)'
i[4: 0...]

"n -t''
g0 i
 "n -t ma'
f[BBind [..o q..ou1
g3 bj
< q1u..o
:sm.m; @f	 l
1< .,(:fb; r).x0
,+4mp0 > >
 fp-100"n 0'
<  fq1:"g q0'
-q1"l q0'
qIndent Teco Object"e '
.[9 bj :fb:!"l q9j'
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;
q1"l 0u1'
bj 0s6263
<:s; r -d c>
bj 0s76477657
<:s; -d r -2d c>
bj 0s6
<:s; c1af 	"l i '>
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.'

bj sPOINT fkd
ff"e @FTRe-execute command 1
1m(m.m& Yes or No)"e 0''
M:.N(0)5Functions for examining/patching EMACS functions.SS Make a few variables.
This object file was compressed on 6:39pm  Friday, 5 April 1996
by ALDERSON on from the following source libraries:

   DXX:<EMACS>FIXLIB.EMACS.210,	04/05/96 18:17:06C Trims an MM-variable to proper name part.
String argument is command name.  If null, reads it with completion.
After a Test Load has left a (TEST) suffix, completion will be ambiguous.
    Using this command will change the MM-variable from, say, MM Foo (TEST)
    to just MM Foo.
Note that this means that various commands won't be able to recognize this
    MM-variable as a test function any more.^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.f^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.
The option variable Goto Function and Bound controls whether the
    bounds are set.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.
The option variable Goto Function and Bound controls whether the
    bounds are set.
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.)C List functions in source file containing a string.
Buffer should be an EMACS source file.
The first string argument is a search string:  the functions whose source
    contains that string are listed.  Null string means don't show lines,
    just the function names.
The second string argument is a search string that further filters those
    matching functions:  only those functions whose names match this string
    are 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
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
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
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.& Setup FIXLIB Library
Remove (TEST) Suffix
^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
& Describe Value
Trace Function Call
Untrace Function Call
List Traced Function Calls
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
\+8+fq(+4)[2 0[3
< %3,-q2f2u3 q3&1@; q3"l 0' >
f[BBind q3-1*5,q3*5g2 q:..o(0)+q2