diff options
-rw-r--r-- | README.md | 10 | ||||
-rw-r--r-- | after/syntax/ruby.vim | 13 | ||||
-rw-r--r-- | autoload/polyglot.vim | 2 | ||||
-rw-r--r-- | autoload/sleuth.vim | 9 | ||||
-rw-r--r-- | ftdetect/polyglot.vim | 35 | ||||
-rw-r--r-- | ftplugin/aspvbs.vim | 64 | ||||
-rw-r--r-- | ftplugin/handlebars.vim | 127 | ||||
-rw-r--r-- | ftplugin/htmldjango.vim | 17 | ||||
-rw-r--r-- | ftplugin/mustache.vim | 124 | ||||
-rw-r--r-- | heuristics.yaml | 2 | ||||
-rw-r--r-- | indent/handlebars.vim | 129 | ||||
-rw-r--r-- | indent/htmldjango.vim | 16 | ||||
-rw-r--r-- | indent/jinja.vim | 84 | ||||
-rw-r--r-- | indent/mustache.vim | 126 | ||||
-rw-r--r-- | packages.yaml | 46 | ||||
-rwxr-xr-x | scripts/build | 14 | ||||
-rw-r--r-- | syntax/aspperl.vim | 29 | ||||
-rw-r--r-- | syntax/aspvbs.vim | 186 | ||||
-rw-r--r-- | syntax/django.vim | 87 | ||||
-rw-r--r-- | syntax/handlebars.vim | 110 | ||||
-rw-r--r-- | syntax/html-1.vim | 196 | ||||
-rw-r--r-- | syntax/html-2.vim | 94 | ||||
-rw-r--r-- | syntax/html.vim | 199 | ||||
-rw-r--r-- | syntax/htmldjango.vim | 30 | ||||
-rw-r--r-- | syntax/jinja.vim | 90 | ||||
-rw-r--r-- | syntax/mustache.vim | 107 | ||||
-rw-r--r-- | tests/extensions.vim | 15 | ||||
-rw-r--r-- | tests/filetypes.vim | 5 |
28 files changed, 1080 insertions, 886 deletions
@@ -62,7 +62,7 @@ If you need full functionality of any plugin, please use it directly with your p - [ansible](https://github.com/pearofducks/ansible-vim) - [ant](https://github.com/vim/vim/tree/master/runtime) - [apache](https://github.com/vim/vim/tree/master/runtime) -- [apiblueprint](https://github.com/sheerun/apiblueprint.vim) +- [apiblueprint](https://github.com/kylef/apiblueprint.vim) - [applescript](https://github.com/mityu/vim-applescript) - [aptconf](https://github.com/vim/vim/tree/master/runtime) - [arch](https://github.com/vim/vim/tree/master/runtime) @@ -123,8 +123,8 @@ If you need full functionality of any plugin, please use it directly with your p - [graphql](https://github.com/jparise/vim-graphql) - [groovy](https://github.com/vim/vim/tree/master/runtime) - [grub](https://github.com/vim/vim/tree/master/runtime) -- [haml](https://github.com/sheerun/vim-haml) -- [handlebars](https://github.com/sheerun/vim-mustache-handlebars) +- [haml](https://github.com/tpope/vim-haml) +- [handlebars](https://github.com/mustache/vim-mustache-handlebars) - [haproxy](https://github.com/CH-DanReif/haproxy.vim) - [haskell](https://github.com/neovimhaskell/haskell-vim) - [haxe](https://github.com/yaymukund/vim-haxe) @@ -133,6 +133,7 @@ If you need full functionality of any plugin, please use it directly with your p - [help](https://github.com/neovim/neovim/tree/master/runtime) - [hive](https://github.com/zebradil/hive.vim) - [html5](https://github.com/othree/html5.vim) +- [htmldjango](https://github.com/vim/vim/tree/master/runtime) - [i3](https://github.com/mboughaba/i3config.vim) - [icalendar](https://github.com/chutzpah/icalendar.vim) - [idris2](https://github.com/edwinb/idris2-vim) @@ -141,7 +142,6 @@ If you need full functionality of any plugin, please use it directly with your p - [javascript-sql](https://github.com/statico/vim-javascript-sql) - [javascript](https://github.com/pangloss/vim-javascript) - [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) -- [jinja](https://github.com/lepture/vim-jinja) - [jq](https://github.com/vito-c/jq.vim) - [json5](https://github.com/GutenYe/json5.vim) - [json](https://github.com/elzr/vim-json) @@ -239,7 +239,7 @@ If you need full functionality of any plugin, please use it directly with your p - [xml](https://github.com/amadeus/vim-xml) - [xsl](https://github.com/vim-scripts/XSLT-syntax) - [yaml](https://github.com/vim/vim/tree/df44a27b53586fccfc6a3aedc89061fdd9a515ff/runtime) -- [yard](https://github.com/sheerun/vim-yardoc) +- [yard](https://github.com/noprompt/vim-yardoc) - [zephir](https://github.com/xwsoul/vim-zephir) - [zig](https://github.com/ziglang/zig.vim) - [zinit](https://github.com/zinit-zsh/zplugin-vim-syntax) diff --git a/after/syntax/ruby.vim b/after/syntax/ruby.vim index 00cd07d9..a135b6a8 100644 --- a/after/syntax/ruby.vim +++ b/after/syntax/ruby.vim @@ -22,6 +22,7 @@ syn match yardNote "@note" contained syn match yardOption "@option" contained syn match yardOverload "@overload" contained syn match yardParam "@param" contained +syn match yardParamName /@param \h\+/hs=s+7 contained contains=yardParam syn match yardPrivate "@private" contained syn match yardRaise "@raise" contained syn match yardReturn "@return" contained @@ -32,7 +33,7 @@ syn match yardVersion "@version" contained syn match yardYield "@yield" contained syn match yardYieldParam "@yieldparam" contained syn match yardYieldReturn "@yieldreturn" contained -syn cluster yardTags contains=yardGenericTag,yardAbstract,yardApi,yardAttr,yardAttrReader,yardAttrWriter,yardAuthor,yardDeprecated,yardExample,yardNote,yardOption,yardOverload,yardParam,yardPrivate,yardRaise,yardReturn,yardSee,yardSince,yardTodo,yardVersion,yardYield,yardYieldParam,yardYieldReturn +syn cluster yardTags contains=yardGenericTag,yardAbstract,yardApi,yardAttr,yardAttrReader,yardAttrWriter,yardAuthor,yardDeprecated,yardExample,yardNote,yardOption,yardOverload,yardParam,yardParamName,yardPrivate,yardRaise,yardReturn,yardSee,yardSince,yardTodo,yardVersion,yardYield,yardYieldParam,yardYieldReturn """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Directives @@ -81,7 +82,7 @@ syn cluster rubyNotTop add=@yardTags,@yardDirectives,@yardTypes,@yardLists,@yard """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" hi def link yardComment rubyComment " Tags -hi def link yardGenericTag rubyKeyword +hi def link yardGenericTag rubyTodo hi def link yardAbstract yardGenericTag hi def link yardApi yardGenericTag hi def link yardAttr yardGenericTag @@ -101,11 +102,11 @@ hi def link yardSee yardGenericTag hi def link yardSince yardGenericTag hi def link yardTodo yardGenericTag hi def link yardVersion yardGenericTag -hi def link yield yardGenericTag -hi def link yieldparam yardGenericTag -hi def link yieldreturn yardGenericTag +hi def link yardYield yardGenericTag +hi def link yardYieldParam yardGenericTag +hi def link yardYieldReturn yardGenericTag " Directives -hi def link yardGenericDirective rubyKeyword +hi def link yardGenericDirective rubyTodo hi def link yardAttribute yardGenericDirective hi def link yardEndGroup yardGenericDirective hi def link yardGroup yardGenericDirective diff --git a/autoload/polyglot.vim b/autoload/polyglot.vim index d8ee601f..97a83752 100644 --- a/autoload/polyglot.vim +++ b/autoload/polyglot.vim @@ -373,7 +373,7 @@ func! polyglot#DetectHtmlFiletype() for lnum in range(1, min([line("$"), 50])) let line = getline(lnum) if line =~# '{{.*}}\|{%-\=\s*\(end.*\|extends\|block\|macro\|set\|if\|for\|include\|trans\)\(\<\|\>\)\|{#\s\+' - set ft=jinja.html | return + set ft=htmldjango | return endif if line =~# '\(\<\|\>\)DTD\s\+XHTML\s' set ft=xhtml | return diff --git a/autoload/sleuth.vim b/autoload/sleuth.vim index ae101289..0bb73fd8 100644 --- a/autoload/sleuth.vim +++ b/autoload/sleuth.vim @@ -38,7 +38,7 @@ let s:globs = { \ 'basic': '*.basic', \ 'blade': '*.blade,*.blade.php', \ 'brewfile': 'Brewfile', - \ 'bzl': '*.bzl,BUCK,BUILD,BUILD.bazel,Tiltfile,WORKSPACE', + \ 'bzl': '*.bzl,*.bazel,*.BUILD,BUCK,BUILD,BUILD.bazel,Tiltfile,WORKSPACE', \ 'c': '*.c,*.cats,*.h,*.idc,*.qc', \ 'caddyfile': 'Caddyfile', \ 'carp': '*.carp', @@ -101,7 +101,10 @@ let s:globs = { \ 'help': '', \ 'hive': '*.q,*.hql,*.ql', \ 'html': '*.html,*.htm,*.html.hl,*.inc,*.st,*.xht,*.xhtml', + \ 'html.handlebars': '*.handlebars,*.hbs,*.hdbs,*.hb', + \ 'html.mustache': '*.mustache,*.hogan,*.hulk,*.hjs', \ 'html.twig': '*.twig', + \ 'htmldjango': '*.jinja,*.j2,*.jinja2,*.njk', \ 'i3config': '*.i3.config,*.i3config,i3.config,i3config', \ 'icalendar': '*.ics', \ 'idris': '*.idr,*.lidr,idris-response', @@ -109,7 +112,6 @@ let s:globs = { \ 'ion': '*.ion', \ 'javascript': '*.js,*._js,*.bones,*.cjs,*.es,*.es6,*.frag,*.gs,*.jake,*.jsb,*.jscad,*.jsfl,*.jsm,*.jss,*.mjs,*.njs,*.pac,*.sjs,*.ssjs,*.xsjs,*.xsjslib,Jakefile', \ 'javascriptreact': '*.jsx', - \ 'jinja.html': '*.jinja,*.j2,*.jinja2', \ 'jq': '*.jq', \ 'json': '*.json,*.avsc,*.geojson,*.gltf,*.har,*.ice,*.JSON-tmLanguage,*.jsonl,*.mcmeta,*.tfstate,*.tfstate.backup,*.topojson,*.webapp,*.webmanifest,*.yy,*.yyp,*.jsonp,*.template,composer.lock,mcmod.info,Pipfile.lock', \ 'json5': '*.json5', @@ -135,7 +137,6 @@ let s:globs = { \ 'mma': '*.mathematica,*.cdf,*.m,*.ma,*.mt,*.nb,*.nbp,*.wl,*.wlt,*.wls,*.mma', \ 'moon': '*.moon', \ 'murphi': '*.m', - \ 'mustache': '*.handlebars,*.hbs,*.hulk,*.hjs,*.mustache,*.njk,*.hogan,*.hdbs,*.hb', \ 'nginx': '*.nginx,*.nginxconf,*.vhost,nginx.conf,nginx*.conf,*nginx.conf', \ 'nim': '*.nim,*.nim.cfg,*.nimble,*.nimrod,*.nims,nim.cfg', \ 'nix': '*.nix', @@ -216,7 +217,7 @@ let s:globs = { \ 'vmasm': '*.mar', \ 'vue': '*.vue,*.wpy', \ 'xdc': '*.xdc', - \ 'xml': '*.xml,*.adml,*.admx,*.ant,*.axml,*.builds,*.ccproj,*.ccxml,*.clixml,*.cproject,*.cscfg,*.csdef,*.csl,*.csproj,*.ct,*.depproj,*.dita,*.ditamap,*.ditaval,*.dll.config,*.dotsettings,*.filters,*.fsproj,*.fxml,*.glade,*.gml,*.gmx,*.grxml,*.gst,*.iml,*.ivy,*.jelly,*.jsproj,*.kml,*.launch,*.mdpolicy,*.mjml,*.mm,*.mod,*.mxml,*.natvis,*.ncl,*.ndproj,*.nproj,*.nuspec,*.odd,*.osm,*.pkgproj,*.pluginspec,*.proj,*.props,*.ps1xml,*.psc1,*.pt,*.rdf,*.resx,*.rss,*.sch,*.scxml,*.sfproj,*.shproj,*.srdf,*.storyboard,*.sublime-snippet,*.targets,*.tml,*.ui,*.urdf,*.ux,*.vbproj,*.vcxproj,*.vsixmanifest,*.vssettings,*.vstemplate,*.vxml,*.wixproj,*.workflow,*.wsdl,*.wsf,*.wxi,*.wxl,*.wxs,*.x3d,*.xacro,*.xaml,*.xib,*.xlf,*.xliff,*.xmi,*.xml.dist,*.xproj,*.xsd,*.xspec,*.xul,*.zcml,*.cdxml,App.config,NuGet.config,Settings.StyleCop,Web.Debug.config,Web.Release.config,Web.config,packages.config', + \ 'xml': '*.xml,*.adml,*.admx,*.ant,*.axml,*.builds,*.ccproj,*.ccxml,*.clixml,*.cproject,*.cscfg,*.csdef,*.csl,*.csproj,*.ct,*.depproj,*.dita,*.ditamap,*.ditaval,*.dll.config,*.dotsettings,*.filters,*.fsproj,*.fxml,*.glade,*.gml,*.gmx,*.grxml,*.gst,*.iml,*.ivy,*.jelly,*.jsproj,*.kml,*.launch,*.mdpolicy,*.mjml,*.mm,*.mod,*.mxml,*.natvis,*.ncl,*.ndproj,*.nproj,*.nuspec,*.odd,*.osm,*.pkgproj,*.pluginspec,*.proj,*.props,*.ps1xml,*.psc1,*.pt,*.rdf,*.resx,*.rss,*.sch,*.scxml,*.sfproj,*.shproj,*.srdf,*.storyboard,*.sublime-snippet,*.targets,*.tml,*.ui,*.urdf,*.ux,*.vbproj,*.vcxproj,*.vsixmanifest,*.vssettings,*.vstemplate,*.vxml,*.wixproj,*.workflow,*.wsdl,*.wsf,*.wxi,*.wxl,*.wxs,*.x3d,*.xacro,*.xaml,*.xib,*.xlf,*.xliff,*.xmi,*.xml.dist,*.xproj,*.xsd,*.xspec,*.xul,*.zcml,*.cdxml,*.tpm,*.csproj.user,*.wpl,App.config,NuGet.config,Settings.StyleCop,Web.Debug.config,Web.Release.config,Web.config,packages.config', \ 'xml.twig': '*.xml.twig', \ 'xs': '*.xs', \ 'xsl': '*.xslt,*.xsl', diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index f9b6a670..d6379ae2 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -156,7 +156,7 @@ if !has_key(s:disabled_packages, 'ampl') endif if !has_key(s:disabled_packages, 'xml') - au! BufRead,BufNewFile *.csproj,*.ui,*.wsdl,*.wsf,*.xlf,*.xliff,*.xmi,*.xsd,*.xul + au! BufRead,BufNewFile *.csproj,*.ui,*.wsdl,*.wsf,*.xlf,*.xliff,*.xmi,*.xsd,*.xul,*.tpm,*.csproj.user,*.wpl endif if !has_key(s:disabled_packages, 'ant') @@ -488,7 +488,7 @@ if !has_key(s:disabled_packages, 'dosini') endif if !has_key(s:disabled_packages, 'bzl') - au! BufRead,BufNewFile *.bzl,BUILD,WORKSPACE + au! BufRead,BufNewFile *.bzl,*.bazel,*.BUILD,BUILD,WORKSPACE endif if !has_key(s:disabled_packages, 'tads') @@ -591,6 +591,7 @@ if !has_key(s:disabled_packages, 'xml') au BufNewFile,BufRead *.csdef set ft=xml au BufNewFile,BufRead *.csl set ft=xml au BufNewFile,BufRead *.csproj set ft=xml + au BufNewFile,BufRead *.csproj.user set ft=xml au BufNewFile,BufRead *.ct set ft=xml au BufNewFile,BufRead *.depproj set ft=xml au BufNewFile,BufRead *.dita set ft=xml @@ -643,6 +644,7 @@ if !has_key(s:disabled_packages, 'xml') au BufNewFile,BufRead *.sublime-snippet set ft=xml au BufNewFile,BufRead *.targets set ft=xml au BufNewFile,BufRead *.tml set ft=xml + au BufNewFile,BufRead *.tpm set ft=xml au BufNewFile,BufRead *.ui set ft=xml au BufNewFile,BufRead *.urdf set ft=xml au BufNewFile,BufRead *.ux set ft=xml @@ -654,6 +656,7 @@ if !has_key(s:disabled_packages, 'xml') au BufNewFile,BufRead *.vxml set ft=xml au BufNewFile,BufRead *.wixproj set ft=xml au BufNewFile,BufRead *.workflow set ft=xml + au BufNewFile,BufRead *.wpl set ft=xml au BufNewFile,BufRead *.wsdl set ft=xml au BufNewFile,BufRead *.wsf set ft=xml au BufNewFile,BufRead *.wxi set ft=xml @@ -1099,15 +1102,14 @@ if !has_key(s:disabled_packages, 'haml') endif if !has_key(s:disabled_packages, 'handlebars') - au BufNewFile,BufRead *.handlebars set ft=mustache - au BufNewFile,BufRead *.hb set ft=mustache - au BufNewFile,BufRead *.hbs set ft=mustache - au BufNewFile,BufRead *.hdbs set ft=mustache - au BufNewFile,BufRead *.hjs set ft=mustache - au BufNewFile,BufRead *.hogan set ft=mustache - au BufNewFile,BufRead *.hulk set ft=mustache - au BufNewFile,BufRead *.mustache set ft=mustache - au BufNewFile,BufRead *.njk set ft=mustache + au BufNewFile,BufRead *.hjs set ft=html.mustache + au BufNewFile,BufRead *.hogan set ft=html.mustache + au BufNewFile,BufRead *.hulk set ft=html.mustache + au BufNewFile,BufRead *.mustache set ft=html.mustache + au BufNewFile,BufRead *.handlebars set ft=html.handlebars + au BufNewFile,BufRead *.hb set ft=html.handlebars + au BufNewFile,BufRead *.hbs set ft=html.handlebars + au BufNewFile,BufRead *.hdbs set ft=html.handlebars endif if !has_key(s:disabled_packages, 'haskell') @@ -1184,10 +1186,11 @@ if !has_key(s:disabled_packages, 'jenkins') au BufNewFile,BufRead Jenkinsfile* call s:StarSetf('Jenkinsfile') endif -if !has_key(s:disabled_packages, 'jinja') - au BufNewFile,BufRead *.j2 set ft=jinja.html - au BufNewFile,BufRead *.jinja set ft=jinja.html - au BufNewFile,BufRead *.jinja2 set ft=jinja.html +if !has_key(s:disabled_packages, 'htmldjango') + au BufNewFile,BufRead *.j2 set ft=htmldjango + au BufNewFile,BufRead *.jinja set ft=htmldjango + au BufNewFile,BufRead *.jinja2 set ft=htmldjango + au BufNewFile,BufRead *.njk set ft=htmldjango endif if !has_key(s:disabled_packages, 'jq') @@ -1992,6 +1995,8 @@ if !has_key(s:disabled_packages, 'odin') endif if !has_key(s:disabled_packages, 'bzl') + au BufNewFile,BufRead *.BUILD set ft=bzl + au BufNewFile,BufRead *.bazel set ft=bzl au BufNewFile,BufRead *.bzl set ft=bzl au BufNewFile,BufRead BUCK set ft=bzl au BufNewFile,BufRead BUILD set ft=bzl diff --git a/ftplugin/aspvbs.vim b/ftplugin/aspvbs.vim new file mode 100644 index 00000000..c2afec5a --- /dev/null +++ b/ftplugin/aspvbs.vim @@ -0,0 +1,64 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'aspvbs') == -1 + +" Vim filetype plugin file +" Language: aspvbs +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +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 = "HTML Files (*.html, *.htm)\t*.htm*\n" . + \ "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") + let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") + let s:browsefilter = b:browsefilter +endif +if exists("b:match_words") + let s:match_words = b:match_words +endif + +" ASP: Active Server Pages (with Visual Basic Script) +" thanks to Gontran BAERTS +if exists("loaded_matchit") + let s:notend = '\%(\<end\s\+\)\@<!' + let b:match_ignorecase = 1 + let b:match_words = + \ s:notend . '\<if\>\%(.\{-}then\s\+\w\)\@!:\<elseif\>:^\s*\<else\>:\<end\s\+\<if\>,' . + \ s:notend . '\<select\s\+case\>:\<case\>:\<case\s\+else\>:\<end\s\+select\>,' . + \ '^\s*\<sub\>:\<end\s\+sub\>,' . + \ '^\s*\<function\>:\<end\s\+function\>,' . + \ '\<class\>:\<end\s\+class\>,' . + \ '^\s*\<do\>:\<loop\>,' . + \ '^\s*\<for\>:\<next\>,' . + \ '\<while\>:\<wend\>,' . + \ s:match_words +endif + +" Change the :browse e filter to primarily show ASP-related files. +if has("gui_win32") + let b:browsefilter="ASP Files (*.asp)\t*.asp\n" . s:browsefilter +endif + +let b:undo_ftplugin = "unlet! b:match_words b:match_ignorecase b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/handlebars.vim b/ftplugin/handlebars.vim new file mode 100644 index 00000000..649984aa --- /dev/null +++ b/ftplugin/handlebars.vim @@ -0,0 +1,127 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'handlebars') == -1 + +if exists('b:loaded_mustache_handlebars') + finish +endif +let b:loaded_mustache_handlebars = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" Matchit support for Mustache & Handlebars +" extending HTML matchit groups +if exists("loaded_matchit") && exists("b:match_words") + let b:match_words = b:match_words + \ . ',{:},[:],(:),' + \ . '\%({{\)\@<=#\s*\%(if\|unless\)\s*.\{-}}}' + \ . ':' + \ . '\%({{\)\@<=\s*else\s*}}' + \ . ':' + \ . '\%({{\)\@<=/\s*\%(if\|unless\)\s*}},' + \ . '\%({{\)\@<=[#^]\s*\([-0-9a-zA-Z_?!/.]\+\).\{-}}}' + \ . ':' + \ . '\%({{\)\@<=/\s*\1\s*}}' +endif + +" Set template for comment +setlocal commentstring={{!--\ %s\ --}} + +if exists("g:mustache_abbreviations") + inoremap <buffer> {{{ {{{}}}<left><left><left> + inoremap <buffer> {{ {{}}<left><left> + inoremap <buffer> {{! {{!}}<left><left> + inoremap <buffer> {{< {{<}}<left><left> + inoremap <buffer> {{> {{>}}<left><left> + inoremap <buffer> {{# {{#}}<cr>{{/}}<up><left><left> + inoremap <buffer> {{if {{#if }}<cr>{{/if}}<up><left> + inoremap <buffer> {{ife {{#if }}<cr>{{else}}<cr>{{/if}}<up><up><left> +endif + + +" Section movement +" Adapted from vim-ruby - many thanks to the maintainers of that plugin + +function! s:sectionmovement(pattern,flags,mode,count) + norm! m' + if a:mode ==# 'v' + norm! gv + endif + let i = 0 + while i < a:count + let i = i + 1 + " saving current position + let line = line('.') + let col = col('.') + let pos = search(a:pattern,'W'.a:flags) + " if there's no more matches, return to last position + if pos == 0 + call cursor(line,col) + return + endif + endwhile +endfunction + +nnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','n',v:count1)<CR> +nnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'n',v:count1)<CR> +xnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','v',v:count1)<CR> +xnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'v',v:count1)<CR> + + +" Operator pending mappings + +" Operators are available by default. Set `let g:mustache_operators = 0` in +" your .vimrc to disable them. +if ! exists("g:mustache_operators") + let g:mustache_operators = 1 +endif + +if exists("g:mustache_operators") && g:mustache_operators + onoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR> + onoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR> + xnoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR> + xnoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR> +endif + +function! s:wrap_around() + " If the cursor is at the end of the tag element, move back + " so that the end tag can be detected. + while getline('.')[col('.')-1] ==# '}' + execute 'norm h' + endwhile + + " Moves to the end of the closing tag + let pos = search('}}','We') + if pos != 0 + if getline('.')[col('.')] ==# '}' + " Ending tag contains 3 closing brackets '}}}', + " move to the last bracket. + execute 'norm l' + endif + + " select the whole tag + execute 'norm v%' + endif +endfunction + +function! s:wrap_inside() + " If the cursor is at the end of the tag element, move back + " so that the end tag can be detected. + while getline('.')[col('.')-1] ==# '}' + execute 'norm h' + endwhile + + " Moves to the end of the closing tag + let pos = search('}}','W') + if pos != 0 + " select only inside the tag + execute 'norm v%loho' + endif +endfunction + + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nofoldenable + +endif diff --git a/ftplugin/htmldjango.vim b/ftplugin/htmldjango.vim new file mode 100644 index 00000000..55489c0f --- /dev/null +++ b/ftplugin/htmldjango.vim @@ -0,0 +1,17 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'htmldjango') == -1 + +" Vim filetype plugin file +" Language: Django HTML template +" Maintainer: Dave Hodder <dmh@dmh.org.uk> +" Last Change: 2007 Jan 25 + +" Only use this filetype plugin when no other was loaded. +if exists("b:did_ftplugin") + finish +endif + +" Use HTML and Django template ftplugins. +runtime! ftplugin/html.vim +runtime! ftplugin/django.vim + +endif diff --git a/ftplugin/mustache.vim b/ftplugin/mustache.vim index 649984aa..7ca19b76 100644 --- a/ftplugin/mustache.vim +++ b/ftplugin/mustache.vim @@ -1,127 +1,5 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'handlebars') == -1 -if exists('b:loaded_mustache_handlebars') - finish -endif -let b:loaded_mustache_handlebars = 1 - -let s:cpo_save = &cpo -set cpo&vim - -" Matchit support for Mustache & Handlebars -" extending HTML matchit groups -if exists("loaded_matchit") && exists("b:match_words") - let b:match_words = b:match_words - \ . ',{:},[:],(:),' - \ . '\%({{\)\@<=#\s*\%(if\|unless\)\s*.\{-}}}' - \ . ':' - \ . '\%({{\)\@<=\s*else\s*}}' - \ . ':' - \ . '\%({{\)\@<=/\s*\%(if\|unless\)\s*}},' - \ . '\%({{\)\@<=[#^]\s*\([-0-9a-zA-Z_?!/.]\+\).\{-}}}' - \ . ':' - \ . '\%({{\)\@<=/\s*\1\s*}}' -endif - -" Set template for comment -setlocal commentstring={{!--\ %s\ --}} - -if exists("g:mustache_abbreviations") - inoremap <buffer> {{{ {{{}}}<left><left><left> - inoremap <buffer> {{ {{}}<left><left> - inoremap <buffer> {{! {{!}}<left><left> - inoremap <buffer> {{< {{<}}<left><left> - inoremap <buffer> {{> {{>}}<left><left> - inoremap <buffer> {{# {{#}}<cr>{{/}}<up><left><left> - inoremap <buffer> {{if {{#if }}<cr>{{/if}}<up><left> - inoremap <buffer> {{ife {{#if }}<cr>{{else}}<cr>{{/if}}<up><up><left> -endif - - -" Section movement -" Adapted from vim-ruby - many thanks to the maintainers of that plugin - -function! s:sectionmovement(pattern,flags,mode,count) - norm! m' - if a:mode ==# 'v' - norm! gv - endif - let i = 0 - while i < a:count - let i = i + 1 - " saving current position - let line = line('.') - let col = col('.') - let pos = search(a:pattern,'W'.a:flags) - " if there's no more matches, return to last position - if pos == 0 - call cursor(line,col) - return - endif - endwhile -endfunction - -nnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','n',v:count1)<CR> -nnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'n',v:count1)<CR> -xnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','v',v:count1)<CR> -xnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'v',v:count1)<CR> - - -" Operator pending mappings - -" Operators are available by default. Set `let g:mustache_operators = 0` in -" your .vimrc to disable them. -if ! exists("g:mustache_operators") - let g:mustache_operators = 1 -endif - -if exists("g:mustache_operators") && g:mustache_operators - onoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR> - onoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR> - xnoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR> - xnoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR> -endif - -function! s:wrap_around() - " If the cursor is at the end of the tag element, move back - " so that the end tag can be detected. - while getline('.')[col('.')-1] ==# '}' - execute 'norm h' - endwhile - - " Moves to the end of the closing tag - let pos = search('}}','We') - if pos != 0 - if getline('.')[col('.')] ==# '}' - " Ending tag contains 3 closing brackets '}}}', - " move to the last bracket. - execute 'norm l' - endif - - " select the whole tag - execute 'norm v%' - endif -endfunction - -function! s:wrap_inside() - " If the cursor is at the end of the tag element, move back - " so that the end tag can be detected. - while getline('.')[col('.')-1] ==# '}' - execute 'norm h' - endwhile - - " Moves to the end of the closing tag - let pos = search('}}','W') - if pos != 0 - " select only inside the tag - execute 'norm v%loho' - endif -endfunction - - -let &cpo = s:cpo_save -unlet s:cpo_save - -" vim: nofoldenable +runtime! ftplugin/handlebars*.vim ftplugin/handlebars/*.vim endif diff --git a/heuristics.yaml b/heuristics.yaml index 60df69b5..c53a704c 100644 --- a/heuristics.yaml +++ b/heuristics.yaml @@ -183,7 +183,7 @@ rules: - lines: 50 rules: - pattern: '{{.*}}|{%-?\s*(end.*|extends|block|macro|set|if|for|include|trans)\b|{#\s+' - filetype: jinja.html + filetype: htmldjango - pattern: '\bDTD\s+XHTML\s' filetype: xhtml - filetype: html diff --git a/indent/handlebars.vim b/indent/handlebars.vim new file mode 100644 index 00000000..fbff2fa0 --- /dev/null +++ b/indent/handlebars.vim @@ -0,0 +1,129 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'handlebars') == -1 + +" Mustache & Handlebars syntax +" Language: Mustache, Handlebars +" Maintainer: Juvenn Woo <machese@gmail.com> +" Screenshot: http://imgur.com/6F408 +" Version: 3 +" Last Change: 26 Nov 2018 +" Remarks: based on eruby indent plugin by tpope +" References: +" [Mustache](http://github.com/defunkt/mustache) +" [Handlebars](https://github.com/wycats/handlebars.js) +" [ctemplate](http://code.google.com/p/google-ctemplate/) +" [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html) +" [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html) + +if exists("b:did_indent_hbs") + finish +endif + +unlet! b:did_indent +setlocal indentexpr= + +runtime! indent/html.vim +unlet! b:did_indent + +" Force HTML indent to not keep state. +let b:html_indent_usestate = 0 + +if &l:indentexpr == '' + if &l:cindent + let &l:indentexpr = 'cindent(v:lnum)' + else + let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))' + endif +endif +let b:handlebars_subtype_indentexpr = &l:indentexpr + +let b:did_indent = 1 +let b:did_indent_hbs = 1 + +setlocal indentexpr=GetHandlebarsIndent() +setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when + +" Only define the function once. +if exists("*GetHandlebarsIndent") + finish +endif + +function! GetHandlebarsIndent(...) + " The value of a single shift-width + if exists('*shiftwidth') + let sw = shiftwidth() + else + let sw = &sw + endif + + if a:0 && a:1 == '.' + let v:lnum = line('.') + elseif a:0 && a:1 =~ '^\d' + let v:lnum = a:1 + endif + let vcol = col('.') + call cursor(v:lnum,1) + call cursor(v:lnum,vcol) + exe "let ind = ".b:handlebars_subtype_indentexpr + + " Workaround for Andy Wokula's HTML indent. This should be removed after + " some time, since the newest version is fixed in a different way. + if b:handlebars_subtype_indentexpr =~# '^HtmlIndent(' + \ && exists('b:indent') + \ && type(b:indent) == type({}) + \ && has_key(b:indent, 'lnum') + " Force HTML indent to not keep state + let b:indent.lnum = -1 + endif + let lnum = prevnonblank(v:lnum-1) + let prevLine = getline(lnum) + let currentLine = getline(v:lnum) + + " all indent rules only apply if the block opening/closing + " tag is on a separate line + + " indent after block {{#block + if prevLine =~# '\v\s*\{\{[#^].*\s*' + let ind = ind + sw + endif + " but not if the block ends on the same line + if prevLine =~# '\v\s*\{\{\#(.+)(\s+|\}\}).*\{\{\/\1' + let ind = ind - sw + endif + " unindent after block close {{/block}} + if currentLine =~# '\v^\s*\{\{\/\S*\}\}\s*' + let ind = ind - sw + endif + " indent after component block {{a-component + if prevLine =~# '\v\s*\{\{\w' + let ind = ind + sw + endif + " but not if the component block ends on the same line + if prevLine =~# '\v\s*\{\{\w(.+)\}\}' + let ind = ind - sw + endif + " unindent }} lines, and following lines if not inside a block expression + let savedPos = getpos('.') + if currentLine =~# '\v^\s*\}\}\s*$' || (currentLine !~# '\v^\s*\{\{\/' && prevLine =~# '\v^\s*[^\{\} \t]+\}\}\s*$') + let closingLnum = search('}}\s*$', 'Wbc', lnum) + let [openingLnum, col] = searchpairpos('{{', '', '}}', 'Wb') + if openingLnum > 0 && closingLnum > 0 + if strpart(getline(openingLnum), col - 1, 3) !~ '{{[#^]' + let ind = ind - sw + endif + else + call setpos('.', savedPos) + endif + endif + " unindent {{else}} + if currentLine =~# '\v^\s*\{\{else.*\}\}\s*$' + let ind = ind - sw + endif + " indent again after {{else}} + if prevLine =~# '\v^\s*\{\{else.*\}\}\s*$' + let ind = ind + sw + endif + + return ind +endfunction + +endif diff --git a/indent/htmldjango.vim b/indent/htmldjango.vim new file mode 100644 index 00000000..493ced54 --- /dev/null +++ b/indent/htmldjango.vim @@ -0,0 +1,16 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'htmldjango') == -1 + +" Vim indent file +" Language: Django HTML template +" Maintainer: Dave Hodder <dmh@dmh.org.uk> +" Last Change: 2007 Jan 25 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif + +" Use HTML formatting rules. +runtime! indent/html.vim + +endif diff --git a/indent/jinja.vim b/indent/jinja.vim deleted file mode 100644 index da7d676f..00000000 --- a/indent/jinja.vim +++ /dev/null @@ -1,84 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jinja') == -1 - -" Vim indent file -" Language: Jinja HTML template -" Maintainer: Evan Hammer <evan@evanhammer.com> -" Last Change: 2013 Jan 26 - -" Only load this indent file when no other was loaded. -if exists("b:did_indent") - finish -endif - -" Use HTML formatting rules. -setl indentkeys=o,O,<Return>,<>>,!^F -runtime! indent/html.vim +setl nosmartindent -let b:did_indent = 1 - -" Indent within the jinja tags -" Made by Steve Losh <steve@stevelosh.com> -if &l:indentexpr == '' - if &l:cindent - let &l:indentexpr = 'cindent(v:lnum)' - else - let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))' - endif -endif -let b:html_indentexpr = &l:indentexpr - -let b:did_indent = 1 - -setlocal indentexpr=GetDjangoIndent() -setlocal indentkeys=o,O,*<Return>,{,},o,O,!^F,<>> - -" Only define the function once. -if exists("*GetDjangoIndent") - finish -endif - -function! GetDjangoIndent(...) - if a:0 && a:1 == '.' - let v:lnum = line('.') - elseif a:0 && a:1 =~ '^\d' - let v:lnum = a:1 - endif - let vcol = col('.') - - call cursor(v:lnum,vcol) - - exe "let ind = ".b:html_indentexpr - - let lnum = prevnonblank(v:lnum-1) - let pnb = getline(lnum) - let cur = getline(v:lnum) - - let tagstart = '.*' . '{%\s*' - let tagend = '.*%}' . '.*' - - let blocktags = '\(block\|for\|if\|with\|autoescape\|comment\|filter\|spaceless\)' - let midtags = '\(empty\|else\|elif\)' - - let pnb_blockstart = pnb =~# tagstart . blocktags . tagend - let pnb_blockend = pnb =~# tagstart . 'end' . blocktags . tagend - let pnb_blockmid = pnb =~# tagstart . midtags . tagend - - let cur_blockstart = cur =~# tagstart . blocktags . tagend - let cur_blockend = cur =~# tagstart . 'end' . blocktags . tagend - let cur_blockmid = cur =~# tagstart . midtags . tagend - - if pnb_blockstart && !pnb_blockend - let ind = ind + &sw - elseif pnb_blockmid && !pnb_blockend - let ind = ind + &sw - endif - - if cur_blockend && !cur_blockstart - let ind = ind - &sw - elseif cur_blockmid - let ind = ind - &sw - endif - - return ind -endfunction - -endif diff --git a/indent/mustache.vim b/indent/mustache.vim index fbff2fa0..3387485e 100644 --- a/indent/mustache.vim +++ b/indent/mustache.vim @@ -1,129 +1,5 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'handlebars') == -1 -" Mustache & Handlebars syntax -" Language: Mustache, Handlebars -" Maintainer: Juvenn Woo <machese@gmail.com> -" Screenshot: http://imgur.com/6F408 -" Version: 3 -" Last Change: 26 Nov 2018 -" Remarks: based on eruby indent plugin by tpope -" References: -" [Mustache](http://github.com/defunkt/mustache) -" [Handlebars](https://github.com/wycats/handlebars.js) -" [ctemplate](http://code.google.com/p/google-ctemplate/) -" [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html) -" [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html) - -if exists("b:did_indent_hbs") - finish -endif - -unlet! b:did_indent -setlocal indentexpr= - -runtime! indent/html.vim -unlet! b:did_indent - -" Force HTML indent to not keep state. -let b:html_indent_usestate = 0 - -if &l:indentexpr == '' - if &l:cindent - let &l:indentexpr = 'cindent(v:lnum)' - else - let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))' - endif -endif -let b:handlebars_subtype_indentexpr = &l:indentexpr - -let b:did_indent = 1 -let b:did_indent_hbs = 1 - -setlocal indentexpr=GetHandlebarsIndent() -setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when - -" Only define the function once. -if exists("*GetHandlebarsIndent") - finish -endif - -function! GetHandlebarsIndent(...) - " The value of a single shift-width - if exists('*shiftwidth') - let sw = shiftwidth() - else - let sw = &sw - endif - - if a:0 && a:1 == '.' - let v:lnum = line('.') - elseif a:0 && a:1 =~ '^\d' - let v:lnum = a:1 - endif - let vcol = col('.') - call cursor(v:lnum,1) - call cursor(v:lnum,vcol) - exe "let ind = ".b:handlebars_subtype_indentexpr - - " Workaround for Andy Wokula's HTML indent. This should be removed after - " some time, since the newest version is fixed in a different way. - if b:handlebars_subtype_indentexpr =~# '^HtmlIndent(' - \ && exists('b:indent') - \ && type(b:indent) == type({}) - \ && has_key(b:indent, 'lnum') - " Force HTML indent to not keep state - let b:indent.lnum = -1 - endif - let lnum = prevnonblank(v:lnum-1) - let prevLine = getline(lnum) - let currentLine = getline(v:lnum) - - " all indent rules only apply if the block opening/closing - " tag is on a separate line - - " indent after block {{#block - if prevLine =~# '\v\s*\{\{[#^].*\s*' - let ind = ind + sw - endif - " but not if the block ends on the same line - if prevLine =~# '\v\s*\{\{\#(.+)(\s+|\}\}).*\{\{\/\1' - let ind = ind - sw - endif - " unindent after block close {{/block}} - if currentLine =~# '\v^\s*\{\{\/\S*\}\}\s*' - let ind = ind - sw - endif - " indent after component block {{a-component - if prevLine =~# '\v\s*\{\{\w' - let ind = ind + sw - endif - " but not if the component block ends on the same line - if prevLine =~# '\v\s*\{\{\w(.+)\}\}' - let ind = ind - sw - endif - " unindent }} lines, and following lines if not inside a block expression - let savedPos = getpos('.') - if currentLine =~# '\v^\s*\}\}\s*$' || (currentLine !~# '\v^\s*\{\{\/' && prevLine =~# '\v^\s*[^\{\} \t]+\}\}\s*$') - let closingLnum = search('}}\s*$', 'Wbc', lnum) - let [openingLnum, col] = searchpairpos('{{', '', '}}', 'Wb') - if openingLnum > 0 && closingLnum > 0 - if strpart(getline(openingLnum), col - 1, 3) !~ '{{[#^]' - let ind = ind - sw - endif - else - call setpos('.', savedPos) - endif - endif - " unindent {{else}} - if currentLine =~# '\v^\s*\{\{else.*\}\}\s*$' - let ind = ind - sw - endif - " indent again after {{else}} - if prevLine =~# '\v^\s*\{\{else.*\}\}\s*$' - let ind = ind + sw - endif - - return ind -endfunction +runtime! indent/handlebars.vim endif diff --git a/packages.yaml b/packages.yaml index 6cec2b08..29715093 100644 --- a/packages.yaml +++ b/packages.yaml @@ -169,7 +169,7 @@ filetypes: - '*/etc/httpd/conf.d/*.conf*' --- name: apiblueprint -remote: sheerun/apiblueprint.vim +remote: kylef/apiblueprint.vim filetypes: - name: apiblueprint linguist: API Blueprint @@ -440,9 +440,6 @@ remote: tpope/vim-cucumber filetypes: - name: cucumber linguist: Gherkin - extra_extensions: - # https://github.com/search?q=extension%3Astory+when&type=Code - - story --- name: cue remote: mgrabovsky/vim-cuesheet @@ -720,7 +717,8 @@ filetypes: - '*/etc/grub.conf' --- name: haml -remote: sheerun/vim-haml +remote: tpope/vim-haml +glob: '**/haml.vim' filetypes: - name: haml linguist: Haml @@ -729,16 +727,17 @@ filetypes: - hamlbars --- name: handlebars -remote: sheerun/vim-mustache-handlebars +remote: mustache/vim-mustache-handlebars filetypes: -- name: mustache - linguist: Handlebars +- name: html.mustache + linguist: Mustache extra_extensions: + - hogan - hulk - hjs - - mustache - - njk - - hogan +- name: html.handlebars + linguist: Handlebars + extra_extensions: - hdbs - hb --- @@ -770,8 +769,6 @@ remote: b4b4r07/vim-hcl filetypes: - name: hcl linguist: HCL - extra_extensions: - - nomad extra_filenames: - Appfile ignored_extensions: @@ -873,15 +870,14 @@ filetypes: - Jenkinsfile - Jenkinsfile* --- -name: jinja -remote: lepture/vim-jinja +name: htmldjango +remote: vim/vim:runtime +globs: +- '**/django.vim' +- '**/htmldjango.vim' filetypes: -- name: jinja.html +- name: htmldjango linguist: HTML+Django - extra_extensions: - - j2 - ignored_extensions: - - njk ignore_warnings: # handled by mustache plugin - mustache @@ -1437,7 +1433,9 @@ filetypes: - '*_spec.rb' --- name: yard -remote: sheerun/vim-yardoc +remote: noprompt/vim-yardoc +patches: +- 'https://github.com/sheerun/vim-yardoc/commit/173924ec12a66e26a886e80431b92cc9bda578d4.patch' # just adds to ruby filetypes: [] --- @@ -1727,6 +1725,9 @@ filetypes: linguist: XML extra_extensions: - cdxml + - tpm + - csproj.user + - wpl ignored_extensions: - ts - tsx @@ -1863,6 +1864,9 @@ glob: '**/bzl.vim' filetypes: - name: bzl linguist: Starlark + extra_extensions: + - bazel + - BUILD --- name: prolog remote: vim/vim:runtime diff --git a/scripts/build b/scripts/build index 47a7e51a..260beddb 100755 --- a/scripts/build +++ b/scripts/build @@ -375,13 +375,15 @@ def extract(packages) if repo == "vim/vim" && (["glob", "globs"] & package.keys).size == 0 raise "Package from vim/vim should define glob or globs: #{package["name"]}" end - glob = package.fetch("glob", package.fetch('globs', '**/*.{vim,ctags,vital,txt}')) - Dir.glob("#{subdir}/#{glob}", base: subtree).each do |p| - next unless File.file?("#{subtree}/#{p}") - if p.include?("samba") - raise package["name"] + globs = [package.fetch("glob", package.fetch('globs', '**/*.{vim,ctags,vital,txt}'))].flatten + globs.each do |glob| + Dir.glob("#{subdir}/#{glob}", base: subtree).each do |p| + next unless File.file?("#{subtree}/#{p}") + if p.include?("samba") + raise package["name"] + end + copy_file(package, "#{subtree}/#{p}", p) end - copy_file(package, "#{subtree}/#{p}", p) end elsif File.exist?(subpath) copy_file(package, subpath, subdir) diff --git a/syntax/aspperl.vim b/syntax/aspperl.vim new file mode 100644 index 00000000..18933caf --- /dev/null +++ b/syntax/aspperl.vim @@ -0,0 +1,29 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'aspperl') == -1 + +" Vim syntax file +" Language: Active State's PerlScript (ASP) +" Maintainer: Aaron Hope <edh@brioforge.com> +" URL: http://nim.dhs.org/~edh/aspperl.vim +" Last Change: 2001 May 09 + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +if !exists("main_syntax") + let main_syntax = 'perlscript' +endif + +runtime! syntax/html.vim +unlet b:current_syntax +syn include @AspPerlScript syntax/perl.vim + +syn cluster htmlPreproc add=AspPerlScriptInsideHtmlTags + +syn region AspPerlScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<%=\=+ skip=+".*%>.*"+ end=+%>+ contains=@AspPerlScript +syn region AspPerlScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<script\s\+language="\=perlscript"\=[^>]*>+ end=+</script>+ contains=@AspPerlScript + +let b:current_syntax = "aspperl" + +endif diff --git a/syntax/aspvbs.vim b/syntax/aspvbs.vim new file mode 100644 index 00000000..d9cf40c6 --- /dev/null +++ b/syntax/aspvbs.vim @@ -0,0 +1,186 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'aspvbs') == -1 + +" Vim syntax file +" Language: Microsoft VBScript Web Content (ASP) +" Maintainer: Devin Weaver <ktohg@tritarget.com> (non-functional) +" URL: http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken) +" Last Change: 2006 Jun 19 +" by Dan Casey +" Version: $Revision: 1.3 $ +" Thanks to Jay-Jay <vim@jay-jay.net> for a syntax sync hack, hungarian +" notation, and extra highlighting. +" Thanks to patrick dehne <patrick@steidle.net> for the folding code. +" Thanks to Dean Hall <hall@apt7.com> for testing the use of classes in +" VBScripts which I've been too scared to do. + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +if !exists("main_syntax") + let main_syntax = 'aspvbs' +endif + +runtime! syntax/html.vim +unlet b:current_syntax + +syn cluster htmlPreProc add=AspVBScriptInsideHtmlTags + + +" Colored variable names, if written in hungarian notation +hi def AspVBSVariableSimple term=standout ctermfg=3 guifg=#99ee99 +hi def AspVBSVariableComplex term=standout ctermfg=3 guifg=#ee9900 +syn match AspVBSVariableSimple contained "\<\(bln\|byt\|dtm\=\|dbl\|int\|str\)\u\w*" +syn match AspVBSVariableComplex contained "\<\(arr\|ary\|obj\)\u\w*" + + +" Functions and methods that are in VB but will cause errors in an ASP page +" This is helpfull if your porting VB code to ASP +" I removed (Count, Item) because these are common variable names in AspVBScript +syn keyword AspVBSError contained Val Str CVar CVDate DoEvents GoSub Return GoTo +syn keyword AspVBSError contained Stop LinkExecute Add Type LinkPoke +syn keyword AspVBSError contained LinkRequest LinkSend Declare Optional Sleep +syn keyword AspVBSError contained ParamArray Static Erl TypeOf Like LSet RSet Mid StrConv +" It may seem that most of these can fit into a keyword clause but keyword takes +" priority over all so I can't get the multi-word matches +syn match AspVBSError contained "\<Def[a-zA-Z0-9_]\+\>" +syn match AspVBSError contained "^\s*Open\s\+" +syn match AspVBSError contained "Debug\.[a-zA-Z0-9_]*" +syn match AspVBSError contained "^\s*[a-zA-Z0-9_]\+:" +syn match AspVBSError contained "[a-zA-Z0-9_]\+![a-zA-Z0-9_]\+" +syn match AspVBSError contained "^\s*#.*$" +syn match AspVBSError contained "\<As\s\+[a-zA-Z0-9_]*" +syn match AspVBSError contained "\<End\>\|\<Exit\>" +syn match AspVBSError contained "\<On\s\+Error\>\|\<On\>\|\<Error\>\|\<Resume\s\+Next\>\|\<Resume\>" +syn match AspVBSError contained "\<Option\s\+\(Base\|Compare\|Private\s\+Module\)\>" +" This one I want 'cause I always seem to mis-spell it. +syn match AspVBSError contained "Respon\?ce\.\S*" +syn match AspVBSError contained "Respose\.\S*" +" When I looked up the VBScript syntax it mentioned that Property Get/Set/Let +" statements are illegal, however, I have recived reports that they do work. +" So I commented it out for now. +" syn match AspVBSError contained "\<Property\s\+\(Get\|Let\|Set\)\>" + +" AspVBScript Reserved Words. +syn match AspVBSStatement contained "\<On\s\+Error\s\+\(Resume\s\+Next\|goto\s\+0\)\>\|\<Next\>" +syn match AspVBSStatement contained "\<End\s\+\(If\|For\|Select\|Class\|Function\|Sub\|With\|Property\)\>" +syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\)\>" +syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\|Property\)\>" +syn match AspVBSStatement contained "\<Option\s\+Explicit\>" +syn match AspVBSStatement contained "\<For\s\+Each\>\|\<For\>" +syn match AspVBSStatement contained "\<Set\>" +syn keyword AspVBSStatement contained Call Class Const Default Dim Do Loop Erase And +syn keyword AspVBSStatement contained Function If Then Else ElseIf Or +syn keyword AspVBSStatement contained Private Public Randomize ReDim +syn keyword AspVBSStatement contained Select Case Sub While With Wend Not + +" AspVBScript Functions +syn keyword AspVBSFunction contained Abs Array Asc Atn CBool CByte CCur CDate CDbl +syn keyword AspVBSFunction contained Chr CInt CLng Cos CreateObject CSng CStr Date +syn keyword AspVBSFunction contained DateAdd DateDiff DatePart DateSerial DateValue +syn keyword AspVBSFunction contained Date Day Exp Filter Fix FormatCurrency +syn keyword AspVBSFunction contained FormatDateTime FormatNumber FormatPercent +syn keyword AspVBSFunction contained GetObject Hex Hour InputBox InStr InStrRev Int +syn keyword AspVBSFunction contained IsArray IsDate IsEmpty IsNull IsNumeric +syn keyword AspVBSFunction contained IsObject Join LBound LCase Left Len LoadPicture +syn keyword AspVBSFunction contained Log LTrim Mid Minute Month MonthName MsgBox Now +syn keyword AspVBSFunction contained Oct Replace RGB Right Rnd Round RTrim +syn keyword AspVBSFunction contained ScriptEngine ScriptEngineBuildVersion +syn keyword AspVBSFunction contained ScriptEngineMajorVersion +syn keyword AspVBSFunction contained ScriptEngineMinorVersion Second Sgn Sin Space +syn keyword AspVBSFunction contained Split Sqr StrComp StrReverse String Tan Time Timer +syn keyword AspVBSFunction contained TimeSerial TimeValue Trim TypeName UBound UCase +syn keyword AspVBSFunction contained VarType Weekday WeekdayName Year + +" AspVBScript Methods +syn keyword AspVBSMethods contained Add AddFolders BuildPath Clear Close Copy +syn keyword AspVBSMethods contained CopyFile CopyFolder CreateFolder CreateTextFile +syn keyword AspVBSMethods contained Delete DeleteFile DeleteFolder DriveExists +syn keyword AspVBSMethods contained Exists FileExists FolderExists +syn keyword AspVBSMethods contained GetAbsolutePathName GetBaseName GetDrive +syn keyword AspVBSMethods contained GetDriveName GetExtensionName GetFile +syn keyword AspVBSMethods contained GetFileName GetFolder GetParentFolderName +syn keyword AspVBSMethods contained GetSpecialFolder GetTempName Items Keys Move +syn keyword AspVBSMethods contained MoveFile MoveFolder OpenAsTextStream +syn keyword AspVBSMethods contained OpenTextFile Raise Read ReadAll ReadLine Remove +syn keyword AspVBSMethods contained RemoveAll Skip SkipLine Write WriteBlankLines +syn keyword AspVBSMethods contained WriteLine +syn match AspVBSMethods contained "Response\.\w*" +" Colorize boolean constants: +syn keyword AspVBSMethods contained true false + +" AspVBScript Number Contstants +" Integer number, or floating point number without a dot. +syn match AspVBSNumber contained "\<\d\+\>" +" Floating point number, with dot +syn match AspVBSNumber contained "\<\d\+\.\d*\>" +" Floating point number, starting with a dot +syn match AspVBSNumber contained "\.\d\+\>" + +" String and Character Contstants +" removed (skip=+\\\\\|\\"+) because VB doesn't have backslash escaping in +" strings (or does it?) +syn region AspVBSString contained start=+"+ end=+"+ keepend + +" AspVBScript Comments +syn region AspVBSComment contained start="^REM\s\|\sREM\s" end="$" contains=AspVBSTodo keepend +syn region AspVBSComment contained start="^'\|\s'" end="$" contains=AspVBSTodo keepend +" misc. Commenting Stuff +syn keyword AspVBSTodo contained TODO FIXME + +" Cosmetic syntax errors commanly found in VB but not in AspVBScript +" AspVBScript doesn't use line numbers +syn region AspVBSError contained start="^\d" end="\s" keepend +" AspVBScript also doesn't have type defining variables +syn match AspVBSError contained "[a-zA-Z0-9_][\$&!#]"ms=s+1 +" Since 'a%' is a VB variable with a type and in AspVBScript you can have 'a%>' +" I have to make a special case so 'a%>' won't show as an error. +syn match AspVBSError contained "[a-zA-Z0-9_]%\($\|[^>]\)"ms=s+1 + +" Top Cluster +syn cluster AspVBScriptTop contains=AspVBSStatement,AspVBSFunction,AspVBSMethods,AspVBSNumber,AspVBSString,AspVBSComment,AspVBSError,AspVBSVariableSimple,AspVBSVariableComplex + +" Folding +syn region AspVBSFold start="^\s*\(class\)\s\+.*$" end="^\s*end\s\+\(class\)\>.*$" fold contained transparent keepend +syn region AspVBSFold start="^\s*\(private\|public\)\=\(\s\+default\)\=\s\+\(sub\|function\)\s\+.*$" end="^\s*end\s\+\(function\|sub\)\>.*$" fold contained transparent keepend + +" Define AspVBScript delimeters +" <%= func("string_with_%>_in_it") %> This is illegal in ASP syntax. +syn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<%=\=+ end=+%>+ contains=@AspVBScriptTop, AspVBSFold +syn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<script\s\+language="\=vbscript"\=[^>]*\s\+runatserver[^>]*>+ end=+</script>+ contains=@AspVBScriptTop + + +" Synchronization +" syn sync match AspVBSSyncGroup grouphere AspVBScriptInsideHtmlTags "<%" +" This is a kludge so the HTML will sync properly +syn sync match htmlHighlight grouphere htmlTag "%>" + + + +" Define the default highlighting. +" Only when an item doesn't have highlighting yet + +"hi def link AspVBScript Special +hi def link AspVBSLineNumber Comment +hi def link AspVBSNumber Number +hi def link AspVBSError Error +hi def link AspVBSStatement Statement +hi def link AspVBSString String +hi def link AspVBSComment Comment +hi def link AspVBSTodo Todo +hi def link AspVBSFunction Identifier +hi def link AspVBSMethods PreProc +hi def link AspVBSEvents Special +hi def link AspVBSTypeSpecifier Type + + +let b:current_syntax = "aspvbs" + +if main_syntax == 'aspvbs' + unlet main_syntax +endif + +" vim: ts=8:sw=2:sts=0:noet + +endif diff --git a/syntax/django.vim b/syntax/django.vim new file mode 100644 index 00000000..b11caa98 --- /dev/null +++ b/syntax/django.vim @@ -0,0 +1,87 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'htmldjango') == -1 + +" Vim syntax file +" Language: Django template +" Maintainer: Dave Hodder <dmh@dmh.org.uk> +" Last Change: 2014 Jul 13 + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +syntax case match + +" Mark illegal characters +syn match djangoError "%}\|}}\|#}" + +" Django template built-in tags and parameters +" 'comment' doesn't appear here because it gets special treatment +syn keyword djangoStatement contained autoescape csrf_token empty +" FIXME ==, !=, <, >, <=, and >= should be djangoStatements: +" syn keyword djangoStatement contained == != < > <= >= +syn keyword djangoStatement contained and as block endblock by cycle debug else elif +syn keyword djangoStatement contained extends filter endfilter firstof for +syn keyword djangoStatement contained endfor if endif ifchanged endifchanged +syn keyword djangoStatement contained ifequal endifequal ifnotequal +syn keyword djangoStatement contained endifnotequal in include load not now or +syn keyword djangoStatement contained parsed regroup reversed spaceless +syn keyword djangoStatement contained endspaceless ssi templatetag openblock +syn keyword djangoStatement contained closeblock openvariable closevariable +syn keyword djangoStatement contained openbrace closebrace opencomment +syn keyword djangoStatement contained closecomment widthratio url with endwith +syn keyword djangoStatement contained get_current_language trans noop blocktrans +syn keyword djangoStatement contained endblocktrans get_available_languages +syn keyword djangoStatement contained get_current_language_bidi plural + +" Django templete built-in filters +syn keyword djangoFilter contained add addslashes capfirst center cut date +syn keyword djangoFilter contained default default_if_none dictsort +syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs +syn keyword djangoFilter contained filesizeformat first fix_ampersands +syn keyword djangoFilter contained floatformat get_digit join last length length_is +syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust +syn keyword djangoFilter contained lower make_list phone2numeric pluralize +syn keyword djangoFilter contained pprint random removetags rjust slice slugify +syn keyword djangoFilter contained safe safeseq stringformat striptags +syn keyword djangoFilter contained time timesince timeuntil title truncatechars +syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode +syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno + +" Keywords to highlight within comments +syn keyword djangoTodo contained TODO FIXME XXX + +" Django template constants (always surrounded by double quotes) +syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/ + +" Mark illegal characters within tag and variables blocks +syn match djangoTagError contained "#}\|{{\|[^%]}}\|[&#]" +syn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]" + +" Django template tag and variable blocks +syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display +syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display + +" Django template 'comment' tag and comment block +syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo +syn region djangoComBlock start="{#" end="#}" contains=djangoTodo + +" Define the default highlighting. +" Only when an item doesn't have highlighting yet + +hi def link djangoTagBlock PreProc +hi def link djangoVarBlock PreProc +hi def link djangoStatement Statement +hi def link djangoFilter Identifier +hi def link djangoArgument Constant +hi def link djangoTagError Error +hi def link djangoVarError Error +hi def link djangoError Error +hi def link djangoComment Comment +hi def link djangoComBlock Comment +hi def link djangoTodo Todo + + +let b:current_syntax = "django" + +endif diff --git a/syntax/handlebars.vim b/syntax/handlebars.vim new file mode 100644 index 00000000..52c2913a --- /dev/null +++ b/syntax/handlebars.vim @@ -0,0 +1,110 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'handlebars') == -1 + +" Mustache & Handlebars syntax +" Language: Mustache, Handlebars +" Maintainer: Juvenn Woo <machese@gmail.com> +" Screenshot: http://imgur.com/6F408 +" Version: 6 +" Last Change: Jul 16 2019 +" Remark: +" It lexically hilights embedded mustaches (exclusively) in html file. +" While it was written for Ruby-based Mustache template system, it should +" work for Google's C-based *ctemplate* as well as Erlang-based *et*. All +" of them are, AFAIK, based on the idea of ctemplate. +" References: +" [Mustache](http://github.com/defunkt/mustache) +" [Handlebars](https://github.com/wycats/handlebars.js) +" [ctemplate](http://code.google.com/p/google-ctemplate/) +" [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html) +" [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html) +" TODO: Feedback is welcomed. + + +" Read the HTML syntax to start with +if version < 600 + so <sfile>:p:h/html.vim +else + runtime! syntax/html.vim + unlet b:current_syntax +endif + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Standard HiLink will not work with included syntax files +if version < 508 + command! -nargs=+ HtmlHiLink hi link <args> +else + command! -nargs=+ HtmlHiLink hi def link <args> +endif + +syntax match mustacheError '}}}\?' +syntax match mustacheInsideError '{{[{$#<>=!\/]\?' + +" Ember angle bracket syntax syntax starts with a capital letter: +" https://github.com/emberjs/rfcs/blob/master/text/0311-angle-bracket-invocation.md +syntax case match +syntax region mustacheAngleComponent start=/<\/\?[[:upper:]]/ end=/>/ keepend containedin=TOP,@htmlMustacheContainer +syntax case ignore +syntax match mustacheAngleBrackets '</\?\|/\?>' contained containedin=mustacheAngleComponent +syntax match mustacheAngleComponentName '</[[:alnum:]]\+'hs=s+2 contained containedin=mustacheAngleBrackets +syntax match mustacheAngleComponentName '<[[:alnum:]]\+'hs=s+1 contained containedin=mustacheAngleBrackets + +syntax region mustacheHbsComponent start=/{{[^!][$#^/]\?/ end=/}}}\?/ keepend containedin=TOP,@htmlMustacheContainer + +syntax cluster mustacheInside add=mustacheHbsComponent,mustacheAngleComponent + +syntax match mustacheOperators '=\|\.\|/^>' contained containedin=@mustacheInside,mustacheParam +syntax region mustacheHtmlValue start=/={{[^!][$#^/]\?/rs=s+1,hs=s+1 end=/}}/ oneline keepend contained containedin=htmlTag contains=@mustacheInside +syntax region mustachePartial start=/{{[<>]/lc=2 end=/}}/me=e-2 contained containedin=@mustacheInside,@htmlMustacheContainer +syntax region mustacheMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 contained containedin=@mustacheInside,@htmlMustacheContainer +syntax match mustacheHandlebars '{{\|}}' contained containedin=@mustacheInside +syntax match mustacheUnescape '{{{\|}}}' contained containedin=@mustacheInside +syntax match mustacheConditionals '\([/#]\?\<\(if\|unless\)\|\<else\)\>' contained containedin=@mustacheInside +syntax match mustacheHelpers '[/#]\?\<\(with\|link\-to\|each\(\-in\)\?\|let\)\>' contained containedin=@mustacheInside +syntax match mustacheHelpers 'else \(if\|unless\|with\|link\-to\|each\(\-in\)\?\)' contained containedin=@mustacheInside +syntax match mustacheParam /[a-z@_-]\+=/he=e-1 contained containedin=@mustacheInside +syntax region mustacheComment start=/{{!/rs=s+2 skip=/{{.\{-}}}/ end=/}}/re=e-2 contains=Todo contained containedin=TOP,@mustacheInside,@htmlMustacheContainer +syntax region mustacheBlockComment start=/{{!--/rs=s+2 skip=/{{.\{-}}}/ end=/--}}/re=e-2 contains=Todo contained extend containedin=TOP,@mustacheInside,@htmlMustacheContainer +syntax region mustacheQString start=/'/ skip=/\\'/ end=/'/ contained containedin=@mustacheInside +syntax region mustacheDQString start=/"/ skip=/\\"/ end=/"/ contained containedin=@mustacheInside + +" Clustering +syntax cluster htmlMustacheContainer add=htmlHead,htmlTitle,htmlString,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,htmlLink,htmlBold,htmlUnderline,htmlItalic,htmlValue + + +" Hilighting +" mustacheInside hilighted as Number, which is rarely used in html +" you might like change it to Function or Identifier +HtmlHiLink mustacheVariable Number +HtmlHiLink mustacheVariableUnescape Number +HtmlHiLink mustachePartial Number +HtmlHiLink mustacheMarkerSet Number +HtmlHiLink mustacheParam htmlArg +HtmlHiLink mustacheAngleComponentName htmlTag + +HtmlHiLink mustacheComment Comment +HtmlHiLink mustacheBlockComment Comment +HtmlHiLink mustacheError Error +HtmlHiLink mustacheInsideError Error + +HtmlHiLink mustacheHandlebars Special +HtmlHiLink mustacheAngleBrackets htmlTagName +HtmlHiLink mustacheUnescape Identifier +HtmlHiLink mustacheOperators Operator +HtmlHiLink mustacheConditionals Conditional +HtmlHiLink mustacheHelpers Repeat +HtmlHiLink mustacheQString String +HtmlHiLink mustacheDQString String + +syn region mustacheScriptTemplate start=+<script [^>]*type *=[^>]*text/\(mustache\|x-handlebars-template\)[^>]*>+ +\ end=+</script>+me=s-1 keepend +\ contains=mustacheInside,@htmlMustacheContainer,htmlTag,htmlEndTag,htmlTagName,htmlSpecialChar + +let b:current_syntax = "handlebars" +delcommand HtmlHiLink + +endif diff --git a/syntax/html-1.vim b/syntax/html-1.vim deleted file mode 100644 index 633a157e..00000000 --- a/syntax/html-1.vim +++ /dev/null @@ -1,196 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1 - -" Vim syntax file -" Language: HTML (version 5.1) -" SVG (SVG 1.1 Second Edition) -" MathML (MathML 3.0 Second Edition) -" Last Change: 2017 Mar 07 -" License: Public domain -" (but let me know if you like :) ) -" -" Note: This file just add new tags from HTML 5 -" and don't replace default html.vim syntax file -" -" Maintainer: Kao, Wei-Ko(othree) ( othree AT gmail DOT com ) -" Changes: update to Draft 2016 Jan 13 -" add microdata Attributes -" Maintainer: Rodrigo Machado <rcmachado@gmail.com> -" URL: http://rm.blog.br/vim/syntax/html.vim -" Modified: htdebeer <H.T.de.Beer@gmail.com> -" Changes: add common SVG elements and attributes for inline SVG - -" Patch 7.4.1142 -if has("patch-7.4-1142") - if has("win32") - syn iskeyword @,48-57,_,128-167,224-235,- - else - syn iskeyword @,48-57,_,192-255,- - endif -endif - -" HTML 5 tags -syn keyword htmlTagName contained article aside audio canvas command -syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer -syn keyword htmlTagName contained header hgroup keygen main mark meter menu menuitem nav output -syn keyword htmlTagName contained progress ruby rt rp rb rtc section source summary time track video data -syn keyword htmlTagName contained template content shadow slot -syn keyword htmlTagName contained wbr bdi -syn keyword htmlTagName contained picture - -" SVG tags -" http://www.w3.org/TR/SVG/ -" as found in http://www.w3.org/TR/SVG/eltindex.html -syn keyword htmlTagName contained svg -syn keyword htmlTagName contained altGlyph altGlyphDef altGlyphItem -syn keyword htmlTagName contained animate animateColor animateMotion animateTransform -syn keyword htmlTagName contained circle ellipse rect line polyline polygon image path -syn keyword htmlTagName contained clipPath color-profile cursor -syn keyword htmlTagName contained defs desc g symbol view use switch foreignObject -syn keyword htmlTagName contained filter feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence -syn keyword htmlTagName contained font font-face font-face-format font-face-name font-face-src font-face-uri -syn keyword htmlTagName contained glyph glyphRef hkern -syn keyword htmlTagName contained linearGradient marker mask pattern radialGradient set stop -syn keyword htmlTagName contained missing-glyph mpath -syn keyword htmlTagName contained text textPath tref tspan vkern -syn keyword htmlTagName contained metadata title - -" MathML tags -" https://www.w3.org/TR/MathML3/appendixi.html#index.elem -syn keyword htmlTagName contained abs and annotation annotation-xml apply approx arccos arccosh arccot arccoth -syn keyword htmlTagName contained arccsc arccsch arcsec arcsech arcsin arcsinh arctan arctanh arg bind -syn keyword htmlTagName contained bvar card cartesianproduct cbytes ceiling cerror ci cn codomain complexes -syn keyword htmlTagName contained compose condition conjugate cos cosh cot coth cs csc csch -syn keyword htmlTagName contained csymbol curl declare degree determinant diff divergence divide domain domainofapplication -syn keyword htmlTagName contained emptyset eq equivalent eulergamma exists exp exponentiale factorial factorof false -syn keyword htmlTagName contained floor fn forall gcd geq grad gt ident image imaginary -syn keyword htmlTagName contained imaginaryi implies in infinity int integers intersect interval inverse lambda -syn keyword htmlTagName contained laplacian lcm leq limit list ln log logbase lowlimit lt -syn keyword htmlTagName contained maction maligngroup malignmark math matrix matrixrow max mean median menclose -syn keyword htmlTagName contained merror mfenced mfrac mglyph mi mi" min minus mlabeledtr mlongdiv -syn keyword htmlTagName contained mmultiscripts mn mo mode moment momentabout mover mpadded mphantom mprescripts -syn keyword htmlTagName contained mroot mrow ms mscarries mscarry msgroup msline mspace msqrt msrow -syn keyword htmlTagName contained mstack mstyle msub msubsup msup mtable mtd mtext mtr munder -syn keyword htmlTagName contained munderover naturalnumbers neq none not notanumber notin notprsubset notsubset or -syn keyword htmlTagName contained otherwise outerproduct partialdiff pi piece piecewise plus power primes product -syn keyword htmlTagName contained prsubset quotient rationals real reals reln rem root scalarproduct sdev -syn keyword htmlTagName contained sec sech selector semantics sep set setdiff share sin sinh -syn keyword htmlTagName contained span subset sum tan tanh tendsto times transpose true union -syn keyword htmlTagName contained uplimit variance vector vectorproduct xor - -" Custom Element -syn match htmlTagName contained "\<[a-z][-.0-9_a-z]*-[-.0-9_a-z]*\>" -syn match htmlTagName contained "[.0-9_a-z]\@<=-[-.0-9_a-z]*\>" - -" HTML 5 arguments -" Core Attributes -syn keyword htmlArg contained accesskey class contenteditable contextmenu dir -syn keyword htmlArg contained draggable hidden id is lang spellcheck style tabindex title translate -" Event-handler Attributes -syn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange -syn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover -syn keyword htmlArg contained ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange -syn keyword htmlArg contained onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata -syn keyword htmlArg contained onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup -syn keyword htmlArg contained onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange -syn keyword htmlArg contained onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate -syn keyword htmlArg contained onvolumechange onwaiting -" XML Attributes -syn keyword htmlArg contained xml:lang xml:space xml:base xmlns -" new features -" <body> -syn keyword htmlArg contained onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload -syn keyword htmlArg contained onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload -" <video>, <audio>, <source>, <track> -syn keyword htmlArg contained autoplay preload controls loop poster media kind charset srclang track playsinline -" <form>, <input>, <button> -syn keyword htmlArg contained form autocomplete autofocus list min max step -syn keyword htmlArg contained formaction autofocus formenctype formmethod formtarget formnovalidate -syn keyword htmlArg contained required placeholder pattern -" <command>, <details>, <time> -syn keyword htmlArg contained label icon open datetime-local pubdate -" <script> -syn keyword htmlArg contained async -" <content> -syn keyword htmlArg contained select -" <iframe> -syn keyword htmlArg contained seamless srcdoc sandbox allowfullscreen allowusermedia allowpaymentrequest allowpresentation -" <picture> -syn keyword htmlArg contained srcset sizes -" <a> -syn keyword htmlArg contained download media -" <script>, <style> -syn keyword htmlArg contained nonce -" <area>, <a>, <img>, <iframe>, <link> -syn keyword htmlArg contained referrerpolicy -" https://w3c.github.io/webappsec-subresource-integrity/#the-integrity-attribute -syn keyword htmlArg contained integrity crossorigin -" <link> -syn keyword htmlArg contained prefetch -" syn keyword htmlArg contained preload -" <img> -syn keyword htmlArg contained decoding -" https://w3c.github.io/selection-api/#extensions-to-globaleventhandlers -syn keyword htmlArg contained onselectstart onselectionchange -" https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/loading -syn keyword htmlArg contained loading - -" Custom Data Attributes -" http://w3c.github.io/html/single-page.html#embedding-custom-non-visible-data-with-the-data-attributes -syn match htmlArg "\<data[-.0-9_a-z]*-[-.0-9_a-z]*\>" contained - -" Vendor Extension Attributes -" http://w3c.github.io/html/single-page.html#conformance-requirements-extensibility -syn match htmlArg "\<x[-.0-9_a-z]*-[-.0-9_a-z]*\>" contained - -" Microdata -" http://dev.w3.org/html5/md/ -syn keyword htmlArg contained itemid itemscope itemtype itemprop itemref - -" SVG -" http://www.w3.org/TR/SVG/ -" Some common attributes from http://www.w3.org/TR/SVG/attindex.html -syn keyword htmlArg contained accent-height accumulate additive alphabetic amplitude arabic-form ascent attributeName attributeType azimuth -syn keyword htmlArg contained baseFrequency baseProfile bbox begin bias by -syn keyword htmlArg contained calcMode cap-height class clipPathUnits contentScriptType contentStyleType cx cy -syn keyword htmlArg contained d descent diffuseConstant divisor dur dx dy -syn keyword htmlArg contained edgeMode elevation end exponent externalResourcesRequired -syn keyword htmlArg contained fill filterRes filterUnits font-family font-size font-stretch font-style font-variant font-weight format format from fx fy -syn keyword htmlArg contained g1 g2 glyph-name glyphRef gradientTransform gradientUnits -syn keyword htmlArg contained hanging height horiz-adv-x horiz-origin-x horiz-origin-y -syn keyword htmlArg contained id ideographic in in2 intercept -syn keyword htmlArg contained k k1 k2 k3 k4 kernelMatrix kernelUnitLength keyPoints keySplines keyTimes -syn keyword htmlArg contained lang lengthAdjust limitingConeAngle local -syn keyword htmlArg contained markerHeight markerUnits markerWidth maskContentUnits maskUnits mathematical max media method min mode name -syn keyword htmlArg contained numOctaves -syn keyword htmlArg contained offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload onzoom operator order orient orientation origin overline-position overline-thickness -syn keyword htmlArg contained panose-1 path pathLength patternContentUnits patternTransform patternUnits points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits -syn keyword htmlArg contained r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry -syn keyword htmlArg contained scale seed slope spacing specularConstant specularExponent spreadMethod startOffset stdDeviation stemh stemv stitchTiles strikethrough-position strikethrough-thickness string surfaceScale systemLanguage -syn keyword htmlArg contained tableValues target targetX targetY textLength title to transform type -syn keyword htmlArg contained u1 u2 underline-position underline-thickness unicode unicode-range units-per-em -syn keyword htmlArg contained v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget -syn keyword htmlArg contained width widths -syn keyword htmlArg contained x x-height x1 x2 xChannelSelector xlink:actuate xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xml:lang xml:space -syn keyword htmlArg contained y y1 y2 yChannelSelector -syn keyword htmlArg contained z zoomAndPan -syn keyword htmlArg contained alignment-baseline baseline-shift clip-path clip-rule clip color-interpolation-filters color-interpolation color-profile color-rendering color cursor direction display dominant-baseline enable-background fill-opacity fill-rule fill filter flood-color flood-opacity font-family font-size-adjust font-size font-stretch font-style font-variant font-weight glyph-orientation-horizontal glyph-orientation-vertical image-rendering kerning letter-spacing lighting-color marker-end marker-mid marker-start mask opacity overflow pointer-events shape-rendering stop-color stop-opacity stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width stroke text-anchor text-decoration text-rendering unicode-bidi visibility word-spacing writing-mode - -" MathML attributes -" https://www.w3.org/TR/MathML3/chapter2.html#interf.toplevel.atts -syn keyword htmlArg contained accent accentunder actiontype align alignmentscope altimg altimg-height altimg-valign altimg-width alttext -syn keyword htmlArg contained annotation-xml background base baseline bevelled cd cdgroup charalign charspacing close -syn keyword htmlArg contained closure color columnalign columnalignment columnlines columnspacing columnspan columnwidth crossout decimalpoint -syn keyword htmlArg contained definitionURL denomalign depth display displaystyle edge encoding equalcolumns equalrows fence -syn keyword htmlArg contained fontfamily fontsize fontstyle fontweight form frame framespacing groupalign height indentalign -syn keyword htmlArg contained indentalignfirst indentalignlast indentshift indentshiftfirst indentshiftlast indenttarget index infixlinebreakstyle integer largeop -syn keyword htmlArg contained leftoverhang length linebreak linebreakmultchar linebreakstyle lineleading linethickness location longdivstyle lquote -syn keyword htmlArg contained lspace ltr macros math mathbackground mathcolor mathsize mathvariant maxsize maxwidth -syn keyword htmlArg contained mediummathspace menclose minlabelspacing minsize mode movablelimits msgroup mslinethickness name nargs -syn keyword htmlArg contained newline notation numalign number occurrence open order other overflow position -syn keyword htmlArg contained rightoverhang role rowalign rowlines rowspacing rowspan rquote rspace schemaLocation scope -syn keyword htmlArg contained scriptlevel scriptminsize scriptsize scriptsizemultiplier selection separator separators shift side stackalign -syn keyword htmlArg contained stretchy subscriptshift superscriptshift symmetric thickmathspace thinmathspace type valign verythickmathspace verythinmathspace -syn keyword htmlArg contained veryverythickmathspace veryverythinmathspace voffset width xref - - -endif diff --git a/syntax/html-2.vim b/syntax/html-2.vim deleted file mode 100644 index ddca92d4..00000000 --- a/syntax/html-2.vim +++ /dev/null @@ -1,94 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jinja') == -1 - -" Vim syntax file -" Language: HTML (version 5) -" Maintainer: Rodrigo Machado <rcmachado@gmail.com> -" URL: http://rm.blog.br/vim/syntax/html.vim -" Last Change: 2009 Aug 19 -" License: Public domain -" (but let me know if you like :) ) -" -" Note: This file just adds the new tags from HTML 5 -" and don't replace default html.vim syntax file -" -" Modified: othree <othree@gmail.com> -" Changes: update to Draft 28 August 2010 -" add complete new attributes -" add wai-aria attributes -" add microdata attributes -" add rdfa attributes - - -syn keyword htmlTagName contained script -" HTML 5 tags -syn keyword htmlTagName contained article aside audio canvas command -syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer -syn keyword htmlTagName contained header hgroup keygen mark meter menu nav output -syn keyword htmlTagName contained progress time ruby rt rp section source summary time track video wbr - -" HTML 5 arguments -" Core Attributes -syn keyword htmlArg contained accesskey class contenteditable contextmenu dir -syn keyword htmlArg contained draggable hidden id lang spellcheck style tabindex title -" Event-handler Attributes -syn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange -syn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover -syn keyword htmlArg contained ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange -syn keyword htmlArg contained onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata -syn keyword htmlArg contained onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup -syn keyword htmlArg contained onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange -syn keyword htmlArg contained onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate -syn keyword htmlArg contained onvolumechange onwaiting -" XML Attributes -syn keyword htmlArg contained xml:lang xml:space xml:base -" new features -" <body> -syn keyword htmlArg contained onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload -syn keyword htmlArg contained onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload -" <video>, <audio>, <source>, <track> -syn keyword htmlArg contained autoplay preload controls loop poster media kind charset srclang track -" <form>, <input>, <button> -syn keyword htmlArg contained form autocomplete autofocus list min max step -syn keyword htmlArg contained formaction autofocus formenctype formmethod formtarget formnovalidate -" <command>, <details>, <time> -syn keyword htmlArg contained label icon open datetime pubdate - -" Custom Data Attributes -" http://dev.w3.org/html5/spec/Overview.html#custom-data-attribute -syn match htmlArg "\<\(data(\-[a-z]\+)\+\)=" contained - -" Microdata -" http://dev.w3.org/html5/md/ -syn keyword htmlArg contained item itemid itemscope itemtype itemprop - -" RDFa -" http://www.w3.org/TR/rdfa-syntax/#a_xhtmlrdfa_dtd -syn keyword htmlArg contained about typeof property resource content datatype rel rev - -" WAI-ARIA States and Properties -" http://www.w3.org/TR/wai-aria/states_and_properties -syn keyword htmlArg contained role -" Global States and Properties -syn match htmlArg contained "\<aria-\(atomic\|busy\|controls\|describedby\)\>" -syn match htmlArg contained "\<aria-\(disabled\|dropeffect\|flowto\|grabbed\)\>" -syn match htmlArg contained "\<aria-\(haspopup\|hidden\|invalid\|label\)\>" -syn match htmlArg contained "\<aria-\(labelledby\|live\|owns\|relevant\)\>" - -" Widget Attributes -syn match htmlArg contained "\<aria-\(autocomplete\|checked\|disabled\|expanded\)\>" -syn match htmlArg contained "\<aria-\(haspopup\|hidden\|invalid\|label\)\>" -syn match htmlArg contained "\<aria-\(level\|multiline\|multiselectable\|orientation\)\>" -syn match htmlArg contained "\<aria-\(pressed\|readonly\|required\|selected\)\>" -syn match htmlArg contained "\<aria-\(sort\|valuemax\|valuemin\|valuenow\|valuetext\|\)\>" - -" Live Region Attributes -syn match htmlArg contained "\<aria-\(atomic\|busy\|live\|relevant\|\)\>" - -" Drag-and-Drop attributes -syn match htmlArg contained "\<aria-\(dropeffect\|grabbed\)\>" - -" Relationship Attributes -syn match htmlArg contained "\<aria-\(activedescendant\|controls\|describedby\|flowto\|\)\>" -syn match htmlArg contained "\<aria-\(labelledby\|owns\|posinset\|setsize\|\)\>" - -endif diff --git a/syntax/html.vim b/syntax/html.vim index a21ec074..633a157e 100644 --- a/syntax/html.vim +++ b/syntax/html.vim @@ -1,3 +1,196 @@ -" Polyglot metafile -source <sfile>:h/html-1.vim -source <sfile>:h/html-2.vim +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1 + +" Vim syntax file +" Language: HTML (version 5.1) +" SVG (SVG 1.1 Second Edition) +" MathML (MathML 3.0 Second Edition) +" Last Change: 2017 Mar 07 +" License: Public domain +" (but let me know if you like :) ) +" +" Note: This file just add new tags from HTML 5 +" and don't replace default html.vim syntax file +" +" Maintainer: Kao, Wei-Ko(othree) ( othree AT gmail DOT com ) +" Changes: update to Draft 2016 Jan 13 +" add microdata Attributes +" Maintainer: Rodrigo Machado <rcmachado@gmail.com> +" URL: http://rm.blog.br/vim/syntax/html.vim +" Modified: htdebeer <H.T.de.Beer@gmail.com> +" Changes: add common SVG elements and attributes for inline SVG + +" Patch 7.4.1142 +if has("patch-7.4-1142") + if has("win32") + syn iskeyword @,48-57,_,128-167,224-235,- + else + syn iskeyword @,48-57,_,192-255,- + endif +endif + +" HTML 5 tags +syn keyword htmlTagName contained article aside audio canvas command +syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer +syn keyword htmlTagName contained header hgroup keygen main mark meter menu menuitem nav output +syn keyword htmlTagName contained progress ruby rt rp rb rtc section source summary time track video data +syn keyword htmlTagName contained template content shadow slot +syn keyword htmlTagName contained wbr bdi +syn keyword htmlTagName contained picture + +" SVG tags +" http://www.w3.org/TR/SVG/ +" as found in http://www.w3.org/TR/SVG/eltindex.html +syn keyword htmlTagName contained svg +syn keyword htmlTagName contained altGlyph altGlyphDef altGlyphItem +syn keyword htmlTagName contained animate animateColor animateMotion animateTransform +syn keyword htmlTagName contained circle ellipse rect line polyline polygon image path +syn keyword htmlTagName contained clipPath color-profile cursor +syn keyword htmlTagName contained defs desc g symbol view use switch foreignObject +syn keyword htmlTagName contained filter feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence +syn keyword htmlTagName contained font font-face font-face-format font-face-name font-face-src font-face-uri +syn keyword htmlTagName contained glyph glyphRef hkern +syn keyword htmlTagName contained linearGradient marker mask pattern radialGradient set stop +syn keyword htmlTagName contained missing-glyph mpath +syn keyword htmlTagName contained text textPath tref tspan vkern +syn keyword htmlTagName contained metadata title + +" MathML tags +" https://www.w3.org/TR/MathML3/appendixi.html#index.elem +syn keyword htmlTagName contained abs and annotation annotation-xml apply approx arccos arccosh arccot arccoth +syn keyword htmlTagName contained arccsc arccsch arcsec arcsech arcsin arcsinh arctan arctanh arg bind +syn keyword htmlTagName contained bvar card cartesianproduct cbytes ceiling cerror ci cn codomain complexes +syn keyword htmlTagName contained compose condition conjugate cos cosh cot coth cs csc csch +syn keyword htmlTagName contained csymbol curl declare degree determinant diff divergence divide domain domainofapplication +syn keyword htmlTagName contained emptyset eq equivalent eulergamma exists exp exponentiale factorial factorof false +syn keyword htmlTagName contained floor fn forall gcd geq grad gt ident image imaginary +syn keyword htmlTagName contained imaginaryi implies in infinity int integers intersect interval inverse lambda +syn keyword htmlTagName contained laplacian lcm leq limit list ln log logbase lowlimit lt +syn keyword htmlTagName contained maction maligngroup malignmark math matrix matrixrow max mean median menclose +syn keyword htmlTagName contained merror mfenced mfrac mglyph mi mi" min minus mlabeledtr mlongdiv +syn keyword htmlTagName contained mmultiscripts mn mo mode moment momentabout mover mpadded mphantom mprescripts +syn keyword htmlTagName contained mroot mrow ms mscarries mscarry msgroup msline mspace msqrt msrow +syn keyword htmlTagName contained mstack mstyle msub msubsup msup mtable mtd mtext mtr munder +syn keyword htmlTagName contained munderover naturalnumbers neq none not notanumber notin notprsubset notsubset or +syn keyword htmlTagName contained otherwise outerproduct partialdiff pi piece piecewise plus power primes product +syn keyword htmlTagName contained prsubset quotient rationals real reals reln rem root scalarproduct sdev +syn keyword htmlTagName contained sec sech selector semantics sep set setdiff share sin sinh +syn keyword htmlTagName contained span subset sum tan tanh tendsto times transpose true union +syn keyword htmlTagName contained uplimit variance vector vectorproduct xor + +" Custom Element +syn match htmlTagName contained "\<[a-z][-.0-9_a-z]*-[-.0-9_a-z]*\>" +syn match htmlTagName contained "[.0-9_a-z]\@<=-[-.0-9_a-z]*\>" + +" HTML 5 arguments +" Core Attributes +syn keyword htmlArg contained accesskey class contenteditable contextmenu dir +syn keyword htmlArg contained draggable hidden id is lang spellcheck style tabindex title translate +" Event-handler Attributes +syn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange +syn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover +syn keyword htmlArg contained ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange +syn keyword htmlArg contained onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata +syn keyword htmlArg contained onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup +syn keyword htmlArg contained onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange +syn keyword htmlArg contained onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate +syn keyword htmlArg contained onvolumechange onwaiting +" XML Attributes +syn keyword htmlArg contained xml:lang xml:space xml:base xmlns +" new features +" <body> +syn keyword htmlArg contained onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload +syn keyword htmlArg contained onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload +" <video>, <audio>, <source>, <track> +syn keyword htmlArg contained autoplay preload controls loop poster media kind charset srclang track playsinline +" <form>, <input>, <button> +syn keyword htmlArg contained form autocomplete autofocus list min max step +syn keyword htmlArg contained formaction autofocus formenctype formmethod formtarget formnovalidate +syn keyword htmlArg contained required placeholder pattern +" <command>, <details>, <time> +syn keyword htmlArg contained label icon open datetime-local pubdate +" <script> +syn keyword htmlArg contained async +" <content> +syn keyword htmlArg contained select +" <iframe> +syn keyword htmlArg contained seamless srcdoc sandbox allowfullscreen allowusermedia allowpaymentrequest allowpresentation +" <picture> +syn keyword htmlArg contained srcset sizes +" <a> +syn keyword htmlArg contained download media +" <script>, <style> +syn keyword htmlArg contained nonce +" <area>, <a>, <img>, <iframe>, <link> +syn keyword htmlArg contained referrerpolicy +" https://w3c.github.io/webappsec-subresource-integrity/#the-integrity-attribute +syn keyword htmlArg contained integrity crossorigin +" <link> +syn keyword htmlArg contained prefetch +" syn keyword htmlArg contained preload +" <img> +syn keyword htmlArg contained decoding +" https://w3c.github.io/selection-api/#extensions-to-globaleventhandlers +syn keyword htmlArg contained onselectstart onselectionchange +" https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/loading +syn keyword htmlArg contained loading + +" Custom Data Attributes +" http://w3c.github.io/html/single-page.html#embedding-custom-non-visible-data-with-the-data-attributes +syn match htmlArg "\<data[-.0-9_a-z]*-[-.0-9_a-z]*\>" contained + +" Vendor Extension Attributes +" http://w3c.github.io/html/single-page.html#conformance-requirements-extensibility +syn match htmlArg "\<x[-.0-9_a-z]*-[-.0-9_a-z]*\>" contained + +" Microdata +" http://dev.w3.org/html5/md/ +syn keyword htmlArg contained itemid itemscope itemtype itemprop itemref + +" SVG +" http://www.w3.org/TR/SVG/ +" Some common attributes from http://www.w3.org/TR/SVG/attindex.html +syn keyword htmlArg contained accent-height accumulate additive alphabetic amplitude arabic-form ascent attributeName attributeType azimuth +syn keyword htmlArg contained baseFrequency baseProfile bbox begin bias by +syn keyword htmlArg contained calcMode cap-height class clipPathUnits contentScriptType contentStyleType cx cy +syn keyword htmlArg contained d descent diffuseConstant divisor dur dx dy +syn keyword htmlArg contained edgeMode elevation end exponent externalResourcesRequired +syn keyword htmlArg contained fill filterRes filterUnits font-family font-size font-stretch font-style font-variant font-weight format format from fx fy +syn keyword htmlArg contained g1 g2 glyph-name glyphRef gradientTransform gradientUnits +syn keyword htmlArg contained hanging height horiz-adv-x horiz-origin-x horiz-origin-y +syn keyword htmlArg contained id ideographic in in2 intercept +syn keyword htmlArg contained k k1 k2 k3 k4 kernelMatrix kernelUnitLength keyPoints keySplines keyTimes +syn keyword htmlArg contained lang lengthAdjust limitingConeAngle local +syn keyword htmlArg contained markerHeight markerUnits markerWidth maskContentUnits maskUnits mathematical max media method min mode name +syn keyword htmlArg contained numOctaves +syn keyword htmlArg contained offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload onzoom operator order orient orientation origin overline-position overline-thickness +syn keyword htmlArg contained panose-1 path pathLength patternContentUnits patternTransform patternUnits points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits +syn keyword htmlArg contained r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry +syn keyword htmlArg contained scale seed slope spacing specularConstant specularExponent spreadMethod startOffset stdDeviation stemh stemv stitchTiles strikethrough-position strikethrough-thickness string surfaceScale systemLanguage +syn keyword htmlArg contained tableValues target targetX targetY textLength title to transform type +syn keyword htmlArg contained u1 u2 underline-position underline-thickness unicode unicode-range units-per-em +syn keyword htmlArg contained v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget +syn keyword htmlArg contained width widths +syn keyword htmlArg contained x x-height x1 x2 xChannelSelector xlink:actuate xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xml:lang xml:space +syn keyword htmlArg contained y y1 y2 yChannelSelector +syn keyword htmlArg contained z zoomAndPan +syn keyword htmlArg contained alignment-baseline baseline-shift clip-path clip-rule clip color-interpolation-filters color-interpolation color-profile color-rendering color cursor direction display dominant-baseline enable-background fill-opacity fill-rule fill filter flood-color flood-opacity font-family font-size-adjust font-size font-stretch font-style font-variant font-weight glyph-orientation-horizontal glyph-orientation-vertical image-rendering kerning letter-spacing lighting-color marker-end marker-mid marker-start mask opacity overflow pointer-events shape-rendering stop-color stop-opacity stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width stroke text-anchor text-decoration text-rendering unicode-bidi visibility word-spacing writing-mode + +" MathML attributes +" https://www.w3.org/TR/MathML3/chapter2.html#interf.toplevel.atts +syn keyword htmlArg contained accent accentunder actiontype align alignmentscope altimg altimg-height altimg-valign altimg-width alttext +syn keyword htmlArg contained annotation-xml background base baseline bevelled cd cdgroup charalign charspacing close +syn keyword htmlArg contained closure color columnalign columnalignment columnlines columnspacing columnspan columnwidth crossout decimalpoint +syn keyword htmlArg contained definitionURL denomalign depth display displaystyle edge encoding equalcolumns equalrows fence +syn keyword htmlArg contained fontfamily fontsize fontstyle fontweight form frame framespacing groupalign height indentalign +syn keyword htmlArg contained indentalignfirst indentalignlast indentshift indentshiftfirst indentshiftlast indenttarget index infixlinebreakstyle integer largeop +syn keyword htmlArg contained leftoverhang length linebreak linebreakmultchar linebreakstyle lineleading linethickness location longdivstyle lquote +syn keyword htmlArg contained lspace ltr macros math mathbackground mathcolor mathsize mathvariant maxsize maxwidth +syn keyword htmlArg contained mediummathspace menclose minlabelspacing minsize mode movablelimits msgroup mslinethickness name nargs +syn keyword htmlArg contained newline notation numalign number occurrence open order other overflow position +syn keyword htmlArg contained rightoverhang role rowalign rowlines rowspacing rowspan rquote rspace schemaLocation scope +syn keyword htmlArg contained scriptlevel scriptminsize scriptsize scriptsizemultiplier selection separator separators shift side stackalign +syn keyword htmlArg contained stretchy subscriptshift superscriptshift symmetric thickmathspace thinmathspace type valign verythickmathspace verythinmathspace +syn keyword htmlArg contained veryverythickmathspace veryverythinmathspace voffset width xref + + +endif diff --git a/syntax/htmldjango.vim b/syntax/htmldjango.vim new file mode 100644 index 00000000..0e2c329d --- /dev/null +++ b/syntax/htmldjango.vim @@ -0,0 +1,30 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'htmldjango') == -1 + +" Vim syntax file +" Language: Django HTML template +" Maintainer: Dave Hodder <dmh@dmh.org.uk> +" Last Change: 2014 Jul 13 + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +if !exists("main_syntax") + let main_syntax = 'html' +endif + +runtime! syntax/django.vim +runtime! syntax/html.vim +unlet b:current_syntax + +syn cluster djangoBlocks add=djangoTagBlock,djangoVarBlock,djangoComment,djangoComBlock + +syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display containedin=ALLBUT,@djangoBlocks +syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display containedin=ALLBUT,@djangoBlocks +syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks +syn region djangoComBlock start="{#" end="#}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks + +let b:current_syntax = "htmldjango" + +endif diff --git a/syntax/jinja.vim b/syntax/jinja.vim deleted file mode 100644 index 5f2402b6..00000000 --- a/syntax/jinja.vim +++ /dev/null @@ -1,90 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jinja') == -1 - -" jinja syntax file -" Language: Jinja HTML template -" Maintainer: Hsiaoming Yang <lepture@me.com> -" Last Change: Sep 13, 2012 - -" only support 6.x+ - -if exists("b:current_syntax") - finish -endif - -if !exists("main_syntax") - let main_syntax = 'html' -endif - -runtime! syntax/html.vim -unlet b:current_syntax - -syntax case match - -" jinja template built-in tags and parameters -" 'comment' doesn't appear here because it gets special treatment -syn keyword jinjaStatement contained if else elif endif is not -syn keyword jinjaStatement contained for in recursive endfor -syn keyword jinjaStatement contained raw endraw -syn keyword jinjaStatement contained block endblock extends super scoped -syn keyword jinjaStatement contained macro endmacro call endcall -syn keyword jinjaStatement contained from import as do continue break -syn keyword jinjaStatement contained filter endfilter set -syn keyword jinjaStatement contained include ignore missing -syn keyword jinjaStatement contained with without context endwith -syn keyword jinjaStatement contained trans endtrans pluralize -syn keyword jinjaStatement contained autoescape endautoescape - -" jinja templete built-in filters -syn keyword jinjaFilter contained abs attr batch capitalize center default -syn keyword jinjaFilter contained dictsort escape filesizeformat first -syn keyword jinjaFilter contained float forceescape format groupby indent -syn keyword jinjaFilter contained int join last length list lower pprint -syn keyword jinjaFilter contained random replace reverse round safe slice -syn keyword jinjaFilter contained sort string striptags sum -syn keyword jinjaFilter contained title trim truncate upper urlize -syn keyword jinjaFilter contained wordcount wordwrap - -" jinja template built-in tests -syn keyword jinjaTest contained callable defined divisibleby escaped -syn keyword jinjaTest contained even iterable lower mapping none number -syn keyword jinjaTest contained odd sameas sequence string undefined upper - -syn keyword jinjaFunction contained range lipsum dict cycler joiner - - -" Keywords to highlight within comments -syn keyword jinjaTodo contained TODO FIXME XXX - -" jinja template constants (always surrounded by double quotes) -syn region jinjaArgument contained start=/"/ skip=/\\"/ end=/"/ -syn region jinjaArgument contained start=/'/ skip=/\\'/ end=/'/ -syn keyword jinjaArgument contained true false - -" Mark illegal characters within tag and variables blocks -syn match jinjaTagError contained "#}\|{{\|[^%]}}\|[&#]" -syn match jinjaVarError contained "#}\|{%\|%}\|[<>!&#%]" -syn cluster jinjaBlocks add=jinjaTagBlock,jinjaVarBlock,jinjaComBlock,jinjaComment - -" jinja template tag and variable blocks -syn region jinjaTagBlock start="{%" end="%}" contains=jinjaStatement,jinjaFilter,jinjaArgument,jinjaFilter,jinjaTest,jinjaTagError display containedin=ALLBUT,@jinjaBlocks -syn region jinjaVarBlock start="{{" end="}}" contains=jinjaFilter,jinjaArgument,jinjaVarError display containedin=ALLBUT,@jinjaBlocks -syn region jinjaComBlock start="{#" end="#}" contains=jinjaTodo containedin=ALLBUT,@jinjaBlocks - - -hi def link jinjaTagBlock PreProc -hi def link jinjaVarBlock PreProc -hi def link jinjaStatement Statement -hi def link jinjaFunction Function -hi def link jinjaTest Type -hi def link jinjaFilter Identifier -hi def link jinjaArgument Constant -hi def link jinjaTagError Error -hi def link jinjaVarError Error -hi def link jinjaError Error -hi def link jinjaComment Comment -hi def link jinjaComBlock Comment -hi def link jinjaTodo Todo - -let b:current_syntax = "jinja" - -endif diff --git a/syntax/mustache.vim b/syntax/mustache.vim index f6730e1f..36a4ba27 100644 --- a/syntax/mustache.vim +++ b/syntax/mustache.vim @@ -1,110 +1,5 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'handlebars') == -1 -" Mustache & Handlebars syntax -" Language: Mustache, Handlebars -" Maintainer: Juvenn Woo <machese@gmail.com> -" Screenshot: http://imgur.com/6F408 -" Version: 6 -" Last Change: Jul 16 2019 -" Remark: -" It lexically hilights embedded mustaches (exclusively) in html file. -" While it was written for Ruby-based Mustache template system, it should -" work for Google's C-based *ctemplate* as well as Erlang-based *et*. All -" of them are, AFAIK, based on the idea of ctemplate. -" References: -" [Mustache](http://github.com/defunkt/mustache) -" [Handlebars](https://github.com/wycats/handlebars.js) -" [ctemplate](http://code.google.com/p/google-ctemplate/) -" [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html) -" [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html) -" TODO: Feedback is welcomed. - - -" Read the HTML syntax to start with -if version < 600 - so <sfile>:p:h/html.vim -else - runtime! syntax/html.vim - unlet b:current_syntax -endif - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Standard HiLink will not work with included syntax files -if version < 508 - command! -nargs=+ HtmlHiLink hi link <args> -else - command! -nargs=+ HtmlHiLink hi def link <args> -endif - -syntax match mustacheError '}}}\?' -syntax match mustacheInsideError '{{[{$#<>=!\/]\?' - -" Ember angle bracket syntax syntax starts with a capital letter: -" https://github.com/emberjs/rfcs/blob/master/text/0311-angle-bracket-invocation.md -syntax case match -syntax region mustacheAngleComponent start=/<\/\?[[:upper:]]/ end=/>/ keepend containedin=TOP,@htmlMustacheContainer -syntax case ignore -syntax match mustacheAngleBrackets '</\?\|/\?>' contained containedin=mustacheAngleComponent -syntax match mustacheAngleComponentName '</[[:alnum:]]\+'hs=s+2 contained containedin=mustacheAngleBrackets -syntax match mustacheAngleComponentName '<[[:alnum:]]\+'hs=s+1 contained containedin=mustacheAngleBrackets - -syntax region mustacheHbsComponent start=/{{[^!][$#^/]\?/ end=/}}}\?/ keepend containedin=TOP,@htmlMustacheContainer - -syntax cluster mustacheInside add=mustacheHbsComponent,mustacheAngleComponent - -syntax match mustacheOperators '=\|\.\|/^>' contained containedin=@mustacheInside,mustacheParam -syntax region mustacheHtmlValue start=/={{[^!][$#^/]\?/rs=s+1,hs=s+1 end=/}}/ oneline keepend contained containedin=htmlTag contains=@mustacheInside -syntax region mustachePartial start=/{{[<>]/lc=2 end=/}}/me=e-2 contained containedin=@mustacheInside,@htmlMustacheContainer -syntax region mustacheMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 contained containedin=@mustacheInside,@htmlMustacheContainer -syntax match mustacheHandlebars '{{\|}}' contained containedin=@mustacheInside -syntax match mustacheUnescape '{{{\|}}}' contained containedin=@mustacheInside -syntax match mustacheConditionals '\([/#]\?\<\(if\|unless\)\|\<else\)\>' contained containedin=@mustacheInside -syntax match mustacheHelpers '[/#]\?\<\(with\|link\-to\|each\(\-in\)\?\|let\)\>' contained containedin=@mustacheInside -syntax match mustacheHelpers 'else \(if\|unless\|with\|link\-to\|each\(\-in\)\?\)' contained containedin=@mustacheInside -syntax match mustacheParam /[a-z@_-]\+=/he=e-1 contained containedin=@mustacheInside -syntax region mustacheComment start=/{{!/rs=s+2 skip=/{{.\{-}}}/ end=/}}/re=e-2 contains=Todo contained containedin=TOP,@mustacheInside,@htmlMustacheContainer -syntax region mustacheBlockComment start=/{{!--/rs=s+2 skip=/{{.\{-}}}/ end=/--}}/re=e-2 contains=Todo contained extend containedin=TOP,@mustacheInside,@htmlMustacheContainer -syntax region mustacheQString start=/'/ skip=/\\'/ end=/'/ contained containedin=@mustacheInside -syntax region mustacheDQString start=/"/ skip=/\\"/ end=/"/ contained containedin=@mustacheInside - -" Clustering -syntax cluster htmlMustacheContainer add=htmlHead,htmlTitle,htmlString,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,htmlLink,htmlBold,htmlUnderline,htmlItalic,htmlValue - - -" Hilighting -" mustacheInside hilighted as Number, which is rarely used in html -" you might like change it to Function or Identifier -HtmlHiLink mustacheVariable Number -HtmlHiLink mustacheVariableUnescape Number -HtmlHiLink mustachePartial Number -HtmlHiLink mustacheMarkerSet Number -HtmlHiLink mustacheParam htmlArg -HtmlHiLink mustacheAngleComponentName htmlTag - -HtmlHiLink mustacheComment Comment -HtmlHiLink mustacheBlockComment Comment -HtmlHiLink mustacheError Error -HtmlHiLink mustacheInsideError Error - -HtmlHiLink mustacheHandlebars Special -HtmlHiLink mustacheAngleBrackets htmlTagName -HtmlHiLink mustacheUnescape Identifier -HtmlHiLink mustacheOperators Operator -HtmlHiLink mustacheConditionals Conditional -HtmlHiLink mustacheHelpers Repeat -HtmlHiLink mustacheQString String -HtmlHiLink mustacheDQString String - -syn region mustacheScriptTemplate start=+<script [^>]*type *=[^>]*text/\(mustache\|x-handlebars-template\)[^>]*>+ -\ end=+</script>+me=s-1 keepend -\ contains=mustacheInside,@htmlMustacheContainer,htmlTag,htmlEndTag,htmlTagName,htmlSpecialChar - -let b:current_syntax = "mustache" -delcommand HtmlHiLink +runtime! syntax/handlebars.vim endif diff --git a/tests/extensions.vim b/tests/extensions.vim index d6f63407..ca42edbb 100644 --- a/tests/extensions.vim +++ b/tests/extensions.vim @@ -201,6 +201,13 @@ call TestExtension("cpp", "foobar.moc", "") call TestExtension("cpp", "foobar.tcc", "") call TestExtension("cpp", "foobar.inl", "") +" Django + +call TestExtension("htmldjango", "foobar.j2", "") +call TestExtension("htmldjango", "foobar.jinja", "") +call TestExtension("htmldjango", "foobar.jinja2", "") +call TestExtension("htmldjango", "foobar.njk", "") + " vim-polyglot only call TestExtension("blade", "test.blade.php", "") call TestExtension("yaml.ansible", "playbook.yml", "") @@ -356,8 +363,8 @@ call TestExtension("tt2html", "html.tt2", "<html>") call TestExtension("html", "empty.html", "") call TestExtension("mason", "mason1.html", "% my $planet = 42;") call TestExtension("mason", "mason2.html", "<%filter></%filter>") -call TestExtension("jinja.html", "jinja1.html", "{{ item.href }}") -call TestExtension("jinja.html", "jinja2.html", "{% for item in navigation %}{% endfor %}") -call TestExtension("jinja.html", "jinja3.html", "{% block head %}") -call TestExtension("jinja.html", "jinja4.html", "{# some comment #}") +call TestExtension("htmldjango", "jinja1.html", "{{ item.href }}") +call TestExtension("htmldjango", "jinja2.html", "{% for item in navigation %}{% endfor %}") +call TestExtension("htmldjango", "jinja3.html", "{% block head %}") +call TestExtension("htmldjango", "jinja4.html", "{# some comment #}") call TestExtension("xhtml", "xhtml.html", "<DTD XHTML ") diff --git a/tests/filetypes.vim b/tests/filetypes.vim index 3128a730..8d077072 100644 --- a/tests/filetypes.vim +++ b/tests/filetypes.vim @@ -95,7 +95,8 @@ call TestFiletype('graphql') call TestFiletype('groovy') call TestFiletype('grub') call TestFiletype('haml') -call TestFiletype('mustache') +call TestFiletype('html.mustache') +call TestFiletype('html.handlebars') call TestFiletype('haskell') call TestFiletype('haxe') call TestFiletype('hcl') @@ -108,7 +109,7 @@ call TestFiletype('idris2') call TestFiletype('lidris2') call TestFiletype('ion') call TestFiletype('Jenkinsfile') -call TestFiletype('jinja.html') +call TestFiletype('htmldjango') call TestFiletype('jq') call TestFiletype('json5') call TestFiletype('json') |