123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- " Vim syntax file
- " Language: BitBake bb/bbclasses/inc
- " Author: Chris Larson <kergoth@handhelds.org>
- " Ricardo Salveti <rsalveti@rsalveti.net>
- " Copyright: Copyright (C) 2004 Chris Larson <kergoth@handhelds.org>
- " Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
- "
- " This file is licensed under the MIT license, see COPYING.MIT in
- " this source distribution for the terms.
- "
- " Syntax highlighting for bb, bbclasses and inc files.
- "
- " It's an entirely new type, just has specific syntax in shell and python code
- if &compatible || v:version < 600
- finish
- endif
- if exists("b:current_syntax")
- finish
- endif
- " BitBake syntax
- " Matching case
- syn case match
- " Indicates the error when nothing is matched
- syn match bbUnmatched "."
- " Comments
- syn cluster bbCommentGroup contains=bbTodo,@Spell
- syn keyword bbTodo COMBAK FIXME TODO XXX contained
- syn match bbComment "#.*$" contains=@bbCommentGroup
- " String helpers
- syn match bbQuote +['"]+ contained
- syn match bbDelimiter "[(){}=]" contained
- syn match bbArrayBrackets "[\[\]]" contained
- " BitBake strings
- syn match bbContinue "\\$"
- syn region bbString matchgroup=bbQuote start=+"+ skip=+\\$+ excludenl end=+"+ contained keepend contains=bbTodo,bbContinue,bbVarDeref,@Spell
- syn region bbString matchgroup=bbQuote start=+'+ skip=+\\$+ excludenl end=+'+ contained keepend contains=bbTodo,bbContinue,bbVarDeref,@Spell
- " Vars definition
- syn keyword bbExportFlag export contained nextgroup=bbIdentifier skipwhite
- syn match bbIdentifier "[a-zA-Z0-9\-_\.\/\+]\+" display contained
- syn match bbVarDeref "${[a-zA-Z0-9\-_\.\/\+]\+}" contained
- syn match bbVarEq "\(:=\|+=\|=+\|\.=\|=\.\|?=\|=\)" contained nextgroup=bbVarValue
- syn match bbVarDef "^\(export\s*\)\?\([a-zA-Z0-9\-_\.\/\+]\+\(_[${}a-zA-Z0-9\-_\.\/\+]\+\)\?\)\s*\(:=\|+=\|=+\|\.=\|=\.\|?=\|=\)\@=" contains=bbExportFlag,bbIdentifier,bbVarDeref nextgroup=bbVarEq
- syn match bbVarValue ".*$" contained contains=bbString,bbVarDeref,bbVarPyValue
- syn match bbVarPyValue "${@[a-zA-Z0-9\-_\.\(\)]\+}" contained
- " Vars 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
- " Includes and requires
- syn keyword bbInclude inherit include require contained
- syn match bbIncludeRest ".*$" contained contains=bbString,bbVarDeref
- syn match bbIncludeLine "^\(inherit\|include\|require\)\s\+" contains=bbInclude nextgroup=bbIncludeRest
- " Add taks and similar
- syn keyword bbStatement addtask addhandler after before EXPORT_FUNCTIONS contained
- syn match bbStatementRest ".*$" skipwhite contained contains=bbStatement
- syn match bbStatementLine "^\(addtask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest
- " OE Important Functions
- syn keyword bbOEFunctions do_fetch do_unpack do_patch do_configure do_compile do_stage do_install do_package contained
- " Generic Functions
- syn match bbFunction "\h[0-9A-Za-z_-]*" display contained contains=bbOEFunctions
- " BitBake shell metadata
- syn include @shell syntax/sh.vim
- if exists("b:current_syntax")
- unlet b:current_syntax
- endif
- syn keyword bbShFakeRootFlag fakeroot contained
- syn match bbShFuncDef "^\(fakeroot\s*\)\?\([0-9A-Za-z_}${-]\+\)\(python\)\@<!\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbFunction,bbDelimiter nextgroup=bbShFuncRegion skipwhite
- syn region bbShFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" keepend contained contains=@shell
- " BitBake python metadata
- syn include @python syntax/python.vim
- if exists("b:current_syntax")
- unlet b:current_syntax
- endif
- syn keyword bbPyFlag python contained
- syn match bbPyFuncDef "^\(python\s\+\)\([0-9A-Za-z_-]\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbPyFlag,bbFunction,bbDelimiter nextgroup=bbPyFuncRegion skipwhite
- syn region bbPyFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" keepend contained contains=@python
- " BitBake 'def'd python functions
- syn keyword bbPyDef def contained
- syn region bbPyDefRegion start='^\(def\s\+\)\([0-9A-Za-z_-]\+\)\(\s*(.*)\s*\):\s*$' end='^\(\s\|$\)\@!' contains=@python
- " Highlighting Definitions
- hi def link bbUnmatched Error
- hi def link bbInclude Include
- hi def link bbTodo Todo
- hi def link bbComment Comment
- hi def link bbQuote String
- hi def link bbString String
- hi def link bbDelimiter Keyword
- hi def link bbArrayBrackets Statement
- hi def link bbContinue Special
- hi def link bbExportFlag Type
- hi def link bbIdentifier Identifier
- hi def link bbVarDeref PreProc
- hi def link bbVarDef Identifier
- hi def link bbVarValue String
- hi def link bbShFakeRootFlag Type
- hi def link bbFunction Function
- hi def link bbPyFlag Type
- hi def link bbPyDef Statement
- hi def link bbStatement Statement
- hi def link bbStatementRest Identifier
- hi def link bbOEFunctions Special
- hi def link bbVarPyValue PreProc
- let b:current_syntax = "bb"
|