95 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " 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
 |