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