blob: d995853e8e2e4511eee30eb5766346526d44683a [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Elm Filter rules
Bram Moolenaar1d9215b2020-01-25 13:27:42 +01003" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
Bram Moolenaarf37506f2016-08-31 22:22:10 +02004" Last Change: Aug 31, 2016
Bram Moolenaar1d9215b2020-01-25 13:27:42 +01005" Version: 9
Bram Moolenaare2719092015-01-10 15:09:25 +01006" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_ELMFILT
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02008" quit when a syntax file was already loaded
9if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000010 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
Bram Moolenaar9964e462007-05-05 17:54:07 +000033syn 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000035syn match elmfiltSpaceError contained "\s.*$"
36
37" Define the default highlighting.
Bram Moolenaarf37506f2016-08-31 22:22:10 +020038if !exists("skip_elmfilt_syntax_inits")
Bram Moolenaar071d4272004-06-13 20:20:40 +000039
Bram Moolenaarf37506f2016-08-31 22:22:10 +020040 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000054
Bram Moolenaarf37506f2016-08-31 22:22:10 +020055endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000056
57let b:current_syntax = "elmfilt"
58" vim: ts=9