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