summaryrefslogtreecommitdiffstats
path: root/syntax/yumconf.vim
blob: 48240fc05eeaf3fd74fb318eac232c16306be199 (plain)
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
" 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
syn match   yumError    contained '\S.*'
syn match   yumVar      /\$\%(basearch\|releasever\|arch\|uuid\|YUM\d\)/
syn match   yumOtherVar /\$\i\+/
syn match   yumComment  /^#.*$/ containedin=ALL
syn keyword yumBool     contained 0 1
syn match   yumInt      contained /\d\+/
syn match   yumFilename contained '/[^ *]\+' contains=yumVar
syn match   yumGlob     contained 'glob:[^ ]\+' contains=yumVar
syn match   yumFileList contained '.*' contains=yumFileName,yumGlob
syn match   yumURL      contained '\<\%(file\|https\=\|ftp\|media\)://\S\+' contains=yumVar
syn match   yumDuration contained /\%(\d\+[dhm]\?\|never\)/

" stuff common to main & repo config sections
syn match   yumKey      contained /^\%(keepalive\|sslverify\)/ nextgroup=yumBool,yumError
syn match   yumKey      contained /^\%(metadata_expire\|mirrorlist_expire\)\s*=\s*/ nextgroup=yumDuration,yumError

" [reponame] section
syn region  repoRegion  matchgroup=yumHeader start=/^\[\S\+\]/ end=/^\[/me=e-2 contains=repoKey,yumKey,yumVar
syn match   repoKey     contained /^\(name\|repositoryid\)\s*=/
syn match   repoKey     contained /^\%(enabled\|gpgcheck\|repo_gpgcheck\|enablegroups\|skip_if_unavailable\)\s*=\s*/ nextgroup=yumBool,yumError
syn match   repoKey     contained /^\%(mirrorlist\|gpgkey\|gpgcakey\)\s*=\s*/ nextgroup=yumURL,yumError
" FIXME URL lists
syn match   repoKey     contained /^\%(baseurl\)\s*=\s*/ nextgroup=yumURL,yumError
syn match   repoKey     contained /^failovermethod\s*=\s*/ nextgroup=repoFailover,yumError

syn keyword repoFailover    contained priority roundrobin

" [main] section
syn region  mainRegion  matchgroup=yumHeader start=/^\[main\]/ end=/^\[/me=e-2 contains=mainKey,yumKey,yumVar
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,yumError
syn match   mainKey     contained /^\%(cachedir\|persistdir\|reposdir\|logfile\)\s*=\s*/ nextgroup=yumFilename,yumError
syn match   mainKey     contained /^\%(debuglevel\|installonly_limit\)\s*=\s*/ nextgroup=yumInt,yumError
" FIXME file lists (e.g. repodir)
" TODO finish this

" 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 yumURL          Constant
hi def link yumInt          Constant
hi def link yumBool         Constant
hi def link yumDuration     Constant
hi def link repoFailover    Constant

hi def link mainKey         yumKey
hi def link repoKey         yumKey

let b:current_syntax = "yumconf"