From dd5427baaf49f8de4355abeb6bc8c6dd14f74e25 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 7 Oct 2009 17:05:19 +0200 Subject: Initial check-in of files --- .vim/syntax/cobra.vim | 169 ++++++++++++++++++++++++++++++++++++++++++++++++ .vim/syntax/mako.vim | 86 +++++++++++++++++++++++++ .vim/syntax/npt.vim | 50 ++++++++++++++ .vim/syntax/palmos.vim | 41 ++++++++++++ .vim/syntax/scons.vim | 75 +++++++++++++++++++++ .vim/syntax/swig.vim | 44 +++++++++++++ .vim/syntax/vala.vim | 172 +++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 637 insertions(+) create mode 100644 .vim/syntax/cobra.vim create mode 100644 .vim/syntax/mako.vim create mode 100644 .vim/syntax/npt.vim create mode 100755 .vim/syntax/palmos.vim create mode 100644 .vim/syntax/scons.vim create mode 100644 .vim/syntax/swig.vim create mode 100644 .vim/syntax/vala.vim (limited to '.vim/syntax') diff --git a/.vim/syntax/cobra.vim b/.vim/syntax/cobra.vim new file mode 100644 index 0000000..b84158e --- /dev/null +++ b/.vim/syntax/cobra.vim @@ -0,0 +1,169 @@ +" Vim syntax file +" Language: Cobra +" Maintainer: +" Updated: 2008-10-11 +" +" +" Options to control Cobra syntax highlighting: +" +" For highlighted numbers: +" +" let cobra_highlight_numbers = 1 +" +" For highlighted builtin functions: +" +" let cobra_highlight_builtins = 1 +" +" For highlighted standard exceptions: +" +" let cobra_highlight_exceptions = 1 +" +" Highlight erroneous whitespace: +" +" let cobra_highlight_space_errors = 1 +" +" If you want all possible Cobra highlighting (the same as setting the +" preceding options): +" +" let cobra_highlight_all = 1 +" + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn keyword cobraStatement abstract all any as +syn keyword cobraStatement assembly assert base be body +syn keyword cobraStatement bool branch break callable catch +syn keyword cobraStatement char class continue ct_trace cue +syn keyword cobraStatement decimal def Dictionary dynamic +syn keyword cobraStatement ensure enum event expect extend +syn keyword cobraStatement extern fake false finally float +syn keyword cobraStatement float32 float64 get +syn keyword cobraStatement has ignore implements implies +syn keyword cobraStatement inherits init inlined inout +syn keyword cobraStatement int int16 int32 int64 int8 +syn keyword cobraStatement interface internal invariant List +syn keyword cobraStatement listen must namespace new nil +syn keyword cobraStatement nonvirtual number of off +syn keyword cobraStatement old on out override +syn keyword cobraStatement partial pass passthrough print +syn keyword cobraStatement private pro protected public raise +syn keyword cobraStatement ref require result return set +syn keyword cobraStatement Set shared sig stop String +syn keyword cobraStatement struct success test this throw +syn keyword cobraStatement to to? trace true try +syn keyword cobraStatement Type uint uint16 uint32 uint64 +syn keyword cobraStatement uint8 using value var +syn keyword cobraStatement vari virtual where yield + +syn match cobraFunction "[a-zA-Z_][a-zA-Z0-9_]*" contained +syn keyword cobraRepeat for while post +syn keyword cobraConditional if else +syn keyword cobraOperator and in is not or +syn keyword cobraPreCondit use from import +syn match cobraComment "#.*$" contains=cobraTodo,@Spell +syn keyword cobraTodo TODO FIXME XXX contained + +" strings +syn region cobraString matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=cobraEscape,@Spell +syn region cobraString matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=cobraEscape,@Spell +syn region cobraString matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=cobraEscape,@Spell +syn region cobraString matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=cobraEscape,@Spell +syn region cobraRawString matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=@Spell +syn region cobraRawString matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=@Spell +syn region cobraRawString matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=@Spell +syn region cobraRawString matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=@Spell +syn match cobraEscape +\\[abfnrtv'"\\]+ contained +syn match cobraEscape "\\\o\{1,3}" contained +syn match cobraEscape "\\x\x\{2}" contained +syn match cobraEscape "\(\\u\x\{4}\|\\U\x\{8}\)" contained +syn match cobraEscape "\\$" + +if exists("cobra_highlight_all") + let cobra_highlight_numbers = 1 + let cobra_highlight_builtins = 1 + let cobra_highlight_exceptions = 1 + let cobra_highlight_space_errors = 1 +endif + +if exists("cobra_highlight_numbers") + " numbers (including longs and complex) + syn match cobraNumber "\<0x\x\+[Ll]\=\>" + syn match cobraNumber "\<\d\+[LljJ]\=\>" + syn match cobraNumber "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" + syn match cobraNumber "\<\d\+\.\([eE][+-]\=\d\+\)\=[jJ]\=\>" + syn match cobraNumber "\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" +endif + +if exists("cobra_highlight_builtins") + " builtin functions, types and objects, not really part of the syntax + syn keyword cobraBuiltin True False bool +endif + +if exists("cobra_highlight_exceptions") + " builtin exceptions and warnings + syn keyword cobraException Exception +endif + +if exists("cobra_highlight_space_errors") + " trailing whitespace + syn match cobraSpaceError display excludenl "\S\s\+$"ms=s+1 + " mixed tabs and spaces + syn match cobraSpaceError display " \+\t" + syn match cobraSpaceError display "\t\+ " +endif + +" This is fast but code inside triple quoted strings screws it up. It +" is impossible to fix because the only way to know if you are inside a +" triple quoted string is to start from the beginning of the file. If +" you have a fast machine you can try uncommenting the "sync minlines" +" and commenting out the rest. +syn sync match cobraSync grouphere NONE "):$" +syn sync maxlines=200 +"syn sync minlines=2000 + +if version >= 508 || !exists("did_cobra_syn_inits") + if version <= 508 + let did_cobra_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default methods for highlighting. Can be overridden later + HiLink cobraStatement Statement + HiLink cobraFunction Function + HiLink cobraConditional Conditional + HiLink cobraRepeat Repeat + HiLink cobraString String + HiLink cobraRawString String + HiLink cobraEscape Special + HiLink cobraOperator Operator + HiLink cobraPreCondit PreCondit + HiLink cobraComment Comment + HiLink cobraTodo Todo + HiLink cobraDecorator Define + if exists("cobra_highlight_numbers") + HiLink cobraNumber Number + endif + if exists("cobra_highlight_builtins") + HiLink cobraBuiltin Function + endif + if exists("cobra_highlight_exceptions") + HiLink cobraException Exception + endif + if exists("cobra_highlight_space_errors") + HiLink cobraSpaceError Error + endif + + delcommand HiLink +endif + +let b:current_syntax = "cobra" + +" vim: ts=8 diff --git a/.vim/syntax/mako.vim b/.vim/syntax/mako.vim new file mode 100644 index 0000000..afc31c8 --- /dev/null +++ b/.vim/syntax/mako.vim @@ -0,0 +1,86 @@ +" Vim syntax file +" Language: Mako +" Maintainer: Armin Ronacher +" URL: http://lucumr.pocoo.org/ +" Last Change: 2008 September 12 +" Version: 0.6.1 +" +" Thanks to Brine Rue who noticed a bug in the +" delimiter handling. +" +" Known Limitations +" the <%text> block does not have correct attributes + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if !exists("main_syntax") + let main_syntax = "html" +endif + +"Source the html syntax file +ru! syntax/html.vim +unlet b:current_syntax + +"Put the python syntax file in @pythonTop +syn include @pythonTop syntax/python.vim + +" End keywords +syn keyword makoEnd contained endfor endwhile endif endtry enddef + +" Block rules +syn region makoLine matchgroup=makoDelim start=#^\s*%# end=#$# keepend contains=@pythonTop,makoEnd +syn region makoBlock matchgroup=makoDelim start=#<%!\?# end=#%># keepend contains=@pythonTop,makoEnd + +" Variables +syn region makoNested start="{" end="}" transparent display contained contains=makoNested,@pythonTop +syn region makoVariable matchgroup=makoDelim start=#\${# end=#}# contains=makoNested,@pythonTop + +" Comments +syn region makoComment start="^\s*##" end="$" +syn region makoDocComment matchgroup=makoDelim start="<%doc>" end="" keepend + +" Literal Blocks +syn region makoText matchgroup=makoDelim start="<%text[^>]*>" end="" + +" Attribute Sublexing +syn match makoAttributeKey containedin=makoTag contained "[a-zA-Z_][a-zA-Z0-9_]*=" +syn region makoAttributeValue containedin=makoTag contained start=/"/ skip=/\\"/ end=/"/ +syn region makoAttributeValue containedin=MakoTag contained start=/'/ skip=/\\'/ end=/'/ + +" Tags +syn region makoTag matchgroup=makoDelim start="<%\(def\|call\|page\|include\|namespace\|inherit\)\>" end="/\?>" +syn match makoDelim "" + +" Newline Escapes +syn match makoEscape /\\$/ + +" Default highlighting links +if version >= 508 || !exists("did_mako_syn_inits") + if version < 508 + let did_mako_syn_inits = 1 + com -nargs=+ HiLink hi link + else + com -nargs=+ HiLink hi def link + endif + + HiLink makoDocComment makoComment + HiLink makoDefEnd makoDelim + + HiLink makoAttributeKey Type + HiLink makoAttributeValue String + HiLink makoText Normal + HiLink makoDelim Preproc + HiLink makoEnd Keyword + HiLink makoComment Comment + HiLink makoEscape Special + + delc HiLink +endif + +let b:current_syntax = "mako" diff --git a/.vim/syntax/npt.vim b/.vim/syntax/npt.vim new file mode 100644 index 0000000..73099ca --- /dev/null +++ b/.vim/syntax/npt.vim @@ -0,0 +1,50 @@ +" Vim syntax file +" Language: N:PyTpl +" Maintainer: René Neumann +" Last Change: 2006 Jan 26 +" Info: Please look in your filetype.vim for *.tpl and set "setf npt" + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" load html syntax at the beginning +if version < 600 + so :p:h/html.vim +else + runtime! syntax/html.vim + unlet b:current_syntax +endif + +syn region tplComment start=/^\s*#/ end=/$/ +syn region tplTag start=/\[/ end=/\]/ contains=tplsysTag,tplforbSysTag,tplTagFlag +syn region tplTaggy start=/{{/ end=/}}/ contains=tplsysTag,tplforbSysTag,tplTaggyFlag +syn match tplforbSysTag /\$__[A-Z_]\+__/ contained +syn match tplsysTag /\$[A-Z][A-Z_]*/ contained +syn match tplTagFlag /[?=&!%]/ contained +syn match tplTaggyFlag /[!=]/ contained + +" Highlighting +if version >= 508 + if version < 508 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink tplComment Comment + HiLink tplTag Type + HiLink tplTaggy Identifier + HiLink tplAll String + HiLink tplforbSysTag Error + HiLink tplSysTag Keyword + HiLink tplTagFlag Constant + HiLink tplTaggyFlag Constant + delcommand HiLink +endif + +let b:current_syntax = "npt" diff --git a/.vim/syntax/palmos.vim b/.vim/syntax/palmos.vim new file mode 100755 index 0000000..2fd60cc --- /dev/null +++ b/.vim/syntax/palmos.vim @@ -0,0 +1,41 @@ +" Vim syntax file +" Language: PalmOS +" Maintainer: René Neumann aka Necoro +" Last Change: 2004 May 29 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +"if version < 600 +" syntax clear +"elseif exists("b:current_syntax") +" finish +"endif + +" Read the C++ syntax to start with +if version < 600 + so :p:h/cpp.vim +else + runtime! syntax/cpp.vim + unlet b:current_syntax +endif + + +" PalmOS extentions +syn keyword palmGenType UInt8 UInt16 UInt32 Int8 Int16 Int32 Boolean Char MemHandle MemPtr DmOpenRef WChar Err +syn keyword palmUsefulTypes ListType ControlType FormType FieldType ScrollBarType TableType DateType DateTimeType RectangleType EventType +syn keyword palmUsefulPtrs ListPtr ControlPtr FormPtr FieldPtr ScrollBarPtr TablePtr DatePtr DateTimePtr RectanglePtr EventPtr +syn keyword palmNetTypes NetSocketRef NetSocketAddrType NetSocketAddrINType NetHostInfoBufType +syn keyword palmNoDeleteNew delete new +syn keyword palmExceptions ErrThrow ErrCatch ErrEndCatch ErrTry + +command -nargs=+ HiLink hi def link + + HiLink palmExceptions Exception + HiLink palmNoDeleteNew ErrorMsg + HiLink palmGenType Type + HiLink palmUsefulTypes Type + HiLink palmUsefulPtrs Type + HiLink palmNetTypes Type + delcommand HiLink + +let b:current_syntax = "palmos" diff --git a/.vim/syntax/scons.vim b/.vim/syntax/scons.vim new file mode 100644 index 0000000..0b63f9c --- /dev/null +++ b/.vim/syntax/scons.vim @@ -0,0 +1,75 @@ +" Vim syntax file +" Language: SConscript +" Maintainer: Xi Wang +" Last Change: 2006 Nov 15 + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Read the Python syntax to start with +if version < 600 + so :p:h/python.vim +else + runtime! syntax/python.vim + unlet b:current_syntax +endif + +" SConscript extentions +syn keyword sconsTarget CFile CXXFile DVI Jar Java JavaH +syn keyword sconsTarget Library LoadableModule M4 Moc +syn keyword sconsTarget MSVSProject MSVSSolution Object +syn keyword sconsTarget PCH PDF PostScript Program +syn keyword sconsTarget RES RMIC RPCGenClient RPCGenHeader +syn keyword sconsTarget RPCGenService RPCGenXDR +syn keyword sconsTarget SharedLibrary SharedObject +syn keyword sconsTarget StaticLibrary StaticObject +syn keyword sconsTarget Tar TypeLibrary Uic Zip +syn keyword sconsEnv Action AddPostAction AddPreAction +syn keyword sconsEnv Alias AlwaysBuild Append AppendENVPath +syn keyword sconsEnv AppendUnique BitKeeper +syn keyword sconsEnv BuildDir Builder CacheDir Clean +syn keyword sconsEnv Command Configure Clone Copy CVS +syn keyword sconsEnv Default DefaultEnvironment +syn keyword sconsEnv Depends Dictionary Dir Dump +syn keyword sconsEnv EnsurePythonVersion EnsureSConsVersion +syn keyword sconsEnv Environment Execute Exit Export +syn keyword sconsEnv File FindFile Flatten +syn keyword sconsEnv GetBuildPath GetLaunchDir GetOption +syn keyword sconsEnv Help Ignore Import Install InstallAs +syn keyword sconsEnv Literal Local MergeFlags NoClean +syn keyword sconsEnv ParseConfig ParseDepends ParseFlags +syn keyword sconsEnv Preforce Platform Precious +syn keyword sconsEnv Prepend PrependENVPath PrependUnique +syn keyword sconsEnv RCS Replace Repository Return +syn keyword sconsEnv Scanner SCCS SConscript SConscriptChdir +syn keyword sconsEnv SConsignFile SetDefault SetOption +syn keyword sconsEnv SideEffect SourceCode SourceSignatures +syn keyword sconsEnv Split TargetSignatures Tool +syn keyword sconsEnv Value WhereIs +syn keyword sconsConf Configure Finish +syn keyword sconsConf CheckCHeader CheckCXXHeader CheckFun +syn keyword sconsConf CheckLib CheckLibWithHeader CheckType +syn keyword sconsOpt Options +syn match sconsVar /\<[A-Z_][A-Z0-9_]\+\>/ + +" Default highlighting +if version >= 508 || !exists("did_scons_syntax_inits") + if version < 508 + let did_scons_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + HiLink sconsTarget Keyword + HiLink sconsEnv Function + HiLink sconsConf Function + HiLink sconsOpt Function + HiLink sconsVar Special + delcommand HiLink +endif + +let b:current_syntax = "scons" +" vim: ts=8 diff --git a/.vim/syntax/swig.vim b/.vim/syntax/swig.vim new file mode 100644 index 0000000..90666c8 --- /dev/null +++ b/.vim/syntax/swig.vim @@ -0,0 +1,44 @@ +" Vim syntax file +" Language: SWIG +" Maintainer: Roman Stanchak (rstanchak@yahoo.com) +" Last Change: 2006 July 25 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Read the C++ syntax to start with +if version < 600 + so :p:h/cpp.vim +else + runtime! syntax/cpp.vim + unlet b:current_syntax +endif + +" SWIG extentions +syn keyword swigDirective %typemap %define %apply %fragment %include %enddef %extend %newobject %name +syn keyword swigDirective %rename %ignore %keyword %typemap %define %apply %fragment %include +syn keyword swigDirective %enddef %extend %newobject %name %rename %ignore %template %module %constant +syn match swigDirective "%\({\|}\)" +syn match swigUserDef "%[-_a-zA-Z0-9]\+" + +" Default highlighting +if version >= 508 || !exists("did_swig_syntax_inits") + if version < 508 + let did_cpp_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + HiLink swigDirective Exception + HiLink swigUserDef PreProc + delcommand HiLink +endif + +let b:current_syntax = "swig" + +" vim: ts=8 diff --git a/.vim/syntax/vala.vim b/.vim/syntax/vala.vim new file mode 100644 index 0000000..a24a8e6 --- /dev/null +++ b/.vim/syntax/vala.vim @@ -0,0 +1,172 @@ +" Vim syntax file +" Language: Vala +" Maintainers: Emmanuele Bassi +" Hans Vercammen +" Last Change: 2008-12-07 +" Filenames: *.vala *.vapi +" +" REFERENCES: +" [1] http://live.gnome.org/Vala +" +" TODO: Possibly when reaching vala 1.0 release +" - validate code attributes +" - better error checking for known errors +" - full support for valadoc + +if exists("b:current_syntax") + finish +endif + +let s:vala_cpo_save = &cpo +set cpo&vim + +" Types +syn keyword valaType bool char constpointer double float size_t ssize_t string unichar void +syn keyword valaType int int8 int16 int32 int64 long short +syn keyword valaType uint uint8 uint16 uint32 uint64 ulong ushort +" Storage keywords +syn keyword valaStorage class delegate enum errordomain interface namespace struct +" repeat / condition / label +syn keyword valaRepeat break continue do for foreach return while +syn keyword valaConditional else if switch +" User Labels +syn keyword valaLabel case default + +" Modifiers +syn keyword valaModifier abstract const dynamic ensures extern inline internal override +syn keyword valaModifier private protected public requires signal static virtual volatile weak +" Constants +syn keyword valaConstant false null true +" Exceptions +syn keyword valaException try catch finally throw +" Unspecified Statements +syn keyword valaUnspecifiedStatement as base construct delete get in is lock new out params ref sizeof set this throws typeof using value var yield yields + +" Comments +syn cluster valaCommentGroup contains=valaTodo +syn keyword valaTodo contained TODO FIXME XXX NOTE + +" valadoc Comments (ported from javadoc comments in java.vim) +" TODO: need to verify valadoc syntax +if !exists("vala_ignore_valadoc") + syn cluster valaDocCommentGroup contains=valaDocTags,valaDocSeeTag + syn region valaDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" + syn match valaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=valaDocParam + syn match valaDocParam contained "\s\S\+" + syn match valaDocTags contained "@\(author\|brief\|version\|return\|deprecated\)\>" + syn region valaDocSeeTag contained matchgroup=valaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=valaDocSeeTagParam + syn match valaDocSeeTagParam contained @"\_[^"]\+"\|\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend +endif + +" Comment Strings (ported from c.vim) +if exists("vala_comment_strings") + syn match valaCommentSkip contained "^\s*\*\($\|\s\+\)" + syn region valaCommentString contained start=+L\=\\\@" +syn match valaNumber display "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" +syn match valaNumber display "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" +syn match valaNumber display "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" + +" when wanted, highlight trailing white space +if exists("vala_space_errors") + if !exists("vala_no_trail_space_error") + syn match valaSpaceError display excludenl "\s\+$" + endif + if !exists("vala_no_tab_space_error") + syn match valaSpaceError display " \+\t"me=e-1 + endif +endif + +" when wanted, set minimum lines for comment syntax syncing +if exists("vala_minlines") + let b:vala_minlines = vala_minlines +else + let b:vala_minlines = 50 +endif +exec "syn sync ccomment valaComment minlines=" . b:vala_minlines + +" The default highlighting. +hi def link valaType Type +hi def link valaStorage StorageClass +hi def link valaRepeat Repeat +hi def link valaConditional Conditional +hi def link valaLabel Label +hi def link valaModifier StorageClass +hi def link valaConstant Constant +hi def link valaException Exception +hi def link valaUnspecifiedStatement Statement +hi def link valaUnspecifiedKeyword Keyword +hi def link valaContextualStatement Statement + +hi def link valaCommentError Error +hi def link valaCommentStartError Error +hi def link valaSpecialError Error +hi def link valaSpecialCharError Error +hi def link valaSpaceError Error + +hi def link valaTodo Todo +hi def link valaCommentL valaComment +hi def link valaCommentStart valaComment +hi def link valaCommentSkip valaComment +hi def link valaComment Comment +hi def link valaDocComment Comment +hi def link valaDocTags Special +hi def link valaDocParam Function +hi def link valaDocSeeTagParam Function +hi def link valaAttribute PreCondit + +hi def link valaCommentString valaString +hi def link valaComment2String valaString +hi def link valaString String +hi def link valaVerbatimString String +hi def link valaCharacter Character +hi def link valaSpecialChar SpecialChar +hi def link valaNumber Number +hi def link valaUnicodeNumber SpecialChar +hi def link valaUnicodeSpecifier SpecialChar + +let b:current_syntax = "vala" + +let &cpo = s:vala_cpo_save +unlet s:vala_cpo_save + +" vim: ts=8 -- cgit v1.2.3-54-g00ecf