1" Vim syntax file
2" Language:	Modula-3
3" Maintainer:	Timo Pedersen <dat97tpe@ludat.lth.se>
4" Last Change:	2001 May 10
5
6" Basic things only...
7" Based on the modula 2 syntax file
8
9" For version 5.x: Clear all syntax items
10" For version 6.x: Quit when a syntax file was already loaded
11if version < 600
12  syntax clear
13elseif exists("b:current_syntax")
14  finish
15endif
16
17" Modula-3 is case-sensitive
18" syn case ignore
19
20" Modula-3 keywords
21syn keyword modula3Keyword ABS ADDRES ADR ADRSIZE AND ANY
22syn keyword modula3Keyword ARRAY AS BITS BITSIZE BOOLEAN BRANDED BY BYTESIZE
23syn keyword modula3Keyword CARDINAL CASE CEILING CHAR CONST DEC DEFINITION
24syn keyword modula3Keyword DISPOSE DIV
25syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION
26syn keyword modula3Keyword EXIT EXPORTS EXTENDED FALSE FINALLY FIRST FLOAT
27syn keyword modula3Keyword FLOOR FROM GENERIC IMPORT
28syn keyword modula3Keyword IN INC INTEGER ISTYPE LAST LOCK
29syn keyword modula3Keyword LONGREAL LOOPHOLE MAX METHOD MIN MOD MUTEX
30syn keyword modula3Keyword NARROW NEW NIL NOT NULL NUMBER OF OR ORD RAISE
31syn keyword modula3Keyword RAISES READONLY REAL RECORD REF REFANY
32syn keyword modula3Keyword RETURN ROOT
33syn keyword modula3Keyword ROUND SET SUBARRAY TEXT TRUE TRUNC TRY TYPE
34syn keyword modula3Keyword TYPECASE TYPECODE UNSAFE UNTRACED VAL VALUE VAR WITH
35
36" Special keywords, block delimiters etc
37syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN
38syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL
39syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP
40
41" Comments
42syn region modula3Comment start="(\*" end="\*)"
43
44" Strings
45syn region modula3String start=+"+ end=+"+
46syn region modula3String start=+'+ end=+'+
47
48" Define the default highlighting.
49" For version 5.7 and earlier: only when not done already
50" For version 5.8 and later: only when an item doesn't have highlighting yet
51if version >= 508 || !exists("did_modula3_syntax_inits")
52  if version < 508
53    let did_modula3_syntax_inits = 1
54    command -nargs=+ HiLink hi link <args>
55  else
56    command -nargs=+ HiLink hi def link <args>
57  endif
58
59  " The default methods for highlighting.  Can be overridden later
60  HiLink modula3Keyword	Statement
61  HiLink modula3Block		PreProc
62  HiLink modula3Comment	Comment
63  HiLink modula3String		String
64
65  delcommand HiLink
66endif
67
68let b:current_syntax = "modula3"
69
70"I prefer to use this...
71"set ai
72"vim: ts=8
73