xref: /vim-8.2.3635/runtime/syntax/clean.vim (revision 6c35beaa)
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:	2011 Dec 25 by Thilo Six
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 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
97let &cpo = s:cpo_save
98unlet s:cpo_save
99" vim: ts=4
100