xref: /vim-8.2.3635/runtime/syntax/sm.vim (revision 36e294c0)
1" Vim syntax file
2" Language:	sendmail
3" Maintainer:	Charles E. Campbell <[email protected]>
4" Last Change:	Oct 23, 2014
5" Version:	7
6" URL:	http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM
7
8if exists("b:current_syntax")
9  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
93