1" Vim syntax file 2" Language: gitolite configuration 3" 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 <[email protected]> 6" (former Maintainer: Teemu Matilainen <[email protected]>) 7" Last Change: 2017 Oct 05 8 9if exists("b:current_syntax") 10 finish 11endif 12 13let s:cpo_save = &cpo 14set cpo&vim 15 16" this seems to be the best way, for now. 17syntax sync fromstart 18 19" ---- common stuff 20 21syn match gitoliteGroup '@\S\+' 22 23syn match gitoliteComment '#.*' contains=gitoliteTodo 24syn keyword gitoliteTodo TODO FIXME XXX NOT contained 25 26" ---- main section 27 28" 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 31 32" 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 36 37syn keyword gitoliteSpecialRepo CREATOR 38 39" 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 47 48" 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 53 54" ---- template-data section 55 56syn 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 90 91let b:current_syntax = "gitolite" 92 93let &cpo = s:cpo_save 94unlet s:cpo_save 95