Difference between revisions of "Using annotate"

From Freepascal Amiga wiki
Jump to navigation Jump to search
(Added new annotate page and added intial content (still needs work).)
 
m (Corrected some typo's, changed some text, and 'aarrrgh, why does the source end tag get missed and screw up the formatting")
Line 7: Line 7:
 
=== Annotate's syntax file ===
 
=== Annotate's syntax file ===
  
here is my syntax file that i use for my installation of Annotate:
+
here is the syntax file that i imported in Annotate to get pascal syntax highlighting working:
 +
 
 
<source lang="xml">
 
<source lang="xml">
 
 
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<!DOCTYPE Ann-SyntaxHighlighting>
 
<!DOCTYPE Ann-SyntaxHighlighting>
Line 18: Line 18:
 
     <Name>Pascal</Name>
 
     <Name>Pascal</Name>
 
     <Qualifying>
 
     <Qualifying>
       <OrTokens caseinsensitive="1">program PROGRAM unit UNIT</OrTokens>
+
       <OrTokens caseinsensitive="1">program unit </OrTokens>
      <!-- OrTokens min="1" caseinsensitive="1">PROCEDURE FUNCTION BEGIN END IMPLEMENTATION TYPE VAR USES</OrTokens -->
 
      <!-- AndTokens>( ) , DEF</AndTokens -->
 
 
       <FilePattern>#?.(dpr|pas|lpr|pp)</FilePattern>
 
       <FilePattern>#?.(dpr|pas|lpr|pp)</FilePattern>
 
     </Qualifying>
 
     </Qualifying>
 +
    <!-- Actually, the nr of tokens should be slightly less  -->
 
     <Tokens>260</Tokens>
 
     <Tokens>260</Tokens>
 
     <!-- Keywords -->     
 
     <!-- Keywords -->     
Line 107: Line 106:
 
       <MatchToEOL/>
 
       <MatchToEOL/>
 
     </ComplexToken>
 
     </ComplexToken>
 
+
     <!-- operators Set -->
     <!--operators Set-->
 
 
     <Token pen="222">include</Token>
 
     <Token pen="222">include</Token>
 
     <Token pen="222">exclude</Token>
 
     <Token pen="222">exclude</Token>
 
     <Token pen="220"><![CDATA[><]]></Token>     
 
     <Token pen="220"><![CDATA[><]]></Token>     
     <!--operators Logical-->
+
     <!-- operators Logical -->
 
     <Token pen="223"><![CDATA[<<]]></Token>
 
     <Token pen="223"><![CDATA[<<]]></Token>
 
     <Token pen="223"><![CDATA[>>]]></Token>
 
     <Token pen="223"><![CDATA[>>]]></Token>
     <!--operators Relational-->
+
     <!-- operators Relational -->
 
     <Token pen="220"><![CDATA[<>]]></Token>
 
     <Token pen="220"><![CDATA[<>]]></Token>
 
     <Token pen="220"><![CDATA[<=]]></Token>
 
     <Token pen="220"><![CDATA[<=]]></Token>
Line 122: Line 120:
 
     <Token pen="220"><![CDATA[>]]></Token>
 
     <Token pen="220"><![CDATA[>]]></Token>
 
     <Token pen="220"><![CDATA[=]]></Token>
 
     <Token pen="220"><![CDATA[=]]></Token>
     <!--operators Arithmatic-->
+
     <!-- operators Arithmatic -->
 
     <Token pen="221">+</Token>
 
     <Token pen="221">+</Token>
 
     <Token pen="221">-</Token>
 
     <Token pen="221">-</Token>
 
     <Token pen="221">*</Token>
 
     <Token pen="221">*</Token>
 
     <Token pen="221">/</Token>
 
     <Token pen="221">/</Token>
     <!--operators NOT REALLY-->
+
     <!-- operators NOT REALLY -->
 
     <Token>()</Token>
 
     <Token>()</Token>
 
     <Token pen="2">:=</Token>
 
     <Token pen="2">:=</Token>
Line 134: Line 132:
 
     <Token pen="2" bgpen="4">==</Token>
 
     <Token pen="2" bgpen="4">==</Token>
 
     <Token pen="2" bgpen="4">!=</Token>
 
     <Token pen="2" bgpen="4">!=</Token>
     <!--Preprocessor tokens first to avoid conflict-->
+
     <!-- Preprocessor tokens first to avoid conflict -->
 
     <ComplexToken>
 
     <ComplexToken>
 
       <!-- preprocessor "{$"-->
 
       <!-- preprocessor "{$"-->
Line 141: Line 139:
 
       <MatchToEOL/>
 
       <MatchToEOL/>
 
     </ComplexToken>         
 
     </ComplexToken>         
     <!--String and char-const tokens:-->
+
     <!-- String and char-const tokens: -->
 
     <ComplexToken>
 
     <ComplexToken>
 
       <!--- Apostrophe -->
 
       <!--- Apostrophe -->
Line 148: Line 146:
 
       <MatchToEOL/>
 
       <MatchToEOL/>
 
     </ComplexToken>
 
     </ComplexToken>
     <!--Comments...-->
+
     <!-- Comments... -->
 
     <ComplexToken>
 
     <ComplexToken>
 
       <!-- block comment ( {} delimited ) -->
 
       <!-- block comment ( {} delimited ) -->
Line 161: Line 159:
 
       <MultiLine/>
 
       <MultiLine/>
 
     </ComplexToken>     
 
     </ComplexToken>     
     <!--Preprocessing directives...-->
+
     <!-- Preprocessing directives... -->
 
   </Syntax>
 
   </Syntax>
 
</Ann-SyntaxHighlighting>
 
</Ann-SyntaxHighlighting>
Line 167: Line 165:
  
 
Please note that the following pens are being used:
 
Please note that the following pens are being used:
<nowiki>- pen  2, for assignment operator ( ":=" )
+
 
 +
<pre>
 +
- pen  2, for assignment operator ( ":=" )
 
- pen 210, for pascal language keywords
 
- pen 210, for pascal language keywords
 
- pen 211, for preprocessor statements ( "{$}" )
 
- pen 211, for preprocessor statements ( "{$}" )
Line 178: Line 178:
 
- pen 240, for a line comment ( "//" )
 
- pen 240, for a line comment ( "//" )
 
- pen 241, for a block comment ( enclosed between "{" and "}" )
 
- pen 241, for a block comment ( enclosed between "{" and "}" )
- pen 242, for a block comment ( enclosed between "(*" and "*)" )</nowiki>
+
- pen 242, for a block comment ( enclosed between "(*" and "*)" )
 +
</pre>
  
 
And that the actual colors being used in Annotate, originates from the screen in AROS on which you have opened the Annotate editor (therefore the colors could be customized differently for each individual screen).
 
And that the actual colors being used in Annotate, originates from the screen in AROS on which you have opened the Annotate editor (therefore the colors could be customized differently for each individual screen).

Revision as of 14:47, 3 July 2014

Of course it's perfectly valid to use any editor you wish to edit your source-code. Maybe you have your favorite editor, or simply dislike fp-ide (which comes with syntax highlighting, compiles out of the box after proper configuration and that supports for help files, help can be found on keywords under cursor and keywords can be auto-completed).

But alas, there are not many syntax highlighting editors available for AROS (that also supports or has the ability to support pascal syntax highlighting). The only other editor i am aware of that could pull that off is vim. And although this editor originates from classic amiga OS, i actually never learned to work with that editor.

Another alternative that can be used is the Annotate editor that is developed by OnyxSoft. Icaros installation has this editor installed by default, and in case your installation contains an older version then please make sure to update your installed version with the one available on OnyxSoft's website (as there are some incompatibilities between different versions of Annotate due to some new features/bugfixes).

Annotate's syntax file

here is the syntax file that i imported in Annotate to get pascal syntax highlighting working:

<source lang="xml"> <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Ann-SyntaxHighlighting> <Ann-SyntaxHighlighting>

 <Syntax>
   <Name>Pascal</Name>
   <Qualifying>
     <OrTokens caseinsensitive="1">program unit </OrTokens>
     <FilePattern>#?.(dpr|pas|lpr|pp)</FilePattern>
   </Qualifying>
   <Tokens>260</Tokens>
   <Token pen="210" style="bold" caseinsensitive="1">absolute</Token>
   <Token pen="210" style="bold" caseinsensitive="1">abstract</Token>
   <Token pen="210" style="bold" caseinsensitive="1">and</Token>
   <Token pen="210" style="bold" caseinsensitive="1">array</Token>
   <Token pen="210" style="bold" caseinsensitive="1">as</Token>
   <Token pen="210" style="bold" caseinsensitive="1">begin</Token>
   <Token pen="210" style="bold" caseinsensitive="1">break</Token>
   <Token pen="210" style="bold" caseinsensitive="1">case</Token>
   <Token pen="210" style="bold" caseinsensitive="1">class</Token>
   <Token pen="210" style="bold" caseinsensitive="1">const</Token>
   <Token pen="210" style="bold" caseinsensitive="1">constructor</Token>
   <Token pen="210" style="bold" caseinsensitive="1">continue</Token>
   <Token pen="210" style="bold" caseinsensitive="1">destructor</Token>
   <Token pen="210" style="bold" caseinsensitive="1">dispose</Token>
   <Token pen="210" style="bold" caseinsensitive="1">div</Token>
   <Token pen="210" style="bold" caseinsensitive="1">do</Token>
   <Token pen="210" style="bold" caseinsensitive="1">downto</Token>
   <Token pen="210" style="bold" caseinsensitive="1">else</Token>
   <Token pen="210" style="bold" caseinsensitive="1">end</Token>
   <Token pen="210" style="bold" caseinsensitive="1">except</Token>
   <Token pen="210" style="bold" caseinsensitive="1">exit</Token>
   <Token pen="210" style="bold" caseinsensitive="1">export</Token>
   <Token pen="210" style="bold" caseinsensitive="1">file</Token>
   <Token pen="210" style="bold" caseinsensitive="1">finalization</Token>
   <Token pen="210" style="bold" caseinsensitive="1">finally</Token>
   <Token pen="210" style="bold" caseinsensitive="1">for</Token>
   <Token pen="210" style="bold" caseinsensitive="1">function</Token>
   <Token pen="210" style="bold" caseinsensitive="1">goto</Token>
   <Token pen="210" style="bold" caseinsensitive="1">if</Token>
   <Token pen="210" style="bold" caseinsensitive="1">implementation</Token>
   <Token pen="210" style="bold" caseinsensitive="1">in</Token>
   <Token pen="210" style="bold" caseinsensitive="1">inherited</Token>
   <Token pen="210" style="bold" caseinsensitive="1">initialization</Token>
   <Token pen="210" style="bold" caseinsensitive="1">inline</Token>
   <Token pen="210" style="bold" caseinsensitive="1">interface</Token>
   <Token pen="210" style="bold" caseinsensitive="1">is</Token>
   <Token pen="210" style="bold" caseinsensitive="1">label</Token>
   <Token pen="210" style="bold" caseinsensitive="1">library</Token>
   <Token pen="210" style="bold" caseinsensitive="1">mod</Token>
   <Token pen="210" style="bold" caseinsensitive="1">new</Token>
   <Token pen="210" style="bold" caseinsensitive="1">not</Token>
   <Token pen="210" style="bold" caseinsensitive="1">object</Token>
   <Token pen="210" style="bold" caseinsensitive="1">of</Token>
   <Token pen="210" style="bold" caseinsensitive="1">on</Token>
   <Token pen="210" style="bold" caseinsensitive="1">operator</Token>
   <Token pen="210" style="bold" caseinsensitive="1">or</Token>
   <Token pen="210" style="bold" caseinsensitive="1">out</Token>
   <Token pen="210" style="bold" caseinsensitive="1">packed</Token>
   <Token pen="210" style="bold" caseinsensitive="1">procedure</Token>
   <Token pen="210" style="bold" caseinsensitive="1">program</Token>
   <Token pen="210" style="bold" caseinsensitive="1">property</Token>
   <Token pen="210" style="bold" caseinsensitive="1">raise</Token>
   <Token pen="210" style="bold" caseinsensitive="1">record</Token>
   <Token pen="210" style="bold" caseinsensitive="1">repeat</Token>
   <Token pen="210" style="bold" caseinsensitive="1">self</Token>
   <Token pen="210" style="bold" caseinsensitive="1">set</Token>
   <Token pen="210" style="bold" caseinsensitive="1">shl</Token>
   <Token pen="210" style="bold" caseinsensitive="1">shr</Token>
   <Token pen="210" style="bold" caseinsensitive="1">string</Token>
   <Token pen="210" style="bold" caseinsensitive="1">then</Token>
   <Token pen="210" style="bold" caseinsensitive="1">threadvar</Token>
   <Token pen="210" style="bold" caseinsensitive="1">to</Token>
   <Token pen="210" style="bold" caseinsensitive="1">try</Token>
   <Token pen="210" style="bold" caseinsensitive="1">type</Token>
   <Token pen="210" style="bold" caseinsensitive="1">unit</Token>
   <Token pen="210" style="bold" caseinsensitive="1">until</Token>
   <Token pen="210" style="bold" caseinsensitive="1">uses</Token>
   <Token pen="210" style="bold" caseinsensitive="1">var</Token>
   <Token pen="210" style="bold" caseinsensitive="1">virtual</Token>
   <Token pen="210" style="bold" caseinsensitive="1">while</Token>
   <Token pen="210" style="bold" caseinsensitive="1">with</Token>
   <Token pen="210" style="bold" caseinsensitive="1">xor</Token>
   <Token pen="215" caseinsensitive="1">true</Token>
   <Token pen="215" caseinsensitive="1">false</Token>
   <Token pen="215" caseinsensitive="1">nil</Token>
   <ComplexToken>
     <Token pen="240" style="italic">//</Token>
     <MatchToEOL/>
   </ComplexToken>
   <Token pen="222">include</Token>
   <Token pen="222">exclude</Token>
   <Token pen="220"><![CDATA[><]]></Token>    
   <Token pen="223"><![CDATA[<<]]></Token>
   <Token pen="223"><![CDATA[>>]]></Token>
   <Token pen="220"><![CDATA[<>]]></Token>
   <Token pen="220"><![CDATA[<=]]></Token>
   <Token pen="220"><![CDATA[>=]]></Token>
   <Token pen="220"><![CDATA[<]]></Token>
   <Token pen="220"><![CDATA[>]]></Token>
   <Token pen="220"><![CDATA[=]]></Token>
   <Token pen="221">+</Token>
   <Token pen="221">-</Token>
   <Token pen="221">*</Token>
   <Token pen="221">/</Token>
   <Token>()</Token>
   <Token pen="2">:=</Token>
   <Token style="bold">:</Token>
   <Token style="bold">,</Token>
   <Token pen="2" bgpen="4">==</Token>
   <Token pen="2" bgpen="4">!=</Token>
   <ComplexToken>
     <Token pen="211" style="italic">{$</Token>
     <MatchToToken>$}</MatchToToken>
     <MatchToEOL/>
   </ComplexToken>        
   <ComplexToken>
     <Token pen="230" style="italic">'</Token>
     <MatchToToken>'</MatchToToken>
     <MatchToEOL/>
   </ComplexToken>
   <ComplexToken>
     <Token pen="241" style="italic">{</Token>
     <MatchToToken>}</MatchToToken>
     <MultiLine/>
   </ComplexToken>
   <ComplexToken>
     <Token pen="242" style="italic">(*</Token>
     <MatchToToken>*)</MatchToToken>
     <MultiLine/>
   </ComplexToken>    
 </Syntax>

</Ann-SyntaxHighlighting> [/source]

Please note that the following pens are being used:

- pen   2, for assignment operator ( ":=" )
- pen 210, for pascal language keywords
- pen 211, for preprocessor statements ( "{$}" )
- pen 215, for some constants
- pen 220, for relation operators ( "<", ">", "<>", "<=", ">=" and "=")
- pen 221, for arithmetic operators ( "+", "-", "*" and "/" )
- pen 222, for set operators ( "include", "exclude" and "><" )
- pen 223, for logical operators ( "<<" and ">>" )
- pen 230, for single quote strings ( "'" )
- pen 240, for a line comment ( "//" )
- pen 241, for a block comment ( enclosed between "{" and "}" )
- pen 242, for a block comment ( enclosed between "(*" and "*)" )

And that the actual colors being used in Annotate, originates from the screen in AROS on which you have opened the Annotate editor (therefore the colors could be customized differently for each individual screen).

Because aros lacks support for configuring a user-defined palette (for the workbench at least), it's up to yourself to change the pen-colors manually (which can be done by the setpencolor utility that's present in at least the latest icaros distribution).

Please note that by setting the pens to your desired colors that you can mess up your desktop's view because you changed a color that is in use by the AROS operating system. If that's the case, simply restart your icaros installation and make sure next time you use the a pen number that is not in use by AROS (hence why the currently (absurd) used pen-numbers in annotates configuration where chosen). The only pencolor you definitely do not want to change is pen number 0-3 as they are the first default used workbench colors (and they actually _are_ being defined and always matches the original classic workbench colors).


Chancing the colors

TODO: - add pictures - explain the use of colors - probably some other stuff i forgot.