blob: a16575c519cd260b4ff1ed37bed221f37376463c [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: sendmail
Bram Moolenaar1d9215b2020-01-25 13:27:42 +01003" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02004" Last Change: Oct 25, 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_SM
Bram Moolenaar9da7ff72015-01-14 12:52:36 +01007if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00008 finish
9endif
10
11" Comments
12syn match smComment "^#.*$" contains=@Spell
13
14" Definitions, Classes, Files, Options, Precedence, Trusted Users, Mailers
15syn match smDefine "^[CDF]."
16syn match smDefine "^O[AaBcdDeFfgHiLmNoQqrSsTtuvxXyYzZ]"
17syn match smDefine "^O\s"he=e-1
18syn match smDefine "^M[a-zA-Z0-9]\+,"he=e-1
19syn match smDefine "^T" nextgroup=smTrusted
20syn match smDefine "^P" nextgroup=smMesg
21syn match smTrusted "\S\+$" contained
22syn match smMesg "\S*="he=e-1 contained nextgroup=smPrecedence
23syn match smPrecedence "-\=[0-9]\+" contained
24
25" Header Format H?list-of-mailer-flags?name: format
26syn match smHeaderSep contained "[?:]"
27syn match smHeader "^H\(?[a-zA-Z]\+?\)\=[-a-zA-Z_]\+:" contains=smHeaderSep
28
29" Variables
30syn match smVar "\$[a-z\.\|]"
31
32" Rulesets
33syn match smRuleset "^S\d*"
34
35" Rewriting Rules
36syn match smRewrite "^R" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsUser
37
38syn match smRewriteLhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsSep
39syn match smRewriteLhsToken contained "\(\$[-*+]\|\$[-=][A-Za-z]\|\$Y\)\+" skipwhite nextgroup=smRewriteLhsUser,smRewriteLhsSep
40
41syn match smRewriteLhsSep contained "\t\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsUser
42
43syn match smRewriteRhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsSep
44syn match smRewriteRhsToken contained "\(\$\d\|\$>\d\|\$#\|\$@\|\$:[-_a-zA-Z]\+\|\$[[\]]\|\$@\|\$:\|\$[A-Za-z]\)\+" skipwhite nextgroup=smRewriteRhsUser,smRewriteRhsSep
45
46syn match smRewriteRhsSep contained "\t\+" skipwhite nextgroup=smRewriteComment,smRewriteRhsSep
47syn match smRewriteRhsSep contained "$"
48
49syn match smRewriteComment contained "[^\t$]*$"
50
51" Clauses
52syn match smClauseError "\$\."
53syn match smElse contained "\$|"
54syn match smClauseCont contained "^\t"
55syn region smClause matchgroup=Delimiter start="\$?." matchgroup=Delimiter end="\$\." contains=smElse,smClause,smVar,smClauseCont
56
57" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020058" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
Bram Moolenaarf37506f2016-08-31 22:22:10 +020060hi def link smClause Special
61hi def link smClauseError Error
62hi def link smComment Comment
63hi def link smDefine Statement
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +020064hi def link smElse Delimiter
Bram Moolenaarf37506f2016-08-31 22:22:10 +020065hi def link smHeader Statement
66hi def link smHeaderSep String
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +020067hi def link smMesg Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +020068hi def link smPrecedence Number
69hi def link smRewrite Statement
70hi def link smRewriteComment Comment
71hi def link smRewriteLhsToken String
72hi def link smRewriteLhsUser Statement
73hi def link smRewriteRhsToken String
74hi def link smRuleset Preproc
75hi def link smTrusted Special
76hi def link smVar String
Bram Moolenaar071d4272004-06-13 20:20:40 +000077
Bram Moolenaar071d4272004-06-13 20:20:40 +000078let b:current_syntax = "sm"
79
80" vim: ts=18