PDP-10 Archive: emacs/pascal.elib from mit_emacs_170_teco_1220 (original) (raw)
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 ; ,"E7RHCRjMSt {@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{6kkni{>_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 IndentationDIRECTORY,DOC & Align Global Pascal Comment EndsDOC & Back PairDOC & Back ParenDOC & Back to CharsDOC & Back to Word#DOC & Back to Word Over ParenDOC & Compile Compilation$DOC & Default Init PASCAL ModeDOC & Forward ParenDOC & Forward To CharsDOC & Forward to WordDOC & In ErrList ModeDOC & Indent LineDOC & Join LineDOC & Keyword SearchDOC & Out ErrList ModeDOC & Pascal DO-OF DOC & Pascal REPEAT-RECORDDOC & Pascal SubroutineDOC & Read KeywordsDOC & Save ErrorsDOC & Set Group ValueDOC & Set Major VariableDOC & Set minor variable DOC & Setup PASCAL LibraryDOC & Setup variablesDOC Back Level$DOC Capitalize Pascal KeywordsDOC ErrList ModeDOC Forward LevelDOC Global Pascal CommentDOC Indent Pascal RegionDOC Mark ProcedureDOC No Comment Search)DOC Pascal Expand Abbrevs in RegionDOC PASCAL Mode$DOC Print Last Pascal IndenterDOC Same Capitalization!DOC ^R Find Unmatched ParenDOC ^R Indent PASCAL StmtDOC ^R Insert CommentDOC ^R Insert Pascal EndDOC ^R Next ErrorDOC ^R Pascal BEGINDOC ^R Pascal CASEDOC ^R Pascal ELSEDOC ^R Pascal EndDOC ^R Pascal FORDOC ^R Pascal FUNCTIONDOC ^R Pascal IF#DOC ^R Pascal Indent RelativeDOC ^R PASCAL New LineDOC ^R Pascal PROCEDUREDOC ^R Pascal PROGRAMDOC ^R Pascal RECORDDOC ^R Pascal REPEATDOC ^R Pascal WHILEDOC ^R Pascal WITHDOC ^R Plus One!DOC ^R Slurp Pascal to CharDOC ^R Start StringDOC ^R Toggle IndentationDOC FILENAMEFILENAME
INVERTB 0FO..qPascal Loaded"E
0m.vInsert Dispatch
m(m.mMake Prefix Character)Insert Dispatch(
)M.VMM ^R Pascal Insert Statement
QPrefix Char List[0
:I0C-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|
FSDFN1[5FSDFN2[6QCompiler 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'"#:i21'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
[email protected] ..D[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
[email protected] 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[R
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(?)
[email protected] Auto Fill Default:F"L(
1,1M.LAuto Fill Mode)'W
1,1m.LSpace Indent Flagw
[email protected] Capitalization"N
m(m.mCapitalize Pascal Keywords)'
_0[1QPascal Syntax Table[s
QPascal Keyword Count<
Q:s(Q13+3)&"NU:s(Q1*3+2)'
%1W
o[v:iv[n:in [email protected]v[1 m.cv!* (Pascal) ! ,nm(m.m& Set Group Value) Q1+99"NQ1Uv' E[vQ:Pascal Syntax Table()Uv [n+1:\Un [email protected] 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[t m.m& Set Major Variable[j 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[n QPascal Keyword Count< Q:t(Q13+3)&361."N Q1*3+1mn' %1> -@F K .[w @MM [email protected] Prefix[3 fq3"gg3' "#F@M(M.M^R Indent Pascal Stmt)[x[y' fsrgetty"e:0t' Qy,Qwf0:,.k.[.0fnQ.0J 1:<-M(M.M& Back Paren)>"N :iNUP No Unmatched ParenthesesFSErr' ff&1"N0@V:' qComment Start[b qb"e:ib;' 0fo..qComment Beginf"Nub' :ifo..qComment End[e .,.m(m.m& Save For Undo)Insert Comment .(GbGe),.(FKC)|ff"'E*([email protected] 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 Start[sQComment End[eFQs[l[1:I1 0:Ge-32"E1,FQe:GeUe' <!"!@:f({'s1L.-Z@; 1A-{"EC:S}"E:iUnmatched {FSERR'!<!>' !"!1A-'"EC!"!:S'"E!"!:iUnmatched 'FSERR'!<!>' 1A-("E.+2-Z:"G2A-*"E 2C:S*)"E:i*Unmatched (FSERR'!<!>''' QlF=s"E QlC:Se"E:iUnmatched sFSERR'!<!>' 1Af1; 1C
OQComment Start[sQComment End[eFQe[l[1:I1 0:Ge-32"E1,FQe:GeUe' <!"!-@:f)}'e1L.-B@; 0A-}"ER-:S{"E:iUnmatched }FSERR'!<!>' !"!0A-'"ER!"!-:S'"E!"!:iUnmatched 'FSERR'!<!>' 0A-)"E.-2-B:"L-1A-*"E 2R-:S("E:iUnmatched )FSERR'!<!>''' QlF=e"E QlR-:Ss"E:iUnmatched eFSERR'!<!>' 0Af1; 1R
@MbABCDEFGHIJKLMNIOPRSTUVWXYZabcdefghijklmnioprstuvwxyz @MfABCDEFGHIJKLMNIOPRSTUVWXYZabcdefghijklmnioprstuvwxyz /[1:I1 <Mw)1 .-B@;0A-):@; 0Mp
:-1[l Qt:"L [.p [1[9 QPascal Syntax Table[t M.M& Back To Chars[b M.M& Back To Word[w M.MBack Level[k .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[t M.m& Back To Chars[b M.M& Back To Word[w .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[t "L M.m& Back To Chars[b M.M& Back To Word[w -1Ud BUe' "# M.m& Forward To Chars[f M.M& Forward To Word[w 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[f .U.pfnQ.pJ <Mf() .-B"EQl; :IBad Paren Matching@FSERR ' 1A-("E Ql-1Ul' "#Ql+1Ul' C Ql@;> 0U..n[.p[tff"E0'"#'[l M.m& Back To Chars[b .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[t M.m& Forward To Chars[f M.M& Forward To Word[w .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[l z-.[3fnZ-Q3J QPascal Syntax Table[t M.M& Back to Word over Paren[o M.M& Back to Word[w M.MBack Level[k M.M& Back To Chars[b M.M& Forward To Chars[f M.M& Back Paren[p -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 [email protected] 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 ' [email protected] 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([email protected] 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
[email protected] Align Only"'Em.lIndent Align Only'
"#M.LIndent Align OnlyW'0L.
FN
1,-M(M.mNo Comment Search)procedurefunction"E
:INot 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[b
-1M(M.MBack Level)fwx.6
.U.2
.([email protected] Block Word"E
0L@f L'
fshpos[.7)J
f.6REPEAT[r
f.6RECORD[d
f~.6LOOP[l
s({
@f L
.(s})fkc-@f L),.X.3
'"#
QrQd*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'
[email protected] Capitalization"E
-fwfc'
[email protected] Comments"'N&q.3"N
i gComment Beging.3gComment End
Qr"N.u.1''
q.2j
0@v
FF"E1'"#'*30:w
QComment Start[sQComment End[eFQs[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
[email protected] 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 Start[sQComment End[e [email protected] of Comments Flag"N f:@m(m.m^R Indent for Comment)' 0m.vGlob of Comments Flag 1[Glob of Comments Flagw :iGlobal Comment[..j 10fo..qGlobal Comment Column[Comment Column 0[Comment Begin :is*[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 [email protected] 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"[email protected] Abbreviations In Use"N 0m(m.mWord Abbrev Mode) 0m.vPascal Abbreviations In Use 0m.lAutomatic Capitalization'' [email protected] Abbreviations In Use"N' 1m.vPascal Abbreviations In Use 1m.lAutomatic Capitalization [email protected] 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[b M.m& Back To Word[w M.m^R Abbrev Expand Only[e 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[t [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 [email protected]e 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 [email protected]e on same line"Ei 0,(Q2)m(m.m& XIndent)'"#i ' Ie' Qb"L. [email protected] 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;[email protected] Comments"Ni gComment BegingcgComment End'' [email protected] Capitalization"E Qs,.fc' .[rQpJs#-DQp,Qr-1,Fm(m.m& Pascal DO-OF)WHILEBEGIN DOFm(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[t FF[b .[p.[s .(0L@F LQp-."LQpJ'fsHPos[1)J Qb"L-Qb+1'"#.,.'M(M.M& Save for Undo)Insert IF Statement [email protected] on same line"E4@FOtIFf"LW0'+'( )Q1[2 [email protected] on same line*(Qb:"'G)"E 4@FOtTHENf"LW0'+'Q2[3 Qb:"G4@FOtBEGINf"LW0'+'( )Q3U4 IIF # [email protected] on same line"Ei 0,Q2m(m.m& XIndent)'"#i ' ITHEN' Qb:"G [email protected] on same line"Ei 0,Q3m(m.m& XIndent)'"#i ' IBEGIN' Qb"L. [email protected] 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;[email protected] Comments"Ni gComment BeginiIFgComment End'' [email protected] Capitalization"E Qs,.fc' .[rQpJs#-DQp,Qr-1PQPascal Syntax Table[t FF[b .[s Qb"L.(-Qb+1L.[y)J'"#.[y' M.m& Back To Chars[b 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 [email protected] On Same Line"NQSJI ' .[p .(0L@F LQp-."LQpJ'fsHPOS[1)J [email protected] on same line(Qb:"'G)"E 4@FOtELSEf"LW0'+'Q1[2 Qb:"G4@FOtBEGINf"LW0'+'( )Q2U3 IELSE Qb:"G [email protected] on same line"Ei 0,Q2m(m.m& XIndent)'"#i ' IBEGIN' Qb"L. [email protected] 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;[email protected] Comments"Ni gComment BeginiELSEgComment End'' [email protected] Capitalization"E Qs,.fc' .[rQxJ s#-D Qx,Qr-1aQPascal Syntax Table[t [email protected] Capitalization[a [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+([email protected]c Body Indentationf"LW0')[2 Q2+(4@FOtBEGINf"LW0')[3 Q1+(4@FOtcf"LW0')[4 gci Qa"E-fwfc' :iType 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' [email protected] Comments"Ni gComment BegingngComment End'I 0,Q3m(m.m& XIndent) Qb:"EI#'I 0,Q2m(m.m& XIndent) IENDgsQa"E-fwfc' [email protected] 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[t FF[b [c:ic [d:id Qb"L-Qb+1'"#.,.'M(M.M& Save for Undo)Insert c Statement .[p.[s .([email protected] Block Word"E 0L@F LQp-."LQpJ'' fsHPos[1)J Q1+(4@FOtcf"LW0')[2 Ic Qb"L. [email protected] 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#; [email protected] Capitalization"E Qs,.fc' .[rQpJs#-DQp,Qr-1<QPascal Syntax Table[t FF[b Qb"L-Qb+1'"#.,.'M(M.M& Save for Undo)Insert BEGIN/END .[p.[s .([email protected] Block Word"E 0L@F LQp-."LQpJ'' fsHPos[1)J Q1+(4@FOtBEGINf"LW0')[2 IBEGIN Qb"L. [email protected] 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; [email protected] Capitalization"E Qs,.fc' .[rQpJs#-DQp,Qr-1BFF-1[21,FSearch String: [1 "'L2+1[3 0FO..qComment Start[s FQs:"G:I*;Us' 0FO..qComment End[e FQe:"G:I* Ue' Q3"LQe(QsUe)Us' .[.1fnq.1j <Q3:Ss1F"E :F"L:iSFL Search Failed?FSErr'0 '+1"N -Q2; (Q3+1/2A"'B)&(FK+1-(Q3+1/2)A"'B):; ' Q3:Se"E:iUnmatched 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:iNo Listing File FG' m(m.m& Save Errors) Q0m(m.mSelect Buffer)M[a[b[e1[p[l[c[m0[i 100Ua (Qa4)*5FSQVectorUb J < 0Ue <:s *****
; 0A-
"EsPage \Up' "#-1Ue0;'> Qe; -1L@f L\Ul 1L8C .Um0Uc < @f* f(+QcUc)L 1A-^:@; QpU:b(Qi4) QlU:b(Qi4+1) QcU:b(Qi4+2) .(QmJ 1L14C1X:b(Qi4+3) .Um)J %iW 1C%cW
QbUError Vector QiUNum Errors 0UError Index r[i[m[0QError Vector[b 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-14+1)-1L Q:b(Qi-14+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:iNo Pascal Syntax File FG' Hm(m.m& Count Lines)m.vPascal Keyword Count QPascal Keyword Count3+1*5FSQVector[s 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 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 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 deep. (arg = -1 means starting after a "(").
S Moves back over matching parens, not confused by comments. Assumes it is already deep. (arg = -1 means starting behind a ")").~C Moves Forward to beyond a BEGIN/END block. Assumes it is already 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 , 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 - 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 - 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 - 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 - 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 - lines within BEGIN/END.R^R Set up matching ELSE statement. Positive argument means do not insert BEGIN/END; negative arg means enclose - 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 - 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 - lines within the RECORD/END$S Powerhorse for REPEAT & RECORDk^R Writes a BEGIN/END pair If given a negative argument, encloses - 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-15,q35g2q:..o(0)+q2