1" Vim syntax file 2" Language: BitBake bb/bbclasses/inc 3" Author: Chris Larson <kergoth@handhelds.org> 4" Ricardo Salveti <rsalveti@rsalveti.net> 5" Copyright: Copyright (C) 2004 Chris Larson <kergoth@handhelds.org> 6" Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net> 7" 8" This file is licensed under the MIT license, see COPYING.MIT in 9" this source distribution for the terms. 10" 11" Syntax highlighting for bb, bbclasses and inc files. 12" 13" It's an entirely new type, just has specific syntax in shell and python code 14 15if &compatible || v:version < 600 || exists("b:loaded_bitbake_plugin") 16 finish 17endif 18if exists("b:current_syntax") 19 finish 20endif 21 22syn include @python syntax/python.vim 23if exists("b:current_syntax") 24 unlet b:current_syntax 25endif 26 27" BitBake syntax 28 29" Matching case 30syn case match 31 32" Indicates the error when nothing is matched 33syn match bbUnmatched "." 34 35" Comments 36syn cluster bbCommentGroup contains=bbTodo,@Spell 37syn keyword bbTodo COMBAK FIXME TODO XXX contained 38syn match bbComment "#.*$" contains=@bbCommentGroup 39 40" String helpers 41syn match bbQuote +['"]+ contained 42syn match bbDelimiter "[(){}=]" contained 43syn match bbArrayBrackets "[\[\]]" contained 44 45" BitBake strings 46syn match bbContinue "\\$" 47syn region bbString matchgroup=bbQuote start=+"+ skip=+\\$+ end=+"+ contained contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell 48syn region bbString matchgroup=bbQuote start=+'+ skip=+\\$+ end=+'+ contained contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell 49 50" Vars definition 51syn match bbExport "^export" nextgroup=bbIdentifier skipwhite 52syn keyword bbExportFlag export contained nextgroup=bbIdentifier skipwhite 53syn match bbIdentifier "[a-zA-Z0-9\-_\.\/\+]\+" display contained 54syn match bbVarDeref "${[a-zA-Z0-9\-_:\.\/\+]\+}" contained 55syn match bbVarEq "\(:=\|+=\|=+\|\.=\|=\.\|?=\|??=\|=\)" contained nextgroup=bbVarValue 56syn match bbVarDef "^\(export\s*\)\?\([a-zA-Z0-9\-_\.\/\+][${}a-zA-Z0-9\-_:\.\/\+]*\)\s*\(:=\|+=\|=+\|\.=\|=\.\|?=\|??=\|=\)\@=" contains=bbExportFlag,bbIdentifier,bbOverrideOperator,bbVarDeref nextgroup=bbVarEq 57syn match bbVarValue ".*$" contained contains=bbString,bbVarDeref,bbVarPyValue 58syn region bbVarPyValue start=+${@+ skip=+\\$+ end=+}+ contained contains=@python 59 60" Vars metadata flags 61syn match bbVarFlagDef "^\([a-zA-Z0-9\-_\.]\+\)\(\[[a-zA-Z0-9\-_\.+]\+\]\)\@=" contains=bbIdentifier nextgroup=bbVarFlagFlag 62syn region bbVarFlagFlag matchgroup=bbArrayBrackets start="\[" end="\]\s*\(:=\|=\|.=\|=.|+=\|=+\|?=\)\@=" contained contains=bbIdentifier nextgroup=bbVarEq 63 64" Includes and requires 65syn keyword bbInclude inherit include require contained 66syn match bbIncludeRest ".*$" contained contains=bbString,bbVarDeref 67syn match bbIncludeLine "^\(inherit\|include\|require\)\s\+" contains=bbInclude nextgroup=bbIncludeRest 68 69" Add taks and similar 70syn keyword bbStatement addtask deltask addhandler after before EXPORT_FUNCTIONS contained 71syn match bbStatementRest ".*$" skipwhite contained contains=bbStatement 72syn match bbStatementLine "^\(addtask\|deltask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest 73 74" OE Important Functions 75syn keyword bbOEFunctions do_fetch do_unpack do_patch do_configure do_compile do_stage do_install do_package contained 76 77" Generic Functions 78syn match bbFunction "\h[0-9A-Za-z_\-\.]*" display contained contains=bbOEFunctions 79 80syn keyword bbOverrideOperator append prepend remove contained 81 82" BitBake shell metadata 83syn include @shell syntax/sh.vim 84if exists("b:current_syntax") 85 unlet b:current_syntax 86endif 87syn keyword bbShFakeRootFlag fakeroot contained 88syn match bbShFuncDef "^\(fakeroot\s*\)\?\([\.0-9A-Za-z_:${}\-\.]\+\)\(python\)\@<!\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbFunction,bbOverrideOperator,bbVarDeref,bbDelimiter nextgroup=bbShFuncRegion skipwhite 89syn region bbShFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@shell 90 91" Python value inside shell functions 92syn region shDeref start=+${@+ skip=+\\$+ excludenl end=+}+ contained contains=@python 93 94" BitBake python metadata 95syn keyword bbPyFlag python contained 96syn match bbPyFuncDef "^\(fakeroot\s*\)\?\(python\)\(\s\+[0-9A-Za-z_:${}\-\.]\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbPyFlag,bbFunction,bbOverrideOperator,bbVarDeref,bbDelimiter nextgroup=bbPyFuncRegion skipwhite 97syn region bbPyFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@python 98 99" BitBake 'def'd python functions 100syn keyword bbPyDef def contained 101syn region bbPyDefRegion start='^\(def\s\+\)\([0-9A-Za-z_-]\+\)\(\s*(.*)\s*\):\s*$' end='^\(\s\|$\)\@!' contains=@python 102 103" Highlighting Definitions 104hi def link bbUnmatched Error 105hi def link bbInclude Include 106hi def link bbTodo Todo 107hi def link bbComment Comment 108hi def link bbQuote String 109hi def link bbString String 110hi def link bbDelimiter Keyword 111hi def link bbArrayBrackets Statement 112hi def link bbContinue Special 113hi def link bbExport Type 114hi def link bbExportFlag Type 115hi def link bbIdentifier Identifier 116hi def link bbVarDeref PreProc 117hi def link bbVarDef Identifier 118hi def link bbVarValue String 119hi def link bbShFakeRootFlag Type 120hi def link bbFunction Function 121hi def link bbPyFlag Type 122hi def link bbPyDef Statement 123hi def link bbStatement Statement 124hi def link bbStatementRest Identifier 125hi def link bbOEFunctions Special 126hi def link bbVarPyValue PreProc 127hi def link bbOverrideOperator Operator 128 129let b:current_syntax = "bb" 130