8.8.2 The ptop conguration le

Creating and distributing a conguration le for ptop is not necesarry, unless you want to modify the standard behaviour of ptop. The conguration le is never preloaded, so if you want to use it you should always specify it with a -c ptop.cfg parameter.

The structure of a ptop conguration le is a simple buildingblock repeated several (20-30) times, for each pascal keyword known to the ptop program. (see the default conguration le or ptopu.pp source to nd out which keywords are known)

The basic building block of the conguration le consists out of one or two lines, describing how ptop should react on a certain keyword. First a line without square brackets with the following format:

keyword=option1,option2,option3,...

If one of the options is "dindonkey" (see further below), a second line (with square brackets) is needed like this:

[keyword]=otherkeyword1,otherkeyword2,otherkeyword3,...

As you can see the block contains two types of identiers, keywords(keyword and otherkeyword1..3 in above example) and options, (option1..3 above).

Keywords are the built-in valid Pascal structure-identiers like BEGIN, END, CASE, IF, THEN, ELSE, IMPLEMENTATION. The default conguration le lists most of these.

Besides the real Pascal keywords, some other codewords are used for operators and comment expressions. table (8.1)


Table 8.1: keywords for operators

Name of codewordoperator



casevar : in a case label ( unequal 'colon')
becomes :=
delphicomment //
opencomment f or (*
closecomment g or *)
semicolon ;
colon :
equals =
openparen [
closeparen ]
period .

The Options codewords dene actions to be taken when the keyword before the equal sign is found, table (8.2)


Table 8.2: Possible options

Option does what



crsupp suppress CR before the keyword.
crbefore force CR before keyword
(doesn't go with crsupp :) )
blinbeforeblank line before keyword.
dindonkeyde-indent on associated keywords
(see below)
dindent deindent (always)
spbef space before
spaft space after
gobsym Print symbols which follow a
keyword but which do not
aect layout. prints until
terminators occur.
(terminators are hard-coded in pptop,
still needs changing)
inbytab indent by tab.
crafter force CR after keyword.
upper prints keyword all uppercase
lower prints keyword all lowercase
capital capitalizes keyword: 1st letter
uppercase, rest lowercase.

The option "dindonkey" requires some extra parameters, which are set by a second line for that option (the one with the square brackets), which is therefore is only needed if the options contain "dinkdonkey" (contraction of de-indent on assiociated keyword).

"dinkdonkey" deindents if any of the keywords specied by the extra options of the square-bracket line is found.

Example: The lines

else=crbefore,dindonkey,inbytab,upper  
[else]=if,then,else

mean the following:

Try to play with the congle step by step until you nd the eect you desire. The congurability and possibilities of ptop are quite large. E.g. I like all keywords uppercased instead of capitalized, so I replaced all capital keywords in the default le by upper.

ptop is still development software, so it is wise to visually check the generated source and try to compile it, to see if ptop hasn't made any errors.