Google
 

Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - emacs/pascal.elib
There are no other files named pascal.elib in the archive.
@W
[0+8+FQ(+4)[1
0FO10F"G+Q1'
+FQ()+4U1
FQ1"L0'
,Q1:M(Q1+4(]1]0))
   	
>k(',%'&(0'P9(HZWTpc+Tm%x'pX# G)D&B5X	=,sF<xR8s^4@gVhrCbsA@:C%#3$?#=J5fV\j^U
hHqLz5f	HU	R2	I	;
	,"E	7RH	CRj	MSt	{@7
	D/
4

&y
<j,
Gly
Ri
^i>
jin
|
Vbl?*h\8iSE
:Sn@^m~ikuv
H
H

[
 
.
;
m
FcM
Td+
cdo
rev
m?`
}+tN9f'JgYfjgpv

m\)&p1=(K=Vu/geKu[
	4+8oD N{6_kkni{_>_9
!&& Align Global Pascal Comment Ends& Back Pair& Back Paren& Back to Chars& Back to Word& Back to Word Over Paren& Compile Compilation& Default Init PASCAL Mode& Forward Paren& Forward To Chars& Forward to Word& In ErrList Mode& Indent Line& Join Line& Keyword Search& Out ErrList Mode& Pascal DO-OF& Pascal REPEAT-RECORD& Pascal Subroutine& Read Keywords& Save Errors& Set Group Value& Set Major Variable& Set minor variable& Setup PASCAL Library& Setup variablesBack LevelCapitalize Pascal KeywordsErrList ModeForward LevelGlobal Pascal CommentIndent Pascal RegionMark ProcedureNo Comment Search#Pascal Expand Abbrevs in RegionPASCAL ModePrint Last Pascal IndenterSame Capitalization^R Find Unmatched Paren^R Indent PASCAL Stmt^R Insert Comment^R Insert Pascal End^R Next Error^R Pascal BEGIN^R Pascal CASE^R Pascal ELSE^R Pascal End^R Pascal FOR^R Pascal FUNCTION^R Pascal IF^R Pascal Indent Relative^R PASCAL New Line^R Pascal PROCEDURE^R Pascal PROGRAM^R Pascal RECORD^R Pascal REPEAT^R Pascal WHILE^R Pascal WITH^R Plus One^R Slurp Pascal to Char^R Start String^R Toggle Indentation~DIRECTORY~,~DOC~ & Align Global Pascal Comment Ends~DOC~ & Back Pair~DOC~ & Back Paren~DOC~ & Back to Chars~DOC~ & Back to Word#~DOC~ & Back to Word Over Paren~DOC~ & Compile Compilation$~DOC~ & Default Init PASCAL Mode~DOC~ & Forward Paren~DOC~ & Forward To Chars~DOC~ & Forward to Word~DOC~ & In ErrList Mode~DOC~ & Indent Line~DOC~ & Join Line~DOC~ & Keyword Search~DOC~ & Out ErrList Mode~DOC~ & Pascal DO-OF ~DOC~ & Pascal REPEAT-RECORD~DOC~ & Pascal Subroutine~DOC~ & Read Keywords~DOC~ & Save Errors~DOC~ & Set Group Value~DOC~ & Set Major Variable~DOC~ & Set minor variable ~DOC~ & Setup PASCAL Library~DOC~ & Setup variables~DOC~ Back Level$~DOC~ Capitalize Pascal Keywords~DOC~ ErrList Mode~DOC~ Forward Level~DOC~ Global Pascal Comment~DOC~ Indent Pascal Region~DOC~ Mark Procedure~DOC~ No Comment Search)~DOC~ Pascal Expand Abbrevs in Region~DOC~ PASCAL Mode$~DOC~ Print Last Pascal Indenter~DOC~ Same Capitalization!~DOC~ ^R Find Unmatched Paren~DOC~ ^R Indent PASCAL Stmt~DOC~ ^R Insert Comment~DOC~ ^R Insert Pascal End~DOC~ ^R Next Error~DOC~ ^R Pascal BEGIN~DOC~ ^R Pascal CASE~DOC~ ^R Pascal ELSE~DOC~ ^R Pascal End~DOC~ ^R Pascal FOR~DOC~ ^R Pascal FUNCTION~DOC~ ^R Pascal IF#~DOC~ ^R Pascal Indent Relative~DOC~ ^R PASCAL New Line~DOC~ ^R Pascal PROCEDURE~DOC~ ^R Pascal PROGRAM~DOC~ ^R Pascal RECORD~DOC~ ^R Pascal REPEAT~DOC~ ^R Pascal WHILE~DOC~ ^R Pascal WITH~DOC~ ^R Plus One!~DOC~ ^R Slurp Pascal to Char~DOC~ ^R Start String~DOC~ ^R Toggle Indentation~DOC~ ~FILENAME~~FILENAME~
~INVERT~B	0FO..qPascal Loaded"E
0m.vInsert Dispatch
m(m.mMake Prefix Character)Insert Dispatch(
)M.VMM ^R Pascal Insert Statement
QPrefix Char List[0
:I*0C-M-.  QInsert Dispatch
UPrefix Char List
m(m.m& Read Keywords)
m(m.m& Setup Variables)
[1[2
m.vPascal Compile Command
@:iPascal Compile Command|
FSDFN1SDFN2Compiler Switches:F"Lw:i*'[4
F+
0FZ do emacs:pascal.mic 5,6,4

0FO..qAfter Compilation Hook[7
Q7"NM7'"#0U..H-1FSPJATY'
|
M.VError Vector
M.VNum Errors
M.VError Index
M.VOld After Compilation Hook
M.VOld Compiler Switches
M.VOld Compiler Filename
M.VOld Compile Command
0FO..qAfter Compilation HookM.VAfter Compilation Hook
0FO..qCompiler SwitchesM.VCompiler Switches
0FO..qCompile CommandM.VCompile Command
@:i1|(
0fo..qErrList Mode"n
i ErrList'
)|
0fo..qSet Mode Line Hooku2
q2"eq1'"#:i*21'm.vSet Mode Line Hookw
0FO..qErrList ModeU1
0M.VErrList Mode
m.cErrList Mode!* (Pascal) Save compiler errors when running M-X Compile!
"NQErrList Mode"EM(M.M& In ErrList Mode)1FS Mode Change''
"#QErrList Mode"NM(M.M& Out ErrList Mode)1FS Mode Change''
Q1UErrList Mode
1M.VPascal Loaded
'
zm(m.m & Init Buffer Locals)
1,(:I*(*)M.LComment Startw
1,(:I*(* )M.LComment Beginw
1,(:I* *))M.LComment Endw
1,(:I*)M.LLast Pascal Indenterw
1,0M.LLast Pascal Indent Posw
0@fo..qPASCAL ..D
QD"E
:iD                                                                                                                                        A                             A   AA    A   AA   AA    A    |    (    )(   A    A         A    A    A   AA   AA   AA   AA   AA   AA   AA   AA   AA   AA    A    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   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        
qDM.VPASCAL ..D'
qDm.q..D
1,1M.LCompiler Filename
0@fo..qPASCAL Mode Hook"e
m(m.m& Default Init PASCAL Mode)'
1M(M.M& Set Mode Line)PASCAL

1,0m.LCOMMENT COLUMNw
1,:i*+1m.lcomment roundingw
1,q(1,q.m.Qw)m.Q.
1,(m.mCompile)m.q...,
1,(m.m^R Indent Pascal Stmt)m.q...I
1,(m.m^R Pascal New Line)m.q

1,(m.m^R Slurp Pascal To Char)m.q...{
1,(m.m^R Plus One)m.q...+
1,(m.m^R Start String)m.q...'
1,(m.m^R Next Error)m.q...E
1,(m.m^R Insert Comment)m.q...*
1,(m.mForward Level)m.q...N
1,(m.mBack Level)m.q...P
1,(m.mMark Procedure)m.q...H
1,(m.mIndent Pascal Region)m.q...G
Q...Gm.q..G
Q...Gm.q...\
1,(m.mSame Capitalization)m.q...C
1,(m.mGlobal Pascal Comment)m.q...$
1,(m.mNo Comment Search)m.q...S
1,(m.m^R Pascal Insert Statement)m.q....
QInsert Dispatch
M.M^R Pascal ENDU:R(E)
M.M^R Pascal WHILEU:R(W)
M.M^R Pascal FORU:R(F)
M.M^R Pascal WITHU:R()
M.M^R Pascal IFU:R(I)
M.M^R Pascal ELSEU:R()
M.M^R Pascal PROCEDUREU:R(P)
M.M^R Pascal FUNCTIONU:R()
M.M^R Pascal PROGRAMU:R()
M.M^R Pascal REPEATU:R(R)
M.M^R Pascal BEGINU:R(B)
M.M^R Pascal CASEU:R(C)
M.M^R Pascal RECORDU:R()
M.M^R Pascal BEGINU:R(B)
M.MPrint Last Pascal IndenterU:R(?)
-1@fo..qPascal Auto Fill Default:F"L(
1,1M.LAuto Fill Mode)'W
1,1m.LSpace Indent Flagw
0@fo..qAutomatic Capitalization"N
m(m.mCapitalize Pascal Keywords)'
_0[1QPascal Syntax Table
QPascal Keyword Count<
Q:s(Q1*3+3)&"NU:s(Q1*3+2)'
%1W
>o[v:iv:in
-99@fo..qv[1
m.cv!* (Pascal) !
,nm(m.m& Set Group Value)
Q1+99"NQ1Uv'
E[vQ:Pascal Syntax Table()Uv
[n+1:\Un
-99@fo..qIndent After v[1
m.cIndent After v!* (Pascal) Indent after keyword v!
U:Pascal Syntax Table(n)
Q1+99"NQ1UIndent After v'
|QPascal Syntax Table
m.m& Set Major Variable
MjIndent After Everything361.Default indentation after all keywords
MjBegin-Block Body Indentation21.Indentation after loop constructs
MjIf-Block Body Indentation200.Indentation after IF-group keywords
MjDecl Body Indentation100.Indentation after declaration keywords
MjProcedure Body Indentation40.Indentation for Proc. & Func. Bodies
0[1m.m& Set Minor Variable
QPascal Keyword Count<
Q:t(Q1*3+3)&361."N
Q1*3+1mn'
%1>
-@F 	K
.[w
@MM
0@fo..qFill Prefix[3
fq3"gg3'
"#F@M(M.M^R Indent Pascal Stmt)[x[y'
fsrgetty"e:0t'
Qy,Qwf*0:,.k.[.0fnQ.0J
1:<-M(M.M& Back Paren)>"N
:i*NUP	No Unmatched ParenthesesFSErr'
ff&1"N0@V:'
qComment Start
qb"e:ib;'
0fo..qComment Beginf"Nub'
:i*fo..qComment End
.,.m(m.m& Save For Undo)Insert Comment
.(GbGe),.(FKC)|ff"'E*(0@fo..QIndent Align Only"'E)"E
:iLast Pascal Indenter^R Indent Nested
f@:m(m.m^R Indent Nested)'
FSHPos"N@:m(m.m^R Pascal Indent Relative)'
@f 	K
m(m.m& Indent Line)[x[y
fsrgetty"e
fsechodisAfsechodis
0t'
Qy,QxIQComment StartQComment EndFQs[l[1:I1
0:Ge-32"E1,FQe:GeUe'
<!"!@:f({'s1L.-Z@;
1A-{"EC:S}"E:i*Unmatched {FSERR'!<!>'
!"!1A-'"EC!"!:S'"E!"!:i*Unmatched 'FSERR'!<!>'
1A-("E.+2-Z:"G2A-*"E
2C:S*)"E:i*Unmatched (*FSERR'!<!>'''
QlF=s"E
QlC:Se"E:i*Unmatched sFSERR'!<!>'
1Af1;
1C
>
OQComment StartQComment EndFQe[l[1:I1
0:Ge-32"E1,FQe:GeUe'
<!"!-@:f)}'e1L.-B@;
0A-}"ER-:S{"E:i*Unmatched }FSERR'!<!>'
!"!0A-'"ER!"!-:S'"E!"!:i*Unmatched 'FSERR'!<!>'
0A-)"E.-2-B:"L-1A-*"E
2R-:S(*"E:i*Unmatched *)FSERR'!<!>'''
QlF=e"E
QlR-:Ss"E:i*Unmatched eFSERR'!<!>'
0Af1;
1R
>
@MbABCDEFGHIJKLMNIOPRSTUVWXYZabcdefghijklmnioprstuvwxyz
@MfABCDEFGHIJKLMNIOPRSTUVWXYZabcdefghijklmnioprstuvwxyz
/[1:I1
<Mw)1
.-B@;0A-):@;
0Mp
>
:-1[l
Qt:"L
[.p
[1[9
QPascal Syntax Table
M.M& Back To Chars
M.M& Back To Word
M.MBack Level
.U.pfnQ.pJ
'
<mw.-B"EQl"N:i*Unmatched syntax pairFSERR''
-FWF(X1)L
@:FOt1U9
Q9"G
Q:t(Q9+2)&2."N
-1Mk'
"#
Q:t(Q9+2)&"N
Ql+1Ul'
"#Q:t(Q9+2)&"N
Ql-1Ul''
''
QL@;>
Qt:"L0U..n'
[.pff&1"E0'"#'[l
[1[9
QPascal Syntax Table
M.m& Back To Chars
M.M& Back To Word
.U.pfnQ.pJ
<mw.-B"EQl"N:i*Unmatched block statementFSERR''
-FWF(X1)L
@:FOt1U9
Q9"G
Q:t(Q9+2)&1."N
Ql+1Ul'
"#Q:t(Q9+2)&2."N
Ql-1Ul''
'
QL@;>
0U..n
:F"L0'"#Q9'[.p[d[e
[1[9
QPascal Syntax Table
"L
M.m& Back To Chars
M.M& Back To Word
-1Ud
BUe'
"#
M.m& Forward To Chars
M.M& Forward To Word
1Ud
ZUe'
.U.pfnQ.pJ
<mw.-Qe"E-1'
QdFWF(X1)L
@:FOt1U9
Q9"G
Q:t(Q9+2)&@:;
'
>
0U..n
Q9![.p[tff"E0'"#'[l
M.M& Forward To Chars
.U.pfnQ.pJ
<Mf()
.-B"EQl;
:I*Bad Paren Matching@FSERR
'
1A-("E
Ql-1Ul'
"#Ql+1Ul'
C
Ql@;>
0U..n[.p[tff"E0'"#'[l
M.m& Back To Chars
.U.pfnQ.pJ
<Mb()
.-B"EQl;
:I*Bad Paren Matching@FSERR'
0A-)"E
Ql-1Ul'
"#Ql+1Ul'
R
Ql@;>
0U..n[.pff&1"E0'"#'[l
[1[9
QPascal Syntax Table
M.m& Forward To Chars
M.M& Forward To Word
.U.pfnQ.pJ
<mw.-Z"EQl"N:i*Unmatched block statementFSERR''
FWF(X1)L
@:FOt1U9
Q9"G
Q:t(Q9+2)&1."N
Ql-1Ul'
"#Q:t(Q9+2)&2."N
Ql+1Ul''
'
Ql@;>
0U..nQ9"G
Q:t(Q9+2)&1."N
Mw

0A-
"N
-FWF(X1)L
@:FOt1U9
'''
Q9"G
Q:t(Q9+2)&400."N
-@f	 L0A-
"N
-1,220.M(M.M& Keyword Search)
'''
[1[9[2[i-1[x.[a[c[s:i*
z-.[3fnZ-Q3J
QPascal Syntax Table
M.M& Back to Word over Paren
M.M& Back to Word
M.MBack Level
M.M& Back To Chars
M.M& Forward To Chars
M.M& Back Paren
-10fU1F[VB
1:<-1M(M.M& Back Paren)>"E
:ilIndent Unmatched Open Paren
C@f 	L
oDONE1
'
f]VBw
0:LMo;
.-B"E'
<
0A-;"E-2UxR'
"#
-fwf(x1)L
@:FOt1U9
Q9"G
Qx+1"'E(
Q:t(Q9+2)&141."'N)"N
Q:t(Q9+1)Ux
'
Q:t(Q9+2)&1."N
0@fo..qMatch Block Word"N
:illMatching Block Word
oDONE1''
Q:t(Q9+2)&2."N
FWL
0;
'
'
''
Qx;
Mo
;
.-B@;(0A-
)@;
>
Qx"G:ilIndent After 1
oDone0
'
1@fo..qReindent ENDs"'NUs
<.-B@;
(0A-
)@;
-fwf(x1)L
@:FOt1U9
Q9"G
Q:t(Q9+2)&2."N
Qs"L
0f:Usw
'
-1MkU9
Qs"N
(Qs-.)"G
:ill (Back Over Block)
M(M.M& Join Line)
.-Z(0@fo..qMatch Block Word"E
0L@f	 L'
fsHPOS(
QsJ
)M(M.M& Indent)
0L.Ua
:Ill (Reindented an 1)
)+ZJ0Us'
"#-1Us'
'
'
"#Q:t(Q9+2)"GFWL0;''
'
Mo

>
<.Us
Mo;
.-B@;
0A-;@;
-FWF(X1)L
@:FOt1U9
Q9"'G;
Q:t(Q9+2)&4."N
10.,4.M(M.M& Back Pair)
:ill (Back Over THEN/ELSE)
'
"#
Q:t(Q9+2)&10."NQx+2"N
:ilIndent For ELSEl
oDONE0''
Q:t(Q9+2)&400.@;
'
-1,220.M(M.M& Keyword Search):;
>
QsJ
:ilIndent After Statementl
!DONE0!
M(M.M& Join Line)
0L@f 	L
!DONE1!
Qx"L0Ux'
QlULast Pascal Indenter
.ULast Pascal Indent Pos
FSHPosUi
m..n0u..n
0,Qx+Qim(m.m& XIndent)
Qa,.\ff"E
0@fo..qIndent Align Only"'Em.lIndent Align Only'
"#M.LIndent Align OnlyW'0L.
FN
1,-M(M.mNo Comment Search)procedurefunction"E
:I*Not In A ProcedureFSErr'
M(M.m& Back To Chars);
M(M.M& Forward To Chars)
@F 	
L
-@F 	L
.(
1,M(M.mNo Comment Search)begin
-1M(M.MForward Level)
M(M.M& Forward To Chars);.CM(M.M& Forward To Chars)
@F 	
L
-@F 	L.
)J
0U..n.[.1fnq.1j
[.2
[.4
0[.3
M.M& Back To Chars
-1M(M.MBack Level)fwx.6
.U.2
.(0@fo..qMatch Block Word"E
0L@f	 L'
fshpos[.7)J
f~.6REPEAT
f~.6RECORD
f~.6LOOP
s(*{
@f 	L
.(s}*)fkc-@f 	L),.X.3
'"#
Qr*Qd*Ql"N
1<Q.2J
f~.6BEGIN"E
m(m.m& Back To Word)-fwx.6'
f~.6CASE"E:i.6OF'"#
f~.6THEN"E-sIF'"#
f~.6DO"E-sWITHWHILEFOR'"#
0;'''
.(s.6fkc-@f
	,.x.3>
''
q.1J
0L.U.4@f 	L
Q.1-."G
Q.1J
.,.m(m.m& Save For Undo)Insert Pascal End
'
"#
Q.4,.m(m.m& Save For Undo)Insert Pascal End
0Lq.7m(m.m& Indent)
'
Qr"E
iUNTIL ;.-1u.1'
"#iEND;.u.1'
0@fo..qAutomatic Capitalization"E
-fwfc'
1@fo..qInsert Comments"'N&q.3"N
i gComment Beging.3gComment End
Qr"N.u.1''
q.2j
0@v
FF"E1'"#'*30:w
 QComment StartQComment EndFQs[l[1:I1
0:Ge-32"E1,FQe:GeUe'
:,.f[.2[.1
Q.1,Q.2m(m.m& Save For Undo)Pascal Region Indent
q.1j0L(z-q.2)u.2
<<@F
	 L
(.-z-2);
2f~s"E:se"Ez-Q.2J''"#-;'>
.-(z-q.2);
0l@f	 K
m(m.m& Indent Line)w
l>
(z-q.2)j
i


2rm(m.m& Indent Line)w
0l-2dk
q.1
z-q.2j
0@FO..QPascal Abbreviations In Use"N
m(m.mExpand Abbrevs In Region)'
q.1,.[1,[2
Fwl
ff"N[a
Qa"L-fwfc'
Qa"E-m(m.m^R Uppercase Initial)'
Qa"G-fw@fc'
'
-fwx1
0[Case Replace
1MMReplace String11
[qLast Pascal Indenter[.1
:iLast Pascal Indenter.1(^R Pascal Indent Relative)
[1@:I1|qLast Pascal Indenteru.1
:iLast Pascal 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.,;	 
@F.,;	 L
>
FSHPOS(QQ,QPK
):M(M.M& Indent)fQComment StartQComment End
0@fo..qGlob of Comments Flag"N
f:@m(m.m^R Indent for Comment)'
0m.vGlob of Comments Flag
1[Glob of Comments Flagw
:i*Global Comment[..j
10fo..qGlobal Comment Column[Comment Column
0[Comment Begin
:i*s*[Comment Start
1[Space Indent Flag
1[Auto Fill Mode
@m(m.m^R Indent for Comment)
w
0f"NL'
fsz-.f[vzw
m(m.m& Align Global Pascal Comment Ends)
zjf]vz
.f[vb
m(m.m& Align Global Pascal Comment Ends)
[.1[.2[.3
bj
<:ss*;fkc
0u.1
0u.2
0u.3
.(<:fbs*;
%.3w
.-1f 
(1+FQe)f=*e"E1u.2'
:fbe;
fshpos,q.1fu.1w
l>
fsz-.f[vzw
)j
q.3-1"E
q.2"N
-@f 	bk
51@fo..qPascal Star Line Widthu.1''
Q.1-fQsU.1
Q.2"N
(q.1-qComment Column-1-FQs&1)+q.1u.1'
<:se;
-(FQs+FQe+2)f=s *e"E
FQe-1:F"G1'R
q.1-(fshpos)/2<i* >
'
"#FQe-1:F"G1'Rrq.1m(m.m& Indent)f'
l>
zjf]vzw
>
[.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 Pascal 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 Pascal Stmt)f
z-q.1jw1 qLast Pascal Indenter[.0
fsechodisplayw
Cfsechodisplayw
@ft.0
0fsechoactivew
.[1fnQ1J
QLast Pascal Indent PosJ0@V
FF&1"E1'"#'*30:
%[.1
ff"E1u.1'"#u.1'
q.1"E0@FO..QPascal Abbreviations In Use"N
0m(m.mWord Abbrev Mode)
0m.vPascal Abbreviations In Use
0m.lAutomatic Capitalization''
0@FO..QPascal Abbreviations In Use"N'
1m.vPascal Abbreviations In Use
1m.lAutomatic Capitalization
0@fo..qWORDAB Loaded"E
m(m.mLoad Library)WORDAB
1m.vWORDAB Loaded'
m(m.mWord Abbrev Mode)
m(m.mRead Word Abbrev File)EMACS;PASCAL DEFN
.,:f:[aJ.-Z[z
M.m& Back To Chars
M.m& Back To Word
M.m^R Abbrev Expand Only
0A"C-FWLFWL'
<Mw
Qa-.;
-fw(Me):J
>
QaJQz+Z
.,:FF"E10[0'"#
:"G10[0'"#[0''
i''RQ0, i
Z-(.+1)[1Q0R
1[Overwrite Mode
[..J:I..JFill in string (Ovwrt) 
.-1,.+Q0+1
Z-Q1J0i[a.(
<-FWL-@F 	L.-B@;
(0A-."'E)(0A-,"'E)+(0A-["'E)+(0A-]"'E);>
@F 	L
.[1)J
Q1,.M(M.M& Save for Undo)Plus One
M.VWord Abbrev Mode"N
m(m.m^R Abbrev Expand Only)'
.(-@f 	L
Q1,.Xa
)J
I:= GaI + 1;Q1,.,QPascal Syntax Table
[c:ic
[e:ie
[d:id
FF*[b
Qb"L-Qb+1'"#.,.'M(M.M& Save for Undo)Insert c Statement
.[p.[s
.(0L@F 	LQp-."LQpJ'fsHPos[1)J
0@fo..qe on same line*(Qb:"'G)"E
4@FOtDOf"LW0'+'Q1[2
Qb:"G4@FOtef"LW0'+'(
)Q2U3
fsHPos,Q1m(m.m& XIndent)Ic #d
Qb:"G
0@fo..qe on same line"Ei

0,(Q2)m(m.m& XIndent)'"#i '
Ie'
Qb"L.
0@fo..qAutomatic Capitalization"E
Qs,.fc'
-Qb+1:L
Q3-Q1m(m.m^R Indent Rigidly)
.(W)J
.Us'
"#i

0,Q3m(m.m& XIndent)'
Qb:"G
i

0,(Q2)m(m.m& XIndent)
IEND;1@fo..qInsert Comments"Ni gComment BegingcgComment End''
0@fo..qAutomatic Capitalization"E
Qs,.fc'
.[rQpJs#-DQp,Qr-1,Fm(m.m& Pascal DO-OF)WHILEBEGIN DO*Fm(m.m& Pascal DO-OF)FORBEGIN DO+Fm(m.m& Pascal DO-OF)WITHBEGIN DO;1M.LOF On Same Line
Fm(m.m& Pascal DO-OF)CASEOFzQPascal Syntax Table
FF*[b
.[p.[s
.(0L@F 	LQp-."LQpJ'fsHPos[1)J
Qb"L-Qb+1'"#.,.'M(M.M& Save for Undo)Insert IF Statement
1@fo..qTHEN on same line"E4@FOtIFf"LW0'+'(
)Q1[2
0@fo..qBEGIN on same line*(Qb:"'G)"E
4@FOtTHENf"LW0'+'Q2[3
Qb:"G4@FOtBEGINf"LW0'+'(
)Q3U4
IIF #
1@fo..qTHEN on same line"Ei

0,Q2m(m.m& XIndent)'"#i '
ITHEN'
Qb:"G
0@fo..qBEGIN on same line"Ei

0,Q3m(m.m& XIndent)'"#i '
IBEGIN'
Qb"L.
0@fo..qAutomatic Capitalization"E
Qs,.fc'
-Qb+1:L
Q4-Q1m(m.m^R Indent Rigidly)
.(W)J
.Us'
"#i

0,Q4m(m.m& XIndent)'
Qb:"G
i

0,Q3m(m.m& XIndent)
IEND;1@fo..qInsert Comments"Ni gComment BeginiIFgComment End''
0@fo..qAutomatic Capitalization"E
Qs,.fc'
.[rQpJs#-DQp,Qr-1PQPascal Syntax Table
FF*[b
.[s
Qb"L.(-Qb+1L.[y)J'"#.[y'
M.m& Back To Chars
M(M.m& Back to Word);]b
(0A-;)"E
.-1,QyM(M.M& Save for Undo)Insert ELSE Statement
-D(Qs-1)Us'
"#.,QyM(M.M& Save for Undo)Insert ELSE Statement'
.(QsJ)Us
Qs[x
0@FO..QELSE On Same Line"NQSJI '
.[p
.(0L@F 	LQp-."LQpJ'fsHPOS[1)J
0@fo..qBEGIN on same line*(Qb:"'G)"E
4@FOtELSEf"LW0'+'Q1[2
Qb:"G4@FOtBEGINf"LW0'+'(
)Q2U3
IELSE
Qb:"G
0@fo..qBEGIN on same line"Ei

0,Q2m(m.m& XIndent)'"#i '
IBEGIN'
Qb"L.
0@fo..qAutomatic Capitalization"E
Qs,.fc'
-Qb+1:L
Q3-Q1m(m.m^R Indent Rigidly)
.(W)J
.Us'
"#i

0,Q3m(m.m& XIndent)'
i#
Qb:"G
i

0,Q2m(m.m& XIndent)
IEND;1@fo..qInsert Comments"Ni gComment BeginiELSEgComment End''
0@fo..qAutomatic Capitalization"E
Qs,.fc'
.[rQxJ
s#-D
Qx,Qr-1aQPascal Syntax Table
0@fo..qAutomatic Capitalization
[n[c[d[s[g
FF[b
:ic
:is
.Up
.,.M(M.M& Save for Undo)insert c block
.(0L@F 	LQp-."LQpJ'FSHPos[1)J
Q1+(4@fo..qc Body Indentationf"LW0')[2
Q2+(4@FOtBEGINf"LW0')[3
Q1+(4@FOtcf"LW0')[4
gci Qa"E-fwfc'
:i*Type c Name and Arguments (End with C-M-Z)[..J
.UgZUd]..J
Qgj@f 	
LFWXn
Qg+Z-QdJ
0A-;"NI;'
i
i

Qb"E
0,Q4m(m.m& XIndent)
IVAR #

'Qa"E-fwfc'
0,Q2m(m.m& XIndent)
IBEGINQa"E-fwfc'
1@fo..qInsert Comments"Ni gComment BegingngComment End'I

0,Q3m(m.m& XIndent)
Qb:"EI#'I

0,Q2m(m.m& XIndent)
IENDgsQa"E-fwfc'
1@fo..qInsert Comments"Ni gComment BegingngComment End'
.[rQpJs#-DQp,Qr-1,F@m(m.m& Pascal Subroutine)FUNCTION;-F@m(m.m& Pascal Subroutine)PROCEDURE;+F@m(m.m& Pascal Subroutine)PROGRAM.1fm(m.m& Pascal REPEAT-RECORD)REPEATUNTIL/fm(m.m& Pascal REPEAT-RECORD)RECORDENDLQPascal Syntax Table
FF*[b
[c:ic
[d:id
Qb"L-Qb+1'"#.,.'M(M.M& Save for Undo)Insert c Statement
.[p.[s
.(0@fo..qMatch Block Word"E
0L@F 	LQp-."LQpJ''
fsHPos[1)J
Q1+(4@FOtcf"LW0')[2
Ic
Qb"L.
0@fo..qAutomatic Capitalization"E
Qs,.fc'
-Qb+1:L
Q2-Q1m(m.m^R Indent Rigidly)
.(W)J
.Us'
"#i

0,Q2m(m.m& XIndent)'
i

0,Q1m(m.m& XIndent)Id#;
0@fo..qAutomatic Capitalization"E
Qs,.fc'
.[rQpJs#-DQp,Qr-1<QPascal Syntax Table
FF*[b
Qb"L-Qb+1'"#.,.'M(M.M& Save for Undo)Insert BEGIN/END
.[p.[s
.(0@fo..qMatch Block Word"E
0L@F 	LQp-."LQpJ''
fsHPos[1)J
Q1+(4@FOtBEGINf"LW0')[2
IBEGIN
Qb"L.
0@fo..qAutomatic Capitalization"E
Qs,.fc'
-Qb+1:L
Q2-Q1m(m.m^R Indent Rigidly)
.(W)J
.Us'
"#i

0,Q2m(m.m& XIndent)'
i#

0,Q1m(m.m& XIndent)IEND;
0@fo..qAutomatic Capitalization"E
Qs,.fc'
.[rQpJs#-DQp,Qr-1BFF-1[21,FSearch String: [1
"'L*2+1[3
0FO..qComment Start
FQs:"G:I*;Us'
0FO..qComment End
FQe:"G:I*
Ue'
Q3"LQe(QsUe)Us'
.[.1fnq.1j
<Q3:Ss1F"E
:F"L:i*SFL	Search Failed?FSErr'0
'+1"N
-Q2;
(Q3+1/2A"'B)&(FK+1-(Q3+1/2)A"'B):;
'
Q3:Se"E:i*Unmatched Open CommentFSErr'
>
0U..n
-13ff"EQErrList Mode"'E'"#'UErrList Mode
&[1[5
0FO..qCompiler FilenameUOld Compiler Filename
0FO..qAfter Compilation HookU1
Q1UOld After Compilation Hook
Q1"E:i1'
@:iAfter Compilation Hook|1M(M.M& Compile Compilation)
0U..H-1FSPJATY|
0FO..QCompiler SwitchesU1
Q1UOld Compiler Switches
Q1"E:i1'
0FO..QCompile CommandU1
Q1UOld Compile Command
Q1"E:i1
0FO..qCompiler Filename"G
QPascal Compile CommandUCompile Command
''
CQOld After Compilation HookUAfter Compilation Hook
QOld Compiler SwitchesUCompiler Switches
QOld Compile CommandUCompile Command
QOld Compiler FilenameUCompiler Filename
X[0
QBuffer NameU0
[Previous Buffer
m(m.mSelect Buffer)*LST*
Q1FSDFILE
F6LSTFSDFN2
0FSDVERS
1:<-1m(m.mVisit File)
@ED
>"N:i*No Listing File
FG'
m(m.m& Save Errors)
Q0m(m.mSelect Buffer)M[a[b[e1[p[l[c[m0[i
100Ua
(Qa*4)*5FSQVectorUb
J
<
0Ue
<:s
  *****
;
0A-
"EsPage \Up'
"#-1Ue0;'>
Qe;
-1L@f 	L\Ul
1L8C
.Um0Uc
<
@f* 	f(+QcUc)L
1A-^:@;
QpU:b(Qi*4)
QlU:b(Qi*4+1)
QcU:b(Qi*4+2)
.(QmJ
1L14C1X:b(Qi*4+3)
.Um)J
%iW
1C%cW
>
>
QbUError Vector
QiUNum Errors
0UError Index
r[i[m[0QError Vector
QError Index-QNum Error"G0UError Index'
%Error IndexUi
Qi-QNum Error-1"E@FT(No More Errors)
'
"#
J
Q:b(Qi-1*4)-1S

Q:b(Qi-1*4+1)-1L
Q:b(Qi-1*4+2)C
Q:b(Qi-1*4+3)Um
@FTm
'
1fsechoactive
,QBuffer NameU0
[Previous Buffer
m(m.mSelect Buffer)*SYN*
1:<m(m.mVisit File)emacs:pascal.syn
>"N:i*No Pascal Syntax File
FG'
Hm(m.m& Count Lines)m.vPascal Keyword Count
QPascal Keyword Count*3+1*5FSQVector
3U:s(0)
QsM.VPascal Syntax Table
0[x
<@f 	
L
.-Z;
FWX:s(%x)FWL
@f 	L
:\U:s(%x)
@f 	L
2f[IBase:\U:s(%x)F]IBase
1L
>
Q0m(m.mSelect Buffer)
m(m.mKill Buffer)*SYN*

PASCALpPackage for editing Pascal code (Pascal Mode).
See the infoonodeiEPASCP(DIR/EMACS/PASCAL) for more details.,S Initialize data structures of the mode
Pascal mode is fully documented in the info node Pascal under Emacs.
"(* " and " *)" become comment delimiters.
Calls user-providable macro, PASCAL Mode Hook, which can put pascal
functions into desired keys.  If no hook exits, calls & Default Init PASCAL
Mode.  See the description of that subr for more details on what it does and
how to construct your own.  The suggestion is that your PASCAL Mode Hook call
& Default Init PASCAL Mode then change anything you want different.vC Default setup for PASCAL mode.
It sets up the following characters for this mode and buffer:
    RUBOUT	Tab-hacking rubout
    C-RUBOUT	Normal rubout
    LINEFEED	Insert CR and do ^R Indent Pascal Stmt

See Pascal info node (file INFO:EPASC, node DIR/EMACS/PASCAL) for
description of other key settings.
Turns on Auto Fill if Pascal Auto Fill Default is non-0.<S Set a group of vars in Pascal Syntax Table.
First arg is val to set to.  Second arg is bit mask:  set words which
have one of those bits set in second value in Pascal Syntax Table.S Set up one of the controlling vars to set
dependant vars.  Var name is first string arg.  Match val is second.
Comment is third.}S Set up a normal var of name "Indent After x"
to automatically set pascal keyword var x.  Number Arg is index in table.:S Set up indentation vars to interface to syntax table9^R Inserts CRLF, then indents the second line.
Any spaces before the inserted CRLF are deleted.
If there is a Fill Prefix it is used to indent, else calls 
^R Indent Pascal Stmt.^R Show unmatched paren if there is one.
Argument is number of seconds to stay at paren, if no argument stays there
permanently.K^R Insert comment here (don't move to do so).
Can be undone with UNDO.^R Indentation for Pascal code.
If numeric arg, calls ^R Indent Nested,
  Else if not at left margin, calls ^R PASCAL Indent Relative.
  Else parses back to calculate proper indentaion, except setting the
    variable Indent Align Only to non-zero will make it always just
    align (call ^R Indent Nested).

Print Last Pascal Indenter will print the name of the indentation
    function called.PS forward skipping comments & quoted strings
up to character in string arg.tS back skipping comments & quoted strings,
TO any character are passed in the string argument (or beg. of file))S Backward over comments to a letter.7S Forwards over comments to a letter or string arg.{S back to word + string arg, skipping parens
Assumes M-X Back To Word is in Q-Reg w and M-X & Back Paren is in Q-Reg pC Moves back over a class of matched objects (like THEN & ELSE)
in which the matching is subservient to the block matching.
Assumes it is already <arg> deep. (arg = -1 means starting behind an END).
If Qt is less than zero, we assume we are being called from & Indent Line{C Moves back to beyond a BEGIN/END block.
Assumes it is already <arg> deep. (arg = -1 means starting behind an END).
S Search for a keyword matching second arg.
First arg is direction of search.
Returns -1 for failing search, index of keyword found for successtS Moves Forward over matching parens.  Assumes it is
already <arg> deep. (arg = -1 means starting after a "(").
S Moves back over matching parens, not confused by comments. 
Assumes it is already <arg> deep. (arg = -1 means starting behind a ")").~C Moves Forward to beyond a BEGIN/END block.
Assumes it is already <arg> deep. (arg = -1 means starting after a BEGIN).
S Macro to move back to statement start when parse is at
a THEN or DO.  Assumes all the state of & Indent Line and modifies it.QS Assumes it's starting at the start of a line with no
existing indentation.^R Turn off or on PASCAL Mode indentation.
With no arg arg, toggles value of Indent Align Only; otherwise puts arg
in Indent Align Only.UC Set point and mark around current procedure.
 Doesn't work for nested procedure definitions.
 Comment lines immediately before the procedure and blank lines after
 it are considered part of the procedure.W^R Insert end and show matching block.
Indents under matching BEGIN, LOOP, CASE, RECORD, or REPEAT.
Displays buffer around matching block statement.
    ARG = number of seconds to display there.
Inserts a comment after the "END;" to show what was ended.
    If the "BEGIN" is commented, it copies down that comment,
    otherwise it tries to construct one from the code. e.g.
    "(* while not eoln *)"  or  "(* for i:= 1 to 7 *)".
    If you don't like the comment you can kill it with ^R Kill Comment.

If matching block is REPEAT, inserts UNTIL and puts point between UNTIL and ;.C Indents each line from here to MARK.
On each line it:
    moves past comments to first token,
    kills indentation,
    then calls ^R Indent Pascal Stmt.
Leaves mark and point around changed region. Can be fixed with M-X Undo.
At end, expands all abbreviations in the region if in capitalize mode.

This subroutine is NOT recommended for any large blocks (over 20 lines)
of code, because there are a few special cases which are indented wrong,
(mainly between declarations and BEGIN) and it is very inefficient.CC Standardizes capitalization of next word.
No argument => same as it is now;
Neg argument => all are lower case;
Zero argument => all are capitalized;
Pos argument => all are upper case.2^R Pascal 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, semicolons, 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.-C Recursive edit for large block of comments.
Comment column is set to Global Comment Column, auto fill mode is turned on,
^R Indent for Comment is called initially, Comment Start is set to "(**" to
mark global comments (read "(*" as Q$Comment Begin$).  "(*** *)" (comment
with just a *) expand into (* * * *... *), aligned with any surrounding
global comments (for boxes), or if no surrounding comments expand into
Pascal Star Line Width wide.  When the recursive edit 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 (* * *...*), Pascal Star Line Width wide
    and extending to left margin.
After alignment, "(**" is replaced by "(* ".5^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
    Pascal 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.7S Explain the last indentation a bit.
Prints what variable or idea was significant in the indentation and shows
the point where the indentation was measured from for ARG seconds
C Turn on capitalization of keywords.
With 0 argument, turns off capitalization.
Uses the WORDAB library and a file of pre-defined abbreviations
   which are the keywords.
This command is currently not recommended because: 1) it expands common
words like "in" or "if" in comments, which is a hassle; and 2) it intertwines
all the capitalization abbreviations with your own abbreviationsrS Expand WORDAB abbreviations in region,
but comments and strings are skipped. Assumes WORDAB already loaded.i^R Set up a string of length <arg>, and overwrite.
Supply length of desired string as numeric argument (default is 10).
The string is created, full of spaces.
You enter a recursive editing level in overwrite mode
with point at the beginning of the string.
Overwrite the contents, then use ^R Exit to turn
off overwrite mode and move past the string.Q^R Make Pascal assgt stmt to increment word before point.
Saves for undoing.S Sets up a structured pascal WITH, WHILE, FOR, or CASE
statement.  WITH, WHILE, FOR, or CASE is the first string argument; OF or
BEGIN is the second.Z^R Sets up a structured WHILE statement.
See PASCAL info node for customization information.
Positive argument means do not insert BEGIN and END;
negative arg means try to surround -<arg> lines within BEGIN/END.X^R Sets up a structured FOR statement.
See PASCAL info node for customization information.
Positive argument means do not insert BEGIN and END;
negative arg means try to surround -<arg> lines within BEGIN/END.Y^R Sets up a structured WITH statement.
See PASCAL info node for customization information.
Positive argument means do not insert BEGIN and END;
negative arg means try to surround -<arg> lines within BEGIN/END.C^R Sets up a structured CASE statement.
See PASCAL info node for customization information.
Negative arg means try to surround -<arg> lines within BEGIN/END;
you don't want a positive arg.W^R Sets up a structured IF statement.
See PASCAL info node for customization information.
Positive argument means do not insert BEGIN and END;
negative arg means try to surround -<arg> lines within BEGIN/END.R^R Set up matching ELSE statement.
Positive argument means do not insert BEGIN/END; negative arg
means enclose -<arg> lines withing the BEGIN/END.
It will delete a ; if it finds one on the previous line.,S Sets up a PROCEDURE or FUNCTION block.3^R Inserts a FUNCTION block.
See Pascal info node for customization information.
Sets up a VAR statement, unless it is given an argument.
Indents to this lines indentation.4^R Inserts a PROCEDURE block.
See Pascal info node for customization information.
Sets up a VAR statement, unless it is given an argument.
Indents to this lines indentation.2^R Inserts a PROGRAM block.
See Pascal info node for customization information.
Sets up a VAR statement, unless it is given an argument.
Indents to this lines indentation.&^R Inserts a REPEAT statement.
See PASCAL info node for customization information.
If given a negative argument, surrounds -<arg> lines within the
REPEAT/UNTIL'^R Inserts a RECORD with the END.
See PASCAL info node for customization information.
If given a negative argument, surrounds -<arg> lines within the
RECORD/END$S Powerhorse for REPEAT & RECORDk^R Writes a BEGIN/END pair
If given a negative argument, encloses -<arg> lines between the
BEGIN/END.>C Searches for it's string argument, ignoring comments.
With a pre-comma argument, only finds delimited words.
Reverse searching works, except in languages which end comments with CRLFrS Turns on and off ErrList mode.
With no argument, toggles ErrList Mode.  Otherwise sets ErrList Mode to arg.S Turns on ErrList mode.S Turns off ErrList Mode-S To be run as the After Compilation Hook$S Gather all errors in an array.)^R Hop to the next compilation error._S Read the keywords file into the syntax table.
Looks for file on EMACS: called PASCAL.SYN=	& Setup PASCAL Library
PASCAL Mode
& Default Init PASCAL Mode
& Set Group Value
& Set Major Variable
& Set minor variable
& Setup variables
^R PASCAL New Line
^R Find Unmatched Paren
^R Insert Comment
^R Indent PASCAL Stmt
& Forward To Chars
& Back to Chars
& Back to Word
& Forward to Word
& Back to Word Over Paren
& Back Pair
Back Level
& Keyword Search
& Forward Paren
& Back Paren
Forward Level
& Join Line
& Indent Line
^R Toggle Indentation
Mark Procedure
^R Insert Pascal End
^R Pascal End
Indent Pascal Region
Same Capitalization
^R Pascal Indent Relative
Global Pascal Comment
& Align Global Pascal Comment Ends
^R Slurp Pascal to Char
Print Last Pascal Indenter
Capitalize Pascal Keywords
Pascal Expand Abbrevs in Region
^R Start String
^R Plus One
& Pascal DO-OF
^R Pascal WHILE
^R Pascal FOR
^R Pascal WITH
^R Pascal CASE
^R Pascal IF
^R Pascal ELSE
& Pascal Subroutine
^R Pascal FUNCTION
^R Pascal PROCEDURE
^R Pascal PROGRAM
^R Pascal REPEAT
^R Pascal RECORD
& Pascal REPEAT-RECORD
^R Pascal BEGIN
No Comment Search
ErrList Mode
& In ErrList Mode
& Out ErrList Mode
& Compile Compilation
& Save Errors
^R Next Error
& Read Keywords
T+8+fq(+4)[20[3
<%3,-q2f2u3q3&1@;q3"l0'>
f[BBindq3-1*5,q3*5g2q:..o(0)+q2