blob: 48df7e5789731d2b166a1279c726a3a8ede148b5 [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>
4" Last Change: Oct 23, 2014
5" Version: 5
6" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
8" For version 5.x: Clear all syntax items
9" For version 6.x: Quit when a syntax file was already loaded
10if version < 600
11 syntax clear
12elseif exists("b:current_syntax")
13 finish
14endif
15
16" Comments
17syn match smComment "^#.*$" contains=@Spell
18
19" Definitions, Classes, Files, Options, Precedence, Trusted Users, Mailers
20syn match smDefine "^[CDF]."
21syn match smDefine "^O[AaBcdDeFfgHiLmNoQqrSsTtuvxXyYzZ]"
22syn match smDefine "^O\s"he=e-1
23syn match smDefine "^M[a-zA-Z0-9]\+,"he=e-1
24syn match smDefine "^T" nextgroup=smTrusted
25syn match smDefine "^P" nextgroup=smMesg
26syn match smTrusted "\S\+$" contained
27syn match smMesg "\S*="he=e-1 contained nextgroup=smPrecedence
28syn match smPrecedence "-\=[0-9]\+" contained
29
30" Header Format H?list-of-mailer-flags?name: format
31syn match smHeaderSep contained "[?:]"
32syn match smHeader "^H\(?[a-zA-Z]\+?\)\=[-a-zA-Z_]\+:" contains=smHeaderSep
33
34" Variables
35syn match smVar "\$[a-z\.\|]"
36
37" Rulesets
38syn match smRuleset "^S\d*"
39
40" Rewriting Rules
41syn match smRewrite "^R" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsUser
42
43syn match smRewriteLhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsSep
44syn match smRewriteLhsToken contained "\(\$[-*+]\|\$[-=][A-Za-z]\|\$Y\)\+" skipwhite nextgroup=smRewriteLhsUser,smRewriteLhsSep
45
46syn match smRewriteLhsSep contained "\t\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsUser
47
48syn match smRewriteRhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsSep
49syn match smRewriteRhsToken contained "\(\$\d\|\$>\d\|\$#\|\$@\|\$:[-_a-zA-Z]\+\|\$[[\]]\|\$@\|\$:\|\$[A-Za-z]\)\+" skipwhite nextgroup=smRewriteRhsUser,smRewriteRhsSep
50
51syn match smRewriteRhsSep contained "\t\+" skipwhite nextgroup=smRewriteComment,smRewriteRhsSep
52syn match smRewriteRhsSep contained "$"
53
54syn match smRewriteComment contained "[^\t$]*$"
55
56" Clauses
57syn match smClauseError "\$\."
58syn match smElse contained "\$|"
59syn match smClauseCont contained "^\t"
60syn region smClause matchgroup=Delimiter start="\$?." matchgroup=Delimiter end="\$\." contains=smElse,smClause,smVar,smClauseCont
61
62" Define the default highlighting.
63" For version 5.7 and earlier: only when not done already
64" For version 5.8 and later: only when an item doesn't have highlighting yet
65if version >= 508 || !exists("did_smil_syntax_inits")
66 if version < 508
67 let did_smil_syntax_inits = 1
68 command -nargs=+ HiLink hi link <args>
69 else
70 command -nargs=+ HiLink hi def link <args>
71 endif
72
73 HiLink smClause Special
74 HiLink smClauseError Error
75 HiLink smComment Comment
76 HiLink smDefine Statement
77 HiLink smElse Delimiter
78 HiLink smHeader Statement
79 HiLink smHeaderSep String
80 HiLink smMesg Special
81 HiLink smPrecedence Number
82 HiLink smRewrite Statement
83 HiLink smRewriteComment Comment
84 HiLink smRewriteLhsToken String
85 HiLink smRewriteLhsUser Statement
86 HiLink smRewriteRhsToken String
87 HiLink smRuleset Preproc
88 HiLink smTrusted Special
89 HiLink smVar String
90
91 delcommand HiLink
92endif
93
94let b:current_syntax = "sm"
95
96" vim: ts=18