1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
" Vim syntax file
" Language: Yum config
" Filenames: *.repo, /etc/yum.conf
" Maintainer: Will Woods
" Last Change: Sep 9, 2011
" Version: 0.1
if exists("b:current_syntax")
finish
endif
syn case match
syn sync fromstart
"----- basic data types and patterns ----------------------
syn match yumError contained /\S.*/
syn match yumBadLine /^[^=:]\+$/
syn match yumVar /\$\%(basearch\|releasever\|arch\|uuid\|YUM\d\)/
syn match yumOtherVar /\$\i\+/
syn match yumComment /^[#;].*$/ containedin=ALL
" single items
syn match yumItem contained /\S\+/ skipwhite nextgroup=yumError
syn keyword yumBool contained 0 1 yes no true false True False skipwhite nextgroup=yumError
syn match yumInt contained /\d\+/ skipwhite nextgroup=yumError
syn match yumDuration contained /\%(\d\+[dhm]\?\|never\)/ skipwhite nextgroup=yumError
" these things could be in lists
syn match yumURL contained '\<\%(file\|https\=\|ftp\|media\)://[^ ,]\+' contains=yumVar
syn match yumFile contained /\%(\<glob:[^ ,]\+\|\/[^ ,*?]\+\)/ contains=yumVar,yumGlobSyms
syn match yumGlobSyms contained /[*?]/
" list items
syn region yumFileList contained start=// end=/\n\S/me=e-2 contains=yumComma,yumFile,yumError
syn region yumURLList contained start=// end=/\n\S/me=e-2 contains=yumComma,yumUrl,yumError
syn region yumList contained start=// end=/\n\S/me=e-2 contains=yumComma,yumVar
syn match yumComma contained /,/
"----------------------------------------------------------
"---- stuff common to main & repo config sections ---------
"TODO: this section isn't complete
syn match yumKey contained /^\%(keepalive\|sslverify\|gpgcheck\)\s*=\s*/ nextgroup=yumBool
syn match yumKey contained /^\%(retries\|timeout\)\s*=\s*/ nextgroup=yumInt,yumError
syn match yumKey contained /^\%(metadata_expire\|mirrorlist_expire\)\s*=\s*/ nextgroup=yumDuration,yumError
syn match yumKey contained /^\%(exclude\)\s*=\s*/ nextgroup=yumList
"----------------------------------------------------------
"---- [reponame] section items ----------------------------
syn region repoRegion matchgroup=yumHeader start=/^\[\S\+\]/ end=/^\[/me=e-2 contains=repoKey,yumKey,yumBadLine
syn match repoKey contained /^name\s*=\s*/ nextgroup=yumList
syn match repoKey contained /^\(repositoryid\)\s*=\s*/ nextgroup=yumItem
syn match repoKey contained /^\%(enabled\|repo_gpgcheck\|enablegroups\|skip_if_unavailable\)\s*=\s*/ nextgroup=yumBool
syn match repoKey contained /^\%(mirrorlist\|gpgcakey\)\s*=\s*/ nextgroup=yumUrl,yumError
syn match repoKey contained /^\%(baseurl\|gpgkey\)\s*=\s*/ nextgroup=yumURLList
syn match repoKey contained /^cost\s*=\s*/ nextgroup=yumInt
syn match repoKey contained /^failovermethod\s*=\s*/ nextgroup=repoFailover
syn keyword repoFailover contained priority roundrobin skipwhite nextgroup=yumError
"----------------------------------------------------------
"---- [main] section --------------------------------------
"TODO: this section isn't complete
syn region mainRegion matchgroup=yumHeader start=/^\[main\]/ end=/^\[/me=e-2 contains=mainKey,yumKey,yumBadLine
syn match mainKey contained /^\%(installonlypkgs\|distroverpkg\|commands\)\s*=s*/ nextgroup=yumList
syn match mainKey contained /^\%(keepcache\|protected_multilib\|\%(local_\|repo_\)\=gpgcheck\|skip_broken\|assumeyes\|assumeno\|alwaysprompt\|tolerant\|exactarch\|showdupesfromrepos\|obsoletes\|overwrite_groups\|groupremove_leaf_only\|enable_group_conditionals\|diskspacecheck\|history_record\|plugins\|clean_requirements_on_remove\)\s*=\s*/ nextgroup=yumBool
syn match mainKey contained /^\%(cachedir\|persistdir\|logfile\|installroot\)\s*=\s*/ nextgroup=yumFile,yumError
syn match mainKey contained /^\%(reposdir\)\s*=\s*/ nextgroup=yumFileList
syn match mainKey contained /^\%(debuglevel\|installonly_limit\|recent\|retries\|timeout\)\s*=\s*/ nextgroup=yumInt,yumError
"keys with special values
syn match mainKey contained /^multilib_policy\s*=\s*/ nextgroup=yumMultilibPolicy,yumError
syn keyword yumMultilibPolicy contained all best
syn match mainKey contained /^group_package_types\s*=\s*/ nextgroup=yumGroupTypeList
syn region yumGroupTypeList contained start=/./ end=/\n\S/me=e-2 contains=yumGroupType,yumError
syn keyword yumGroupType contained required optional mandatory
"----------------------------------------------------------
"---- define coloring -------------------------------------
hi def link yumComment Comment
hi def link yumHeader Type
hi def link yumVar PreProc
hi def link yumKey Statement
hi def link yumError Error
hi def link yumBadLine Error
hi def link yumGlobSyms Special
hi def link yumComma Special
hi def link yumURL Constant
hi def link yumInt Constant
hi def link yumBool Constant
hi def link yumDuration Constant
hi def link yumMultilibPolicy Constant
hi def link yumGroupType Constant
hi def link repoFailover Constant
hi def link mainKey yumKey
hi def link repoKey yumKey
let b:current_syntax = "yumconf"
|