1" Vim syntax file 2" Language: Clean 3" Author: Pieter van Engelen <pietere@sci.kun.nl> 4" Co-Author: Arthur van Leeuwen <arthurvl@sci.kun.nl> 5" Last Change: Fri Sep 29 11:35:34 CEST 2000 6 7" For version 5.x: Clear all syntax items 8" For version 6.x: Quit when a syntax file was already loaded 9if version < 600 10 syntax clear 11elseif exists("b:current_syntax") 12 finish 13endif 14 15" Some Clean-keywords 16syn keyword cleanConditional if case 17syn keyword cleanLabel let! with where in of 18syn keyword cleanInclude from import 19syn keyword cleanSpecial Start 20syn keyword cleanKeyword infixl infixr infix 21syn keyword cleanBasicType Int Real Char Bool String 22syn keyword cleanSpecialType World ProcId Void Files File 23syn keyword cleanModuleSystem module implementation definition system 24syn keyword cleanTypeClass class instance export 25 26" To do some Denotation Highlighting 27syn keyword cleanBoolDenot True False 28syn region cleanStringDenot start=+"+ end=+"+ 29syn match cleanCharDenot "'.'" 30syn match cleanCharsDenot "'[^'\\]*\(\\.[^'\\]\)*'" contained 31syn match cleanIntegerDenot "[+-~]\=\<\(\d\+\|0[0-7]\+\|0x[0-9A-Fa-f]\+\)\>" 32syn match cleanRealDenot "[+-~]\=\<\d\+\.\d+\(E[+-~]\=\d+\)\=" 33 34" To highlight the use of lists, tuples and arrays 35syn region cleanList start="\[" end="\]" contains=ALL 36syn region cleanRecord start="{" end="}" contains=ALL 37syn region cleanArray start="{:" end=":}" contains=ALL 38syn match cleanTuple "([^=]*,[^=]*)" contains=ALL 39 40" To do some Comment Highlighting 41syn region cleanComment start="/\*" end="\*/" contains=cleanComment 42syn match cleanComment "//.*" 43 44" Now for some useful typedefinitionrecognition 45syn match cleanFuncTypeDef "\([a-zA-Z].*\|(\=[-~@#$%^?!+*<>\/|&=:]\+)\=\)[ \t]*\(infix[lr]\=\)\=[ \t]*\d\=[ \t]*::.*->.*" contains=cleanSpecial 46 47" Define the default highlighting. 48" For version 5.7 and earlier: only when not done already 49" For version 5.8 and later: only when an item doesn't have highlighting yet 50if version >= 508 || !exists("did_clean_syntax_init") 51 if version < 508 52 let did_clean_syntax_init = 1 53 command -nargs=+ HiLink hi link <args> 54 else 55 command -nargs=+ HiLink hi def link <args> 56 endif 57 58 " Comments 59 HiLink cleanComment Comment 60 " Constants and denotations 61 HiLink cleanCharsDenot String 62 HiLink cleanStringDenot String 63 HiLink cleanCharDenot Character 64 HiLink cleanIntegerDenot Number 65 HiLink cleanBoolDenot Boolean 66 HiLink cleanRealDenot Float 67 " Identifiers 68 " Statements 69 HiLink cleanTypeClass Keyword 70 HiLink cleanConditional Conditional 71 HiLink cleanLabel Label 72 HiLink cleanKeyword Keyword 73 " Generic Preprocessing 74 HiLink cleanInclude Include 75 HiLink cleanModuleSystem PreProc 76 " Type 77 HiLink cleanBasicType Type 78 HiLink cleanSpecialType Type 79 HiLink cleanFuncTypeDef Typedef 80 " Special 81 HiLink cleanSpecial Special 82 HiLink cleanList Special 83 HiLink cleanArray Special 84 HiLink cleanRecord Special 85 HiLink cleanTuple Special 86 " Error 87 " Todo 88 89 delcommand HiLink 90endif 91 92let b:current_syntax = "clean" 93 94" vim: ts=4 95