xref: /vim-8.2.3635/runtime/syntax/clean.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:		Clean
3071d4279SBram Moolenaar" Author:		Pieter van Engelen <[email protected]>
4071d4279SBram Moolenaar" Co-Author:	Arthur van Leeuwen <[email protected]>
5d5d015d4SBram Moolenaar" Last Change:	2013 Oct 15 by Jurriën Stutterheim
6071d4279SBram Moolenaar
789bcfda6SBram Moolenaar" quit when a syntax file was already loaded
889bcfda6SBram Moolenaarif exists("b:current_syntax")
9071d4279SBram Moolenaar  finish
10071d4279SBram Moolenaarendif
11071d4279SBram Moolenaar
12b6b046b2SBram Moolenaarlet s:cpo_save = &cpo
13b6b046b2SBram Moolenaarset cpo&vim
14b6b046b2SBram Moolenaar
15071d4279SBram Moolenaar" Some Clean-keywords
16071d4279SBram Moolenaarsyn keyword cleanConditional if case
17071d4279SBram Moolenaarsyn keyword cleanLabel let! with where in of
18071d4279SBram Moolenaarsyn keyword cleanSpecial Start
19071d4279SBram Moolenaarsyn keyword cleanKeyword infixl infixr infix
20071d4279SBram Moolenaarsyn keyword cleanBasicType Int Real Char Bool String
21071d4279SBram Moolenaarsyn keyword cleanSpecialType World ProcId Void Files File
22071d4279SBram Moolenaarsyn keyword cleanModuleSystem module implementation definition system
23071d4279SBram Moolenaarsyn keyword cleanTypeClass class instance export
24071d4279SBram Moolenaar
2556b45b9bSBram Moolenaar" Import highlighting
2656b45b9bSBram Moolenaarsyn region cleanIncludeRegion start="^\s*\(from\|import\|\s\+\(as\|qualified\)\)" end="\n" contains=cleanIncludeKeyword keepend
2756b45b9bSBram Moolenaarsyn keyword cleanIncludeKeyword contained from import as qualified
2856b45b9bSBram Moolenaar
29071d4279SBram Moolenaar" To do some Denotation Highlighting
30071d4279SBram Moolenaarsyn keyword cleanBoolDenot True False
31d5d015d4SBram Moolenaarsyn region cleanStringDenot start=+"+ skip=+\(\(\\\\\)\+\|\\"\)+ end=+"+ display
32d5d015d4SBram Moolenaarsyn match cleanCharDenot "'\(\\\\\|\\'\|[^'\\]\)\+'" display
33d5d015d4SBram Moolenaarsyn match cleanIntegerDenot "[\~+-]\?\<\(\d\+\|0[0-7]\+\|0x[0-9A-Fa-f]\+\)\>" display
34d5d015d4SBram Moolenaarsyn match cleanRealDenot "[\~+-]\?\d\+\.\d\+\(E[\~+-]\?\d\+\)\?" display
35071d4279SBram Moolenaar
36071d4279SBram Moolenaar" To highlight the use of lists, tuples and arrays
37071d4279SBram Moolenaarsyn region cleanList start="\[" end="\]" contains=ALL
38071d4279SBram Moolenaarsyn region cleanRecord start="{" end="}" contains=ALL
39071d4279SBram Moolenaarsyn region cleanArray start="{:" end=":}" contains=ALL
40071d4279SBram Moolenaarsyn match cleanTuple "([^=]*,[^=]*)" contains=ALL
41071d4279SBram Moolenaar
42071d4279SBram Moolenaar" To do some Comment Highlighting
43d5d015d4SBram Moolenaarsyn region cleanComment start="/\*"  end="\*/" contains=cleanComment,cleanTodo fold
44d5d015d4SBram Moolenaarsyn region cleanComment start="//.*" end="$" display contains=cleanTodo
45d5d015d4SBram Moolenaarsyn keyword cleanTodo TODO FIXME XXX contained
46071d4279SBram Moolenaar
47071d4279SBram Moolenaar" Now for some useful type definition recognition
48d5d015d4SBram Moolenaarsyn match cleanFuncTypeDef "\([a-zA-Z].*\|(\=[-~@#$%^?!+*<>\/|&=:]\+)\=\)\s*\(infix[lr]\=\)\=\s*\d\=\s*::.*->.*" contains=cleanSpecial,cleanBasicType,cleanSpecialType,cleanKeyword
49d5d015d4SBram Moolenaar
50071d4279SBram Moolenaar
51071d4279SBram Moolenaar" Define the default highlighting.
5289bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
53071d4279SBram Moolenaar
54071d4279SBram Moolenaar " Comments
55*f37506f6SBram Moolenaar hi def link cleanComment      Comment
56071d4279SBram Moolenaar " Constants and denotations
57*f37506f6SBram Moolenaar hi def link cleanStringDenot  String
58*f37506f6SBram Moolenaar hi def link cleanCharDenot    Character
59*f37506f6SBram Moolenaar hi def link cleanIntegerDenot Number
60*f37506f6SBram Moolenaar hi def link cleanBoolDenot    Boolean
61*f37506f6SBram Moolenaar hi def link cleanRealDenot    Float
62071d4279SBram Moolenaar " Identifiers
63071d4279SBram Moolenaar " Statements
64*f37506f6SBram Moolenaar hi def link cleanTypeClass    Keyword
65*f37506f6SBram Moolenaar hi def link cleanConditional  Conditional
66*f37506f6SBram Moolenaar hi def link cleanLabel		Label
67*f37506f6SBram Moolenaar hi def link cleanKeyword      Keyword
68071d4279SBram Moolenaar " Generic Preprocessing
69*f37506f6SBram Moolenaar hi def link cleanIncludeKeyword      Include
70*f37506f6SBram Moolenaar hi def link cleanModuleSystem PreProc
71071d4279SBram Moolenaar " Type
72*f37506f6SBram Moolenaar hi def link cleanBasicType    Type
73*f37506f6SBram Moolenaar hi def link cleanSpecialType  Type
74*f37506f6SBram Moolenaar hi def link cleanFuncTypeDef  Typedef
75071d4279SBram Moolenaar " Special
76*f37506f6SBram Moolenaar hi def link cleanSpecial      Special
77*f37506f6SBram Moolenaar hi def link cleanList			Special
78*f37506f6SBram Moolenaar hi def link cleanArray		Special
79*f37506f6SBram Moolenaar hi def link cleanRecord		Special
80*f37506f6SBram Moolenaar hi def link cleanTuple		Special
81071d4279SBram Moolenaar " Error
82071d4279SBram Moolenaar " Todo
83*f37506f6SBram Moolenaar hi def link cleanTodo         Todo
84071d4279SBram Moolenaar
85071d4279SBram Moolenaar
86071d4279SBram Moolenaarlet b:current_syntax = "clean"
87071d4279SBram Moolenaar
88b6b046b2SBram Moolenaarlet &cpo = s:cpo_save
89b6b046b2SBram Moolenaarunlet s:cpo_save
90071d4279SBram Moolenaar" vim: ts=4
91