" Vim syntax file " Language: ISO Modula 2 (10514-1: 1996, Modula-2, Base Language) " based on original work of Bram Moolenaar and Peter Funk " modified and updated by Christoph Schlegel " Last Change: 2004 Jan 28 " Remark: This file is experimental... " For ver5.x: Clear syntax items, for ver6.x quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " Don't ignore case (Modula-2 is case significant). This is the default in vim " Some very important keywords which should be emphasized more than others: syn keyword modula2AttKeyword BEGIN CONST END EXCEPT EXIT HALT MODULE PROCEDURE RETURN TYPE VAR " All other keywords in alphabetical order: syn keyword modula2Keyword AND ARRAY BY CASE DEFINITION DIV DO ELSE syn keyword modula2Keyword ELSIF EXPORT FINALLY FOR FORWARD FROM IF IMPLEMENTATION IMPORT syn keyword modula2Keyword IN LOOP MOD NOT OF OR PACKEDSET POINTER QUALIFIED RECORD syn keyword modula2Keyword REM REPEAT RETRY SET THEN TO UNTIL WHILE WITH syn keyword modula2Type ADDRESS BITSET BOOLEAN BYTE CARDINAL CHAR COMPLEX FLOAT INTEGER LFLOAT syn keyword modula2Type LONGCARD LONGCOMPLEX LONGINT LONGREAL PROC PROTECTION REAL SHORTCARD syn keyword modula2Type SHORTINT WORD syn keyword modula2StdFunc ABS CAP CHR CMPLX DEC EXCL HIGH IM INC INCL syn keyword modula2StdFunc INT LENGTH ODD ORD RE SIZE TRUNC TSIZE VAL syn keyword modula2StdConst FALSE NIL TRUE INTERRUPTIBLE UNINTERRUPTIBLE " The following may be discussed, since these are some kind of macro functions " or were added later: syn keyword modula2StdFunc DISPOSE MIN MAX NEW syn match modula2Ident " [A-Z,a-z][A-Z,a-z,0-9,_]*" contained " Comments may be nested in Modula-2: syn region modula2Comment start="(\*" end="\*)" contains=modula2Comment,modula2Todo syn keyword modula2Todo contained TODO FIXME XXX " Strings and Sets syn region modula2String start="'" end="'" syn region modula2String start=+"+ end=+"+ syn region modula2Set start="{" end="}" " Define the default highlighting. " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_modula2_syntax_inits") if version < 508 let did_modula2_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink modula2Ident Identifier HiLink modula2StdConst Boolean HiLink modula2Type Identifier HiLink modula2StdFunc Identifier HiLink modula2Header Type HiLink modula2Keyword Statement HiLink modula2AttKeyword PreProc HiLink modula2Comment Comment " The following is just a matter of taste (you want to try this instead): " hi modula2Comment term=bold ctermfg=DarkBlue guifg=Blue gui=bold HiLink modula2Todo Todo HiLink modula2String String HiLink modula2Set String delcommand HiLink endif let b:current_syntax = "modula2"