view runtime/syntax/gitolite.vim @ 33090:461541d860ac v9.0.1830

patch 9.0.1830: Vim9: crash when accessing a null object Commit: https://github.com/vim/vim/commit/d7085a06358c22250a27186bb7d52112ed4addd1 Author: Gianmaria Bajo <mg1979.git@gmail.com> Date: Thu Aug 31 18:15:26 2023 +0200 patch 9.0.1830: Vim9: crash when accessing a null object Problem: Vim9: crash when accessing a null object Solution: Check accessing a NULL object in def function An object is NULL when the variable is declared, but the constructor isn't called. Accessing/setting a member on the object crashed Vim. Note: this happens inside def functions, at script level things work differently. Accessing a NULL object member results in E1360 (correctly), while setting a value on it results in E1012 (type mismatch) so there's still something to fix. closes: #12973 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Gianmaria Bajo <mg1979.git@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Thu, 31 Aug 2023 18:30:03 +0200
parents 3b26420fc639
children
line wrap: on
line source

" 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