1" Vim syntax file
2" Language:	Debian control files
3" Maintainer:	Gerfried Fuchs <[email protected]>
4" Last Change:  29 Oct 2004
5" URL:          http://alfie.ist.org/software/vim/syntax/debcontrol.vim
6"
7" Original Version: Wichert Akkerman <[email protected]>
8
9" Comments are very welcome - but please make sure that you are commenting on
10" the latest version of this file.
11" SPAM is _NOT_ welcome - be ready to be reported!
12
13" Standard syntax initialization
14if version < 600
15  syntax clear
16elseif exists("b:current_syntax")
17  finish
18endif
19
20" Everything that is not explicitly matched by the rules below
21syn match debcontrolElse "^.*$"
22
23" Common seperators
24syn match debControlComma ", *"
25syn match debControlSpace " "
26
27" Define some common expressions we can use later on
28syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\|hppa\|i386\|ia64\|m68k\|mipsel\|mips\|powerpc\|s390\|sheb\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-i386\|knetbsd-i386\|netbsd-i386\)"
29syn match debcontrolName contained "[a-z][a-z0-9+-]*"
30syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
31syn match debcontrolSection contained "\(\(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\)/\)\=\(admin\|base\|comm\|devel\|doc\|editors\|electronics\|embedded\|games\|gnome\|graphics\|hamradio\|interpreters\|kde\|libs\|libdevel\|mail\|math\|misc\|net\|news\|oldlibs\|otherosfs\|perl\|python\|science\|shells\|sound\|text\|tex\|utils\|web\|x11\|debian-installer\)"
32syn match debcontrolVariable contained "\${.\{-}}"
33
34" An email address
35syn match	debcontrolEmail	"[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
36syn match	debcontrolEmail	"<.\{-}>"
37
38" List of all legal keys
39syn match debcontrolKey contained "^\(Source\|Package\|Section\|Priority\|Maintainer\|Uploaders\|Build-Depends\|Build-Conflicts\|Build-Depends-Indep\|Build-Conflicts-Indep\|Standards-Version\|Pre-Depends\|Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Essential\|Architecture\|Description\|Bugs\|Origin\|Enhances\): *"
40
41" Fields for which we do strict syntax checking
42syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
43syn region debcontrolStrictField start="^\(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline
44syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline
45syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
46
47" Catch-all for the other legal fields
48syn region debcontrolField start="^\(Maintainer\|Build-Depends\|Build-Conflicts\|Build-Depends-Indep\|Build-Conflicts-Indep\|Standards-Version\|Pre-Depends\|Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Essential\|Bugs\|Origin\|Enhances\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
49syn region debcontrolMultiField start="^\(Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ ]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable
50
51" Associate our matches and regions with pretty colours
52if version >= 508 || !exists("did_debcontrol_syn_inits")
53  if version < 508
54    let did_debcontrol_syn_inits = 1
55    command -nargs=+ HiLink hi link <args>
56  else
57    command -nargs=+ HiLink hi def link <args>
58  endif
59
60  HiLink debcontrolKey		Keyword
61  HiLink debcontrolField	Normal
62  HiLink debcontrolStrictField	Error
63  HiLink debcontrolMultiField	Normal
64  HiLink debcontrolArchitecture	Normal
65  HiLink debcontrolName		Normal
66  HiLink debcontrolPriority	Normal
67  HiLink debcontrolSection	Normal
68  HiLink debcontrolVariable	Identifier
69  HiLink debcontrolEmail	Identifier
70  HiLink debcontrolElse		Special
71
72  delcommand HiLink
73endif
74
75let b:current_syntax = "debcontrol"
76
77" vim: ts=8 sw=2
78