xref: /vim-8.2.3635/runtime/syntax/sm.vim (revision bb76f24a)
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" Only when an item doesn't have highlighting yet
60
61hi def link smClause	Special
62hi def link smClauseError	Error
63hi def link smComment	Comment
64hi def link smDefine	Statement
65hi def link smElse		Delimiter
66hi def link smHeader	Statement
67hi def link smHeaderSep	String
68hi def link smMesg		Special
69hi def link smPrecedence	Number
70hi def link smRewrite	Statement
71hi def link smRewriteComment	Comment
72hi def link smRewriteLhsToken	String
73hi def link smRewriteLhsUser	Statement
74hi def link smRewriteRhsToken	String
75hi def link smRuleset	Preproc
76hi def link smTrusted	Special
77hi def link smVar		String
78
79
80let b:current_syntax = "sm"
81
82" vim: ts=18
83