summaryrefslogtreecommitdiffstats
path: root/syntax/kickstart.vim
blob: 70f4eb8525eb6111da28d6fe695c6d218177078f (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
68
69
70
71
72
73
74
75
76
77
78
79
" Filename:    kickstart.vim
" Purpose:     Vim syntax file
" Language:    kickstart scripting for anaconda, the Red Hat/Fedora installer
" Maintainer:  Will Woods <wwoods@redhat.com>
" Last Change: Wed Mar  9 15:01:02 EST 2011

if exists("b:current_syntax")
  finish
endif

syntax case match

" include other possible scripting languages people might use
let b:is_bash=1
syntax include @Shell syntax/sh.vim
unlet b:current_syntax " ha ha lies
syntax include @Python syntax/python.vim
unlet b:current_syntax " more lies
syntax include @Perl syntax/perl.vim

" comments
syntax region ksComment start=/#/ end=/$/ contains=ksTodo
syntax keyword ksTodo contained FIXME NOTE TODO NOTES XXX

" commands
syntax keyword ksCommands contained auth authconfig autopart autostep bootloader btrfs clearpart cmdline device dmraid driverdisk fcoe firewall firstboot graphical group halt harddrive ignoredisk install iscsi iscsiname key keyboard lang logging logvol mediacheck multipath network nfs part partition poweroff raid reboot repo rescue rootpw selinux services shutdown skipx sshpw text timezone updates upgrade url user vnc volgroup xconfig zerombr zfcp
syntax keyword ksDeprecatedCommands contained mouse langsupport interactive monitor

" only match commands at the start of a new line
syntax match ksCommandLine '^\s*\l\+' contains=ksUnknownCommand nextgroup=ksCommandOpts
syntax match ksUnknownCommand contained '\l\+' contains=ksCommands,ksDeprecatedCommands
syntax match ksCommandOpts contained '.*$' contains=ksFlag,ksComment
syntax match ksFlag contained '--\a[a-zA-Z-]*=\?'
syntax match ksUnknownFlag contained '--\a[a-zA-Z-]*=\?'

" includes
syntax match ksIncludes '^\s*\(%include\|%ksappend\)'

" general section start/end markers
syntax match ksSectionMarker contained '^\s*%\(pre\|post\|packages\|traceback\|end\)'

" %package section
syntax region ksPackages start=/^\s*%packages/ matchgroup=ksSectionMarker end=/^\s*%end\_s/ contains=ksPackagesHeader,ksPackageItem,ksPackageGroup,ksComment
syntax match ksPackagesHeader contained '^\s*%packages.*$' contains=ksSectionMarker,ksPackagesFlag,ksUnknownFlag,ksComment
syntax match ksPackagesFlag   contained '--\(default\|excludedocs\|ignoremissing\|nobase\|instLangs=\?\)' 
syntax match ksPackageItem    contained '^\s*[^@#%]\S*' contains=ksPackageGlob,ksPackageMinus
syntax match ksPackageGroup   contained '^\s*@\S*'
syntax match ksPackageMinus   contained '^\s*-'
syntax match ksPackageGlob    contained '\*'

" script sections (%pre, %post, %traceback)
syntax region ksShellScript start=/^\s*%\(pre\|post\|traceback\)/ matchgroup=ksSectionMarker end=/^\s*%end\_s/ contains=@Shell,ksScriptHeader
syntax region ksOtherScript start=/^\s*%\(pre\|post\|traceback\)\s.*--interpreter=.*$/ matchgroup=ksSectionMarker end=/^\s*%end\_s/ contains=ksScriptHeader
syntax region ksPythonScript start=/^\s*%\(pre\|post\|traceback\)\s.*--interpreter=\S*python.*$/ matchgroup=ksSectionMarker end=/^\s*%end\_s/ contains=@Python,ksScriptHeader
syntax region ksPerlScript start=/^\s*%\(pre\|post\|traceback\)\s.*--interpreter=\S*perl.*$/ matchgroup=ksSectionMarker end=/^\s*%end\_s/ contains=@Perl,ksScriptHeader
syntax match ksScriptHeader contained '^\s*%\(pre\|post\|traceback\).*' contains=ksSectionMarker,ksScriptFlag,ksUnknownFlag,ksComment
syntax match ksScriptFlag contained '--\(nochroot\|erroronfail\|log=\?\|interpreter=\?\)'

" sync to section markers
syntax sync match ksSync grouphere NONE "^\s*%\(pre\|post\|packages\|traceback\)"
syntax sync match ksSync groupthere NONE "^\s*%end"

" Define the default highlighting.
hi def link ksComment              Comment
hi def link ksTodo                 Todo
hi def link ksCommands             Statement
hi def link ksDeprecatedCommands   Special
hi def link ksUnknownCommand       Error
hi def link ksIncludes             Include
hi def link ksSectionMarker        Structure
hi def link ksScriptFlag           ksFlag
hi def link ksPackagesFlag         ksFlag
hi def link ksFlag                 Identifier
hi def link ksUnknownFlag          Error
hi def link ksPackageMinus         Special
hi def link ksPackageGroup         Include
hi def link ksPackageGlob          Operator

let b:current_syntax = "kickstart"