xref: /vim-8.2.3635/runtime/syntax/clean.vim (revision cb03397a)
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" 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 cleanSpecial Start
22syn keyword cleanKeyword infixl infixr infix
23syn keyword cleanBasicType Int Real Char Bool String
24syn keyword cleanSpecialType World ProcId Void Files File
25syn keyword cleanModuleSystem module implementation definition system
26syn keyword cleanTypeClass class instance export
27
28" Import highlighting
29syn region cleanIncludeRegion start="^\s*\(from\|import\|\s\+\(as\|qualified\)\)" end="\n" contains=cleanIncludeKeyword keepend
30syn keyword cleanIncludeKeyword contained from import as qualified
31
32" To do some Denotation Highlighting
33syn keyword cleanBoolDenot True False
34syn region cleanStringDenot start=+"+ skip=+\(\(\\\\\)\+\|\\"\)+ end=+"+ display
35syn match cleanCharDenot "'\(\\\\\|\\'\|[^'\\]\)\+'" display
36syn match cleanIntegerDenot "[\~+-]\?\<\(\d\+\|0[0-7]\+\|0x[0-9A-Fa-f]\+\)\>" display
37syn match cleanRealDenot "[\~+-]\?\d\+\.\d\+\(E[\~+-]\?\d\+\)\?" display
38
39" To highlight the use of lists, tuples and arrays
40syn region cleanList start="\[" end="\]" contains=ALL
41syn region cleanRecord start="{" end="}" contains=ALL
42syn region cleanArray start="{:" end=":}" contains=ALL
43syn match cleanTuple "([^=]*,[^=]*)" contains=ALL
44
45" To do some Comment Highlighting
46syn region cleanComment start="/\*"  end="\*/" contains=cleanComment,cleanTodo fold
47syn region cleanComment start="//.*" end="$" display contains=cleanTodo
48syn keyword cleanTodo TODO FIXME XXX contained
49
50" Now for some useful type definition recognition
51syn match cleanFuncTypeDef "\([a-zA-Z].*\|(\=[-~@#$%^?!+*<>\/|&=:]\+)\=\)\s*\(infix[lr]\=\)\=\s*\d\=\s*::.*->.*" contains=cleanSpecial,cleanBasicType,cleanSpecialType,cleanKeyword
52
53
54" Define the default highlighting.
55" For version 5.7 and earlier: only when not done already
56" For version 5.8 and later: only when an item doesn't have highlighting yet
57if version >= 508 || !exists("did_clean_syntax_init")
58  if version < 508
59    let did_clean_syntax_init = 1
60    command -nargs=+ HiLink hi link <args>
61  else
62    command -nargs=+ HiLink hi def link <args>
63  endif
64
65   " Comments
66   HiLink cleanComment      Comment
67   " Constants and denotations
68   HiLink cleanStringDenot  String
69   HiLink cleanCharDenot    Character
70   HiLink cleanIntegerDenot Number
71   HiLink cleanBoolDenot    Boolean
72   HiLink cleanRealDenot    Float
73   " Identifiers
74   " Statements
75   HiLink cleanTypeClass    Keyword
76   HiLink cleanConditional  Conditional
77   HiLink cleanLabel		Label
78   HiLink cleanKeyword      Keyword
79   " Generic Preprocessing
80   HiLink cleanIncludeKeyword      Include
81   HiLink cleanModuleSystem PreProc
82   " Type
83   HiLink cleanBasicType    Type
84   HiLink cleanSpecialType  Type
85   HiLink cleanFuncTypeDef  Typedef
86   " Special
87   HiLink cleanSpecial      Special
88   HiLink cleanList			Special
89   HiLink cleanArray		Special
90   HiLink cleanRecord		Special
91   HiLink cleanTuple		Special
92   " Error
93   " Todo
94   HiLink cleanTodo         Todo
95
96  delcommand HiLink
97endif
98
99let b:current_syntax = "clean"
100
101let &cpo = s:cpo_save
102unlet s:cpo_save
103" vim: ts=4
104