neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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"