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,bbVarPyValue 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,bbVarDeref,bbVarPyValue 72syn region bbStatementRestCont start=/.*\\$/ end=/^[^\\]*$/ contained contains=bbStatement,bbVarDeref,bbVarPyValue,bbContinue keepend 73syn match bbStatementLine "^\(addtask\|deltask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest,bbStatementRestCont 74 75" OE Important Functions 76syn keyword bbOEFunctions do_fetch do_unpack do_patch do_configure do_compile do_stage do_install do_package contained 77 78" Generic Functions 79syn match bbFunction "\h[0-9A-Za-z_\-\.]*" display contained contains=bbOEFunctions 80 81syn keyword bbOverrideOperator append prepend remove contained 82 83" BitBake shell metadata 84syn include @shell syntax/sh.vim 85if exists("b:current_syntax") 86 unlet b:current_syntax 87endif 88syn keyword bbShFakeRootFlag fakeroot contained 89syn match bbShFuncDef "^\(fakeroot\s*\)\?\([\.0-9A-Za-z_:${}\-\.]\+\)\(python\)\@<!\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbFunction,bbOverrideOperator,bbVarDeref,bbDelimiter nextgroup=bbShFuncRegion skipwhite 90syn region bbShFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@shell 91 92" Python value inside shell functions 93syn region shDeref start=+${@+ skip=+\\$+ excludenl end=+}+ contained contains=@python 94 95" BitBake python metadata 96syn keyword bbPyFlag python contained 97syn match bbPyFuncDef "^\(fakeroot\s*\)\?\(python\)\(\s\+[0-9A-Za-z_:${}\-\.]\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbPyFlag,bbFunction,bbOverrideOperator,bbVarDeref,bbDelimiter nextgroup=bbPyFuncRegion skipwhite 98syn region bbPyFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@python 99 100" BitBake 'def'd python functions 101syn keyword bbPyDef def contained 102syn region bbPyDefRegion start='^\(def\s\+\)\([0-9A-Za-z_-]\+\)\(\s*(.*)\s*\):\s*$' end='^\(\s\|$\)\@!' contains=@python 103 104" Highlighting Definitions 105hi def link bbUnmatched Error 106hi def link bbInclude Include 107hi def link bbTodo Todo 108hi def link bbComment Comment 109hi def link bbQuote String 110hi def link bbString String 111hi def link bbDelimiter Keyword 112hi def link bbArrayBrackets Statement 113hi def link bbContinue Special 114hi def link bbExport Type 115hi def link bbExportFlag Type 116hi def link bbIdentifier Identifier 117hi def link bbVarDeref PreProc 118hi def link bbVarDef Identifier 119hi def link bbVarValue String 120hi def link bbShFakeRootFlag Type 121hi def link bbFunction Function 122hi def link bbPyFlag Type 123hi def link bbPyDef Statement 124hi def link bbStatement Statement 125hi def link bbStatementRest Identifier 126hi def link bbStatementRestCont Identifier 127hi def link bbOEFunctions Special 128hi def link bbVarPyValue PreProc 129hi def link bbOverrideOperator Operator 130 131let b:current_syntax = "bb" 132