├── 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 |
--------------------------------------------------------------------------------