blob: 8fdc14b71a72648058773abda65592bc3cc36659 [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.
59" For version 5.7 and earlier: only when not done already
60" For version 5.8 and later: only when an item doesn't have highlighting yet
61if version >= 508 || !exists("did_smil_syntax_inits")
62 if version < 508
63 let did_smil_syntax_inits = 1
64 command -nargs=+ HiLink hi link <args>
65 else
66 command -nargs=+ HiLink hi def link <args>
67 endif
68
69 HiLink smClause Special
70 HiLink smClauseError Error
71 HiLink smComment Comment
72 HiLink smDefine Statement
73 HiLink smElse Delimiter
74 HiLink smHeader Statement
75 HiLink smHeaderSep String
76 HiLink smMesg Special
77 HiLink smPrecedence Number
78 HiLink smRewrite Statement
79 HiLink smRewriteComment Comment
80 HiLink smRewriteLhsToken String
81 HiLink smRewriteLhsUser Statement
82 HiLink smRewriteRhsToken String
83 HiLink smRuleset Preproc
84 HiLink smTrusted Special
85 HiLink smVar String
86
87 delcommand HiLink
88endif
89
90let b:current_syntax = "sm"
91
92" vim: ts=18