Mini Shell
" Vim syntax file
" Language: gitolite configuration
" URL: https://github.com/sitaramc/gitolite/blob/master/contrib/vim/syntax/gitolite.vim
" (https://raw.githubusercontent.com/sitaramc/gitolite/master/contrib/vim/syntax/gitolite.vim)
" Maintainer: Sitaram Chamarty <sitaramc@gmail.com>
" (former Maintainer: Teemu Matilainen <teemu.matilainen@iki.fi>)
" Last Change: 2017 Oct 05
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
" this seems to be the best way, for now.
syntax sync fromstart
" ---- common stuff
syn match gitoliteGroup '@\S\+'
syn match gitoliteComment '#.*' contains=gitoliteTodo
syn keyword gitoliteTodo TODO FIXME XXX NOT contained
" ---- main section
" catch template-data syntax appearing outside template-data section
syn match gitoliteRepoError '^\s*repo.*='
syn match gitoliteRepoError '^\s*\S\+\s*=' " this gets overridden later when first word is a perm, don't worry
" normal gitolite group and repo lines
syn match gitoliteGroupLine '^\s*@\S\+\s*=\s*\S.*$' contains=gitoliteGroup,gitoliteComment
syn match gitoliteRepoLine '^\s*repo\s\+[^=]*$' contains=gitoliteRepo,gitoliteGroup,gitoliteComment
syn keyword gitoliteRepo repo contained
syn keyword gitoliteSpecialRepo CREATOR
" normal gitolite rule lines
syn match gitoliteRuleLine '^\s*\(-\|C\|R\|RW+\?C\?D\?\)\s[^#]*' contains=gitoliteRule,gitoliteCreateRule,gitoliteDenyRule,gitoliteRefex,gitoliteUsers,gitoliteGroup
syn match gitoliteRule '\(^\s*\)\@<=\(-\|C\|R\|RW+\?C\?D\?\)\s\@=' contained
syn match gitoliteRefex '\(^\s*\(-\|R\|RW+\?C\?D\?\)\s\+\)\@<=\S.\{-}\(\s*=\)\@=' contains=gitoliteSpecialRefex
syn match gitoliteSpecialRefex 'NAME/'
syn match gitoliteSpecialRefex '/USER/'
syn match gitoliteCreateRule '\(^\s*C\s.*=\s*\)\@<=\S[^#]*[^# ]' contained contains=gitoliteGroup
syn match gitoliteDenyRule '\(^\s*-\s.*=\s*\)\@<=\S[^#]*[^# ]' contained
" normal gitolite config (and similar) lines
syn match gitoliteConfigLine '^\s*\(config\|option\|include\|subconf\)\s[^#]*' contains=gitoliteConfigKW,gitoliteConfigKey,gitoliteConfigVal,gitoliteComment
syn keyword gitoliteConfigKW config option include subconf contained
syn match gitoliteConfigKey '\(\(config\|option\)\s\+\)\@<=[^ =]*' contained
syn match gitoliteConfigVal '\(=\s*\)\@<=\S.*' contained
" ---- template-data section
syn region gitoliteTemplateLine matchgroup=PreProc start='^=begin template-data$' end='^=end$' contains=gitoliteTplRepoLine,gitoliteTplRoleLine,gitoliteGroup,gitoliteComment,gitoliteTplError
syn match gitoliteTplRepoLine '^\s*repo\s\+\S.*=.*' contained contains=gitoliteTplRepo,gitoliteTplTemplates,gitoliteGroup
syn keyword gitoliteTplRepo repo contained
syn match gitoliteTplTemplates '\(=\s*\)\@<=\S.*' contained contains=gitoliteGroup,gitoliteComment
syn match gitoliteTplRoleLine '^\s*\S\+\s*=\s*.*' contained contains=gitoliteTplRole,gitoliteGroup,gitoliteComment
syn match gitoliteTplRole '\S\+\s*='he=e-1 contained
" catch normal gitolite rules appearing in template-data section
syn match gitoliteTplError '^\s*repo[^=]*$' contained
syn match gitoliteTplError '^\s*\(-\|R\|RW+\?C\?D\?\)\s'he=e-1 contained
syn match gitoliteTplError '^\s*\(config\|option\|include\|subconf\)\s'he=e-1 contained
syn match gitoliteTplError '^\s*@\S\+\s*=' contained contains=NONE
hi def link gitoliteGroup Identifier
hi def link gitoliteComment Comment
hi def link gitoliteTodo ToDo
hi def link gitoliteRepoError Error
hi def link gitoliteGroupLine PreProc
hi def link gitoliteRepo Keyword
hi def link gitoliteSpecialRepo PreProc
hi def link gitoliteRule Keyword
hi def link gitoliteCreateRule PreProc
hi def link gitoliteDenyRule WarningMsg
hi def link gitoliteRefex Constant
hi def link gitoliteSpecialRefex PreProc
hi def link gitoliteConfigKW Keyword
hi def link gitoliteConfigKey Identifier
hi def link gitoliteConfigVal String
hi def link gitoliteTplRepo Keyword
hi def link gitoliteTplTemplates Constant
hi def link gitoliteTplRole Constant
hi def link gitoliteTplError Error
let b:current_syntax = "gitolite"
let &cpo = s:cpo_save
unlet s:cpo_save
Zerion Mini Shell 1.0