Google
 

Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - emacs/bliss.elib
There are no other files named bliss.elib in the archive.
HW
[0+8+FQ(+4)[1
0FO10F"G+Q1'
+FQ()+4U1
FQ1"L0'
,Q1:M(Q1+4(]1]0))
   	DaW2]h21tm t$\%#6#yHvW"h+w)M(0%-5-C@.5J/	V/jd9r2z
%&/<)H2TFd?q_xF%[."Zf1@lDLwWPCkNlO^K[&NJ:TbLSG_QpY0UZUo$VP1W=@XnQ\-b\r:z|A0	
B5	HC	.D	><R	M?!	\KI	oIo	:b
	:]
b!%& Align Global BLISS Comment Ends"& Back Over BLISS Line Comment& BLISS End Prev Stmt& BLISS Get Statement Label!& BLISS Indent After Compound!& BLISS Indent After End Stmt"& BLISS Indent After New Block%& BLISS Indent After Routine Stmt& BLISS Indent After Stmt#& BLISS Indent Unfin Begin Stmt& BLISS Indent Unfin Comp & BLISS Indent Unfin If Stmt& BLISS Indent Unfin Stmt& BLISS Last Sub-Stmt Token & BLISS Next Non-Begin Token& BLISS Next Token& BLISS Skip Decl& BLISS Token Search& BLISS Tokens to Leftp& Default Init BLISS Mode& Setup BLISS LibraryBLISS ModeIndent BLISS Region^R BLISS Indent Relative^R End Global BLISS Comment^R Global BLISS Comment^R Indent BLISS Stmt^R Insert BLISS End ^R Print Last BLISS Indenter^R Slurp BLISS to Char~DIRECTORY~+~DOC~ & Align Global BLISS Comment Ends(~DOC~ & Back Over BLISS Line Comment~DOC~ & BLISS End Prev Stmt%~DOC~ & BLISS Get Statement Label'~DOC~ & BLISS Indent After Compound'~DOC~ & BLISS Indent After End Stmt(~DOC~ & BLISS Indent After New Block+~DOC~ & BLISS Indent After Routine Stmt#~DOC~ & BLISS Indent After Stmt)~DOC~ & BLISS Indent Unfin Begin Stmt#~DOC~ & BLISS Indent Unfin Comp&~DOC~ & BLISS Indent Unfin If Stmt#~DOC~ & BLISS Indent Unfin Stmt%~DOC~ & BLISS Last Sub-Stmt Token&~DOC~ & BLISS Next Non-Begin Token~DOC~ & BLISS Next Token~DOC~ & BLISS Skip Decl~DOC~ & BLISS Token Search!~DOC~ & BLISS Tokens to Leftp#~DOC~ & Default Init BLISS Mode~DOC~ & Setup BLISS Library~DOC~ BLISS Mode~DOC~ Indent BLISS Region"~DOC~ ^R BLISS Indent Relative%~DOC~ ^R End Global BLISS Comment!~DOC~ ^R Global BLISS Comment~DOC~ ^R Indent BLISS Stmt~DOC~ ^R Insert BLISS End&~DOC~ ^R Print Last BLISS Indenter ~DOC~ ^R Slurp BLISS to Char~DOC~ ~FILENAME~~FILENAME~
~INVERT~'m(m.m & Init Buffer Locals)
1,:i*!m.LComment Startw
1,:i*! m.LComment Beginw
1,:I* )%M.LImbedded Comment Endw
1,:I*%( M.LImbedded Comment Beginw
1,m.m& Indent Without Tabsm.LMM & Indentw
1,m.m& XIndent Without Tabsm.LMM & XIndentw
1,40m.lComment Columnw
1:<m(m.mInit BLISS Mode)
>"N
m(m.m& Default Init BLISS Mode)'
m.vBLSIND ..Dw
^:IBLSIND ..D\                                                                                                                                        A                             A    A    A   AA   AA    A    '    (    )    A    A         A    A    /   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA    A    ;    A    A    A    A    A   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA    A    A    A    A   AA    A   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA    A    |    A    A        \
q.0,1M(M.M& Set Mode Line)BLISS
[.2[.3[.4[.5
:i*m.vLast BLISS Indenterw
.m(m.m& BLISS Tokens to Leftp)"N
f^m(m.m^R BLISS Indent Relative)'
ff"G
:iLast BLISS Indenter(^R Indent Nested)
f^m(m.m^R Indent Nested)'
.[.1
1m(m.m& BLISS End Prev Stmt)u.2
q.2j
m(m.m& BLISS Next Token)u.5u.3
q.5-."Lq.2jm(m.m& BLISS Next Token)u.5u.3'
q.3-q.1"L
q.3,q.5x.4
1:<q.1,q.3m(m.m& BLISS Indent Unfin .4 Stmt)u.3u.1
>"N
q.1,q.3m(m.m& BLISS Indent Unfin Stmt)u.3u.1
''
"#
.-b"N
1m(m.m& BLISS End Prev Stmt)u.2
q.2j
m(m.m& BLISS Next Token)u.5u.3
q.5-."Lq.2jm(m.m& BLISS Next Token)u.5u.3'
q.3,q.5x.4'
"#
bu.3bu.5:i.4'
1:<q.1,q.3m(m.m& BLISS Indent After .4 Stmt)u.3u.1
>"N
q.1,q.3m(m.m& BLISS Indent After Stmt)u.3u.1
''
fsrgetty"nq.1,q.3'
fsechodisAfsechodis
0tv
0,0a- "N0,0a-	"N
^m(m.m^R Indent BLISS Stmt)f''
.,(iEND;).f
.:
.[.1fnq.1j
4r.[.6
[.2[.4[.50[.3
<b-."EFG1'
1m(m.m& BLISS End Prev Stmt)j
m(m.m& BLISS Next Token)u.5u.4
q.4u.2
q.4,q.5f~IF"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~ELSE"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~INCR"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~DECR"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~DO"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~WHILE"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~UNTIL"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~GLOBAL"E
q.5+1m(m.m& BLISS Next Token)u.5u.4
q.4u.2'
q.4,q.5f~ROUTINE"E
q.5m(m.m& BLISS Skip Decl)"E1;'
m(m.m& BLISS Next Token)u.5u.4'
q.4,q.5f~MODULE"E
q.5m(m.m& BLISS Skip Decl)"E1;'
m(m.m& BLISS Next Token)u.5u.4'
q.4,q.5f~MACRO"E
q.5m(m.m& BLISS Skip Decl)"E1;'
m(m.m& BLISS Next Token)u.5u.4'
q.4,q.5f~BEGIN"Eq.3-1u.3'
q.4,q.5f~END"Eq.4-q.6"N%.3w''
q.3-1:;
>
q.4,q.5x.4'
q.2j
fwx.5
5f~MACRO"E
.[.6q.1ji %.u.1].6j
Onamit'
6f~MODULE"EOnamit'
.m(m.m& BLISS Get Statement Label)u.3
q.3"E7f~ROUTINE"EOnamit'
"#5f~BEGIN"N
fwx.3
:i.3.3-.4'
"#fwx.3'''
Ocomend
!namit!
fw+.m(m.m& BLISS Next Token)x.3
:i.3.5 .3
!comend!
q.1ji %( .3 )%
q.1-fku.1
q.2j
0^v
*30:w
1q.[.0fnq.0j
1m(m.m& BLISS End Prev Stmt)j
1,.m(m.m& BLISS Next Token)[.2[.1
q.2j0,1a-:"N0'
q.1,q.2x*:[.1.u.2[.3[.4[.5
q.1,q.2fu.2u.1
q.1j
1[9q.1,q.2x.5
q.1,q.2m(m.m& Kill Text)
g.5
q.1jz-q.2u.2
<0l
m(m.m& BLISS Next Token)u.4u.3
q.3j
z-.-q.2:;
^m(m.m^R Delete Horizontal Space)w
^m(m.m^R Indent BLISS Stmt)w
l
>
q.1
z-q.2j
q.1,.fqLast BLISS Indenter[.1
:iLast BLISS Indenter.1(^R BLISS Indent Relative)
[1^:I1|qLast BLISS Indenteru.1
:iLast BLISS Indenter.1(^R Tab to Tab Stop)
:M(M.M^R Tab to Tab Stop)|
0,1af 	+1"G
0,0af 	+1"G
fshpos-1(
-d)m(m.m& Indent)w
''
.[PFSHPOS[0
^-f 	L
.[QFSHPOS[2
0L<B-."EQPJ:m1'
-L1A-15."N0;'>
Q0"G1:<0,Q0+1:FM>"ER'
"#0L1:<0,Q2+1:FM>"ER'
"#QPJ:M1'''
<F:FB_.,	 "E:L'"#R'
^F_., 	R
>
FSHPOS(QQ,QPK
):M(M.M& Indent)0fo..qGlob of Comments Flag"N
f:^m(m.m^R Indent for Comment)'
1m.vGlob of Comments Flagw
fn0m.vGlob of Comments Flagw
[.1[.2
m.m^R End Comment[..\
:i*Global Comment[..j
10[Comment Column
:i*%(*[Comment Start
:i* )%[Comment End
:i*%(*[Comment Begin
1[Space Indent Flag
fsqpptr
[Auto Fill Mode
m(m.m Auto Fill Mode)
:lgComment Start
1m(m.m^R Indent for Comment)
.-z"L-l':l
w
0l
:fb%(*"L
<l:fb%(*"E1;'>'
fsz-.f[vzw
m(m.m& Align Global BLISS Comment Ends)
zjf]vzw
.f[vbw
m(m.m& Align Global BLISS Comment Ends)
bjf]vbw
qQfsqpunwindw
m(m.m& Process Options)
m(m.m& Set Mode Line)
m[.1[.2[.3
bj
<:s%(*;fkc
0u.1
0u.2
0u.3
.(<:fb%(*;
%.3w
.-1f 
4f=* )%"E1u.2'
:fb)%;
fshpos,q.1fu.1w
l>
fsz-.f[vzw
)j
q.3-1"E
q.2"N
-^f 	bk
51fo..qBLISS Star Line Widthu.1''
q.1-2u.1
q.2"N
(q.1-qComment Column-3&1)+q.1u.1'
<:s)%;
-7f=%( * )%"E
2r
q.1-(fshpos)/2<i* >
2c'
2rq.1m(m.m& Indent)f
l>
zjf]vzw
>
N^m(m.m^R End Comment)f
ff"G
.(bj
<:s%(*;.-1f >
)j'
fs^R Exit[.1[.2[.3[.4[.5[.6
m.ifiu.5
z-.u.1
0l^f 	r
z-.u.6
0:lz-.u.3
.m(m.m& Back Over BLISS Line Comment)j
.u.2
<.,(0l).:fb.5;>
.,q.2f(fx.4)f
z-.-q.3"N
^m(m.m^R Indent for Comment)f'
z-q.6j
.,(g.4i).f
0l
^m(m.m^R Indent BLISS Stmt)f
z-q.1jw1`qLast BLISS Indenter[.0
fsechodisplayw
Cfsechodisplayw
^ft.0
0fsechoactivew
{qLast BLISS Indenter[.1
:iLast BLISS Indenter.1(& BLISS Indent After Stmt)
u.1
[.2
[.3
q.2-b"E
4u.3
1:<q1st Stmt Indentationu.3>'
"#
q.2jfshposu.3'
q.1j
q.3-(fshpos)-1"L^m(m.m^R BLISS Indent Relative)'
q.3m(m.m& Indent)qLast BLISS Indenter[.1
:iLast BLISS Indenter.1(& BLISS Indent After Compound)
u.1
[.2
1:<qCOMP BLOCK Indentationu.3>"N
0m.vCOMP BLOCK Indentationu.3'
q.2jfshpos[.6
q.2m(m.m& BLISS Last Sub-Stmt Token)[.5[.4
q.4,q.5f~BEGIN"Eq.4jfshpos+q.3u.6'
q.4,q.5f~DO"Eq.4jfshpos+q.3u.6'
q.4,q.5f~UNTIL"Eq.4jfshpos+q.3u.6'
q.4,q.5f~WHILE"Eq.4jfshpos+q.3u.6'
q.4,q.5f~INCR"Eq.4jfshpos+q.3u.6'
q.4,q.5f~DECR"Eq.4jfshpos+q.3u.6'
q.1j
q.6-(fshpos)-1"L^m(m.m^R BLISS Indent Relative)'
q.6m(m.m& Indent)-,m(m.m& BLISS Indent After New Block)HqLast BLISS Indenter[.1
:iLast BLISS Indenter.1(& BLISS Indent After New Block)
u.1[.2
q.2j
fshpos+4[.3
q.1j
q.3-(fshpos)-1"L^m(m.m^R BLISS Indent Relative)'
q.3m(m.m& Indent)E[.1[.2[.3
qLast BLISS Indenter[.4
:iLast BLISS Indenter.4(& BLISS Indent After Routine Stmt)
0fo..q1st Routine Stmt Indentationu.3
q.1j
q.3-(fshpos)-1"L.,.'
q.3m(m.m& Indent)RqLast BLISS Indenter[.1
:iLast BLISS Indenter.1(& BLISS Indent After End Stmt)
u.1[.2[.4[.5
0[.3
q.2j
!Putinsometimesearchformatchinglabelsubr...*!
<b-.;
1m(m.m& BLISS End Prev Stmt)j
m(m.m& BLISS Next Token)u.5u.4
q.4u.2
q.4,q.5f~IF"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~ELSE"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~INCR"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~DECR"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~DO"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~WHILE"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~UNTIL"E
q.4m(m.m& BLISS Last Sub-Stmt Token)u.5u.4'
q.4,q.5f~BEGIN"Eq.3-1u.3'
q.4,q.5f~END"E%.3w'
q.3-1:;
>
q.2j
fshpos[.3
q.1j
q.3-(fshpos)-1"L^m(m.m^R BLISS Indent Relative)'
q.3m(m.m& Indent)qLast BLISS Indenter[.1
:iLast BLISS Indenter.1(& BLISS Indent Unfin Stmt)
u.1
[.2
[.4
[.3[.5
1:<fo..qUnfin Stmt Indentationu.4
q.2jfshposu.3
q.3+q.4u.5
>"N
q.1j-l
q.2-."g
5*.,5*.+1:g..d[.6
5*.:f..d
2:fwlfshposu.5
5*.:f..d.6'
"#
0u.5''
q.1j
1:<-:ful
^f 	jw
fshposu.5
>
q.1j
q.5-(fshpos)-1"L^m(m.m^R BLISS Indent Relative)'
q.5m(m.m& Indent)qLast BLISS Indenter[.1
:iLast BLISS Indenter.1(& BLISS Indent Unfin If Stmt)
u.1
[.2
fsqpptr[.0
fsz-q.1f[vzw
q.2j
.,zm(m.m& BLISS Token Search)THEN"N
.,1m(m.m& BLISS Token Search)IF"E
q.0fsqpunwindw
q.1,q.2m(m.m& BLISS Indent Unfin Stmt)'
2r'
q.0fsqpunwindw
fshpos[.3
q.1j
q.3-(fshpos)-1"L
^m(m.m^R BLISS Indent Relative)'
q.3m(m.m& Indent)mqLast BLISS Indenter[.1
:iLast BLISS Indenter.1(& BLISS Indent Unfin Comp)
u.1
[.2
[.4[.5
q.2,q.1f[hboundw
bm(m.m& BLISS Last Sub-Stmt Token)u.5u.4
q.4j
f]hboundw
q.4,q.5f~IF"EOcfound'
q.4,q.5f~INCR"EOcfound'
q.4,q.5f~DECR"EOcfound'
q.4,q.5f~DO"EOcfound'
q.4,q.5f~UNTIL"EOcfound'
q.4,q.5f~WHILE"EOcfound'
q.1,q.4m(m.m& BLISS Indent Unfin Stmt)
!cfound!
q.4jfshpos[.3
q.1j
q.3-(fshpos)-1"L^m(m.m^R BLISS Indent Relative)'
q.3m(m.m& Indent)|[.1[.2
m(m.m& BLISS Next Token)u.2u.1
!BEGLP!
q.1,q.2F~BEGIN"Em(m.m& BLISS Next Token)u.2u.1q.2joBEGLP'
q.1,q.2e.[.1
[.2[.3
qBLSIND ..D[..D
ff"Gj'
z-b"Eq.1jz,z'
<
:s%(!"E
zj0a"Bq.1jz,z'
.u.2
-fwl.u.31;'
0a-!"E1@l!<!>'
-1a-%"E:s)%"Ezu.3zu.21;''
"#.-1u.2
(ff&2)1a-:"N
q.2j-fwl.u.31;'
'
>
q.1j
q.3,q.2'0[.1.[.2j0[.3
<
:s=%(;!()"E1;'
0a-;"E1;'
0a-!"E1@l'
-1a-%"E:s)%"E1;''
0a-("E%.1'
0a-)"Eq.1-1u.1'
0a-="Eq.1"E1u.31;''
>
q.3"Eq.2j'
q.3B:i*[.1.[.2j0[.3
qBLSIND ..D[..D
f<!DONE!
<
:s.1%(;!"Ef;DONE'
fk+fq.1+2"Er1u.31;'
0a-;"Ef;DONE'
0a-!"E1@l!<!>'
-1a-%"E:s)%"Ef;DONE'
r1u.3'
>>
q.3"Eq.2j'
q.3V[.1.[.2[.3[.4
q.1j0l
m(m.m& BLISS Next Token)u.4u.3
q.2j
q.3-q.1"L1'
"#0'9[.1.[.2[.3[.4
q.1j
f<!Found!
1f<!Next!
.m(m.m& BLISS Next Token)u.4u.3
q.3j
fwf~IF"E
.,1m(m.m& BLISS Token Search)THEN"Ef;Found'
1;'
fwf~DO"E
.,1m(m.m& BLISS Token Search)WHILEUNTIL"Ef;Found'
1;'
fwf~INCR"E
.,1m(m.m& BLISS Token Search)DO"Ef;Found'
1;'
fwf~DECR"E
.,1m(m.m& BLISS Token Search)DO"Ef;Found'
1;'
fwf~WHILE"E
.,1m(m.m& BLISS Token Search)DO"Ef;Found'
1;'
fwf~UNTIL"E
.,1m(m.m& BLISS Token Search)DO"Ef;Found'
1;'
fwf~ELSE"E
.+4m(m.m& BLISS Next Token)u.4u.3q.3j
1;'
f;Found
>
>
q.3,q.4(q.2j)W.[.1
<
<
-:s;)%!"Ebj1;'
"#1a-!"E!<!>'
1a-;"E1;'
-:s%('
>
>
.(q.1j):.[.1j
.,(0l).:fb%(!"E'
-^fq 	[.2j
.(q.1j)?
m.m& BLISS End Prev Stmtm.vMM & BLISS End Prev Stmtw
m.m& BLISS Next Tokenm.vMM & BLISS Next Tokenw
m.m& BLISS Indent After Stmtm.vMM & BLISS Indent After Stmtw
m.m& BLISS Indent After New Blockm.vMM & BLISS Indent After Begin Stmtw
m.m& BLISS Indent After Endm.vMM & BLISS Indent After End Stmtw
m.m& BLISS Indent Unfin Stmtm.vMM & BLISS Indent Unfin Stmtw
m.m& BLISS Indent Unfin If Stmtm.vMM & BLISS Indent Unfin If Stmtw
m.m& BLISS Indent Unfin Compm.vMM & BLISS Indent Unfin Else Stmtw
m.m& BLISS Indent Unfin Compm.vMM & BLISS Indent Unfin Do Stmtw
m.m& BLISS Indent Unfin Compm.vMM & BLISS Indent Unfin Incr Stmtw
m.m& BLISS Indent Unfin Compm.vMM & BLISS Indent Unfin Decr Stmtw
m.m& BLISS Indent Unfin Compm.vMM & BLISS Indent Unfin While Stmtw
m.m& BLISS Indent Unfin Compm.vMM & BLISS Indent Unfin Until Stmtw
m.m& BLISS Last Sub-Stmt Tokenm.vMM & BLISS Last Sub-Stmt Tokenw
m.m& BLISS Indent After Compoundm.vMM & BLISS Indent After If Stmtw
m.m& BLISS Indent After Compoundm.vMM & BLISS Indent After Else Stmtw
m.m& BLISS Indent After Compoundm.vMM & BLISS Indent After Do Stmtw
m.m& BLISS Indent After Compoundm.vMM & BLISS Indent After Incr Stmtw
m.m& BLISS Indent After Compoundm.vMM & BLISS Indent After Decr Stmtw
m.m& BLISS Indent After Compoundm.vMM & BLISS Indent After While Stmtw
m.m& BLISS Indent After Compoundm.vMM & BLISS Indent After Until Stmtw
m.m& BLISS Token Searchm.vMM & BLISS Token Searchw
m.m& BLISS Indent After Routine Stmtm.vMM & BLISS Indent After Routine Stmtw
1,q(1,q.m.Qw)m.Q.
1,m.m^R Indent BLISS Stmtm.QI
1,m.m^R Print Last BLISS Indenterm.Q...?
1,m.m^R Indent for Commentm.Q..;
1,m.m^R Insert BLISS Endm.Q..\
1,m.m^R Global BLISS Commentm.Q...;
1,m.m^R End Global BLISS Commentm.Q...\
1,m.m^R Slurp BLISS To Charm.Q..{
0fo..qBLISS Auto Fill Default(
)m(m.m Auto Fill Mode)
1,1m.LSpace Indent Flagw
	BLISS0Package for editing BLISS code (BLISS Mode).0C Set up for editing BLISS code.
$BLSIND ..D$ is set up for use by BLISS indent macros. (E.g. no special
    Lisp characters, and "words" are $, _, and alphanumerics.
Calls user-providable macro, INIT BLISS MODE, which can put BLISS
    macros into desired qregs.  If no macro exits, calls
    & Default Init BLISS Mode.  See the description of that subr
    for more details on what it does and how to construct your own.^R Indentation via previous statement type.
If there are non-label tokens to left, then just calls
    ^R BLISS Indent Relative.
If non-null arg, calls ^R Indent Nested.
Calls macros to indent statements after prev stmt's type, e.g.
    looks for macro named & BLISS Indent After Begin Stmt.
None found, it will call & BLISS Indent After Stmt.
If the previous statement was unfinished (i.e. we are not indenting
    a new statement really), then macros such as & BLISS Indent Unfin If Stmt
    are called.
The default unfinished-stmt macro is & BLISS Indent Unfin Stmt.
^R Print Last BLISS Indenter will print the name of the indentation
    macro called.^R Insert end and show matching block.
Indents if no whitespace to left of cursor.
Displays buffer around matching block statement.
    ARG = number of seconds to display there.
Inserts a comment after the "end;" to show what was ended, e.g.
    "%( begin-name )%"  or  "%( if-begin )%".
    The MARK is left before this comment, point after so you can easily
    delete it with ^R Kill Region.	S Return label for statement at ARG.
ARG: Point within statement.
Returns string containing label, or
Returns 0 if no label found.	C Indents each line from here to MARK.
On each line it:
    moves past labels, comments to first token,
    then calls ^R Delete Horizontal Space,
    then calls ^R Indent BLISS Stmt.
Leaves mark and point around changed region, and old text in kill stack.2^R BLISS Indent Relative to last line's words.
Successive calls get successive indentation points;  each call
    aligns under ARGth next word in previous line.
Words are separated by spaces, tabs, underscores, commas, periods.
To facilitate moving into a line, and changing an indentation, if
    there is whitespace to the right and left (i.e. this is a new
    indent call here), then the cursor is moved one column left..^R Call ^R for large comment.
While in global comment ^R:
Comment column is set to 10,
^R Indent for Comment is called initially,
MM Auto Fill Mode$ is entered with auto-indent,
$Comment Begin$ is set to "%(*" to mark global comments.
"%(** )%" (comment with just a *) expand into %( * * *... )%,
    aligned with any surrounding global comments (for boxes),
    or if no surrounding comments expand into $BLISS Star Line Width$ wide
    (default is 51).
When ^R returns, comment-ends within each global comment will be
    vertically aligned.=S Ends within contiguous global comments.
Contiguous global comments are comments starting with "%(*", on
    successive lines.
Contiguous global comments have their comment-ends aligned vertically.
If a global comment consists soley of "*", i.e. it is "%(** )%",
    then it will expand out into a "%( * * * * ...* )%" comment, aligned
    with its contiguous global comments.  If no contiguous comments,
    expands out into %( * *...)%, $BLISS Star Line Width$ wide, default 51,
    and extending to left margin.
After alignment, "%(*" is replaced by "%( ".W^R Exit large comment ^R.
Calls ^R End Comment, then exits ^R, so that global comment ^R
    is ended, and comment column will be reset to its old (one-line
    comment form) value.
If given an ARG, will inhibit alignment of global comment-ends, by
    replace all global comment-starts ("%(*") by regular comment-starts
    ("%( ").4^R Prev line back to CHAR moved to point, indented.
Non-comment text from previous line (back to CHAR typed) is moved
    onto the current line, after indentation, and then ^R Indent
    BLISS Stmt is called to re-align.  Now that the prev line is
    changed, things might look better.
Any comment on prev line is left there, and ^R Indent for Comment is
    called on it to align it after the text is removed from before it.%^R Print macro name in echo area.8S Default after-indent, same as prev stmt.
If no prev stmt (i.e. 1st stmt in buffer), then indentation is
given by the variable $1st Stmt Indentation$, default = 10.
ARG1 -> where to indent.
ARG2 -> token for previous statement.
Returns two vals surrounding insertion.
Leaves pointer after indentation.%S Handle indentation for stmt after IF etc.
Compound stmts are IF-, ELSE-, INCR-, WHILE-, ...
ARG1 -> where to indent.
ARG2 -> token for previous statement.
Returns two vals surrounding insertion.
Leaves pointer after indentation.
If (e.g.) IF ... BEGIN, then indent aligns with BEGIN, +
    $COMP BLOCK Indentation$, i.e. $...$ over from BLOCK.
    (Default $COMP BLOCK$ is 0.)
If non-BLOCK, aligns with IF.ES Indent after BEGIN.
ARG1: where to indent.
ARG2: BEGIN token.cS Next statement indented more, for BEGIN etc.
ARG1 -> where to indent.
ARG2 -> BEGIN token.
2 Vals returned, around indentation.
Pointer left after indentation.
Indentation aligns with whatever follows the BEGIN, etc.KS Indent $1st Routine Stmt Indentation$ amount.
If no $...$ then default 0.
ARG1 -> where to indent.
ARG2 -> ROUTINE token.
Returns two vals around indentation.
Leaves pointer after indentation.-S Insert indentation by matching BEGIN/ROUTINE
ARG1 -> where to indent.
ARG2 -> END token.
Returns 2 vals around indentation.
Returns with pointer after indentation.ZS Indent new line of unfinished statement.
Default for indenting unfinished statements. Does:
Case1: If there is an open paren, aligns with next non-white.
Case2: If $Unfin Stmt Indentation$ is defined it will indent
       $Unfin Stmt Indentation$ more than the start of the stmt.
Case3: If prev line contains start of stmt, aligns with 1st word after
       beginning of stmt token (which may be part of token).
Case4: Calls ^R BLISS Indent Relative.
ARG1 -> where to indent.
ARG2 -> token starting unfinished statement.
Returns 2 vals around indentation.
Point left after indentation.7S Indent new line of unfinished IF statement.
Indents same amount as the IF if the THEN hasn't occured yet.
If THEN has occured, just calls & BLISS Indent Unfin Stmt.
ARG1 -> where to indent.
ARG2 -> token starting unfinished statement.
Returns 2 vals around indentation.
Point left after indentation.oS Indent new line of unfinished compound.
Indents same amount as the last sub-statement so far.
ARG1 -> where to indent.
ARG2 -> token starting unfinished statement.
Returns 2 vals around indentation.
Point left after indentation.+C Returns next token which isn't BEGIN.BS Return ptrs around next token in buffer.
ARG gives place to start from in buffer.
    No ARG means here.
ARG,: Labels are skipped unless pre-comma argument given.
Comments are skipped.ZS Searches for = , but not within parens.
Comments are skiped.
ARG1 is point in buffer to start from.
Returns 0 if search unsuccessful: end of statement (;) or end of buffer
 reached first, non-0 if successful.aS Searches for a token in a statement.
Comments are skipped.
ARG1 is point in buffer to start from.
ARG2 is iteration: i.e. search for ARG2th token.
STRINGARG is token to search for.
Returns 0 if search unsuccessful: end of statement (;) or end of buffer
    reached first, non-0 if successful.
Returns with pointer after token if successful.S Returns 0 if no tokens to left on line.
ARG is pointer into line where to look left from.
Labels or comments are not counted.lS Finds last stmt in compound stmt (if, on).
If current statement is "IF a THEN IF b THEN c;" this subr will return
    ptrs surrounding c's statement token.
ARG1 points to statement token from where to start, i.e. the compound
    statement's token (IF).
    If ARG1 points to a non-compound statement token, pointers around
    that token are returned.S Return ptr to end prev ARG'th statement.
Value returned points to the semicolon.
ARG = 1 means find first end-; looking back from here.PS From point, move left on line past comment.
ARG is ptr into some line to check left from.
Returns ptr to before comment and white-space before it.
If no comment on line, no movement: ARG is returned./S Put macros into $MM ...$ qregs for speed.GS Default setup for BLISS mode.
It sets up the following characters for this mode and buffer:
    RUBOUT	Tab-hacking rubout,
    C-RUBOUT    Normal rubout,
    TAB 	^R Indent BLISS Stmt,
    C-M-?	^R Print Last BLISS Indenter,
    M-; 	^R Indent for Comment,
    M-\ 	^R Insert BLISS End,
    C-M-;	^R Global BLISS Comment,
    C-M-\	^R End Global BLISS Comment,
    M-{ 	^R Slurp BLISS To Char.
Turns on Auto Fill if $BLISS Auto Fill Default$ is non-0.
Users who want to provide their own MM Init BLISS Mode$ can make ^R keys
    (q-registers) and variables local to this mode and buffer by using the
    following subroutine which is global to Init BLISS Mode:
    .Q: Make Local Q-register!BLISS Mode
^R Indent BLISS Stmt
^R Insert BLISS End
& BLISS Get Statement Label
Indent BLISS Region
^R BLISS Indent Relative
^R Global BLISS Comment
& Align Global BLISS Comment Ends
^R End Global BLISS Comment
^R Slurp BLISS to Char
^R Print Last BLISS Indenter
& BLISS Indent After Stmt
& BLISS Indent After Compound
& BLISS Indent Unfin Begin Stmt
& BLISS Indent After New Block
& BLISS Indent After Routine Stmt
& BLISS Indent After End Stmt
& BLISS Indent Unfin Stmt
& BLISS Indent Unfin If Stmt
& BLISS Indent Unfin Comp
& BLISS Next Non-Begin Token
& BLISS Next Token
& BLISS Skip Decl
& BLISS Token Search
& BLISS Tokens to Leftp
& BLISS Last Sub-Stmt Token
& BLISS End Prev Stmt
& Back Over BLISS Line Comment
& Setup BLISS Library
& Default Init BLISS Mode
T+8+fq(+4)[20[3
<%3,-q2f2u3q3&1@;q3"l0'>
f[BBindq3-1*5,q3*5g2q:..o(0)+q2