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