aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/vim/syntax/bb.vim74
1 files changed, 74 insertions, 0 deletions
diff --git a/contrib/vim/syntax/bb.vim b/contrib/vim/syntax/bb.vim
new file mode 100644
index 00000000..850ab8d1
--- /dev/null
+++ b/contrib/vim/syntax/bb.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+"
+" Language: BitBake
+" Maintainer: Chris Larson <kergoth@handhelds.org>
+" Filenames: *.bb, *.bbclass
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+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 region bbString matchgroup=bbQuote start=/"/ skip=/\\$/ excludenl end=/"/ contained keepend contains=bbTodo
+syn region bbString matchgroup=bbQuote start=/'/ skip=/\\$/ excludenl end=/'/ contained keepend contains=bbTodo
+
+syn match bbFunction "\h\w*" display contained
+
+" 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 match bbVarDef "^\([a-zA-Z0-9\-_]\+\)\s*\(=\)\@=" contains=bbIdentifier nextgroup=bbVarEq
+syn match bbIdentifier "[a-zA-Z0-9\-_]\+" display contained
+"syn keyword bbVarEq = display contained nextgroup=bbVarValue
+syn match bbVarEq "=" contained contains=bbOperator nextgroup=bbVarValue
+syn match bbVarValue ".*$" contained contains=bbString
+
+" BitBake python metadata
+syn include @python syntax/python.vim
+
+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 contains=@python
+"hi def link bbPythonFuncRegion Comment
+hi def link bbPythonFlag Type
+
+hi def link bbStatement Statement
+hi def link bbString String
+hi def link bbTodo Todo
+hi def link bbComment Comment
+hi def link bbOperator Operator
+hi def link bbError Error
+hi def link bbFunction Function
+hi def link bbDelimiter Delimiter
+hi def link bbIdentifier Identifier
+hi def link bbQuote Statement
+hi def link bbVarEq Operator