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