summaryrefslogtreecommitdiffstats
path: root/after
diff options
context:
space:
mode:
Diffstat (limited to 'after')
-rw-r--r--after/ftplugin/jsx.vim18
-rw-r--r--after/syntax/jsx.vim14
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