blob: 13ddfaba3c46b2c0d8063e6865aab3c4dc51ec91 [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 Moolenaard5d015d2013-11-03 21:14:31 +01005" Last Change: 2013 Oct 15 by Jurriƫn Stutterheim
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02007" quit when a syntax file was already loaded
8if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00009 finish
10endif
11
Bram Moolenaarb6b046b2011-12-30 13:11:27 +010012let s:cpo_save = &cpo
13set cpo&vim
14
Bram Moolenaar071d4272004-06-13 20:20:40 +000015" Some Clean-keywords
16syn keyword cleanConditional if case
17syn keyword cleanLabel let! with where in of
Bram Moolenaar071d4272004-06-13 20:20:40 +000018syn keyword cleanSpecial Start
19syn keyword cleanKeyword infixl infixr infix
20syn keyword cleanBasicType Int Real Char Bool String
21syn keyword cleanSpecialType World ProcId Void Files File
22syn keyword cleanModuleSystem module implementation definition system
23syn keyword cleanTypeClass class instance export
24
Bram Moolenaar56b45b92013-06-24 22:22:18 +020025" Import highlighting
26syn region cleanIncludeRegion start="^\s*\(from\|import\|\s\+\(as\|qualified\)\)" end="\n" contains=cleanIncludeKeyword keepend
27syn keyword cleanIncludeKeyword contained from import as qualified
28
Bram Moolenaar071d4272004-06-13 20:20:40 +000029" To do some Denotation Highlighting
30syn keyword cleanBoolDenot True False
Bram Moolenaard5d015d2013-11-03 21:14:31 +010031syn region cleanStringDenot start=+"+ skip=+\(\(\\\\\)\+\|\\"\)+ end=+"+ display
32syn match cleanCharDenot "'\(\\\\\|\\'\|[^'\\]\)\+'" display
33syn match cleanIntegerDenot "[\~+-]\?\<\(\d\+\|0[0-7]\+\|0x[0-9A-Fa-f]\+\)\>" display
34syn match cleanRealDenot "[\~+-]\?\d\+\.\d\+\(E[\~+-]\?\d\+\)\?" display
Bram Moolenaar071d4272004-06-13 20:20:40 +000035
36" To highlight the use of lists, tuples and arrays
37syn region cleanList start="\[" end="\]" contains=ALL
38syn region cleanRecord start="{" end="}" contains=ALL
39syn region cleanArray start="{:" end=":}" contains=ALL
40syn match cleanTuple "([^=]*,[^=]*)" contains=ALL
41
42" To do some Comment Highlighting
Bram Moolenaard5d015d2013-11-03 21:14:31 +010043syn region cleanComment start="/\*" end="\*/" contains=cleanComment,cleanTodo fold
44syn region cleanComment start="//.*" end="$" display contains=cleanTodo
45syn keyword cleanTodo TODO FIXME XXX contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000046
Bram Moolenaard5d015d2013-11-03 21:14:31 +010047" Now for some useful type definition recognition
48syn match cleanFuncTypeDef "\([a-zA-Z].*\|(\=[-~@#$%^?!+*<>\/|&=:]\+)\=\)\s*\(infix[lr]\=\)\=\s*\d\=\s*::.*->.*" contains=cleanSpecial,cleanBasicType,cleanSpecialType,cleanKeyword
49
Bram Moolenaar071d4272004-06-13 20:20:40 +000050
51" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020052" Only when an item doesn't have highlighting yet
53command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000054
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020055 " Comments
56 HiLink cleanComment Comment
57 " Constants and denotations
58 HiLink cleanStringDenot String
59 HiLink cleanCharDenot Character
60 HiLink cleanIntegerDenot Number
61 HiLink cleanBoolDenot Boolean
62 HiLink cleanRealDenot Float
63 " Identifiers
64 " Statements
65 HiLink cleanTypeClass Keyword
66 HiLink cleanConditional Conditional
67 HiLink cleanLabel Label
68 HiLink cleanKeyword Keyword
69 " Generic Preprocessing
70 HiLink cleanIncludeKeyword Include
71 HiLink cleanModuleSystem PreProc
72 " Type
73 HiLink cleanBasicType Type
74 HiLink cleanSpecialType Type
75 HiLink cleanFuncTypeDef Typedef
76 " Special
77 HiLink cleanSpecial Special
78 HiLink cleanList Special
79 HiLink cleanArray Special
80 HiLink cleanRecord Special
81 HiLink cleanTuple Special
82 " Error
83 " Todo
84 HiLink cleanTodo Todo
Bram Moolenaar071d4272004-06-13 20:20:40 +000085
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020086delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +000087
88let b:current_syntax = "clean"
89
Bram Moolenaarb6b046b2011-12-30 13:11:27 +010090let &cpo = s:cpo_save
91unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +000092" vim: ts=4