diff options
Diffstat (limited to 'after')
-rw-r--r-- | after/ftplugin/jsx.vim | 18 | ||||
-rw-r--r-- | after/syntax/jsx.vim | 14 |
2 files changed, 27 insertions, 5 deletions
diff --git a/after/ftplugin/jsx.vim b/after/ftplugin/jsx.vim index 12173822..e1d689aa 100644 --- a/after/ftplugin/jsx.vim +++ b/after/ftplugin/jsx.vim @@ -13,11 +13,19 @@ endif " modified from html.vim if exists("loaded_matchit") let b:match_ignorecase = 0 - let s:jsx_match_words = '(:),\[:\],{:},<:>,' . - \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(/\@<!>\|$\):<\@<=/\1>' - let b:match_words = exists('b:match_words') - \ ? b:match_words . ',' . s:jsx_match_words - \ : s:jsx_match_words + let s:jsx_match_words = '<\([a-zA-Z0-9.]\+\)\(>\|$\|\s\):<\/\1>' + + if !exists('b:loaded_jsx_match_words') + let b:loaded_jsx_match_words = 0 + endif + + if b:loaded_jsx_match_words == 0 + let b:match_words = exists('b:match_words') + \ ? b:match_words . ',' . s:jsx_match_words + \ : s:jsx_match_words + endif + + let b:loaded_jsx_match_words = 1 endif setlocal suffixesadd+=.jsx diff --git a/after/syntax/jsx.vim b/after/syntax/jsx.vim index 79911848..ac4dd616 100644 --- a/after/syntax/jsx.vim +++ b/after/syntax/jsx.vim @@ -62,6 +62,20 @@ syn region jsxRegion \ keepend \ extend +" Shorthand fragment support +" +" Note that since the main jsxRegion contains @XMLSyntax, we cannot simply +" adjust the regex above since @XMLSyntax will highlight the opening `<` as an +" XMLError. Instead we create a new group with the same name that does not +" include @XMLSyntax and instead uses matchgroup to get the same highlighting. +syn region jsxRegion + \ contains=@Spell,jsxRegion,jsxChild,jsBlock,javascriptBlock + \ matchgroup=xmlTag + \ start=/<>/ + \ end=/<\/>/ + \ keepend + \ extend + " Add jsxRegion to the lowest-level JS syntax cluster. syn cluster jsExpression add=jsxRegion |