├── README.md ├── syntax ├── html.vim └── css.vim └── syntax_checkers └── html └── polylint.vim /README.md: -------------------------------------------------------------------------------- 1 | vim-polymer 2 | =========== 3 | 4 | Vim support for [Polymer](https://www.polymer-project.org/) 5 | 6 | Includes HTML/CSS syntax for polymer elements, as well as a [syntastic](https://github.com/scrooloose/syntastic) syntax checker for [polylint](http://github.com/PolymerLabs/polylint). 7 | 8 | Note: polylint is a bit slow. Consider trying q0LoCo's [syntastic async fork](https://github.com/q0LoCo/syntastic) which uses tmux and/or gvim for async linting. 9 | -------------------------------------------------------------------------------- /syntax/html.vim: -------------------------------------------------------------------------------- 1 | " core-style tag support 2 | if exists("main_syntax") 3 | if main_syntax != "html" 4 | finish 5 | endif 6 | endif 7 | runtime! syntax/css.vim 8 | unlet b:current_syntax 9 | 10 | " Less strict highlighting on element attributes 11 | syn match htmlArg contained "\<[-a-zA-Z0-9]\+[ $=>]"me=e-1 12 | 13 | syn region polymerBoundVarRegion matchgroup=Delimiter start="{{" end="}}" keepend 14 | syn sync match polymerBoundVarRegionSync grouphere polymerBoundVarRegion "^\s*{{\s*$" 15 | syn sync match polymerBoundVarRegionSync grouphere NONE "^\s*}}\s*$" 16 | 17 | syn region polymerOneWayBoundVarRegion matchgroup=Delimiter start="\[\[" end="\]\]" keepend 18 | syn sync match polymerOneWayBoundVarRegionSync grouphere polymerOneWayBoundVarRegion "^\s*\[\[\s*$" 19 | syn sync match polymerOneWayBoundVarRegionSync grouphere NONE "^\s*\]\]\s*$" 20 | 21 | syn cluster htmlPreproc add=polymerBoundVarRegion 22 | syn cluster htmlPreproc add=polymerOneWayBoundVarRegion 23 | hi link polymerBoundVarRegion Special 24 | hi link polymerOneWayBoundVarRegion Special 25 | -------------------------------------------------------------------------------- /syntax_checkers/html/polylint.vim: -------------------------------------------------------------------------------- 1 | if exists('g:loaded_syntastic_html_polylint_checker') 2 | finish 3 | endif 4 | let g:loaded_syntastic_html_polylint_checker = 1 5 | 6 | let s:save_cpo = &cpo 7 | set cpo&vim 8 | 9 | function! SyntaxCheckers_html_polylint_IsAvailable() dict 10 | return executable(self.getExec()) 11 | endfunction 12 | 13 | function! SyntaxCheckers_html_polylint_GetHighlightRegex(item) 14 | return '' 15 | endfunction 16 | 17 | function! SyntaxCheckers_html_polylint_GetLocList() dict 18 | let makeprg = self.makeprgBuild({ 19 | \ 'args': '--no-recursion'}) 20 | 21 | let errorformat = '%A%f:%l:%c,%Z %m' 22 | 23 | let env = {} 24 | 25 | return SyntasticMake({ 26 | \ 'makeprg': makeprg, 27 | \ 'errorformat': errorformat, 28 | \ 'env': env }) 29 | 30 | endfunction 31 | 32 | call g:SyntasticRegistry.CreateAndRegisterChecker({ 33 | \ 'filetype': 'html', 34 | \ 'name': 'polylint', 35 | \ 'exec': 'polylint' }) 36 | 37 | let &cpo = s:save_cpo 38 | unlet s:save_cpo 39 | 40 | " vim: set sw=4 sts=4 et fdm=marker: 41 | -------------------------------------------------------------------------------- /syntax/css.vim: -------------------------------------------------------------------------------- 1 | syn keyword polymerElement cascaded-animation 2 | syn keyword polymerElement date-input 3 | syn keyword polymerElement date-validator 4 | syn keyword polymerElement fade-in-animation 5 | syn keyword polymerElement fade-out-animation 6 | syn keyword polymerElement gold-cc-cvc-input 7 | syn keyword polymerElement gold-cc-expiration-input 8 | syn keyword polymerElement gold-cc-input 9 | syn keyword polymerElement gold-email-input 10 | syn keyword polymerElement gold-phone-input 11 | syn keyword polymerElement gold-zip-input 12 | syn keyword polymerElement hero-animation 13 | syn keyword polymerElement iron-a11y-announcer 14 | syn keyword polymerElement iron-a11y-keys 15 | syn keyword polymerElement iron-ajax 16 | syn keyword polymerElement iron-autogrow-textarea 17 | syn keyword polymerElement iron-collapse 18 | syn keyword polymerElement iron-component-page 19 | syn keyword polymerElement iron-doc-property 20 | syn keyword polymerElement iron-doc-viewer 21 | syn keyword polymerElement iron-form 22 | syn keyword polymerElement iron-icon 23 | syn keyword polymerElement iron-iconset 24 | syn keyword polymerElement iron-iconset-svg 25 | syn keyword polymerElement iron-image 26 | syn keyword polymerElement iron-input 27 | syn keyword polymerElement iron-jsonp-library 28 | syn keyword polymerElement iron-list 29 | syn keyword polymerElement iron-localstorage 30 | syn keyword polymerElement iron-media-query 31 | syn keyword polymerElement iron-meta 32 | syn keyword polymerElement iron-meta-query 33 | syn keyword polymerElement iron-overlay-backdrop 34 | syn keyword polymerElement iron-pages 35 | syn keyword polymerElement iron-request 36 | syn keyword polymerElement iron-selector 37 | syn keyword polymerElement iron-signals 38 | syn keyword polymerElement neon-animatable 39 | syn keyword polymerElement neon-animated-pages 40 | syn keyword polymerElement opaque-animation 41 | syn keyword polymerElement paper-button 42 | syn keyword polymerElement paper-card 43 | syn keyword polymerElement paper-checkbox 44 | syn keyword polymerElement paper-dialog 45 | syn keyword polymerElement paper-dialog-scrollable 46 | syn keyword polymerElement paper-drawer-panel 47 | syn keyword polymerElement paper-fab 48 | syn keyword polymerElement paper-header-panel 49 | syn keyword polymerElement paper-icon-button 50 | syn keyword polymerElement paper-icon-item 51 | syn keyword polymerElement paper-input 52 | syn keyword polymerElement paper-input-char-counter 53 | syn keyword polymerElement paper-input-container 54 | syn keyword polymerElement paper-input-error 55 | syn keyword polymerElement paper-item 56 | syn keyword polymerElement paper-item-body 57 | syn keyword polymerElement paper-material 58 | syn keyword polymerElement paper-menu 59 | syn keyword polymerElement paper-progress 60 | syn keyword polymerElement paper-radio-button 61 | syn keyword polymerElement paper-radio-group 62 | syn keyword polymerElement paper-ripple 63 | syn keyword polymerElement paper-scroll-header-panel 64 | syn keyword polymerElement paper-slider 65 | syn keyword polymerElement paper-spinner 66 | syn keyword polymerElement paper-tabs 67 | syn keyword polymerElement paper-tab 68 | syn keyword polymerElement paper-textarea 69 | syn keyword polymerElement paper-toast 70 | syn keyword polymerElement paper-toggle-button 71 | syn keyword polymerElement paper-toolbar 72 | syn keyword polymerElement paper-tooltip 73 | syn keyword polymerElement platinum-push-messaging 74 | syn keyword polymerElement platinum-sw-cache 75 | syn keyword polymerElement platinum-sw-fetch 76 | syn keyword polymerElement platinum-sw-import-script 77 | syn keyword polymerElement platinum-sw-register 78 | syn keyword polymerElement reverse-ripple-animation 79 | syn keyword polymerElement ripple-animation 80 | syn keyword polymerElement scale-down-animation 81 | syn keyword polymerElement scale-up-animation 82 | syn keyword polymerElement slide-down-animation 83 | syn keyword polymerElement slide-from-left-animation 84 | syn keyword polymerElement slide-from-right-animation 85 | syn keyword polymerElement slide-left-animation 86 | syn keyword polymerElement slide-right-animation 87 | syn keyword polymerElement slide-up-animation 88 | syn keyword polymerElement transform-animation 89 | syn keyword polymerElement zip-validator 90 | 91 | " ShadowDOM selectors 92 | syn match shadowDomSelector "\s\+\(/deep/\|:host\|::shadow\|::content\)\s\+" 93 | 94 | " Custom Elements 95 | syn match customElement "\(^\|\s\)\zs\([a-z]\+-\)\+[a-z]\+\ze" 96 | 97 | " CSS3 Custom properties 98 | syn match cssCustomProp contained "\(^\|;\|\s\)\@<=--[a-zA-Z_][a-zA-Z0-9_-]*\>\(\s*:\s*{\)\@!" 99 | syn match cssVendorProp contained "\(^\|;\|\s\)\@<=-[a-zA-Z_][a-zA-Z0-9_-]*\>" 100 | 101 | " Polymer CSS mixins 102 | syn match cssMixinName contained "\(^\|;\|\s\)\@<=--[a-zA-Z_][a-zA-Z0-9_-]*\>\(\s*:\s*{\)\@=" 103 | syn region cssMixinDefinition 104 | \ contained transparent fold 105 | \ matchgroup=cssBraces start="\(^\|;\|\s\)--[a-zA-Z_][a-zA-Z0-9_-]*\>:\s*\zs{" end="}" 106 | \ contains=cssDefinition,cssMixinName,cssAttrRegion,cssComment,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise,cssMixinDefinition,cssMixinName,cssApplyRegion,cssApplyName,"cssValue.*",css.*Prop 107 | 108 | syn region cssApplyRegion contained matchgroup=cssApplyName start="\(^\|\s\)@apply\s*(" end=")" oneline keepend 109 | 110 | " Redefine cssAttrRegion to exclude mixin regions 111 | syn clear cssDefinition 112 | syn region cssDefinition 113 | \ transparent fold 114 | \ matchgroup=cssBraces start='{' end='}' 115 | \ contains=cssAttrRegion,cssComment,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise,cssMixinDefinition,cssMixinName,cssApplyRegion,cssApplyName,"cssValue.*",css.*Prop 116 | 117 | syn clear cssAttrRegion 118 | syn region cssAttrRegion 119 | \ contained start=/:\(\s*{\)\@!/ end=/\ze\(;\|)\|}\)/ 120 | \ contains=cssColor,cssImportant,cssValue,cssFunction,cssString,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise,cssString.*,"cssValue.*",css.*Attr 121 | 122 | hi link polymerElement cssTagName 123 | hi link customElement cssTagName 124 | hi link cssMixinName cssClassName 125 | hi link cssCustomProp cssProp 126 | hi link cssVendorProp cssProp 127 | hi link cssApplyName cssFunctionName 128 | hi link cssApplyRegion cssFunction 129 | hi link shadowDomSelector Special 130 | --------------------------------------------------------------------------------