blob: 33a67724f18815ed515de94773d52579a18f13e4 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: sendmail
Bram Moolenaare2719092015-01-10 15:09:25 +01003" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
Bram Moolenaar83d1b192015-04-13 14:22:40 +02004" Last Change: Oct 23, 2014
5" Version: 7
Bram Moolenaare2719092015-01-10 15:09:25 +01006" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
Bram Moolenaar9da7ff72015-01-14 12:52:36 +01008if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00009 finish
10endif
11
12" Comments
13syn match smComment "^#.*$" contains=@Spell
14
15" Definitions, Classes, Files, Options, Precedence, Trusted Users, Mailers
16syn match smDefine "^[CDF]."
17syn match smDefine "^O[AaBcdDeFfgHiLmNoQqrSsTtuvxXyYzZ]"
18syn match smDefine "^O\s"he=e-1
19syn match smDefine "^M[a-zA-Z0-9]\+,"he=e-1
20syn match smDefine "^T" nextgroup=smTrusted
21syn match smDefine "^P" nextgroup=smMesg
22syn match smTrusted "\S\+$" contained
23syn match smMesg "\S*="he=e-1 contained nextgroup=smPrecedence
24syn match smPrecedence "-\=[0-9]\+" contained
25
26" Header Format H?list-of-mailer-flags?name: format
27syn match smHeaderSep contained "[?:]"
28syn match smHeader "^H\(?[a-zA-Z]\+?\)\=[-a-zA-Z_]\+:" contains=smHeaderSep
29
30" Variables
31syn match smVar "\$[a-z\.\|]"
32
33" Rulesets
34syn match smRuleset "^S\d*"
35
36" Rewriting Rules
37syn match smRewrite "^R" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsUser
38
39syn match smRewriteLhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsSep
40syn match smRewriteLhsToken contained "\(\$[-*+]\|\$[-=][A-Za-z]\|\$Y\)\+" skipwhite nextgroup=smRewriteLhsUser,smRewriteLhsSep
41
42syn match smRewriteLhsSep contained "\t\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsUser
43
44syn match smRewriteRhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsSep
45syn match smRewriteRhsToken contained "\(\$\d\|\$>\d\|\$#\|\$@\|\$:[-_a-zA-Z]\+\|\$[[\]]\|\$@\|\$:\|\$[A-Za-z]\)\+" skipwhite nextgroup=smRewriteRhsUser,smRewriteRhsSep
46
47syn match smRewriteRhsSep contained "\t\+" skipwhite nextgroup=smRewriteComment,smRewriteRhsSep
48syn match smRewriteRhsSep contained "$"
49
50syn match smRewriteComment contained "[^\t$]*$"
51
52" Clauses
53syn match smClauseError "\$\."
54syn match smElse contained "\$|"
55syn match smClauseCont contained "^\t"
56syn region smClause matchgroup=Delimiter start="\$?." matchgroup=Delimiter end="\$\." contains=smElse,smClause,smVar,smClauseCont
57
58" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020059" Only when an item doesn't have highlighting yet
60command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000061
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020062HiLink smClause Special
63HiLink smClauseError Error
64HiLink smComment Comment
65HiLink smDefine Statement
66HiLink smElse Delimiter
67HiLink smHeader Statement
68HiLink smHeaderSep String
69HiLink smMesg Special
70HiLink smPrecedence Number
71HiLink smRewrite Statement
72HiLink smRewriteComment Comment
73HiLink smRewriteLhsToken String
74HiLink smRewriteLhsUser Statement
75HiLink smRewriteRhsToken String
76HiLink smRuleset Preproc
77HiLink smTrusted Special
78HiLink smVar String
Bram Moolenaar071d4272004-06-13 20:20:40 +000079
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020080delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +000081
82let b:current_syntax = "sm"
83
84" vim: ts=18