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