Merge commit '1737af08bff1b0c0bfe6435b8a718ff463d78354' as 'vim/bundle/jade'
commit
bd7f3c82f6
@ -0,0 +1,19 @@
|
|||||||
|
# vim-jade #
|
||||||
|
|
||||||
|
Vim syntax highlighting for Jade templates.
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
I prefer to install plugins using Tim Pope's
|
||||||
|
[pathogen.vim](https://github.com/tpope/vim-pathogen). Installation using
|
||||||
|
pathogen is quite simple.
|
||||||
|
|
||||||
|
cd ~/.vim/bundle
|
||||||
|
git clone git://github.com/digitaltoad/vim-jade.git
|
||||||
|
|
||||||
|
If you do not want to use pathogen. You can always install vim-jade in the
|
||||||
|
normal manner by copying each directory to your ~/.vim directory. Make sure
|
||||||
|
not to overwrite any existing directory of the same name and instead copy only
|
||||||
|
the contents of the source directory to the directory of the same name in your
|
||||||
|
~/.vim directory.
|
@ -0,0 +1,2 @@
|
|||||||
|
" Jade
|
||||||
|
autocmd BufNewFile,BufReadPost *.jade set filetype=jade
|
@ -0,0 +1,55 @@
|
|||||||
|
" Vim filetype plugin
|
||||||
|
" Language: Jade
|
||||||
|
" Maintainer: Joshua Borton
|
||||||
|
" Credits: Tim Pope
|
||||||
|
|
||||||
|
" Only do this when not done yet for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
" Define some defaults in case the included ftplugins don't set them.
|
||||||
|
let s:undo_ftplugin = ""
|
||||||
|
let s:browsefilter = "All Files (*.*)\t*.*\n"
|
||||||
|
let s:match_words = ""
|
||||||
|
|
||||||
|
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||||
|
unlet! b:did_ftplugin
|
||||||
|
|
||||||
|
" Override our defaults if these were set by an included ftplugin.
|
||||||
|
if exists("b:undo_ftplugin")
|
||||||
|
let s:undo_ftplugin = b:undo_ftplugin
|
||||||
|
unlet b:undo_ftplugin
|
||||||
|
endif
|
||||||
|
if exists("b:browsefilter")
|
||||||
|
let s:browsefilter = b:browsefilter
|
||||||
|
unlet b:browsefilter
|
||||||
|
endif
|
||||||
|
if exists("b:match_words")
|
||||||
|
let s:match_words = b:match_words
|
||||||
|
unlet b:match_words
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Change the browse dialog on Win32 to show mainly Haml-related files
|
||||||
|
if has("gui_win32")
|
||||||
|
let b:browsefilter="Jade Files (*.jade)\t*.jade\n" . s:browsefilter
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Load the combined list of match_words for matchit.vim
|
||||||
|
if exists("loaded_matchit")
|
||||||
|
let b:match_words = s:match_words
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal comments=://-,:// commentstring=//\ %s
|
||||||
|
|
||||||
|
setlocal suffixesadd+=.jade
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl cms< com< "
|
||||||
|
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
|
||||||
|
" vim:set sw=2:
|
@ -0,0 +1,70 @@
|
|||||||
|
" Vim indent file
|
||||||
|
" Language: Jade
|
||||||
|
" Maintainer: Joshua Borton
|
||||||
|
" Credits: Tim Pope (vim-jade)
|
||||||
|
" Last Change: 2010 Sep 22
|
||||||
|
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
unlet! b:did_indent
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal autoindent
|
||||||
|
setlocal indentexpr=GetJadeIndent()
|
||||||
|
setlocal indentkeys=o,O,*<Return>,},],0),!^F
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists("*GetJadeIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:attributes = '\%((.\{-\})\)'
|
||||||
|
let s:tag = '\([%.#][[:alnum:]_-]\+\|'.s:attributes.'\)*[<>]*'
|
||||||
|
|
||||||
|
if !exists('g:jade_self_closing_tags')
|
||||||
|
let g:jade_self_closing_tags = 'meta|link|img|hr|br|input'
|
||||||
|
endif
|
||||||
|
|
||||||
|
setlocal formatoptions+=r
|
||||||
|
setlocal comments+=n:\|
|
||||||
|
|
||||||
|
function! GetJadeIndent()
|
||||||
|
let lnum = prevnonblank(v:lnum-1)
|
||||||
|
if lnum == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let line = substitute(getline(lnum),'\s\+$','','')
|
||||||
|
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','')
|
||||||
|
let lastcol = strlen(line)
|
||||||
|
let line = substitute(line,'^\s\+','','')
|
||||||
|
let indent = indent(lnum)
|
||||||
|
let cindent = indent(v:lnum)
|
||||||
|
let increase = indent + &sw
|
||||||
|
if indent == indent(lnum)
|
||||||
|
let indent = cindent <= indent ? -1 : increase
|
||||||
|
endif
|
||||||
|
|
||||||
|
let group = synIDattr(synID(lnum,lastcol,1),'name')
|
||||||
|
|
||||||
|
if line =~ '^!!!'
|
||||||
|
return indent
|
||||||
|
elseif line =~ '^/\%(\[[^]]*\]\)\=$'
|
||||||
|
return increase
|
||||||
|
elseif line =~ '^\%(if\|else\|unless\|for\|each\|block\|mixin\|append\|case\|when\)'
|
||||||
|
return increase
|
||||||
|
elseif line =~ '^'.s:tag.'[&!]\=[=~-].*,\s*$'
|
||||||
|
return increase
|
||||||
|
elseif line == '-#'
|
||||||
|
return increase
|
||||||
|
elseif line =~? '^\v%('.g:jade_self_closing_tags.')>'
|
||||||
|
return indent
|
||||||
|
elseif group =~? '\v^%(jadeAttributesDelimiter|jadeClass|jadeId|htmlTagName|htmlSpecialTagName|jadeFilter)$'
|
||||||
|
return increase
|
||||||
|
else
|
||||||
|
return indent
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" vim:set sw=2:
|
@ -0,0 +1,89 @@
|
|||||||
|
" 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
|
||||||
|
silent! syntax include @htmlStylus syntax/stylus.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 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,jadeJavascript
|
||||||
|
syn match jadeBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=jadeTag,jadeClassChar,jadeIdChar,jadePlainChar,jadeJavascript,jadeScriptConditional,jadeScriptStatement
|
||||||
|
syn match jadeTag "+\?\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@jadeComponent
|
||||||
|
syn cluster jadeComponent contains=jadeAttributes,jadeIdChar,jadeBlockExpansionChar,jadeClassChar,jadePlainChar,jadeJavascript
|
||||||
|
syn match jadeComment '\s*\/\/.*$'
|
||||||
|
syn region jadeHtmlComment start="^\z(\s*\)/" end="^\%(\z1\s\|\s*$\)\@!"
|
||||||
|
syn region jadeAttributes matchgroup=jadeAttributesDelimiter start="(" end=")" contained contains=@htmlJavascript,jadeHtmlArg,htmlArg,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*\(!!!\|doctype\)" 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 "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
|
||||||
|
|
||||||
|
syn region jadeJavascriptFilter matchgroup=jadeFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript
|
||||||
|
syn region jadeCoffeescriptFilter matchgroup=jadeFilter start="^\z(\s*\):coffeescript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript
|
||||||
|
syn region jadeMarkdownFilter matchgroup=jadeFilter start=/^\z(\s*\):markdown\s*$/ end=/^\%(\z1\s\|\s*$\)\@!/ contains=@htmlMarkdown
|
||||||
|
syn region jadeStylusFilter matchgroup=jadeFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus
|
||||||
|
syn region jadePlainFilter matchgroup=jadeFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!"
|
||||||
|
|
||||||
|
syn match jadeScriptConditional "\<\%(if\|else\|unless\|while\|for\|until\|case\|when\|default\)\>[?!]\@!"
|
||||||
|
syn match jadeScriptStatement "\<\%(each\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"
|
||||||
|
|
||||||
|
syn region jadeJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,jadeJavascriptTag keepend
|
||||||
|
syn region jadeJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=jadeBegin,jadeTag
|
||||||
|
syn region jadeCssBlock start="^\z(\s*\)style" nextgroup=@jadeComponent,jadeError end="^\%(\z1\s\|\s*$\)\@!" contains=@jadeTop,@htmlCss keepend
|
||||||
|
|
||||||
|
syn match jadeError "\$" contained
|
||||||
|
|
||||||
|
hi def link jadePlainChar Special
|
||||||
|
hi def link jadeScriptConditional PreProc
|
||||||
|
hi def link jadeScriptStatement PreProc
|
||||||
|
hi def link jadeHtmlArg htmlArg
|
||||||
|
hi def link jadeAttributeString String
|
||||||
|
hi def link jadeAttributesDelimiter Identifier
|
||||||
|
hi def link jadeIdChar Special
|
||||||
|
hi def link jadeClassChar Special
|
||||||
|
hi def link jadeBlockExpansionChar Special
|
||||||
|
hi def link jadeId Identifier
|
||||||
|
hi def link jadeClass Type
|
||||||
|
hi def link jadeInterpolationDelimiter Delimiter
|
||||||
|
hi def link jadeFilter PreProc
|
||||||
|
hi def link jadeDocType PreProc
|
||||||
|
hi def link jadeComment Comment
|
||||||
|
hi def link jadeHtmlComment jadeComment
|
||||||
|
|
||||||
|
let b:current_syntax = "jade"
|
||||||
|
|
||||||
|
if main_syntax == "jade"
|
||||||
|
unlet main_syntax
|
||||||
|
endif
|
Loading…
Reference in New Issue