summaryrefslogtreecommitdiffstats
path: root/after/syntax/tsx.vim
blob: 05bfc9eadc3c8360178d235fbec52177c8f3425e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'tsx') != -1
  finish
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
"
" Language: TSX (JavaScript)
" Maintainer: Ian Ker-Seymer <i.kerseymer@gmail.com>
" Depends: leafgarland/typescript-vim
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

if exists('b:current_syntax')
  let s:current_syntax=b:current_syntax
  unlet b:current_syntax
endif

syn include @XMLSyntax syntax/xml.vim

if exists('s:current_syntax')
  let b:current_syntax=s:current_syntax
endif

syn region embeddedTs
      \ matchgroup=NONE
      \ start=+{+
      \ end=+}+
      \ contains=@Spell,@typescriptAll,xmlEntity,tsxRegion
      \ contained

" Add embeddedTs to everything where xmlString is used to allow for
" both string highlighting and @typescriptAll highlighting
syn region   xmlTag
      \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+
      \ matchgroup=xmlTag end=+>+
      \ contained
      \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook,embeddedTs

syn region xmlProcessing
      \ matchgroup=xmlProcessingDelim
      \ start="<?"
      \ end="?>"
      \ contains=xmlAttrib,xmlEqual,xmlString,embeddedTs


if exists('g:xml_syntax_folding')
  " DTD -- we use dtd.vim here
  syn region  xmlDocType matchgroup=xmlDocTypeDecl
        \ start="<!DOCTYPE"he=s+2,rs=s+2
        \ end=">"
        \ fold
        \ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString,embeddedTs
else
  syn region  xmlDocType matchgroup=xmlDocTypeDecl
        \ start="<!DOCTYPE"he=s+2,rs=s+2
        \ end=">"
        \ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString,embeddedTs
endif


if exists('g:xml_syntax_folding')
  syn region xmlTag
        \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+
        \ matchgroup=xmlTag end=+>+
        \ contained
        \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook,embeddedTs
else
  syn region xmlTag
        \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+
        \ matchgroup=xmlTag end=+>+
        \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook,embeddedTs
endif


syn region tsxRegion
      \ contains=@Spell,@XMLSyntax,tsxRegion,@typescriptAll
      \ start=+\%(<\|\w\)\@<!<\z([a-zA-Z][a-zA-Z0-9:\-.]*\)+
      \ skip=+<!--\_.\{-}-->+
      \ end=+</\z1\_\s\{-}>+
      \ end=+/>+
      \ keepend
      \ extend

hi def link embeddedTs NONE

syn cluster @typescriptAll add=tsxRegion