Signed-off-by: Khem Raj <[email protected]>
---
 contrib/vim/ftdetect/bitbake.vim |   28 +++++-
 contrib/vim/plugin/newbb.vim     |   85 +++++++++++++++++
 contrib/vim/syntax/bitbake.vim   |  195 ++++++++++++++++++-------------------
 3 files changed, 204 insertions(+), 104 deletions(-)
 create mode 100755 contrib/vim/plugin/newbb.vim

diff --git a/contrib/vim/ftdetect/bitbake.vim b/contrib/vim/ftdetect/bitbake.vim
index 3882a9a..179e4d9 100644
--- a/contrib/vim/ftdetect/bitbake.vim
+++ b/contrib/vim/ftdetect/bitbake.vim
@@ -1,4 +1,24 @@
-au BufNewFile,BufRead *.bb       setfiletype bitbake
-au BufNewFile,BufRead *.bbclass  setfiletype bitbake
-au BufNewFile,BufRead *.inc      setfiletype bitbake
-" au BufNewFile,BufRead *.conf     setfiletype bitbake
+" Vim filetype detection file
+" Language:     BitBake
+" Author:       Ricardo Salveti <[email protected]>
+" Copyright:    Copyright (C) 2008  Ricardo Salveti <[email protected]>
+" Licence:      You may redistribute this under the same terms as Vim itself
+"
+" This sets up the syntax highlighting for BitBake files, like .bb, .bbclass 
and .inc
+
+if &compatible || version < 600
+    finish
+endif
+
+" .bb and .bbclass
+au BufNewFile,BufRead *.b{b,bclass}    set filetype=bitbake
+
+" .inc
+au BufNewFile,BufRead *.inc            set filetype=bitbake
+
+" .conf
+au BufNewFile,BufRead *.conf
+    \ if (match(expand("%:p:h"), "conf") > 0) |
+    \     set filetype=bitbake |
+    \ endif
+
diff --git a/contrib/vim/plugin/newbb.vim b/contrib/vim/plugin/newbb.vim
new file mode 100755
index 0000000..afba1d9
--- /dev/null
+++ b/contrib/vim/plugin/newbb.vim
@@ -0,0 +1,85 @@
+" Vim plugin file
+" Purpose:     Create a template for new bb files
+" Author:      Ricardo Salveti <[email protected]>
+" Copyright:   Copyright (C) 2008 Ricardo Salveti <[email protected]>
+"
+" This file is licensed under the MIT license, see COPYING.MIT in
+" this source distribution for the terms.
+"
+" Based on the gentoo-syntax package
+"
+" Will try to use git to find the user name and email
+
+if &compatible || v:version < 600
+    finish
+endif
+
+fun! <SID>GetUserName()
+    let l:user_name = system("git-config --get user.name")
+    if v:shell_error
+        return "Unknow User"
+    else
+        return substitute(l:user_name, "\n", "", "")
+endfun
+
+fun! <SID>GetUserEmail()
+    let l:user_email = system("git-config --get user.email")
+    if v:shell_error
+        return "[email protected]"
+    else
+        return substitute(l:user_email, "\n", "", "")
+endfun
+
+fun! BBHeader()
+    let l:current_year = strftime("%Y")
+    let l:user_name = <SID>GetUserName()
+    let l:user_email = <SID>GetUserEmail()
+    0 put ='# Copyright (C) ' . l:current_year .
+                \ ' ' . l:user_name . ' <' . l:user_email . '>'
+    put ='# Released under the MIT license (see COPYING.MIT for the terms)'
+    $
+endfun
+
+fun! NewBBTemplate()
+    let l:paste = &paste
+    set nopaste
+    
+    " Get the header
+    call BBHeader()
+
+    " New the bb template
+    put ='DESCRIPTION = \"\"'
+    put ='HOMEPAGE = \"\"'
+    put ='LICENSE = \"\"' 
+    put ='SECTION = \"\"'
+    put ='DEPENDS = \"\"'
+    put ='PR = \"r0\"'
+    put =''
+    put ='SRC_URI = \"\"'
+
+    " Go to the first place to edit
+    0
+    /^DESCRIPTION =/
+    exec "normal 2f\""
+
+    if paste == 1
+        set paste
+    endif
+endfun
+
+if !exists("g:bb_create_on_empty")
+    let g:bb_create_on_empty = 1
+endif
+
+" disable in case of vimdiff
+if v:progname =~ "vimdiff"
+    let g:bb_create_on_empty = 0
+endif
+
+augroup NewBB
+    au BufNewFile *.bb
+                \ if g:bb_create_on_empty |
+                \    call NewBBTemplate() |
+                \ endif
+augroup END
+
diff --git a/contrib/vim/syntax/bitbake.vim b/contrib/vim/syntax/bitbake.vim
index be55980..b46436a 100644
--- a/contrib/vim/syntax/bitbake.vim
+++ b/contrib/vim/syntax/bitbake.vim
@@ -1,127 +1,122 @@
 " Vim syntax file
+" Language:     BitBake bb/bbclasses/inc
+" Author:       Chris Larson <[email protected]>
+"               Ricardo Salveti <[email protected]>
+" Copyright:    Copyright (C) 2004  Chris Larson <[email protected]>
+"               Copyright (C) 2008  Ricardo Salveti <[email protected]>
 "
-" Copyright (C) 2004  Chris Larson <[email protected]>
 " This file is licensed under the MIT license, see COPYING.MIT in
 " this source distribution for the terms.
 "
-" Language:    BitBake
-" Maintainer:  Chris Larson <[email protected]>
-" 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)
+" Syntax highlighting for bb, bbclasses and inc files.
 "
-syn match bbUnmatched          "."
-
+" It's an entirely new type, just has specific syntax in shell and python code
 
-syn include @python syntax/python.vim
+if &compatible || v:version < 600
+    finish
+endif
 if exists("b:current_syntax")
-  unlet b:current_syntax
+    finish
 endif
 
+" BitBake syntax
 
-" Other
-
-syn match bbComment            "^#.*$" display contains=bbTodo
-syn keyword bbTodo             TODO FIXME XXX contained
-syn match bbDelimiter          "[(){}=]" contained
-syn match bbQuote              /['"]/ contained
-syn match bbArrayBrackets      "[\[\]]" contained
-
-
-" BitBake strings
-
-syn match bbContinue           "\\$"
-syn region bbString            matchgroup=bbQuote start=/"/ skip=/\\$/ 
excludenl end=/"/ contained keepend 
contains=bbTodo,bbContinue,bbVarInlinePy,bbVarDeref
-syn region bbString            matchgroup=bbQuote start=/'/ skip=/\\$/ 
excludenl end=/'/ contained keepend 
contains=bbTodo,bbContinue,bbVarInlinePy,bbVarDeref
-
-" BitBake variable metadata
-
-syn match bbVarBraces "[\${}]"
-syn region bbVarDeref matchgroup=bbVarBraces start="${" end="}" contained
-" syn region bbVarDeref start="${" end="}" contained
-" syn region bbVarInlinePy start="${@" end="}" contained contai...@python
-syn region bbVarInlinePy matchgroup=bbVarBraces start="${@" end="}" contained 
contai...@python
-
-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
-
-" 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
+" Matching case
+syn case match
 
+" Indicates the error when nothing is matched
+syn match bbUnmatched           "."
 
-" BitBake python metadata
+" Comments
+syn cluster bbCommentGroup      contains=bbTodo,@Spell
+syn keyword bbTodo              COMBAK FIXME TODO XXX contained
+syn match bbComment             "#.*$" contai...@bbcommentgroup
 
-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 contai...@python
-"hi def link bbPythonFuncRegion        Comment
+" 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 contai...@shell
 
-syn keyword bbFakerootFlag     fakeroot contained nextgroup=bbFunction
-syn match bbShellFuncDef       
"^\(fakeroot\s*\)\?\(\w\+\)\(python\)\@<!\(\s*()\s*\)\({\)\...@=" 
contains=bbFakerootFlag,bbFunction,bbDelimiter nextgroup=bbShellFuncRegion 
skipwhite
-syn region bbShellFuncRegion   matchgroup=bbDelimiter start="{\s*$" 
end="^}\s*$" keepend contained contai...@shell
-"hi def link bbShellFuncRegion Comment
-
+" 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 contai...@python
 
 " BitBake 'def'd python functions
-syn keyword bbDef      def     contained
-syn region bbDefRegion         start='^def\s\+\w\+\s*([^)]*)\s*:\s*$' 
end='^\(\s\|$\)\...@!' contai...@python
+syn keyword bbPyDef             def contained
+syn region bbPyDefRegion        
start='^\(def\s\+\)\([0-9A-Za-z_-]\+\)\(\s*(.*)\s*\):\s*$' 
end='^\(\s\|$\)\...@!' contai...@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"
 
-" BitBake statements
-syn keyword bbStatement                include inherit require addtask 
addhandler EXPORT_FUNCTIONS display contained
-syn match bbStatementLine      
"^\(include\|inherit\|require\|addtask\|addhandler\|EXPORT_FUNCTIONS\)\s\+" 
contains=bbStatement nextgroup=bbStatementRest
-syn match bbStatementRest              ".*$" contained 
contains=bbString,bbVarDeref
-
-" Highlight
-"
-hi def link bbArrayBrackets    Statement
-hi def link bbUnmatched                Error
-hi def link bbContinue         Special
-hi def link bbDef              Statement
-hi def link bbPythonFlag       Type
-hi def link bbExportFlag       Type
-hi def link bbFakerootFlag     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 bbVarEq            Operator
-hi def link bbQuote            String
-hi def link bbVarValue         String
-" hi def link bbVarInlinePy    PreProc
-hi def link bbVarDeref         PreProc
-hi def link bbVarBraces                PreProc
 
-let b:current_syntax = "bb"
-- 
1.6.3.3

_______________________________________________
Bitbake-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bitbake-dev

Reply via email to