blob: 3a6da26cc6461b234f89cc0d0a87c6ed5682e65e [file] [log] [blame]
Bram Moolenaar15146672011-10-20 22:22:38 +02001" Vim syntax file
2" Language: gitolite configuration
Bram Moolenaar01164a62017-11-02 22:58:42 +01003" URL: https://github.com/sitaramc/gitolite/blob/master/contrib/vim/syntax/gitolite.vim
4" (https://raw.githubusercontent.com/sitaramc/gitolite/master/contrib/vim/syntax/gitolite.vim)
5" Maintainer: Sitaram Chamarty <sitaramc@gmail.com>
6" (former Maintainer: Teemu Matilainen <teemu.matilainen@iki.fi>)
7" Last Change: 2017 Oct 05
Bram Moolenaar15146672011-10-20 22:22:38 +02008
9if exists("b:current_syntax")
10 finish
11endif
12
Bram Moolenaarb6b046b2011-12-30 13:11:27 +010013let s:cpo_save = &cpo
14set cpo&vim
15
Bram Moolenaar01164a62017-11-02 22:58:42 +010016" this seems to be the best way, for now.
17syntax sync fromstart
Bram Moolenaar15146672011-10-20 22:22:38 +020018
Bram Moolenaar01164a62017-11-02 22:58:42 +010019" ---- common stuff
Bram Moolenaar15146672011-10-20 22:22:38 +020020
Bram Moolenaar01164a62017-11-02 22:58:42 +010021syn match gitoliteGroup '@\S\+'
Bram Moolenaar15146672011-10-20 22:22:38 +020022
Bram Moolenaar01164a62017-11-02 22:58:42 +010023syn match gitoliteComment '#.*' contains=gitoliteTodo
24syn keyword gitoliteTodo TODO FIXME XXX NOT contained
Bram Moolenaar15146672011-10-20 22:22:38 +020025
Bram Moolenaar01164a62017-11-02 22:58:42 +010026" ---- main section
Bram Moolenaar15146672011-10-20 22:22:38 +020027
Bram Moolenaar01164a62017-11-02 22:58:42 +010028" catch template-data syntax appearing outside template-data section
29syn match gitoliteRepoError '^\s*repo.*='
30syn match gitoliteRepoError '^\s*\S\+\s*=' " this gets overridden later when first word is a perm, don't worry
Bram Moolenaar15146672011-10-20 22:22:38 +020031
Bram Moolenaar01164a62017-11-02 22:58:42 +010032" normal gitolite group and repo lines
33syn match gitoliteGroupLine '^\s*@\S\+\s*=\s*\S.*$' contains=gitoliteGroup,gitoliteComment
34syn match gitoliteRepoLine '^\s*repo\s\+[^=]*$' contains=gitoliteRepo,gitoliteGroup,gitoliteComment
35syn keyword gitoliteRepo repo contained
Bram Moolenaar15146672011-10-20 22:22:38 +020036
Bram Moolenaar01164a62017-11-02 22:58:42 +010037syn keyword gitoliteSpecialRepo CREATOR
Bram Moolenaar15146672011-10-20 22:22:38 +020038
Bram Moolenaar01164a62017-11-02 22:58:42 +010039" normal gitolite rule lines
40syn match gitoliteRuleLine '^\s*\(-\|C\|R\|RW+\?C\?D\?\)\s[^#]*' contains=gitoliteRule,gitoliteCreateRule,gitoliteDenyRule,gitoliteRefex,gitoliteUsers,gitoliteGroup
41syn match gitoliteRule '\(^\s*\)\@<=\(-\|C\|R\|RW+\?C\?D\?\)\s\@=' contained
42syn match gitoliteRefex '\(^\s*\(-\|R\|RW+\?C\?D\?\)\s\+\)\@<=\S.\{-}\(\s*=\)\@=' contains=gitoliteSpecialRefex
43syn match gitoliteSpecialRefex 'NAME/'
44syn match gitoliteSpecialRefex '/USER/'
45syn match gitoliteCreateRule '\(^\s*C\s.*=\s*\)\@<=\S[^#]*[^# ]' contained contains=gitoliteGroup
46syn match gitoliteDenyRule '\(^\s*-\s.*=\s*\)\@<=\S[^#]*[^# ]' contained
Bram Moolenaar15146672011-10-20 22:22:38 +020047
Bram Moolenaar01164a62017-11-02 22:58:42 +010048" normal gitolite config (and similar) lines
49syn match gitoliteConfigLine '^\s*\(config\|option\|include\|subconf\)\s[^#]*' contains=gitoliteConfigKW,gitoliteConfigKey,gitoliteConfigVal,gitoliteComment
50syn keyword gitoliteConfigKW config option include subconf contained
51syn match gitoliteConfigKey '\(\(config\|option\)\s\+\)\@<=[^ =]*' contained
52syn match gitoliteConfigVal '\(=\s*\)\@<=\S.*' contained
Bram Moolenaar15146672011-10-20 22:22:38 +020053
Bram Moolenaar01164a62017-11-02 22:58:42 +010054" ---- template-data section
Bram Moolenaar15146672011-10-20 22:22:38 +020055
Bram Moolenaar01164a62017-11-02 22:58:42 +010056syn region gitoliteTemplateLine matchgroup=PreProc start='^=begin template-data$' end='^=end$' contains=gitoliteTplRepoLine,gitoliteTplRoleLine,gitoliteGroup,gitoliteComment,gitoliteTplError
57
58syn match gitoliteTplRepoLine '^\s*repo\s\+\S.*=.*' contained contains=gitoliteTplRepo,gitoliteTplTemplates,gitoliteGroup
59syn keyword gitoliteTplRepo repo contained
60syn match gitoliteTplTemplates '\(=\s*\)\@<=\S.*' contained contains=gitoliteGroup,gitoliteComment
61
62syn match gitoliteTplRoleLine '^\s*\S\+\s*=\s*.*' contained contains=gitoliteTplRole,gitoliteGroup,gitoliteComment
63syn match gitoliteTplRole '\S\+\s*='he=e-1 contained
64
65" catch normal gitolite rules appearing in template-data section
66syn match gitoliteTplError '^\s*repo[^=]*$' contained
67syn match gitoliteTplError '^\s*\(-\|R\|RW+\?C\?D\?\)\s'he=e-1 contained
68syn match gitoliteTplError '^\s*\(config\|option\|include\|subconf\)\s'he=e-1 contained
69syn match gitoliteTplError '^\s*@\S\+\s*=' contained contains=NONE
70
71hi def link gitoliteGroup Identifier
72hi def link gitoliteComment Comment
73hi def link gitoliteTodo ToDo
74hi def link gitoliteRepoError Error
75hi def link gitoliteGroupLine PreProc
76hi def link gitoliteRepo Keyword
77hi def link gitoliteSpecialRepo PreProc
78hi def link gitoliteRule Keyword
79hi def link gitoliteCreateRule PreProc
80hi def link gitoliteDenyRule WarningMsg
81hi def link gitoliteRefex Constant
82hi def link gitoliteSpecialRefex PreProc
83hi def link gitoliteConfigKW Keyword
84hi def link gitoliteConfigKey Identifier
85hi def link gitoliteConfigVal String
86hi def link gitoliteTplRepo Keyword
87hi def link gitoliteTplTemplates Constant
88hi def link gitoliteTplRole Constant
89hi def link gitoliteTplError Error
Bram Moolenaar15146672011-10-20 22:22:38 +020090
91let b:current_syntax = "gitolite"
Bram Moolenaarb6b046b2011-12-30 13:11:27 +010092
93let &cpo = s:cpo_save
94unlet s:cpo_save