blob: 233ecbda10ed839d8c737bd873bf45810c90a9b1 [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>
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