xref: /vim-8.2.3635/runtime/syntax/sm.vim (revision 00a927d6)
1" Vim syntax file
2" Language:	sendmail
3" Maintainer:	Dr. Charles E. Campbell, Jr. <[email protected]>
4" Last Change:	Sep 06, 2005
5" Version:	4
6" URL:	http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
7
8" For version 5.x: Clear all syntax items
9" For version 6.x: Quit when a syntax file was already loaded
10if version < 600
11  syntax clear
12elseif exists("b:current_syntax")
13  finish
14endif
15
16" Comments
17syn match smComment	"^#.*$"	contains=@Spell
18
19" Definitions, Classes, Files, Options, Precedence, Trusted Users, Mailers
20syn match smDefine	"^[CDF]."
21syn match smDefine	"^O[AaBcdDeFfgHiLmNoQqrSsTtuvxXyYzZ]"
22syn match smDefine	"^O\s"he=e-1
23syn match smDefine	"^M[a-zA-Z0-9]\+,"he=e-1
24syn match smDefine	"^T"	nextgroup=smTrusted
25syn match smDefine	"^P"	nextgroup=smMesg
26syn match smTrusted	"\S\+$"		contained
27syn match smMesg		"\S*="he=e-1	contained nextgroup=smPrecedence
28syn match smPrecedence	"-\=[0-9]\+"		contained
29
30" Header Format  H?list-of-mailer-flags?name: format
31syn match smHeaderSep contained "[?:]"
32syn match smHeader	"^H\(?[a-zA-Z]\+?\)\=[-a-zA-Z_]\+:" contains=smHeaderSep
33
34" Variables
35syn match smVar		"\$[a-z\.\|]"
36
37" Rulesets
38syn match smRuleset	"^S\d*"
39
40" Rewriting Rules
41syn match smRewrite	"^R"			skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsUser
42
43syn match smRewriteLhsUser	contained "[^\t$]\+"		skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsSep
44syn match smRewriteLhsToken	contained "\(\$[-*+]\|\$[-=][A-Za-z]\|\$Y\)\+"	skipwhite nextgroup=smRewriteLhsUser,smRewriteLhsSep
45
46syn match smRewriteLhsSep	contained "\t\+"			skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsUser
47
48syn match smRewriteRhsUser	contained "[^\t$]\+"		skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsSep
49syn match smRewriteRhsToken	contained "\(\$\d\|\$>\d\|\$#\|\$@\|\$:[-_a-zA-Z]\+\|\$[[\]]\|\$@\|\$:\|\$[A-Za-z]\)\+" skipwhite nextgroup=smRewriteRhsUser,smRewriteRhsSep
50
51syn match smRewriteRhsSep	contained "\t\+"			skipwhite nextgroup=smRewriteComment,smRewriteRhsSep
52syn match smRewriteRhsSep	contained "$"
53
54syn match smRewriteComment	contained "[^\t$]*$"
55
56" Clauses
57syn match smClauseError		"\$\."
58syn match smElse		contained	"\$|"
59syn match smClauseCont	contained	"^\t"
60syn region smClause	matchgroup=Delimiter start="\$?." matchgroup=Delimiter end="\$\." contains=smElse,smClause,smVar,smClauseCont
61
62" Define the default highlighting.
63" For version 5.7 and earlier: only when not done already
64" For version 5.8 and later: only when an item doesn't have highlighting yet
65if version >= 508 || !exists("did_smil_syntax_inits")
66  if version < 508
67    let did_smil_syntax_inits = 1
68    command -nargs=+ HiLink hi link <args>
69  else
70    command -nargs=+ HiLink hi def link <args>
71  endif
72
73  HiLink smClause	Special
74  HiLink smClauseError	Error
75  HiLink smComment	Comment
76  HiLink smDefine	Statement
77  HiLink smElse		Delimiter
78  HiLink smHeader	Statement
79  HiLink smHeaderSep	String
80  HiLink smMesg		Special
81  HiLink smPrecedence	Number
82  HiLink smRewrite	Statement
83  HiLink smRewriteComment	Comment
84  HiLink smRewriteLhsToken	String
85  HiLink smRewriteLhsUser	Statement
86  HiLink smRewriteRhsToken	String
87  HiLink smRuleset	Preproc
88  HiLink smTrusted	Special
89  HiLink smVar		String
90
91  delcommand HiLink
92endif
93
94let b:current_syntax = "sm"
95
96" vim: ts=18
97