xref: /vim-8.2.3635/runtime/syntax/elmfilt.vim (revision 1d9215b9)
1" Vim syntax file
2" Language:	Elm Filter rules
3" Maintainer:	Charles E. Campbell <[email protected]>
4" Last Change:	Aug 31, 2016
5" Version:	9
6" URL:	http://www.drchip.org/astronaut/vim/index.html#SYNTAX_ELMFILT
7
8" quit when a syntax file was already loaded
9if exists("b:current_syntax")
10  finish
11endif
12
13syn cluster elmfiltIfGroup	contains=elmfiltCond,elmfiltOper,elmfiltOperKey,,elmfiltNumber,elmfiltOperKey
14
15syn match	elmfiltParenError	"[()]"
16syn match	elmfiltMatchError	"/"
17syn region	elmfiltIf	start="\<if\>" end="\<then\>"	contains=elmfiltParen,elmfiltParenError skipnl skipwhite nextgroup=elmfiltAction
18syn region	elmfiltParen	contained	matchgroup=Delimiter start="(" matchgroup=Delimiter end=")"	contains=elmfiltParen,@elmfiltIfGroup,elmfiltThenError
19syn region	elmfiltMatch	contained	matchgroup=Delimiter start="/" skip="\\/" matchgroup=Delimiter end="/"	skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey
20syn match	elmfiltThenError	"\<then.*$"
21syn match	elmfiltComment	"^#.*$"		contains=@Spell
22
23syn keyword	elmfiltAction	contained	delete execute executec forward forwardc leave save savecopy skipnl skipwhite nextgroup=elmfiltString
24syn match	elmfiltArg	contained	"[^\\]%[&0-9dDhmrsSty&]"lc=1
25
26syn match	elmfiltOperKey	contained	"\<contains\>"			skipnl skipwhite nextgroup=elmfiltString
27syn match	elmfiltOperKey	contained	"\<matches\s"			nextgroup=elmfiltMatch,elmfiltSpaceError
28syn keyword	elmfiltCond	contained	cc bcc lines always subject sender from to lines received	skipnl skipwhite nextgroup=elmfiltString
29syn match	elmfiltNumber	contained	"\d\+"
30syn keyword	elmfiltOperKey	contained	and not				skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,elmfiltString
31syn match	elmfiltOper	contained	"\~"				skipnl skipwhite nextgroup=elmfiltMatch
32syn match	elmfiltOper	contained	"<=\|>=\|!=\|<\|<\|="		skipnl skipwhite nextgroup=elmfiltString,elmfiltCond,elmfiltOperKey
33syn region	elmfiltString	contained	start='"' skip='"\(\\\\\)*\\["%]' end='"'	contains=elmfiltArg skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,@Spell
34syn region	elmfiltString	contained	start="'" skip="'\(\\\\\)*\\['%]" end="'"	contains=elmfiltArg skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,@Spell
35syn match	elmfiltSpaceError	contained	"\s.*$"
36
37" Define the default highlighting.
38if !exists("skip_elmfilt_syntax_inits")
39
40  hi def link elmfiltAction	Statement
41  hi def link elmfiltArg	Special
42  hi def link elmfiltComment	Comment
43  hi def link elmfiltCond	Statement
44  hi def link elmfiltIf	Statement
45  hi def link elmfiltMatch	Special
46  hi def link elmfiltMatchError	Error
47  hi def link elmfiltNumber	Number
48  hi def link elmfiltOper	Operator
49  hi def link elmfiltOperKey	Type
50  hi def link elmfiltParenError	Error
51  hi def link elmfiltSpaceError	Error
52  hi def link elmfiltString	String
53  hi def link elmfiltThenError	Error
54
55endif
56
57let b:current_syntax = "elmfilt"
58" vim: ts=9
59