xref: /vim-8.2.3635/runtime/syntax/sm.vim (revision 89bcfda6)
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
60command -nargs=+ HiLink hi def link <args>
61
62HiLink smClause	Special
63HiLink smClauseError	Error
64HiLink smComment	Comment
65HiLink smDefine	Statement
66HiLink smElse		Delimiter
67HiLink smHeader	Statement
68HiLink smHeaderSep	String
69HiLink smMesg		Special
70HiLink smPrecedence	Number
71HiLink smRewrite	Statement
72HiLink smRewriteComment	Comment
73HiLink smRewriteLhsToken	String
74HiLink smRewriteLhsUser	Statement
75HiLink smRewriteRhsToken	String
76HiLink smRuleset	Preproc
77HiLink smTrusted	Special
78HiLink smVar		String
79
80delcommand HiLink
81
82let b:current_syntax = "sm"
83
84" vim: ts=18
85