" Vim syntax file " " Copyright (C) 2004 Chris Larson " This file is licensed under the MIT license, see COPYING.MIT in " this source distribution for the terms. " " Language: BitBake " Maintainer: Chris Larson " Filenames: *.bb, *.bbclass if version < 600 syntax clear elseif exists("b:current_syntax") finish endif syn case match " Catch incorrect syntax (only matches if nothing else does) syn match bbUnmatched "." syn match bbComment "^#.*$" display contains=bbTodo syn keyword bbTodo TODO FIXME XXX contained syn match bbDelimiter "[(){}=]" contained syn match bbQuote /['"]/ contained "syn region bbString matchgroup=bbQuote start=/"/ skip=/\\$/ excludenl end=/"/ keepend contains=bbTodo "syn region bbString matchgroup=bbQuote start=/'/ skip=/\\$/ excludenl end=/'/ keepend contains=bbTodo syn match bbContinue "\\$" syn region bbString matchgroup=bbQuote start=/"/ skip=/\\$/ excludenl end=/"/ contained keepend contains=bbTodo,bbContinue,bbVarDeref syn region bbString matchgroup=bbQuote start=/'/ skip=/\\$/ excludenl end=/'/ contained keepend contains=bbTodo,bbContinue,bbVarDeref " First attempt: " syn keyword bbPythonFlag python contained nextgroup=bbFunction " syn region bbPythonFuncRegion start="^python\s\+\w\+\s*()\s*{" end="^}$" keepend contains=bbPythonFuncDef " syn match bbPythonFuncDef "^python\s\+\w\+\s*()\s*{" contained contains=bbPythonFlag " hi def link bbPythonFuncRegion Comment " hi def link bbPythonFlag Type " Second attempt: " syn keyword bbPythonFlag python contained nextgroup=bbFunction " syn match bbPythonFuncDef "^python\s\+\w\+\s*()\s*{" contained contains=bbPythonFlag,bbFunction,bbDelimiter " syn region bbPythonFuncRegion start="^python\s\+\w\+\s*()\s*{" end="^}$" keepend contains=bbPythonFuncDef,bbDelimiter " hi def link bbPythonFuncRegion Comment " hi def link bbPythonFlag Type " Third attempt: " syn keyword bbPythonFlag python contained nextgroup=bbFunction " syn match bbPythonFuncDef "^\(python\s\+\w\+\s*()\s*\)\({\)\@=" contains=bbPythonFlag,bbFunction,bbDelimiter nextgroup=bbPythonFuncRegion " syn region bbPythonFuncRegion matchgroup=bbDelimiter start="{" end="^}$" keepend contained " hi def link bbPythonFuncRegion Comment " hi def link bbPythonFlag Type " BitBake variable metadata syn keyword bbExportFlag export contained nextgroup=bbIdentifier skipwhite syn match bbVarDeref "${[a-zA-Z0-9\-_\.]\+}" contained syn match bbVarDef "^\(export\s*\)\?\([a-zA-Z0-9\-_\.]\+\(_[${}a-zA-Z0-9\-_\.]\+\)\?\)\s*\(\(:=\)\|\(+=\)\|\(=+\)\|\(?=\)\|=\)\@=" contains=bbExportFlag,bbIdentifier,bbVarDeref nextgroup=bbVarEq syn match bbIdentifier "[a-zA-Z0-9\-_\.]\+" display contained "syn keyword bbVarEq = display contained nextgroup=bbVarValue syn match bbVarEq "\(:=\)\|\(+=\)\|\(=+\)\|\(?=\)\|=" contained nextgroup=bbVarValue syn match bbVarValue ".*$" contained contains=bbString,bbVarDeref " BitBake variable metadata flags syn match bbVarFlagDef "^\([a-zA-Z0-9\-_\.]\+\)\(\[[a-zA-Z0-9\-_\.]\+\]\)\@=" contains=bbIdentifier nextgroup=bbVarFlagFlag syn region bbVarFlagFlag matchgroup=bbArrayBrackets start="\[" end="\]\s*\(=\)\@=" keepend excludenl contained contains=bbIdentifier nextgroup=bbVarEq "syn match bbVarFlagFlag "\[\([a-zA-Z0-9\-_\.]\+\)\]\s*\(=\)\@=" contains=bbIdentifier nextgroup=bbVarEq " Functions! syn match bbFunction "\h\w*" display contained " BitBake python metadata syn include @python syntax/python.vim if exists("b:current_syntax") unlet b:current_syntax endif syn keyword bbPythonFlag python contained nextgroup=bbFunction syn match bbPythonFuncDef "^\(python\s\+\)\(\w\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbPythonFlag,bbFunction,bbDelimiter nextgroup=bbPythonFuncRegion skipwhite syn region bbPythonFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" keepend contained contains=@python "hi def link bbPythonFuncRegion Comment " BitBake shell metadata syn include @shell syntax/sh.vim if exists("b:current_syntax") unlet b:current_syntax endif syn keyword bbFakerootFlag fakeroot contained nextgroup=bbFunction syn match bbShellFuncDef "^\(fakeroot\s*\)\?\(\w\+\)\(python\)\@