xref: /vim-8.2.3635/runtime/syntax/clean.vim (revision 89bcfda6)
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 Oct 15 by Jurriën Stutterheim
6
7" quit when a syntax file was already loaded
8if exists("b:current_syntax")
9  finish
10endif
11
12let s:cpo_save = &cpo
13set cpo&vim
14
15" Some Clean-keywords
16syn keyword cleanConditional if case
17syn keyword cleanLabel let! with where in of
18syn 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
25" 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
29" To do some Denotation Highlighting
30syn keyword cleanBoolDenot True False
31syn 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
35
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
43syn region cleanComment start="/\*"  end="\*/" contains=cleanComment,cleanTodo fold
44syn region cleanComment start="//.*" end="$" display contains=cleanTodo
45syn keyword cleanTodo TODO FIXME XXX contained
46
47" 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
50
51" Define the default highlighting.
52" Only when an item doesn't have highlighting yet
53command -nargs=+ HiLink hi def link <args>
54
55 " 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
85
86delcommand HiLink
87
88let b:current_syntax = "clean"
89
90let &cpo = s:cpo_save
91unlet s:cpo_save
92" vim: ts=4
93