aboutsummaryrefslogtreecommitdiff
path: root/vim/.vim/plugged/vim-pug/syntax/pug.vim
diff options
context:
space:
mode:
authorKumar Damani <damani.kumar@gmail.com>2019-04-26 18:49:26 +0000
committerKumar Damani <damani.kumar@gmail.com>2019-04-26 18:49:26 +0000
commit5a6ed5fcb3b89d0c2b4e8ba2953c4ba806d4b171 (patch)
tree5be0c043b0c8d632e35a8b4ef7e23452b103b94d /vim/.vim/plugged/vim-pug/syntax/pug.vim
parentaf821092fe78ef159d7cb6536bb006712dc01b9d (diff)
added vim dir
Diffstat (limited to 'vim/.vim/plugged/vim-pug/syntax/pug.vim')
-rw-r--r--vim/.vim/plugged/vim-pug/syntax/pug.vim113
1 files changed, 113 insertions, 0 deletions
diff --git a/vim/.vim/plugged/vim-pug/syntax/pug.vim b/vim/.vim/plugged/vim-pug/syntax/pug.vim
new file mode 100644
index 0000000..850f815
--- /dev/null
+++ b/vim/.vim/plugged/vim-pug/syntax/pug.vim
@@ -0,0 +1,113 @@
+" Vim syntax file
+" Language: Pug
+" Maintainer: Joshua Borton
+" Credits: Tim Pope
+" Filenames: *.pug
+
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'pug'
+endif
+
+silent! syntax include @htmlCoffeescript syntax/coffee.vim
+unlet! b:current_syntax
+silent! syntax include @htmlStylus syntax/stylus.vim
+unlet! b:current_syntax
+silent! syntax include @htmlCss syntax/css.vim
+unlet! b:current_syntax
+silent! syntax include @htmlMarkdown syntax/markdown.vim
+unlet! b:current_syntax
+
+syn case match
+
+syn region javascriptParenthesisBlock start="(" end=")" contains=@htmlJavascript contained keepend
+syn cluster htmlJavascript add=javascriptParenthesisBlock
+
+syn region pugJavascript matchgroup=pugJavascriptOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
+syn region pugJavascript matchgroup=pugJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
+syn cluster pugTop contains=pugBegin,pugComment,pugHtmlComment,pugJavascript
+syn match pugBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=pugTag,pugClassChar,pugIdChar,pugPlainChar,pugJavascript,pugScriptConditional,pugScriptStatement,pugPipedText
+syn match pugTag "+\?[[:alnum:]_-]\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName,pugJavascript nextgroup=@pugComponent
+syn cluster pugComponent contains=pugAttributes,pugIdChar,pugBlockExpansionChar,pugClassChar,pugPlainChar,pugJavascript,pugTagBlockChar,pugTagInlineText
+syn keyword pugCommentTodo contained TODO FIXME XXX TBD
+syn match pugComment '\(\s\+\|^\)\/\/.*$' contains=pugCommentTodo,@Spell
+syn region pugCommentBlock start="\z(\s\+\|^\)\/\/.*$" end="^\%(\z1\s\|\s*$\)\@!" contains=pugCommentTodo,@Spell keepend
+syn region pugHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->" contains=pugCommentTodo,@Spell
+syn region pugAngular2 start="(" end=")" contains=htmlEvent
+syn region pugJavascriptString start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contained
+syn region pugJavascriptString start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contained
+syn region pugJavascriptString start=+`+ skip=+\\\(`\|$\)+ end=+`\|$+ contains=javascriptInterpolation contained
+syn region pugAttributes matchgroup=pugAttributesDelimiter start="(" end="\(.\zs)\)\|)" contained contains=pugJavascriptString,pugHtmlArg,pugAngular2,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@pugComponent
+syn match pugClassChar "\." containedin=htmlTagName nextgroup=pugClass
+syn match pugBlockExpansionChar ":\s\+" contained nextgroup=pugTag,pugClassChar,pugIdChar
+syn match pugIdChar "#[[{]\@!" contained nextgroup=pugId
+syn match pugClass "\%(\w\|-\)\+" contained nextgroup=@pugComponent
+syn match pugId "\%(\w\|-\)\+" contained nextgroup=@pugComponent
+syn region pugDocType start="^\s*\(!!!\|doctype\)" end="$"
+" Unless I'm mistaken, syntax/html.vim requires
+" that the = sign be present for these matches.
+" This adds the matches back for pug.
+syn keyword pugHtmlArg contained href title
+
+syn match pugPlainChar "\\" contained
+syn region pugInterpolation matchgroup=pugInterpolationDelimiter start="[#!]{" end="}" contains=@htmlJavascript
+syn match pugInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
+syn match pugTagInlineText "\s.*$" contained contains=pugInterpolation,pugTextInlinePug,@Spell
+syn region pugPipedText matchgroup=pugPipeChar start="|" end="$" contained contains=pugInterpolation,pugTextInlinePug,@Spell nextgroup=pugPipedText skipnl
+syn match pugTagBlockChar "\.$" contained nextgroup=pugTagBlockText,pugTagBlockEnd skipnl
+syn region pugTagBlockText start="\%(\s*\)\S" end="\ze\n" contained contains=pugInterpolation,pugTextInlinePug,@Spell nextgroup=pugTagBlockText,pugTagBlockEnd skipnl
+syn region pugTagBlockEnd start="\s*\S" end="$" contained contains=pugInterpolation,pugTextInlinePug nextgroup=pugBegin skipnl
+syn region pugTextInlinePug matchgroup=pugInlineDelimiter start="#\[" end="]" contains=pugTag keepend
+
+syn region pugJavascriptFilter matchgroup=pugFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript
+syn region pugMarkdownFilter matchgroup=pugFilter start=/^\z(\s*\):\%(markdown\|marked\)\s*$/ end=/^\%(\z1\s\|\s*$\)\@!/ contains=@htmlMarkdown
+syn region pugStylusFilter matchgroup=pugFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus
+syn region pugPlainFilter matchgroup=pugFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!"
+
+syn match pugScriptConditional "^\s*\<\%(if\|else\|else if\|elif\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!"
+syn match pugScriptStatement "^\s*\<\%(each\|for\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"
+syn region pugScriptLoopRegion start="^\s*\(for \)" end="$" contains=pugScriptLoopKeywords
+syn keyword pugScriptLoopKeywords for in
+
+syn region pugJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,pugJavascriptTag,pugCoffeescriptFilter keepend
+syn region javascriptInterpolation start=/${/ end=/}/ contained
+
+syn region pugCoffeescriptFilter matchgroup=pugFilter start="^\z(\s*\):coffee-\?script\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript contained
+syn region pugJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=pugBegin,pugTag
+syn region pugCssBlock start="^\z(\s*\)style" nextgroup=@pugComponent,pugError end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCss keepend
+
+syn match pugError "\$" contained
+
+hi def link pugPlainChar Special
+hi def link pugScriptConditional PreProc
+hi def link pugScriptLoopKeywords PreProc
+hi def link pugScriptStatement PreProc
+hi def link pugHtmlArg htmlArg
+hi def link pugAttributeString String
+hi def link pugAttributesDelimiter Identifier
+hi def link pugIdChar Special
+hi def link pugClassChar Special
+hi def link pugBlockExpansionChar Special
+hi def link pugPipeChar Special
+hi def link pugTagBlockChar Special
+hi def link pugId Identifier
+hi def link pugClass Type
+hi def link pugInterpolationDelimiter Delimiter
+hi def link pugInlineDelimiter Delimiter
+hi def link pugFilter PreProc
+hi def link pugDocType PreProc
+hi def link pugCommentTodo Todo
+hi def link pugComment Comment
+hi def link pugCommentBlock Comment
+hi def link pugHtmlConditionalComment pugComment
+hi def link pugJavascriptString String
+hi def link javascriptInterpolation Delimiter
+
+let b:current_syntax = "pug"
+
+if main_syntax == "pug"
+ unlet main_syntax
+endif