" Vim syntax file " Language: Jade " Maintainer: Joshua Borton " Credits: Tim Pope " Filenames: *.jade if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'jade' endif runtime! syntax/html.vim runtime! syntax/html/html5.vim silent! syntax include @htmlCoffeescript syntax/coffee.vim unlet! b:current_syntax syn case match syn region javascriptParenthesisBlock start="(" end=")" contains=@htmlJavascript contained keepend syn cluster htmlJavascript add=javascriptParenthesisBlock syn region jadeJavascript matchgroup=jadeJavascriptOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend syn region jadeJavascript matchgroup=jadeJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend syn cluster jadeTop contains=jadeBegin,jadeComment,jadeHtmlComment syn match jadeBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=jadeTag,jadeClassChar,jadeIdChar,jadePlainChar,jadeJavascript syn match jadeTag "\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@jadeComponent syn cluster jadeComponent contains=jadeAttributes,jadeIdChar,jadeBlockExpansionChar,jadeClassChar,jadePlainChar,jadeJavascript syn match jadeComment ' *\/\/.*$' syn region jadeHtmlComment start="^\z(\s*\)/" end="^\%(\z1 \| *$\)\@!" syn region jadeAttributes matchgroup=jadeAttributesDelimiter start="(" end=")" contained contains=@htmlJavascript,jadeHtmlArg,htmlArg,jadeAttributeString,htmlEvent,htmlCssDefinition nextgroup=@jadeComponent syn match jadeClassChar "\." contained nextgroup=jadeClass syn match jadeBlockExpansionChar ":\s" contained nextgroup=jadeTag syn match jadeIdChar "#{\@!" contained nextgroup=jadeId syn match jadeClass "\%(\w\|-\)\+" contained nextgroup=@jadeComponent syn match jadeId "\%(\w\|-\)\+" contained nextgroup=@jadeComponent syn region jadeDocType start="^\s*!!!" end="$" " Unless I'm mistaken, syntax/html.vim requires " that the = sign be present for these matches. " This adds the matches back for jade. syn keyword jadeHtmlArg contained href title syn match jadePlainChar "\\" contained syn region jadeInterpolation matchgroup=jadeInterpolationDelimiter start="#{" end="}" contains=@htmlJavascript syn match jadeInterpolationEscape "\\\@