diff options
Diffstat (limited to 'syntax/blade.vim')
-rw-r--r-- | syntax/blade.vim | 52 |
1 files changed, 29 insertions, 23 deletions
diff --git a/syntax/blade.vim b/syntax/blade.vim index a02b88ae..3f512163 100644 --- a/syntax/blade.vim +++ b/syntax/blade.vim @@ -1,35 +1,41 @@ -" Language: Blade (Laravel) -" Maintainer: xsbeats <jwalton512@gmail.com> -" URL: http://github.com/xsbeats/vim-blade -" License: WTFPL +" Language: Blade +" Maintainer: Jason Walton <jwalton512@gmail.com> +" URL: https://github.com/xsbeats/vim-blade +" License: DBAD -if exists("b:current_syntax") +" Check if our syntax is already loaded +if exists('b:current_syntax') && b:current_syntax == 'blade' finish endif -runtime! syntax/html.vim -unlet b:current_syntax - +" Include PHP runtime! syntax/php.vim -unlet b:current_syntax - -syn match bladeConditional /@\(choice\|each\|elseif\|extends\|for\|foreach\|if\|include\|lang\|section\|unless\|while\|yield\)\>\s*/ nextgroup=bladeParenBlock containedin=ALLBUT,bladeComment +silent! unlet b:current_syntax -syn match bladeKeyword /@\(else\|endfor\|endforeach\|endif\|endsection\|endunless\|endwhile\|overwrite\|parent\|show\|stop\)\>/ containedin=ALL,bladeComment +" Echos +syn region bladeUnescapedEcho matchgroup=bladeEchoDelim start=/@\@<!\s*{!!/ end=/!!}\s*/ oneline contains=@phpClTop containedin=ALLBUT,bladeComment +syn region bladeEscapedEcho matchgroup=bladeEchoDelim start=/@\@<!\s*{{{\@!/ end=/}}\s*/ oneline contains=@phpClTop containedin=ALLBUT,bladeComment +syn region bladeEscapedEcho matchgroup=bladeEchoDelim start=/@\@<!\s*{{{{\@!/ end=/}}}/ oneline contains=@phpClTop containedin=ALLBUT,bladeComment -syn region bladeCommentBlock start="{{--" end="--}}" contains=bladeComment keepend containedin=TOP -syn match bladeComment /.*/ contained containedin=bladeCommentBlock +" Structures +syn match bladeStructure /\s*@\(else\|empty\|endfor\|endforeach\|endforelse\|endif\|endpush\|endsection\|endunless\|endwhile\|overwrite\|show\|stop\)\>/ +syn match bladeStructure /\s*@\(append\|choice\|each\|elseif\|extends\|for\|foreach\|forelse\|if\|include\|lang\|push\|section\|stack\|unless\|while\|yield\|\)\>\s*/ nextgroup=bladeParens +syn region bladeParens matchgroup=bladeParen start=/(/ end=/)/ contained contains=@bladeAll,@phpClTop -syn region bladeEchoUnescaped matchgroup=bladeEchoDelim start="\([@|{]\)\@<!{{\(--\)\@!" end="}}" contains=@phpClInside containedin=ALLBUT,bladeComment -syn region bladeEchoEscaped matchgroup=bladeEchoDelim start="\(@\)\@<!{{{" end="}}}" contains=@phpClInside containedin=ALLBUT,bladeComment +" Comments +syn region bladeComments start=/\s*{{--/ end=/--}}/ contains=bladeComment keepend +syn match bladeComment /.*/ contained containedin=bladeComments -syn cluster bladeStatement contains=bladeConditional,bladeKeyword +" Clusters +syn cluster bladeAll contains=bladeStructure,bladeParens -syn region bladeParenBlock start="(" end=")" contained oneline contains=bladeParenBlock,@phpClInside,@bladeStatement extend keepend +" Highlighting +hi def link bladeComment Comment +hi def link bladeEchoDelim Delimiter +hi def link bladeParen Delimiter +hi def link bladeStructure Keyword -hi def link bladeComment Comment -hi def link bladeConditional Conditional -hi def link bladeKeyword Keyword -hi def link bladeEchoDelim Delimiter -let b:current_syntax = 'blade' +if !exists('b:current_syntax') + let b:current_syntax = 'blade' +endif |