blob: 13a5bf117e850b4c8c3cf322bd136ec61236eb96 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: sendmail
Christian Brabandtf9ca1392024-02-19 20:37:11 +01003" Maintainer: This runtime file is looking for a new maintainer.
4" Former Maintainer: Charles E. Campbell
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02005" Last Change: Oct 25, 2016
Christian Brabandtf9ca1392024-02-19 20:37:11 +01006" 2024 Feb 19 by Vim Project (announce adoption)
Bram Moolenaar1d9215b2020-01-25 13:27:42 +01007" Version: 9
Christian Brabandtf9ca1392024-02-19 20:37:11 +01008" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM
Bram Moolenaar9da7ff72015-01-14 12:52:36 +01009if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000010 finish
11endif
12
13" Comments
14syn match smComment "^#.*$" contains=@Spell
15
16" Definitions, Classes, Files, Options, Precedence, Trusted Users, Mailers
17syn match smDefine "^[CDF]."
18syn match smDefine "^O[AaBcdDeFfgHiLmNoQqrSsTtuvxXyYzZ]"
19syn match smDefine "^O\s"he=e-1
20syn match smDefine "^M[a-zA-Z0-9]\+,"he=e-1
21syn match smDefine "^T" nextgroup=smTrusted
22syn match smDefine "^P" nextgroup=smMesg
23syn match smTrusted "\S\+$" contained
24syn match smMesg "\S*="he=e-1 contained nextgroup=smPrecedence
25syn match smPrecedence "-\=[0-9]\+" contained
26
27" Header Format H?list-of-mailer-flags?name: format
28syn match smHeaderSep contained "[?:]"
29syn match smHeader "^H\(?[a-zA-Z]\+?\)\=[-a-zA-Z_]\+:" contains=smHeaderSep
30
31" Variables
32syn match smVar "\$[a-z\.\|]"
33
34" Rulesets
35syn match smRuleset "^S\d*"
36
37" Rewriting Rules
38syn match smRewrite "^R" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsUser
39
40syn match smRewriteLhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsSep
41syn match smRewriteLhsToken contained "\(\$[-*+]\|\$[-=][A-Za-z]\|\$Y\)\+" skipwhite nextgroup=smRewriteLhsUser,smRewriteLhsSep
42
43syn match smRewriteLhsSep contained "\t\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsUser
44
45syn match smRewriteRhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsSep
46syn match smRewriteRhsToken contained "\(\$\d\|\$>\d\|\$#\|\$@\|\$:[-_a-zA-Z]\+\|\$[[\]]\|\$@\|\$:\|\$[A-Za-z]\)\+" skipwhite nextgroup=smRewriteRhsUser,smRewriteRhsSep
47
48syn match smRewriteRhsSep contained "\t\+" skipwhite nextgroup=smRewriteComment,smRewriteRhsSep
49syn match smRewriteRhsSep contained "$"
50
51syn match smRewriteComment contained "[^\t$]*$"
52
53" Clauses
54syn match smClauseError "\$\."
55syn match smElse contained "\$|"
56syn match smClauseCont contained "^\t"
57syn region smClause matchgroup=Delimiter start="\$?." matchgroup=Delimiter end="\$\." contains=smElse,smClause,smVar,smClauseCont
58
59" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020060" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +000061
Bram Moolenaarf37506f2016-08-31 22:22:10 +020062hi def link smClause Special
63hi def link smClauseError Error
64hi def link smComment Comment
65hi def link smDefine Statement
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +020066hi def link smElse Delimiter
Bram Moolenaarf37506f2016-08-31 22:22:10 +020067hi def link smHeader Statement
68hi def link smHeaderSep String
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +020069hi def link smMesg Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +020070hi def link smPrecedence Number
71hi def link smRewrite Statement
72hi def link smRewriteComment Comment
73hi def link smRewriteLhsToken String
74hi def link smRewriteLhsUser Statement
75hi def link smRewriteRhsToken String
76hi def link smRuleset Preproc
77hi def link smTrusted Special
78hi def link smVar String
Bram Moolenaar071d4272004-06-13 20:20:40 +000079
Bram Moolenaar071d4272004-06-13 20:20:40 +000080let b:current_syntax = "sm"
81
82" vim: ts=18